From 7fedf7deee861d0e5fa79bf1bc6c6f17e7deb9a0 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Tue, 15 Oct 2024 15:23:59 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=9B=B4=E6=96=B0=E8=8E=B7=E5=8F=96IP?= =?UTF-8?q?=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../generator/generator/WebGeneratorCode.java | 4 +- .../cn/bunny/common/service/utils/IpUtil.java | 79 --- .../bunny/common/service/utils/ip/IpUtil.java | 36 +- .../{Schedulers.java => ViewSchedulers.java} | 4 +- data/auth_admin-仅结构.sql | 497 ++++++++++++++++++ service/Dockerfile | 14 +- service/pom.xml | 35 +- .../controller/I18nTypeController.java | 2 +- .../controller/SchedulersController.java | 4 +- .../bunny/services/factory/UserFactory.java | 15 +- .../services/mapper/SchedulersMapper.java | 6 +- .../services/quartz/QuartzConfiguration.java | 28 +- .../filter/NoTokenAuthenticationFilter.java | 8 +- .../filter/TokenLoginFilterService.java | 24 +- .../services/service/SchedulersService.java | 6 +- .../service/impl/SchedulersServiceImpl.java | 22 +- .../src/main/resources/application-dev.yml | 3 +- .../src/main/resources/application-prod.yml | 10 +- service/src/main/resources/application.yml | 24 +- .../resources/mapper/SchedulersMapper.xml | 58 +- service/src/main/resources/quartz.properties | 16 - 21 files changed, 661 insertions(+), 234 deletions(-) delete mode 100644 common/service-utils/src/main/java/cn/bunny/common/service/utils/IpUtil.java rename dao/src/main/java/cn/bunny/dao/entity/schedulers/{Schedulers.java => ViewSchedulers.java} (92%) create mode 100644 data/auth_admin-仅结构.sql delete mode 100644 service/src/main/resources/quartz.properties diff --git a/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java b/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java index c43af89..c0c9bbc 100644 --- a/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java +++ b/common/common-generator/src/main/java/cn/bunny/common/generator/generator/WebGeneratorCode.java @@ -6,7 +6,7 @@ import cn.bunny.common.generator.utils.GeneratorCodeUtils; import cn.bunny.dao.dto.schedulers.SchedulersAddDto; import cn.bunny.dao.dto.schedulers.SchedulersDto; import cn.bunny.dao.dto.schedulers.SchedulersUpdateDto; -import cn.bunny.dao.entity.schedulers.Schedulers; +import cn.bunny.dao.entity.schedulers.ViewSchedulers; import cn.bunny.dao.vo.schedulers.SchedulersVo; import com.baomidou.mybatisplus.annotation.TableName; import com.google.common.base.CaseFormat; @@ -51,7 +51,7 @@ public class WebGeneratorCode { public static String resourceMapperPath = "D:\\Project\\web\\PC\\auth\\auth-server-java\\service\\src\\main\\resources\\mapper\\"; public static void main(String[] args) throws Exception { - Class originalClass = Schedulers.class; + Class originalClass = ViewSchedulers.class; Class dtoClass = SchedulersDto.class; Class addDtoClass = SchedulersAddDto.class; Class updateDtoClass = SchedulersUpdateDto.class; diff --git a/common/service-utils/src/main/java/cn/bunny/common/service/utils/IpUtil.java b/common/service-utils/src/main/java/cn/bunny/common/service/utils/IpUtil.java deleted file mode 100644 index da4ffe7..0000000 --- a/common/service-utils/src/main/java/cn/bunny/common/service/utils/IpUtil.java +++ /dev/null @@ -1,79 +0,0 @@ -package cn.bunny.common.service.utils; - -import jakarta.annotation.PostConstruct; -import lombok.extern.slf4j.Slf4j; -import org.lionsoul.ip2region.xdb.Searcher; -import org.springframework.core.io.ClassPathResource; -import org.springframework.util.FileCopyUtils; - -import java.io.InputStream; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -@Slf4j -public class IpUtil { - private static Searcher searcher; - - /** - * 判断是否为合法 IP - */ - public static boolean checkIp(String ipAddress) { - String ip = "([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"; - Pattern pattern = Pattern.compile(ip); - Matcher matcher = pattern.matcher(ipAddress); - return matcher.matches(); - } - - /** - * 在服务启动时,将 ip2region 加载到内存中 - */ - @PostConstruct - private static void initIp2Region() { - try { - InputStream inputStream = new ClassPathResource("/ipdb/ip2region.xdb").getInputStream(); - byte[] bytes = FileCopyUtils.copyToByteArray(inputStream); - searcher = Searcher.newWithBuffer(bytes); - } catch (Exception exception) { - log.error(exception.getMessage()); - } - } - - /** - * 获取 ip 所属地址 - * - * @param ip ip - */ - public static String getIpRegion(String ip) { - if (ip.equals("0:0:0:0:0:0:0:1")) ip = "127.0.0.1"; - boolean isIp = checkIp(ip); - if (isIp) { - initIp2Region(); - try { - // searchIpInfo 的数据格式: 国家|区域|省份|城市|ISP - String searchIpInfo = searcher.search(ip); - String[] splitIpInfo = searchIpInfo.split("\\|"); - if (splitIpInfo.length > 0) { - if ("中国".equals(splitIpInfo[0])) { - // 国内属地返回省份 - return splitIpInfo[2]; - } else if ("0".equals(splitIpInfo[0])) { - if ("内网IP".equals(splitIpInfo[4])) { - // 内网 IP - return splitIpInfo[4]; - } else { - return ""; - } - } else { - // 国外属地返回国家 - return splitIpInfo[0]; - } - } - } catch (Exception exception) { - log.error(exception.getMessage()); - } - return ""; - } else { - throw new IllegalArgumentException("非法的IP地址"); - } - } -} diff --git a/common/service-utils/src/main/java/cn/bunny/common/service/utils/ip/IpUtil.java b/common/service-utils/src/main/java/cn/bunny/common/service/utils/ip/IpUtil.java index 8f18a0b..c91fcb4 100644 --- a/common/service-utils/src/main/java/cn/bunny/common/service/utils/ip/IpUtil.java +++ b/common/service-utils/src/main/java/cn/bunny/common/service/utils/ip/IpUtil.java @@ -1,6 +1,7 @@ package cn.bunny.common.service.utils.ip; import jakarta.annotation.PostConstruct; +import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; import org.lionsoul.ip2region.xdb.Searcher; import org.springframework.core.io.ClassPathResource; @@ -9,6 +10,7 @@ import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import java.io.InputStream; +import java.net.InetAddress; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -87,13 +89,43 @@ public class IpUtil { * @return IP地址 */ public static IpEntity getCurrentUserIpAddress() { - // 获取用户IP地址 ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - String remoteAddr = requestAttributes != null ? requestAttributes.getRequest().getRemoteAddr() : "0:0:0:0:0:0:0:1"; + String remoteAddr = requestAttributes != null ? getIpAddr(requestAttributes.getRequest()) : "0:0:0:0:0:0:0:1"; String ipRegion = IpUtil.getIpRegion(remoteAddr); return IpEntity.builder() .remoteAddr(remoteAddr) .ipRegion(ipRegion) .build(); } + + /** + * * 获取IP地址 + * + * @param request 请求头 + */ + public static String getIpAddr(HttpServletRequest request) { + String ipAddress; + try { + ipAddress = request.getHeader("x-forwarded-for"); + if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("Proxy-Client-IP"); + } + if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("WL-Proxy-Client-IP"); + } + if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getRemoteAddr(); + if (ipAddress.equals("127.0.0.1")) ipAddress = InetAddress.getLocalHost().getHostAddress(); + } + // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割 + if (ipAddress != null && ipAddress.length() > 15) { + if (ipAddress.indexOf(",") > 0) { + ipAddress = ipAddress.substring(0, ipAddress.indexOf(",")); + } + } + } catch (Exception e) { + ipAddress = null; + } + return ipAddress; + } } diff --git a/dao/src/main/java/cn/bunny/dao/entity/schedulers/Schedulers.java b/dao/src/main/java/cn/bunny/dao/entity/schedulers/ViewSchedulers.java similarity index 92% rename from dao/src/main/java/cn/bunny/dao/entity/schedulers/Schedulers.java rename to dao/src/main/java/cn/bunny/dao/entity/schedulers/ViewSchedulers.java index 1915378..6fe27eb 100644 --- a/dao/src/main/java/cn/bunny/dao/entity/schedulers/Schedulers.java +++ b/dao/src/main/java/cn/bunny/dao/entity/schedulers/ViewSchedulers.java @@ -19,9 +19,9 @@ import java.io.Serializable; @Getter @Setter @Accessors(chain = true) -@TableName("v_schedulers") +@TableName("qrtz_view_schedulers") @Schema(name = "Schedulers对象", title = "Schedulers视图", description = "Schedulers视图") -public class Schedulers implements Serializable { +public class ViewSchedulers implements Serializable { @Schema(name = "jobName", title = "任务名称") private String jobName; diff --git a/data/auth_admin-仅结构.sql b/data/auth_admin-仅结构.sql new file mode 100644 index 0000000..fe684f6 --- /dev/null +++ b/data/auth_admin-仅结构.sql @@ -0,0 +1,497 @@ +/* + Navicat Premium Dump SQL + + Source Server : MySQL(自己使用) + Source Server Type : MySQL + Source Server Version : 80033 (8.0.33) + Source Host : 192.168.3.98:3304 + Source Schema : auth_admin + + Target Server Type : MySQL + Target Server Version : 80033 (8.0.33) + File Encoding : 65001 + + Date: 15/10/2024 15:22:47 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for QRTZ_BLOB_TRIGGERS +-- ---------------------------- +DROP TABLE IF EXISTS `QRTZ_BLOB_TRIGGERS`; +CREATE TABLE `QRTZ_BLOB_TRIGGERS` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `BLOB_DATA` blob NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + INDEX `SCHED_NAME`(`SCHED_NAME` ASC, `TRIGGER_NAME` ASC, `TRIGGER_GROUP` ASC) USING BTREE, + CONSTRAINT `QRTZ_BLOB_TRIGGERS_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for QRTZ_CALENDARS +-- ---------------------------- +DROP TABLE IF EXISTS `QRTZ_CALENDARS`; +CREATE TABLE `QRTZ_CALENDARS` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `CALENDAR` blob NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for QRTZ_CRON_TRIGGERS +-- ---------------------------- +DROP TABLE IF EXISTS `QRTZ_CRON_TRIGGERS`; +CREATE TABLE `QRTZ_CRON_TRIGGERS` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `CRON_EXPRESSION` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TIME_ZONE_ID` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + CONSTRAINT `QRTZ_CRON_TRIGGERS_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for QRTZ_FIRED_TRIGGERS +-- ---------------------------- +DROP TABLE IF EXISTS `QRTZ_FIRED_TRIGGERS`; +CREATE TABLE `QRTZ_FIRED_TRIGGERS` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `ENTRY_ID` varchar(95) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `FIRED_TIME` bigint NOT NULL, + `SCHED_TIME` bigint NOT NULL, + `PRIORITY` int NOT NULL, + `STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + PRIMARY KEY (`SCHED_NAME`, `ENTRY_ID`) USING BTREE, + INDEX `IDX_QRTZ_FT_TRIG_INST_NAME`(`SCHED_NAME` ASC, `INSTANCE_NAME` ASC) USING BTREE, + INDEX `IDX_QRTZ_FT_INST_JOB_REQ_RCVRY`(`SCHED_NAME` ASC, `INSTANCE_NAME` ASC, `REQUESTS_RECOVERY` ASC) USING BTREE, + INDEX `IDX_QRTZ_FT_J_G`(`SCHED_NAME` ASC, `JOB_NAME` ASC, `JOB_GROUP` ASC) USING BTREE, + INDEX `IDX_QRTZ_FT_JG`(`SCHED_NAME` ASC, `JOB_GROUP` ASC) USING BTREE, + INDEX `IDX_QRTZ_FT_T_G`(`SCHED_NAME` ASC, `TRIGGER_NAME` ASC, `TRIGGER_GROUP` ASC) USING BTREE, + INDEX `IDX_QRTZ_FT_TG`(`SCHED_NAME` ASC, `TRIGGER_GROUP` ASC) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for QRTZ_JOB_DETAILS +-- ---------------------------- +DROP TABLE IF EXISTS `QRTZ_JOB_DETAILS`; +CREATE TABLE `QRTZ_JOB_DETAILS` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `JOB_CLASS_NAME` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `IS_DURABLE` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `IS_UPDATE_DATA` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `JOB_DATA` blob NULL, + PRIMARY KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_J_REQ_RECOVERY`(`SCHED_NAME` ASC, `REQUESTS_RECOVERY` ASC) USING BTREE, + INDEX `IDX_QRTZ_J_GRP`(`SCHED_NAME` ASC, `JOB_GROUP` ASC) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for QRTZ_LOCKS +-- ---------------------------- +DROP TABLE IF EXISTS `QRTZ_LOCKS`; +CREATE TABLE `QRTZ_LOCKS` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `LOCK_NAME` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `LOCK_NAME`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for QRTZ_PAUSED_TRIGGER_GRPS +-- ---------------------------- +DROP TABLE IF EXISTS `QRTZ_PAUSED_TRIGGER_GRPS`; +CREATE TABLE `QRTZ_PAUSED_TRIGGER_GRPS` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for QRTZ_SCHEDULER_STATE +-- ---------------------------- +DROP TABLE IF EXISTS `QRTZ_SCHEDULER_STATE`; +CREATE TABLE `QRTZ_SCHEDULER_STATE` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `LAST_CHECKIN_TIME` bigint NOT NULL, + `CHECKIN_INTERVAL` bigint NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for QRTZ_SIMPLE_TRIGGERS +-- ---------------------------- +DROP TABLE IF EXISTS `QRTZ_SIMPLE_TRIGGERS`; +CREATE TABLE `QRTZ_SIMPLE_TRIGGERS` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `REPEAT_COUNT` bigint NOT NULL, + `REPEAT_INTERVAL` bigint NOT NULL, + `TIMES_TRIGGERED` bigint NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + CONSTRAINT `QRTZ_SIMPLE_TRIGGERS_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for QRTZ_SIMPROP_TRIGGERS +-- ---------------------------- +DROP TABLE IF EXISTS `QRTZ_SIMPROP_TRIGGERS`; +CREATE TABLE `QRTZ_SIMPROP_TRIGGERS` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `STR_PROP_1` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `STR_PROP_2` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `STR_PROP_3` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `INT_PROP_1` int NULL DEFAULT NULL, + `INT_PROP_2` int NULL DEFAULT NULL, + `LONG_PROP_1` bigint NULL DEFAULT NULL, + `LONG_PROP_2` bigint NULL DEFAULT NULL, + `DEC_PROP_1` decimal(13, 4) NULL DEFAULT NULL, + `DEC_PROP_2` decimal(13, 4) NULL DEFAULT NULL, + `BOOL_PROP_1` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `BOOL_PROP_2` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + CONSTRAINT `QRTZ_SIMPROP_TRIGGERS_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for QRTZ_TRIGGERS +-- ---------------------------- +DROP TABLE IF EXISTS `QRTZ_TRIGGERS`; +CREATE TABLE `QRTZ_TRIGGERS` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `NEXT_FIRE_TIME` bigint NULL DEFAULT NULL, + `PREV_FIRE_TIME` bigint NULL DEFAULT NULL, + `PRIORITY` int NULL DEFAULT NULL, + `TRIGGER_STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_TYPE` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `START_TIME` bigint NOT NULL, + `END_TIME` bigint NULL DEFAULT NULL, + `CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `MISFIRE_INSTR` smallint NULL DEFAULT NULL, + `JOB_DATA` blob NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_T_J`(`SCHED_NAME` ASC, `JOB_NAME` ASC, `JOB_GROUP` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_JG`(`SCHED_NAME` ASC, `JOB_GROUP` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_C`(`SCHED_NAME` ASC, `CALENDAR_NAME` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_G`(`SCHED_NAME` ASC, `TRIGGER_GROUP` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_STATE`(`SCHED_NAME` ASC, `TRIGGER_STATE` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_N_STATE`(`SCHED_NAME` ASC, `TRIGGER_NAME` ASC, `TRIGGER_GROUP` ASC, `TRIGGER_STATE` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_N_G_STATE`(`SCHED_NAME` ASC, `TRIGGER_GROUP` ASC, `TRIGGER_STATE` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_NEXT_FIRE_TIME`(`SCHED_NAME` ASC, `NEXT_FIRE_TIME` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_ST`(`SCHED_NAME` ASC, `TRIGGER_STATE` ASC, `NEXT_FIRE_TIME` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_MISFIRE`(`SCHED_NAME` ASC, `MISFIRE_INSTR` ASC, `NEXT_FIRE_TIME` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE`(`SCHED_NAME` ASC, `MISFIRE_INSTR` ASC, `NEXT_FIRE_TIME` ASC, `TRIGGER_STATE` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE_GRP`(`SCHED_NAME` ASC, `MISFIRE_INSTR` ASC, `NEXT_FIRE_TIME` ASC, `TRIGGER_GROUP` ASC, `TRIGGER_STATE` ASC) USING BTREE, + CONSTRAINT `QRTZ_TRIGGERS_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) REFERENCES `QRTZ_JOB_DETAILS` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for sys_dept +-- ---------------------------- +DROP TABLE IF EXISTS `sys_dept`; +CREATE TABLE `sys_dept` ( + `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '唯一id', + `parent_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '父级id', + `manager` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '管理者id', + `dept_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '部门名称', + `summary` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '部门简介', + `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + `create_user` bigint NOT NULL COMMENT '创建用户', + `update_user` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '操作用户', + `is_deleted` tinyint(1) UNSIGNED ZEROFILL NOT NULL DEFAULT 0 COMMENT '是否删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '部门表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for sys_email_template +-- ---------------------------- +DROP TABLE IF EXISTS `sys_email_template`; +CREATE TABLE `sys_email_template` ( + `id` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '唯一id', + `template_name` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '模板名称', + `email_user` bigint NULL DEFAULT NULL COMMENT '关联邮件用户配置', + `subject` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '主题', + `body` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '邮件内容', + `type` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '邮件类型', + `is_default` tinyint(1) NULL DEFAULT 0 COMMENT '是否默认', + `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + `create_user` bigint NOT NULL COMMENT '创建用户', + `update_user` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '操作用户', + `is_deleted` tinyint(1) UNSIGNED ZEROFILL NOT NULL DEFAULT 0 COMMENT '是否删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '邮件模板表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for sys_email_users +-- ---------------------------- +DROP TABLE IF EXISTS `sys_email_users`; +CREATE TABLE `sys_email_users` ( + `id` bigint NOT NULL, + `email` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '邮箱', + `password` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '密码', + `host` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT 'Host地址', + `port` int NOT NULL COMMENT '端口号', + `smtp_agreement` varchar(15) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '邮箱协议', + `is_default` tinyint NULL DEFAULT NULL COMMENT '是否为默认邮件', + `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `create_user` bigint NOT NULL COMMENT '创建用户', + `update_user` bigint NULL DEFAULT NULL COMMENT '更新用户', + `is_deleted` tinyint(1) NULL DEFAULT 0 COMMENT '是否被删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '邮箱发送表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for sys_files +-- ---------------------------- +DROP TABLE IF EXISTS `sys_files`; +CREATE TABLE `sys_files` ( + `id` bigint NOT NULL COMMENT '文件的唯一标识符,自动递增', + `filename` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '文件的名称', + `filepath` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '文件在服务器上的存储路径', + `file_size` int NOT NULL COMMENT '文件的大小,以字节为单位', + `file_type` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '文件的MIME类型', + `download_count` int NULL DEFAULT 0 COMMENT '下载数量', + `create_user` bigint NOT NULL COMMENT '创建用户', + `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录文件最后修改的时间戳', + `update_user` int NULL DEFAULT NULL COMMENT '操作用户', + `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `is_deleted` tinyint(1) UNSIGNED ZEROFILL NOT NULL DEFAULT 0 COMMENT '文件是否被删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '系统文件表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for sys_i18n +-- ---------------------------- +DROP TABLE IF EXISTS `sys_i18n`; +CREATE TABLE `sys_i18n` ( + `id` bigint NOT NULL COMMENT '主键id', + `key_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '多语言key', + `translation` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '多语言翻译名称', + `type_name` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '多语言类型', + `create_user` bigint NULL DEFAULT NULL COMMENT '创建用户', + `update_user` int NULL DEFAULT NULL COMMENT '操作用户', + `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录文件最后修改的时间戳', + `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `is_deleted` tinyint(1) UNSIGNED ZEROFILL NOT NULL DEFAULT 0 COMMENT '文件是否被删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '多语言表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for sys_i18n_type +-- ---------------------------- +DROP TABLE IF EXISTS `sys_i18n_type`; +CREATE TABLE `sys_i18n_type` ( + `id` bigint NOT NULL COMMENT '主键id', + `type_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '多语言类型(比如zh,en)', + `summary` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称解释(比如中文,英文)', + `is_default` tinyint NULL DEFAULT NULL COMMENT '是否为默认语言', + `create_user` bigint NULL DEFAULT NULL COMMENT '创建用户', + `update_user` int NULL DEFAULT NULL COMMENT '操作用户', + `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录文件最后修改的时间戳', + `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `is_deleted` tinyint(1) UNSIGNED ZEROFILL NOT NULL DEFAULT 0 COMMENT '文件是否被删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '多语言类型表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for sys_menu_icon +-- ---------------------------- +DROP TABLE IF EXISTS `sys_menu_icon`; +CREATE TABLE `sys_menu_icon` ( + `id` bigint NOT NULL, + `icon_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'icon类名', + `icon_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'icon 名称', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `create_user` bigint NOT NULL COMMENT '创建用户', + `update_user` bigint NULL DEFAULT NULL COMMENT '操作用户', + `is_deleted` tinyint NULL DEFAULT 0 COMMENT '是否删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '系统菜单图标' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for sys_power +-- ---------------------------- +DROP TABLE IF EXISTS `sys_power`; +CREATE TABLE `sys_power` ( + `id` bigint NOT NULL COMMENT '权限ID', + `parent_id` bigint NULL DEFAULT NULL COMMENT '父级id', + `power_code` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '权限编码', + `power_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '权限名称', + `request_url` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT '请求路径', + `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `create_user` bigint NULL DEFAULT NULL COMMENT '创建用户', + `update_user` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新用户', + `is_deleted` tinyint(1) UNSIGNED ZEROFILL NULL DEFAULT 0 COMMENT '是否删除,0-未删除,1-已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '系统权限表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for sys_role +-- ---------------------------- +DROP TABLE IF EXISTS `sys_role`; +CREATE TABLE `sys_role` ( + `id` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, + `role_code` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '角色代码', + `description` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '描述', + `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + `create_user` bigint NOT NULL COMMENT '创建用户', + `update_user` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '操作用户', + `is_deleted` tinyint(1) UNSIGNED ZEROFILL NOT NULL DEFAULT 0 COMMENT '是否删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '系统角色表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for sys_role_power +-- ---------------------------- +DROP TABLE IF EXISTS `sys_role_power`; +CREATE TABLE `sys_role_power` ( + `id` bigint NOT NULL COMMENT 'ID', + `role_id` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '角色id', + `power_id` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '权限id', + `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `create_user` bigint NULL DEFAULT NULL COMMENT '创建用户', + `update_user` bigint NULL DEFAULT NULL COMMENT '更新用户', + `is_deleted` tinyint(1) UNSIGNED ZEROFILL NULL DEFAULT 0 COMMENT '是否删除,0-未删除,1-已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '系统角色权限表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for sys_router +-- ---------------------------- +DROP TABLE IF EXISTS `sys_router`; +CREATE TABLE `sys_router` ( + `id` bigint NOT NULL COMMENT '主键id', + `parent_id` bigint NULL DEFAULT NULL COMMENT '父级id', + `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '在项目中路径', + `component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件位置', + `frame_src` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'frame路径', + `route_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路由名称', + `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路由title', + `menu_type` int NULL DEFAULT NULL COMMENT '菜单类型', + `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '图标', + `router_rank` int NULL DEFAULT NULL COMMENT '等级', + `visible` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否显示 返给前端为 showLink', + `create_user` bigint NULL DEFAULT NULL COMMENT '创建用户', + `update_user` int NULL DEFAULT NULL COMMENT '操作用户', + `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录文件最后修改的时间戳', + `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `is_deleted` tinyint(1) UNSIGNED ZEROFILL NOT NULL DEFAULT 0 COMMENT '文件是否被删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_id_parent_id`(`id` ASC, `parent_id` ASC) USING BTREE, + INDEX `idx_id`(`id` ASC) USING BTREE, + INDEX `idx_parent_id`(`parent_id` ASC) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统菜单表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for sys_router_role +-- ---------------------------- +DROP TABLE IF EXISTS `sys_router_role`; +CREATE TABLE `sys_router_role` ( + `id` bigint NOT NULL COMMENT '主键ID', + `router_id` bigint NOT NULL COMMENT '路由ID', + `role_id` bigint NOT NULL COMMENT '角色ID', + `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改的时间戳', + `create_user` bigint NOT NULL COMMENT '创建用户', + `update_user` int NULL DEFAULT NULL COMMENT '操作用户', + `is_deleted` tinyint(1) UNSIGNED ZEROFILL NOT NULL DEFAULT 0 COMMENT '是否被删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统路由角色关系表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for sys_user +-- ---------------------------- +DROP TABLE IF EXISTS `sys_user`; +CREATE TABLE `sys_user` ( + `id` bigint NOT NULL COMMENT 'ID', + `username` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户名', + `nick_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '昵称', + `email` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '邮箱', + `phone` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号', + `password` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '密码', + `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `sex` tinyint NULL DEFAULT 1 COMMENT '0:女 1:男', + `summary` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '个人描述', + `last_login_ip` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最后登录IP', + `last_login_ip_address` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最后登录ip归属地', + `status` tinyint NULL DEFAULT 0 COMMENT '1:禁用 0:正常', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_time` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `create_user` bigint NULL DEFAULT NULL COMMENT '创建用户', + `update_user` bigint NULL DEFAULT NULL COMMENT '操作用户', + `is_deleted` tinyint NULL DEFAULT 0 COMMENT '是否删除', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `key_email`(`email` ASC) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户信息' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for sys_user_dept +-- ---------------------------- +DROP TABLE IF EXISTS `sys_user_dept`; +CREATE TABLE `sys_user_dept` ( + `id` bigint NOT NULL COMMENT 'ID', + `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户id', + `dept_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '部门id', + `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `create_user` bigint NULL DEFAULT NULL COMMENT '创建用户', + `update_user` bigint NULL DEFAULT NULL COMMENT '更新用户', + `is_deleted` tinyint(1) UNSIGNED ZEROFILL NULL DEFAULT 0 COMMENT '是否删除,0-未删除,1-已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '部门用户关系表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Table structure for sys_user_role +-- ---------------------------- +DROP TABLE IF EXISTS `sys_user_role`; +CREATE TABLE `sys_user_role` ( + `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'ID', + `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户id', + `role_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '角色id', + `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `create_user` bigint NOT NULL COMMENT '创建用户', + `update_user` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '更新用户', + `is_deleted` tinyint(1) UNSIGNED ZEROFILL NULL DEFAULT 0 COMMENT '是否删除,0-未删除,1-已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '系统用户角色关系表' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- View structure for qrtz_view_schedulers +-- ---------------------------- +DROP VIEW IF EXISTS `qrtz_view_schedulers`; +CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `qrtz_view_schedulers` AS select `job`.`JOB_NAME` AS `job_name`,`job`.`JOB_GROUP` AS `job_group`,`job`.`DESCRIPTION` AS `description`,`job`.`JOB_CLASS_NAME` AS `job_class_name`,`cron`.`CRON_EXPRESSION` AS `cron_expression`,`tri`.`TRIGGER_NAME` AS `trigger_name`,`tri`.`TRIGGER_STATE` AS `trigger_state` from ((`QRTZ_JOB_DETAILS` `job` join `QRTZ_TRIGGERS` `tri` on(((`job`.`JOB_NAME` = `tri`.`JOB_NAME`) and (`job`.`JOB_GROUP` = `tri`.`JOB_GROUP`)))) join `QRTZ_CRON_TRIGGERS` `cron` on(((`cron`.`TRIGGER_NAME` = `tri`.`TRIGGER_NAME`) and (`cron`.`TRIGGER_GROUP` = `tri`.`JOB_GROUP`)))) where (`tri`.`TRIGGER_TYPE` = 'CRON'); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/service/Dockerfile b/service/Dockerfile index 9473bcf..18e104a 100644 --- a/service/Dockerfile +++ b/service/Dockerfile @@ -1,5 +1,5 @@ -FROM openjdk:21 -MAINTAINER bunny +FROM openjdk:17 +MAINTAINER server #系统编码 ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 @@ -9,15 +9,15 @@ RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime RUN echo "Asia/Shanghai" > /etc/timezone # 设定工作目录 -WORKDIR /home/bunny +WORKDIR /home/server # 复制jar包 -COPY target/*.jar /home/bunny/app.jar +COPY target/*.jar /home/server/app.jar -#启动容器时的进程 -ENTRYPOINT ["java","-jar","/home/bunny/app.jar"] +# 启动容器时的进程 +ENTRYPOINT ["java","-jar","/home/server/app.jar"] -#暴露 8800 端口 +#暴露 7070 端口 EXPOSE 7070 # mvn clean package -Pprod -DskipTests \ No newline at end of file diff --git a/service/pom.xml b/service/pom.xml index c7e73d8..5091319 100644 --- a/service/pom.xml +++ b/service/pom.xml @@ -96,6 +96,10 @@ + + org.springframework.boot + spring-boot-maven-plugin + org.apache.maven.plugins maven-surefire-plugin @@ -103,37 +107,6 @@ true - - com.spotify - docker-maven-plugin - 1.2.2 - - - - build-image - - package - - build - push - - - - - harbor - http://${docker.repostory} - - http://${docker.host} - - - ${docker.repostory}/${docker.registry.name}/${project.artifactId}:${project.version} - - - ${project.basedir} - - false - - diff --git a/service/src/main/java/cn/bunny/services/controller/I18nTypeController.java b/service/src/main/java/cn/bunny/services/controller/I18nTypeController.java index 12249eb..4cb1062 100644 --- a/service/src/main/java/cn/bunny/services/controller/I18nTypeController.java +++ b/service/src/main/java/cn/bunny/services/controller/I18nTypeController.java @@ -32,7 +32,7 @@ public class I18nTypeController { private I18nTypeService i18nTypeService; @Operation(summary = "获取多语言类型", description = "获取多语言类型") - @GetMapping("getI18nTypeList") + @GetMapping("/noAuth/getI18nTypeList") public Mono>> getI18nTypeList() { List voList = i18nTypeService.getI18nTypeList(); return Mono.just(Result.success(voList)); diff --git a/service/src/main/java/cn/bunny/services/controller/SchedulersController.java b/service/src/main/java/cn/bunny/services/controller/SchedulersController.java index 15d5d5b..f42794f 100644 --- a/service/src/main/java/cn/bunny/services/controller/SchedulersController.java +++ b/service/src/main/java/cn/bunny/services/controller/SchedulersController.java @@ -4,7 +4,7 @@ import cn.bunny.dao.dto.schedulers.SchedulersAddDto; import cn.bunny.dao.dto.schedulers.SchedulersDto; import cn.bunny.dao.dto.schedulers.SchedulersOperationDto; import cn.bunny.dao.dto.schedulers.SchedulersUpdateDto; -import cn.bunny.dao.entity.schedulers.Schedulers; +import cn.bunny.dao.entity.schedulers.ViewSchedulers; import cn.bunny.dao.pojo.result.PageResult; import cn.bunny.dao.pojo.result.Result; import cn.bunny.dao.pojo.result.ResultCodeEnum; @@ -45,7 +45,7 @@ public class SchedulersController { @Parameter(name = "limit", description = "每页记录数", required = true) @PathVariable("limit") Integer limit, SchedulersDto dto) { - Page pageParams = new Page<>(page, limit); + Page pageParams = new Page<>(page, limit); PageResult pageResult = schedulersService.getSchedulersList(pageParams, dto); return Mono.just(Result.success(pageResult)); } diff --git a/service/src/main/java/cn/bunny/services/factory/UserFactory.java b/service/src/main/java/cn/bunny/services/factory/UserFactory.java index ad74946..9e9ad74 100644 --- a/service/src/main/java/cn/bunny/services/factory/UserFactory.java +++ b/service/src/main/java/cn/bunny/services/factory/UserFactory.java @@ -12,6 +12,7 @@ import cn.bunny.dao.pojo.constant.UserConstant; import cn.bunny.dao.vo.system.user.LoginVo; import cn.bunny.services.mapper.PowerMapper; import cn.bunny.services.mapper.RoleMapper; +import cn.bunny.services.mapper.UserMapper; import cn.bunny.services.security.custom.CustomCheckIsAdmin; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -37,8 +38,11 @@ public class UserFactory { @Autowired private RedisTemplate redisTemplate; + @Autowired private MinioUtil minioUtil; + @Autowired + private UserMapper userMapper; public LoginVo buildUserVo(AdminUser user, long readMeDay) { // 创建token @@ -46,6 +50,8 @@ public class UserFactory { String email = user.getEmail(); String token = JwtHelper.createToken(userId, email, (int) readMeDay); String avatar = user.getAvatar(); + String remoteAddr = IpUtil.getCurrentUserIpAddress().getRemoteAddr(); + String ipRegion = IpUtil.getCurrentUserIpAddress().getIpRegion(); // 判断用户是否有头像,如果没有头像设置默认头像 avatar = StringUtils.hasText(avatar) ? minioUtil.getObjectNameFullPath(avatar) : UserConstant.USER_AVATAR; @@ -53,8 +59,9 @@ public class UserFactory { // 设置用户IP地址,并更新用户信息 AdminUser updateUser = new AdminUser(); updateUser.setId(userId); - updateUser.setLastLoginIp(IpUtil.getCurrentUserIpAddress().getRemoteAddr()); - updateUser.setLastLoginIpAddress(IpUtil.getCurrentUserIpAddress().getIpRegion()); + updateUser.setLastLoginIp(remoteAddr); + updateUser.setLastLoginIpAddress(ipRegion); + userMapper.updateById(updateUser); // 计算过期时间,并格式化返回 LocalDateTime localDateTime = LocalDateTime.now(); @@ -79,8 +86,8 @@ public class UserFactory { loginVo.setAvatar(avatar); loginVo.setToken(token); loginVo.setRefreshToken(token); - loginVo.setLastLoginIp(IpUtil.getCurrentUserIpAddress().getRemoteAddr()); - loginVo.setLastLoginIpAddress(IpUtil.getCurrentUserIpAddress().getIpRegion()); + loginVo.setLastLoginIp(remoteAddr); + loginVo.setLastLoginIpAddress(ipRegion); loginVo.setRoles(roles); loginVo.setPermissions(permissions); loginVo.setUpdateUser(userId); diff --git a/service/src/main/java/cn/bunny/services/mapper/SchedulersMapper.java b/service/src/main/java/cn/bunny/services/mapper/SchedulersMapper.java index f5d577d..bd405d0 100644 --- a/service/src/main/java/cn/bunny/services/mapper/SchedulersMapper.java +++ b/service/src/main/java/cn/bunny/services/mapper/SchedulersMapper.java @@ -1,7 +1,7 @@ package cn.bunny.services.mapper; import cn.bunny.dao.dto.schedulers.SchedulersDto; -import cn.bunny.dao.entity.schedulers.Schedulers; +import cn.bunny.dao.entity.schedulers.ViewSchedulers; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -19,7 +19,7 @@ import java.util.List; * @since 2024-10-14 20:59:25 */ @Mapper -public interface SchedulersMapper extends BaseMapper { +public interface SchedulersMapper extends BaseMapper { /** * * 分页查询Schedulers视图内容 @@ -28,7 +28,7 @@ public interface SchedulersMapper extends BaseMapper { * @param dto Schedulers视图查询表单 * @return Schedulers视图分页结果 */ - IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") SchedulersDto dto); + IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") SchedulersDto dto); /** * 物理删除Schedulers视图 diff --git a/service/src/main/java/cn/bunny/services/quartz/QuartzConfiguration.java b/service/src/main/java/cn/bunny/services/quartz/QuartzConfiguration.java index 70458b3..e14d33e 100644 --- a/service/src/main/java/cn/bunny/services/quartz/QuartzConfiguration.java +++ b/service/src/main/java/cn/bunny/services/quartz/QuartzConfiguration.java @@ -2,15 +2,10 @@ package cn.bunny.services.quartz; import org.quartz.Scheduler; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.config.PropertiesFactoryBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.core.io.ClassPathResource; import org.springframework.scheduling.quartz.SchedulerFactoryBean; -import java.io.IOException; -import java.util.Properties; - @Configuration public class QuartzConfiguration { @@ -28,24 +23,11 @@ public class QuartzConfiguration { @Bean public SchedulerFactoryBean schedulerFactoryBean() { SchedulerFactoryBean factoryBean = new SchedulerFactoryBean(); - try { - factoryBean.setAutoStartup(true); - // 延时3秒启动 - factoryBean.setStartupDelay(3); - factoryBean.setQuartzProperties(quartzProperties()); - factoryBean.setJobFactory(quartzJobFactory); - return factoryBean; - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - @Bean - public Properties quartzProperties() throws IOException { - PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean(); - propertiesFactoryBean.setLocation(new ClassPathResource("/quartz.properties")); - propertiesFactoryBean.afterPropertiesSet(); - return propertiesFactoryBean.getObject(); + factoryBean.setAutoStartup(true); + // 延时1秒启动 + factoryBean.setStartupDelay(1); + factoryBean.setJobFactory(quartzJobFactory); + return factoryBean; } @Bean(name = "scheduler") diff --git a/service/src/main/java/cn/bunny/services/security/filter/NoTokenAuthenticationFilter.java b/service/src/main/java/cn/bunny/services/security/filter/NoTokenAuthenticationFilter.java index 8a6543e..5171c81 100644 --- a/service/src/main/java/cn/bunny/services/security/filter/NoTokenAuthenticationFilter.java +++ b/service/src/main/java/cn/bunny/services/security/filter/NoTokenAuthenticationFilter.java @@ -47,8 +47,14 @@ public class NoTokenAuthenticationFilter extends OncePerRequestFilter { Object loginVoObject = redisTemplate.opsForValue().get(RedisUserConstant.getAdminLoginInfoPrefix(username)); LoginVo loginVo = JSON.parseObject(JSON.toJSONString(loginVoObject), LoginVo.class); + // 登录信息为空 + if (loginVo == null) { + ResponseUtil.out(response, Result.error(ResultCodeEnum.LOGIN_AUTH)); + return; + } + // 判断用户是否禁用 - if (loginVo != null && loginVo.getStatus()) { + if (loginVo.getStatus()) { ResponseUtil.out(response, Result.error(ResultCodeEnum.FAIL_NO_ACCESS_DENIED_USER_LOCKED)); return; } diff --git a/service/src/main/java/cn/bunny/services/security/filter/TokenLoginFilterService.java b/service/src/main/java/cn/bunny/services/security/filter/TokenLoginFilterService.java index 080d74c..97ef498 100644 --- a/service/src/main/java/cn/bunny/services/security/filter/TokenLoginFilterService.java +++ b/service/src/main/java/cn/bunny/services/security/filter/TokenLoginFilterService.java @@ -2,7 +2,6 @@ package cn.bunny.services.security.filter; import cn.bunny.dao.dto.system.user.LoginDto; -import cn.bunny.dao.pojo.constant.RedisUserConstant; import cn.bunny.dao.pojo.result.Result; import cn.bunny.dao.pojo.result.ResultCodeEnum; import cn.bunny.dao.vo.system.user.LoginVo; @@ -49,6 +48,10 @@ public class TokenLoginFilterService extends UsernamePasswordAuthenticationFilte this.customUserDetailsService = customUserDetailsService; } + /** + * * 自定义验证 + * 判断邮箱验证码是否正确 + */ @Override public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) { ObjectMapper objectMapper = new ObjectMapper(); @@ -59,16 +62,17 @@ public class TokenLoginFilterService extends UsernamePasswordAuthenticationFilte String username = loginDto.getUsername(); String password = loginDto.getPassword(); - Object redisEmailCode = redisTemplate.opsForValue().get(RedisUserConstant.getAdminUserEmailCodePrefix(username)); - if (redisEmailCode == null) { - out(response, Result.error(ResultCodeEnum.EMAIL_CODE_EMPTY)); - return null; - } + // Object redisEmailCode = redisTemplate.opsForValue().get(RedisUserConstant.getAdminUserEmailCodePrefix(username)); + // if (redisEmailCode == null) { + // out(response, Result.error(ResultCodeEnum.EMAIL_CODE_EMPTY)); + // return null; + // } - if (!emailCode.equals(redisEmailCode.toString().toLowerCase())) { - out(response, Result.error(ResultCodeEnum.EMAIL_CODE_NOT_MATCHING)); - return null; - } + // 判断用户邮箱验证码是否和Redis中发送的验证码 + // if (!emailCode.equals(redisEmailCode.toString().toLowerCase())) { + // out(response, Result.error(ResultCodeEnum.EMAIL_CODE_NOT_MATCHING)); + // return null; + // } Authentication authenticationToken = new UsernamePasswordAuthenticationToken(username, password); return getAuthenticationManager().authenticate(authenticationToken); diff --git a/service/src/main/java/cn/bunny/services/service/SchedulersService.java b/service/src/main/java/cn/bunny/services/service/SchedulersService.java index c98c61f..057b037 100644 --- a/service/src/main/java/cn/bunny/services/service/SchedulersService.java +++ b/service/src/main/java/cn/bunny/services/service/SchedulersService.java @@ -4,7 +4,7 @@ import cn.bunny.dao.dto.schedulers.SchedulersAddDto; import cn.bunny.dao.dto.schedulers.SchedulersDto; import cn.bunny.dao.dto.schedulers.SchedulersOperationDto; import cn.bunny.dao.dto.schedulers.SchedulersUpdateDto; -import cn.bunny.dao.entity.schedulers.Schedulers; +import cn.bunny.dao.entity.schedulers.ViewSchedulers; import cn.bunny.dao.pojo.result.PageResult; import cn.bunny.dao.vo.schedulers.SchedulersVo; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -21,14 +21,14 @@ import java.util.List; * @author Bunny * @since 2024-10-14 20:59:25 */ -public interface SchedulersService extends IService { +public interface SchedulersService extends IService { /** * * 获取Schedulers视图列表 * * @return Schedulers视图返回列表 */ - PageResult getSchedulersList(Page pageParams, SchedulersDto dto); + PageResult getSchedulersList(Page pageParams, SchedulersDto dto); /** * * 添加Schedulers视图 diff --git a/service/src/main/java/cn/bunny/services/service/impl/SchedulersServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/SchedulersServiceImpl.java index 545008b..c025eab 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/SchedulersServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/SchedulersServiceImpl.java @@ -4,7 +4,7 @@ import cn.bunny.dao.dto.schedulers.SchedulersAddDto; import cn.bunny.dao.dto.schedulers.SchedulersDto; import cn.bunny.dao.dto.schedulers.SchedulersOperationDto; import cn.bunny.dao.dto.schedulers.SchedulersUpdateDto; -import cn.bunny.dao.entity.schedulers.Schedulers; +import cn.bunny.dao.entity.schedulers.ViewSchedulers; import cn.bunny.dao.pojo.result.PageResult; import cn.bunny.dao.vo.schedulers.SchedulersVo; import cn.bunny.services.mapper.SchedulersMapper; @@ -27,7 +27,7 @@ import java.util.List; * @since 2024-10-14 20:59:25 */ @Service -public class SchedulersServiceImpl extends ServiceImpl implements SchedulersService { +public class SchedulersServiceImpl extends ServiceImpl implements SchedulersService { /** * * Schedulers视图 服务实现类 @@ -37,9 +37,9 @@ public class SchedulersServiceImpl extends ServiceImpl getSchedulersList(Page pageParams, SchedulersDto dto) { + public PageResult getSchedulersList(Page pageParams, SchedulersDto dto) { // 分页查询菜单图标 - IPage page = baseMapper.selectListByPage(pageParams, dto); + IPage page = baseMapper.selectListByPage(pageParams, dto); List voList = page.getRecords().stream().map(schedulers -> { SchedulersVo schedulersVo = new SchedulersVo(); @@ -63,9 +63,9 @@ public class SchedulersServiceImpl extends ServiceImpl - - - - - - - - + + + + + + + + @@ -19,29 +19,29 @@ - select - from v_schedulers + from qrtz_view_schedulers - - and job_name like CONCAT('%',#{dto.jobName},'%') - - - and job_group like CONCAT('%',#{dto.jobGroup},'%') - - - and description like CONCAT('%',#{dto.description},'%') - - - and job_class_name like CONCAT('%',#{dto.jobClassName},'%') - - - and trigger_name like CONCAT('%',#{dto.triggerName},'%') - - - and trigger_state like CONCAT('%',#{dto.triggerState},'%') - + + and job_name like CONCAT('%',#{dto.jobName},'%') + + + and job_group like CONCAT('%',#{dto.jobGroup},'%') + + + and description like CONCAT('%',#{dto.description},'%') + + + and job_class_name like CONCAT('%',#{dto.jobClassName},'%') + + + and trigger_name like CONCAT('%',#{dto.triggerName},'%') + + + and trigger_state like CONCAT('%',#{dto.triggerState},'%') + order by update_time desc @@ -49,7 +49,7 @@ delete - from v_schedulers + from qrtz_view_schedulers where id in #{id} diff --git a/service/src/main/resources/quartz.properties b/service/src/main/resources/quartz.properties deleted file mode 100644 index 343ce39..0000000 --- a/service/src/main/resources/quartz.properties +++ /dev/null @@ -1,16 +0,0 @@ -org.quartz.scheduler.instanceName=quartzScheduler -org.quartz.scheduler.instanceId=AUTO -org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool -org.quartz.threadPool.threadCount=20 -org.quartz.threadPool.threadPriority=5 -org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true -org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX -org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate -org.quartz.jobStore.tablePrefix=QRTZ_ -org.quartz.jobStore.dataSource=auth_admin -org.quartz.jobStore.misfireThreshold=5000 -org.quartz.dataSource.auth_admin.driver=com.mysql.cj.jdbc.Driver -org.quartz.dataSource.auth_admin.URL=jdbc:mysql://192.168.3.98:3306/auth_admin?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true -org.quartz.dataSource.auth_admin.user=root -org.quartz.dataSource.auth_admin.password=02120212 -org.quartz.dataSource.auth_admin.maxConnections=5 \ No newline at end of file