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 @@
-