fix: 更新获取IP地址
This commit is contained in:
parent
48b489f4e5
commit
7fedf7deee
|
@ -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;
|
||||
|
|
|
@ -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地址");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
|
@ -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;
|
|
@ -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
|
|
@ -96,6 +96,10 @@
|
|||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
|
@ -103,37 +107,6 @@
|
|||
<skip>true</skip>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>com.spotify</groupId>
|
||||
<artifactId>docker-maven-plugin</artifactId>
|
||||
<version>1.2.2</version>
|
||||
<!--将插件绑定在某个phase执行-->
|
||||
<executions>
|
||||
<execution>
|
||||
<id>build-image</id>
|
||||
<!--将插件绑定在package这个phase(阶段)上。也就是说,用户只需执行mvn package,就会自动执行mvn docker:build-->
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
<goal>push</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<configuration>
|
||||
<serverId>harbor</serverId>
|
||||
<registryUrl>http://${docker.repostory}</registryUrl>
|
||||
<!-- 配置docker主机地址 -->
|
||||
<dockerHost>http://${docker.host}</dockerHost>
|
||||
<!--指定生成的镜像名-->
|
||||
<imageName>
|
||||
${docker.repostory}/${docker.registry.name}/${project.artifactId}:${project.version}
|
||||
</imageName>
|
||||
<!-- 指定 dockerfile 路径-->
|
||||
<dockerDirectory>${project.basedir}</dockerDirectory>
|
||||
<!-- 是否跳过docker构建 -->
|
||||
<skipDockerBuild>false</skipDockerBuild>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
|
|
@ -32,7 +32,7 @@ public class I18nTypeController {
|
|||
private I18nTypeService i18nTypeService;
|
||||
|
||||
@Operation(summary = "获取多语言类型", description = "获取多语言类型")
|
||||
@GetMapping("getI18nTypeList")
|
||||
@GetMapping("/noAuth/getI18nTypeList")
|
||||
public Mono<Result<List<I18nTypeVo>>> getI18nTypeList() {
|
||||
List<I18nTypeVo> voList = i18nTypeService.getI18nTypeList();
|
||||
return Mono.just(Result.success(voList));
|
||||
|
|
|
@ -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<Schedulers> pageParams = new Page<>(page, limit);
|
||||
Page<ViewSchedulers> pageParams = new Page<>(page, limit);
|
||||
PageResult<SchedulersVo> pageResult = schedulersService.getSchedulersList(pageParams, dto);
|
||||
return Mono.just(Result.success(pageResult));
|
||||
}
|
||||
|
|
|
@ -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<String, Object> 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);
|
||||
|
|
|
@ -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<Schedulers> {
|
||||
public interface SchedulersMapper extends BaseMapper<ViewSchedulers> {
|
||||
|
||||
/**
|
||||
* * 分页查询Schedulers视图内容
|
||||
|
@ -28,7 +28,7 @@ public interface SchedulersMapper extends BaseMapper<Schedulers> {
|
|||
* @param dto Schedulers视图查询表单
|
||||
* @return Schedulers视图分页结果
|
||||
*/
|
||||
IPage<Schedulers> selectListByPage(@Param("page") Page<Schedulers> pageParams, @Param("dto") SchedulersDto dto);
|
||||
IPage<ViewSchedulers> selectListByPage(@Param("page") Page<ViewSchedulers> pageParams, @Param("dto") SchedulersDto dto);
|
||||
|
||||
/**
|
||||
* 物理删除Schedulers视图
|
||||
|
|
|
@ -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());
|
||||
// 延时1秒启动
|
||||
factoryBean.setStartupDelay(1);
|
||||
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();
|
||||
}
|
||||
|
||||
@Bean(name = "scheduler")
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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<Schedulers> {
|
||||
public interface SchedulersService extends IService<ViewSchedulers> {
|
||||
|
||||
/**
|
||||
* * 获取Schedulers视图列表
|
||||
*
|
||||
* @return Schedulers视图返回列表
|
||||
*/
|
||||
PageResult<SchedulersVo> getSchedulersList(Page<Schedulers> pageParams, SchedulersDto dto);
|
||||
PageResult<SchedulersVo> getSchedulersList(Page<ViewSchedulers> pageParams, SchedulersDto dto);
|
||||
|
||||
/**
|
||||
* * 添加Schedulers视图
|
||||
|
|
|
@ -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<SchedulersMapper, Schedulers> implements SchedulersService {
|
||||
public class SchedulersServiceImpl extends ServiceImpl<SchedulersMapper, ViewSchedulers> implements SchedulersService {
|
||||
|
||||
/**
|
||||
* * Schedulers视图 服务实现类
|
||||
|
@ -37,9 +37,9 @@ public class SchedulersServiceImpl extends ServiceImpl<SchedulersMapper, Schedul
|
|||
* @return 查询分页Schedulers视图返回对象
|
||||
*/
|
||||
@Override
|
||||
public PageResult<SchedulersVo> getSchedulersList(Page<Schedulers> pageParams, SchedulersDto dto) {
|
||||
public PageResult<SchedulersVo> getSchedulersList(Page<ViewSchedulers> pageParams, SchedulersDto dto) {
|
||||
// 分页查询菜单图标
|
||||
IPage<Schedulers> page = baseMapper.selectListByPage(pageParams, dto);
|
||||
IPage<ViewSchedulers> page = baseMapper.selectListByPage(pageParams, dto);
|
||||
|
||||
List<SchedulersVo> voList = page.getRecords().stream().map(schedulers -> {
|
||||
SchedulersVo schedulersVo = new SchedulersVo();
|
||||
|
@ -63,9 +63,9 @@ public class SchedulersServiceImpl extends ServiceImpl<SchedulersMapper, Schedul
|
|||
@Override
|
||||
public void addSchedulers(@Valid SchedulersAddDto dto) {
|
||||
// 保存数据
|
||||
Schedulers schedulers = new Schedulers();
|
||||
BeanUtils.copyProperties(dto, schedulers);
|
||||
save(schedulers);
|
||||
ViewSchedulers viewSchedulers = new ViewSchedulers();
|
||||
BeanUtils.copyProperties(dto, viewSchedulers);
|
||||
save(viewSchedulers);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -76,9 +76,9 @@ public class SchedulersServiceImpl extends ServiceImpl<SchedulersMapper, Schedul
|
|||
@Override
|
||||
public void updateSchedulers(@Valid SchedulersUpdateDto dto) {
|
||||
// 更新内容
|
||||
Schedulers schedulers = new Schedulers();
|
||||
BeanUtils.copyProperties(dto, schedulers);
|
||||
updateById(schedulers);
|
||||
ViewSchedulers viewSchedulers = new ViewSchedulers();
|
||||
BeanUtils.copyProperties(dto, viewSchedulers);
|
||||
updateById(viewSchedulers);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -10,8 +10,7 @@ logging:
|
|||
pattern:
|
||||
dateformat: HH:mm:ss:SSS
|
||||
file:
|
||||
path: "logs/${spring.application.name}"
|
||||
|
||||
path: "/logs/${spring.application.name}"
|
||||
|
||||
mybatis-plus:
|
||||
mapper-locations: classpath:mapper/*.xml
|
||||
|
|
|
@ -25,20 +25,20 @@ knife4j:
|
|||
|
||||
bunny:
|
||||
datasource1:
|
||||
host: 192.168.3.98
|
||||
port: 3304
|
||||
host: 106.15.251.123
|
||||
port: 3305
|
||||
sqlData: auth_admin
|
||||
username: root
|
||||
password: "02120212"
|
||||
|
||||
redis:
|
||||
host: 192.168.3.98
|
||||
host: 47.120.65.66
|
||||
port: 6379
|
||||
database: 0
|
||||
password: "123456"
|
||||
password: "02120212"
|
||||
|
||||
minio:
|
||||
endpointUrl: "http://192.168.3.98:9000"
|
||||
endpointUrl: "http://116.196.101.14:9000"
|
||||
accessKey: bunny
|
||||
secretKey: "02120212"
|
||||
bucket-name: auth-admin
|
|
@ -43,11 +43,33 @@ spring:
|
|||
quartz:
|
||||
job-store-type: jdbc
|
||||
jdbc:
|
||||
initialize-schema: always
|
||||
initialize-schema: never
|
||||
auto-startup: true
|
||||
wait-for-jobs-to-complete-on-shutdown: true
|
||||
overwrite-existing-jobs: false
|
||||
scheduler-name: quartzScheduler
|
||||
properties:
|
||||
org:
|
||||
quartz:
|
||||
scheduler:
|
||||
# 默认
|
||||
instanceName: quartzScheduler
|
||||
# 如果使用集群,instanceId必须唯一,设置成AUTO
|
||||
instanceId: AUTO
|
||||
jobStore:
|
||||
# 存储方式使用JobStoreTX 也就是数据库
|
||||
class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
|
||||
driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
|
||||
# 表名前缀
|
||||
tablePrefix: QRTZ_
|
||||
useProperties: false
|
||||
misfireThreshold: 5000
|
||||
threadPool:
|
||||
class: org.quartz.simpl.SimpleThreadPool
|
||||
threadCount: 20
|
||||
threadPriority: 5
|
||||
threadsInheritContextClassLoaderOfInitializingThread: true
|
||||
|
||||
|
||||
jackson:
|
||||
date-format: yyyy-MM-dd HH:mm:ss
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<mapper namespace="cn.bunny.services.mapper.SchedulersMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap" type="cn.bunny.dao.entity.schedulers.Schedulers">
|
||||
<resultMap id="BaseResultMap" type="cn.bunny.dao.entity.schedulers.ViewSchedulers">
|
||||
<id column="job_name" property="jobName"/>
|
||||
<id column="job_group" property="jobGroup"/>
|
||||
<id column="description" property="description"/>
|
||||
|
@ -19,10 +19,10 @@
|
|||
</sql>
|
||||
|
||||
<!-- 分页查询Schedulers视图内容 -->
|
||||
<select id="selectListByPage" resultType="cn.bunny.dao.entity.schedulers.Schedulers">
|
||||
<select id="selectListByPage" resultType="cn.bunny.dao.entity.schedulers.ViewSchedulers">
|
||||
select
|
||||
<include refid="Base_Column_List"/>
|
||||
from v_schedulers
|
||||
from qrtz_view_schedulers
|
||||
<where>
|
||||
<if test="dto.jobName != null and dto.jobName != ''">
|
||||
and job_name like CONCAT('%',#{dto.jobName},'%')
|
||||
|
@ -49,7 +49,7 @@
|
|||
<!-- 物理删除Schedulers视图 -->
|
||||
<delete id="deleteBatchIdsWithPhysics">
|
||||
delete
|
||||
from v_schedulers
|
||||
from qrtz_view_schedulers
|
||||
where id in
|
||||
<foreach collection="ids" item="id" open="(" close=")" separator=",">
|
||||
#{id}
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue