Commit 0b34694a64f0d27f85894a8fd1bab8188e61068a

Authored by YunaiV
1 parent 570794a9

1. 上传最新 sql 脚本

2. 修改 readme
3. 优化 config 模块的排版
README.md
1 ## 平台简介 1 ## 平台简介
2 2
3 -**芋道** 是基于 [RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue) **重构**,一套**全部开源**的**企业级**的快速开发平台,毫无保留给个人及企业免费使用。 3 +**芋道**,一套**全部开源**的**企业级**的快速开发平台,毫无保留给个人及企业免费使用。
4 4
5 > 有任何问题,或者想要的功能,可以在 _Issues_ 中提给艿艿。 5 > 有任何问题,或者想要的功能,可以在 _Issues_ 中提给艿艿。
6 6
@@ -17,40 +17,63 @@ @@ -17,40 +17,63 @@
17 * 基础设施 17 * 基础设施
18 * 研发工具 18 * 研发工具
19 19
  20 +> 友情提示:本项目基于 RuoYi-Vue 修改,**重构优化**后端的代码,**美化**前端的界面。
  21 +>
  22 +> 额外新增的功能,我们使用 🚀 标记。
  23 +
  24 +🙂 所有功能,都通过 **单元测试** 保证高质量。
  25 +
20 ### 系统功能 26 ### 系统功能
21 27
22 -1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置  
23 -1. 在线用户:当前系统中活跃用户状态监控  
24 -1. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分  
25 -1. 菜单管理:配置系统菜单,操作权限,按钮权限标识等  
26 -1. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限  
27 -1. 岗位管理:配置系统用户所属担任职务  
28 -1. 字典管理:对系统中经常使用的一些较为固定的数据进行维护  
29 -1. 通知公告:系统通知公告信息发布维护  
30 -1. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询  
31 -1. 登录日志:系统登录日志记录查询包含登录异常 28 +
  29 +| | 功能 | 描述 |
  30 +| --- | --- | --- |
  31 +| | 用户管理 | 用户是系统操作者,该功能主要完成系统用户配置 |
  32 +| | 在线用户 | 当前系统中活跃用户状态监控,支持手动踢下线 |
  33 +| | 角色管理 | 角色菜单权限分配、设置角色按机构进行数据范围权限划分 |
  34 +| | 菜单管理 | 配置系统菜单,操作权限,按钮权限标识等 |
  35 +| | 部门管理 | 配置系统组织机构(公司、部门、小组),树结构展现支持数据权限 |
  36 +| | 岗位管理 | 配置系统用户所属担任职务 |
  37 +| | 字典管理 | 对系统中经常使用的一些较为固定的数据进行维护 |
  38 +| | 通知公告 | 系统通知公告信息发布维护 |
  39 +| 🚀 | 操作日志 | 系统正常操作日志记录和查询,集成 Swagger 生成日志内容 |
  40 +| | 登录日志 | 系统登录日志记录查询包含登录异常 |
  41 +
  42 +计划新增功能:
  43 +* 短信
  44 +* 邮件
  45 +* 钉钉、飞书等通知
32 46
33 ### 基础设施 47 ### 基础设施
34 48
35 -1. 配置管理:对系统动态配置常用参数  
36 -1. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志  
37 -1. API 日志:包括 RESTful API 访问日志、异常日志两部分,方便排查 API 相关的问题  
38 -1. MySQL 监控:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈  
39 -1. Redis 监控:监控 Redis 数据库的使用情况,使用的 Redis Key 管理  
40 -1. Java 监控:基于 Spring Boot Admin 实现 Java 应用的监控  
41 -1. 链路追踪:基于 SkyWalking 实现性能监控,特别是链路的追踪  
42 -1. 分布式锁:基于 Redis 实现分布式锁,满足并发场景  
43 -1. 幂等组件:基于 Redis 实现幂等组件,解决重复请求问题  
44 -1. 服务保障:基于 Resilience4j 实现服务的稳定性,包括限流、熔断等功能  
45 -1. 日志服务:轻量级日志中心,查看远程服务器的日志  
46 -1. 单元测试:基于 JUnit + Mockito 实现单元测试,保证功能的正确性、代码的质量等 49 +| | 功能 | 描述 |
  50 +| --- | --- | --- |
  51 +| 🚀 | 配置管理 | 对系统动态配置常用参数,支持 SpringBoot 加载 |
  52 +| | 定时任务 | 在线(添加、修改、删除)任务调度包含执行结果日志 |
  53 +| 🚀 | API 日志 | 包括 RESTful API 访问日志、异常日志两部分,方便排查 API 相关的问题 |
  54 +| | MySQL 监控 | 监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈 |
  55 +| | Redis 监控 |监控 Redis 数据库的使用情况,使用的 Redis Key 管理 |
  56 +| 🚀 |Java 监控 | 基于 Spring Boot Admin 实现 Java 应用的监控 |
  57 +| 🚀 | 链路追踪 | 基于 SkyWalking 实现性能监控,特别是链路的追踪 |
  58 +| 🚀 | 分布式锁 | 基于 Redis 实现分布式锁,满足并发场景 |
  59 +| 🚀 | 幂等组件 | 基于 Redis 实现幂等组件,解决重复请求问题 |
  60 +| 🚀 | 服务保障 | 基于 Resilience4j 实现服务的稳定性,包括限流、熔断等功能 |
  61 +| 🚀 | 日志服务 | 轻量级日志中心,查看远程服务器的日志 |
  62 +| 🚀 | 单元测试 |基于 JUnit + Mockito 实现单元测试,保证功能的正确性、代码的质量等 |
  63 +
  64 +计划新增:
  65 +* 工作流
  66 +* 错误码
  67 +* 文件服务
47 68
48 ### 研发工具 69 ### 研发工具
49 70
50 -1. 表单构建:拖动表单元素生成相应的 HTML 代码  
51 -1. 代码生成:前后端代码的生成(Java、Vue、SQL、单元测试),支持 CRUD 下载  
52 -1. 系统接口:基于 Swagger 自动生成相关的 RESTful API 接口文档  
53 -1. 数据库文档:基于 Screw 自动生成数据库文档 71 +| | 功能 | 描述 |
  72 +| --- | --- | --- |
  73 +| 🚀 | 代码生成 |前后端代码的生成(Java、Vue、SQL、单元测试),支持 CRUD 下载 |
  74 +| 🚀 | 系统接口 | 基于 Swagger 自动生成相关的 RESTful API 接口文档 |
  75 +| 🚀 | 数据库文档 | 基于 Screw 自动生成数据库文档,支持导出 Word、HTML、MD 格式 |
  76 +| | 表单构建 | 拖动表单元素生成相应的 HTML 代码 |
54 77
55 ## 在线体验 78 ## 在线体验
56 79
sql/ruoyi-vue-pro.sql
@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
11 Target Server Version : 50718 11 Target Server Version : 50718
12 File Encoding : 65001 12 File Encoding : 65001
13 13
14 - Date: 08/03/2021 00:50:29 14 + Date: 09/03/2021 20:39:41
15 */ 15 */
16 16
17 SET NAMES utf8mb4; 17 SET NAMES utf8mb4;
@@ -37,13 +37,13 @@ CREATE TABLE `inf_api_access_log` ( @@ -37,13 +37,13 @@ CREATE TABLE `inf_api_access_log` (
37 `duration` int(11) NOT NULL COMMENT '执行时长', 37 `duration` int(11) NOT NULL COMMENT '执行时长',
38 `result_code` int(11) NOT NULL DEFAULT '0' COMMENT '结果码', 38 `result_code` int(11) NOT NULL DEFAULT '0' COMMENT '结果码',
39 `result_msg` varchar(512) DEFAULT '' COMMENT '结果提示', 39 `result_msg` varchar(512) DEFAULT '' COMMENT '结果提示',
40 - `creator` varchar(64) DEFAULT '' COMMENT '创建者', 40 + `crerator` varchar(64) DEFAULT '' COMMENT '创建者',
41 `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', 41 `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
42 `updater` varchar(64) DEFAULT '' COMMENT '更新者', 42 `updater` varchar(64) DEFAULT '' COMMENT '更新者',
43 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', 43 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
44 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', 44 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
45 PRIMARY KEY (`id`) USING BTREE 45 PRIMARY KEY (`id`) USING BTREE
46 -) ENGINE=InnoDB AUTO_INCREMENT=1850 DEFAULT CHARSET=utf8mb4 COMMENT='API 访问日志表'; 46 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='API 访问日志表';
47 47
48 -- ---------------------------- 48 -- ----------------------------
49 -- Records of inf_api_access_log 49 -- Records of inf_api_access_log
@@ -84,7 +84,7 @@ CREATE TABLE `inf_api_error_log` ( @@ -84,7 +84,7 @@ CREATE TABLE `inf_api_error_log` (
84 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', 84 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
85 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', 85 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
86 PRIMARY KEY (`id`) USING BTREE 86 PRIMARY KEY (`id`) USING BTREE
87 -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='系统异常日志'; 87 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统异常日志';
88 88
89 -- ---------------------------- 89 -- ----------------------------
90 -- Records of inf_api_error_log 90 -- Records of inf_api_error_log
@@ -175,7 +175,7 @@ CREATE TABLE `inf_job_log` ( @@ -175,7 +175,7 @@ CREATE TABLE `inf_job_log` (
175 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', 175 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
176 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', 176 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
177 PRIMARY KEY (`id`) USING BTREE 177 PRIMARY KEY (`id`) USING BTREE
178 -) ENGINE=InnoDB AUTO_INCREMENT=4477 DEFAULT CHARSET=utf8mb4 COMMENT='定时任务日志表'; 178 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='定时任务日志表';
179 179
180 -- ---------------------------- 180 -- ----------------------------
181 -- Records of inf_job_log 181 -- Records of inf_job_log
@@ -382,7 +382,7 @@ CREATE TABLE `sys_login_log` ( @@ -382,7 +382,7 @@ CREATE TABLE `sys_login_log` (
382 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', 382 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
383 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', 383 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
384 PRIMARY KEY (`id`) USING BTREE 384 PRIMARY KEY (`id`) USING BTREE
385 -) ENGINE=InnoDB AUTO_INCREMENT=127 DEFAULT CHARSET=utf8mb4 COMMENT='系统访问记录'; 385 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统访问记录';
386 386
387 -- ---------------------------- 387 -- ----------------------------
388 -- Records of sys_login_log 388 -- Records of sys_login_log
@@ -579,7 +579,7 @@ CREATE TABLE `sys_operate_log` ( @@ -579,7 +579,7 @@ CREATE TABLE `sys_operate_log` (
579 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', 579 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
580 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', 580 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
581 PRIMARY KEY (`id`) USING BTREE 581 PRIMARY KEY (`id`) USING BTREE
582 -) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 COMMENT='操作日志记录'; 582 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操作日志记录';
583 583
584 -- ---------------------------- 584 -- ----------------------------
585 -- Records of sys_operate_log 585 -- Records of sys_operate_log
@@ -843,9 +843,9 @@ CREATE TABLE `sys_user` ( @@ -843,9 +843,9 @@ CREATE TABLE `sys_user` (
843 `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '帐号状态(0正常 1停用)', 843 `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '帐号状态(0正常 1停用)',
844 `login_ip` varchar(50) DEFAULT '' COMMENT '最后登录IP', 844 `login_ip` varchar(50) DEFAULT '' COMMENT '最后登录IP',
845 `login_date` datetime DEFAULT NULL COMMENT '最后登录时间', 845 `login_date` datetime DEFAULT NULL COMMENT '最后登录时间',
846 - `creator` varchar(64) DEFAULT '' COMMENT '创建者', 846 + `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
847 `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', 847 `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
848 - `updater` varchar(64) DEFAULT '' COMMENT '更新者', 848 + `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
849 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', 849 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
850 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', 850 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
851 PRIMARY KEY (`id`) USING BTREE 851 PRIMARY KEY (`id`) USING BTREE
@@ -898,10 +898,10 @@ DROP TABLE IF EXISTS `sys_user_session`; @@ -898,10 +898,10 @@ DROP TABLE IF EXISTS `sys_user_session`;
898 CREATE TABLE `sys_user_session` ( 898 CREATE TABLE `sys_user_session` (
899 `id` varchar(32) NOT NULL COMMENT '会话编号', 899 `id` varchar(32) NOT NULL COMMENT '会话编号',
900 `user_id` bigint(20) NOT NULL COMMENT '用户编号', 900 `user_id` bigint(20) NOT NULL COMMENT '用户编号',
901 - `username` varchar(50) NOT NULL DEFAULT '' COMMENT '用户账号', 901 + `session_timeout` datetime NOT NULL COMMENT '会话超时时间',
  902 + `username` varchar(30) NOT NULL COMMENT '用户账号',
902 `user_ip` varchar(50) NOT NULL COMMENT '用户 IP', 903 `user_ip` varchar(50) NOT NULL COMMENT '用户 IP',
903 `user_agent` varchar(512) NOT NULL COMMENT '浏览器 UA', 904 `user_agent` varchar(512) NOT NULL COMMENT '浏览器 UA',
904 - `session_timeout` datetime NOT NULL COMMENT '会话超时时间',  
905 `creator` varchar(64) DEFAULT '' COMMENT '创建者', 905 `creator` varchar(64) DEFAULT '' COMMENT '创建者',
906 `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', 906 `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
907 `updater` varchar(64) DEFAULT '' COMMENT '更新者', 907 `updater` varchar(64) DEFAULT '' COMMENT '更新者',
@@ -914,69 +914,6 @@ CREATE TABLE `sys_user_session` ( @@ -914,69 +914,6 @@ CREATE TABLE `sys_user_session` (
914 -- Records of sys_user_session 914 -- Records of sys_user_session
915 -- ---------------------------- 915 -- ----------------------------
916 BEGIN; 916 BEGIN;
917 -INSERT INTO `sys_user_session` VALUES ('015797486c564c01b128cb2662bfa1f9', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-08 03:20:22', '', '2021-02-08 03:20:22', '', '2021-03-09 15:12:47', b'0');  
918 -INSERT INTO `sys_user_session` VALUES ('019f009268e24cc1957c46763eef1fd4', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-14 20:04:33', '', '2021-02-07 08:36:48', '', '2021-03-09 15:12:47', b'0');  
919 -INSERT INTO `sys_user_session` VALUES ('037f130370a744a4b1db19aef205b8ae', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-08 20:38:37', '', '2021-02-08 20:38:37', '', '2021-03-09 15:12:47', b'0');  
920 -INSERT INTO `sys_user_session` VALUES ('04d51ff81ad54d05ab2f29e66b2a02f2', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-11 00:58:19', '', '2021-02-05 17:46:10', '', '2021-03-09 15:12:47', b'0');  
921 -INSERT INTO `sys_user_session` VALUES ('055057e3356b4c249d56a6627ca057a7', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-03-05 01:25:51', '', '2021-03-04 16:54:24', '', '2021-03-09 15:12:47', b'0');  
922 -INSERT INTO `sys_user_session` VALUES ('05965209307f4e7a945aadc6842af77e', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36', '2021-03-07 15:09:55', '', '2021-03-07 14:39:54', '', '2021-03-09 15:12:47', b'0');  
923 -INSERT INTO `sys_user_session` VALUES ('064ba2d647704f57bdf36a1803a724d7', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-27 12:04:09', '', '2021-02-26 02:17:35', '', '2021-03-09 15:12:47', b'0');  
924 -INSERT INTO `sys_user_session` VALUES ('0df60899301d4080bd4164f24bccf18b', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-14 22:57:44', '', '2021-02-07 13:05:42', '', '2021-03-09 15:12:47', b'0');  
925 -INSERT INTO `sys_user_session` VALUES ('1127b5eb9b0c4f9fa382d4d98a8a4a38', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-10 11:10:31', '', '2021-02-05 06:49:00', '', '2021-03-09 15:12:47', b'0');  
926 -INSERT INTO `sys_user_session` VALUES ('11aa2d7861d445349790804fa8676754', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Linux; Android 10; PCT-AL10 Build/HUAWEIPCT-AL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045513 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.1.1841(0x28000159) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-02-09 00:06:03', '', '2021-02-09 00:06:03', '', '2021-03-09 15:12:47', b'0');  
927 -INSERT INTO `sys_user_session` VALUES ('135db2c6d88a4f41aaf4df46f3a3e0ea', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-03-06 01:44:25', '', '2021-03-06 01:44:25', '', '2021-03-09 15:12:47', b'0');  
928 -INSERT INTO `sys_user_session` VALUES ('1bcac32d34b94422893f10718f643320', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-09 12:14:10', '', '2021-02-09 12:14:10', '', '2021-03-09 15:12:47', b'0');  
929 -INSERT INTO `sys_user_session` VALUES ('20109910c52e4b02bbc0531212bff8cb', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-06 02:39:48', '', '2021-02-06 02:39:48', '', '2021-03-09 15:12:47', b'0');  
930 -INSERT INTO `sys_user_session` VALUES ('2024509755b3444690c2a1dddaebd812', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-05 06:22:30', '', '2021-02-05 06:22:30', '', '2021-03-09 15:12:47', b'0');  
931 -INSERT INTO `sys_user_session` VALUES ('260facb728964db7a3df8461b4eebe86', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-08 23:10:08', '', '2021-02-08 23:10:08', '', '2021-03-09 15:12:47', b'0');  
932 -INSERT INTO `sys_user_session` VALUES ('27858c1f13c64a2a8889063932419885', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-20 16:11:21', '', '2021-02-08 18:27:13', '', '2021-03-09 15:12:47', b'0');  
933 -INSERT INTO `sys_user_session` VALUES ('27d6db8abb3b4ed88d446ad489b9db23', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-14 10:57:34', '', '2021-02-07 06:38:34', '', '2021-03-09 15:12:47', b'0');  
934 -INSERT INTO `sys_user_session` VALUES ('27dbe0b1051b41eb9efe6558af7cd681', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-03-06 19:10:23', '', '2021-03-06 00:51:14', '', '2021-03-09 15:12:47', b'0');  
935 -INSERT INTO `sys_user_session` VALUES ('285af833677642448bbd19c40a279825', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-18 20:23:05', '', '2021-02-08 04:17:09', '', '2021-03-09 15:12:47', b'0');  
936 -INSERT INTO `sys_user_session` VALUES ('31e5ff8584794ca58460ecf68a177c3f', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-12 20:56:44', '', '2021-02-06 11:48:57', '', '2021-03-09 15:12:47', b'0');  
937 -INSERT INTO `sys_user_session` VALUES ('39cdef31685d4e93931a053d88ff0279', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-05 08:09:33', '', '2021-02-05 08:09:33', '', '2021-03-09 15:12:47', b'0');  
938 -INSERT INTO `sys_user_session` VALUES ('3e111c66356d47da8ffc2755bfa3db52', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-09 14:00:25', '', '2021-02-09 14:00:25', '', '2021-03-09 15:12:47', b'0');  
939 -INSERT INTO `sys_user_session` VALUES ('3f308ac8ff26481e829261dd14babbbb', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-17 22:01:24', '', '2021-02-08 01:33:07', '', '2021-03-09 15:12:47', b'0');  
940 -INSERT INTO `sys_user_session` VALUES ('452d44e0616c4dca93485ce67ac946df', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-03-06 21:59:07', '', '2021-03-06 03:41:56', '', '2021-03-09 15:12:47', b'0');  
941 -INSERT INTO `sys_user_session` VALUES ('50274d6c400f42f7bd5391a12858e262', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-26 11:45:04', '', '2021-02-26 11:45:04', '', '2021-03-09 15:12:47', b'0');  
942 -INSERT INTO `sys_user_session` VALUES ('5636ae58b9644ea1b4ed934b025b76ea', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-09 18:40:06', '', '2021-02-05 04:24:59', '', '2021-03-09 15:12:47', b'0');  
943 -INSERT INTO `sys_user_session` VALUES ('5891c4873bf746989a132929449d5f2b', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-03-06 20:55:38', '', '2021-03-06 01:55:18', '', '2021-03-09 15:12:47', b'0');  
944 -INSERT INTO `sys_user_session` VALUES ('597956fbc5b34363981530b24e1b5327', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-12 20:36:16', '', '2021-02-06 13:47:15', '', '2021-03-09 15:12:47', b'0');  
945 -INSERT INTO `sys_user_session` VALUES ('599102a1e8414ab59eddaf5492f98dad', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-27 21:25:52', '', '2021-02-26 06:40:37', '', '2021-03-09 15:12:47', b'0');  
946 -INSERT INTO `sys_user_session` VALUES ('5a9b736ccaa8452394c57ac82bd0815e', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-10 16:52:48', '', '2021-02-05 10:57:52', '', '2021-03-09 15:12:47', b'0');  
947 -INSERT INTO `sys_user_session` VALUES ('5aaeaa5c89434c6bbfa6c5af55097093', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-27 10:34:25', '', '2021-02-26 01:28:32', '', '2021-03-09 15:12:47', b'0');  
948 -INSERT INTO `sys_user_session` VALUES ('5b6787e6cbfa4c7faba0dc825fc02816', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-20 14:49:27', '', '2021-02-08 17:25:20', '', '2021-03-09 15:12:47', b'0');  
949 -INSERT INTO `sys_user_session` VALUES ('604ac07123a445ee8a81e58db1d6d695', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-05 16:33:53', '', '2021-02-05 16:33:53', '', '2021-03-09 15:12:47', b'0');  
950 -INSERT INTO `sys_user_session` VALUES ('648563ff4a7f454dac0385cca0581fb3', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-19 09:55:44', '', '2021-02-08 09:34:50', '', '2021-03-09 15:12:47', b'0');  
951 -INSERT INTO `sys_user_session` VALUES ('64fd3d0a54754b8fa13b62d2f261b1e2', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-09 16:05:22', '', '2021-02-05 01:36:09', '', '2021-03-09 15:12:47', b'0');  
952 -INSERT INTO `sys_user_session` VALUES ('661be9d3983e4e2eb8b346c1329015f5', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-13 12:02:29', '', '2021-02-06 19:46:45', '', '2021-03-09 15:12:47', b'0');  
953 -INSERT INTO `sys_user_session` VALUES ('6acbf1f210ff4c6594acb3505f0c3738', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-14 22:37:22', '', '2021-02-07 12:16:36', '', '2021-03-09 15:12:47', b'0');  
954 -INSERT INTO `sys_user_session` VALUES ('6e7e89c4948f45658eb74878457ac611', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-23 01:54:44', '', '2021-02-09 21:29:20', '', '2021-03-09 15:12:47', b'0');  
955 -INSERT INTO `sys_user_session` VALUES ('73c66b705ed94e18bc53df61abc2d102', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-06 15:00:55', '', '2021-02-06 15:00:55', '', '2021-03-09 15:12:47', b'0');  
956 -INSERT INTO `sys_user_session` VALUES ('73cc914671034f3190f09f520d1b39e9', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-01-26 08:29:50', '', '2021-01-26 08:29:27', '', '2021-03-09 15:12:47', b'1');  
957 -INSERT INTO `sys_user_session` VALUES ('7b008d71139f48a4903aeaab0bbbef2e', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-03-06 04:38:15', '', '2021-03-06 04:38:15', '', '2021-03-09 15:12:47', b'0');  
958 -INSERT INTO `sys_user_session` VALUES ('7cbd0fdfb9304f298abb9ee2f58f7230', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-08 20:02:24', '', '2021-02-08 20:02:24', '', '2021-03-09 15:12:47', b'0');  
959 -INSERT INTO `sys_user_session` VALUES ('830a1687977b44969025177ad3b6d051', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-10 01:56:00', '', '2021-02-10 01:56:00', '', '2021-03-09 15:12:47', b'0');  
960 -INSERT INTO `sys_user_session` VALUES ('8331dbbca7be4348a3d2d02bf559b65e', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-10 19:06:26', '', '2021-02-05 13:29:04', '', '2021-03-09 15:12:47', b'0');  
961 -INSERT INTO `sys_user_session` VALUES ('897714de63634dba9ac235247f9860c2', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-03-06 06:27:27', '', '2021-03-06 06:27:27', '', '2021-03-09 15:12:47', b'0');  
962 -INSERT INTO `sys_user_session` VALUES ('8d7668c1276344ecbffaf7e4420595d7', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-19 19:17:42', '', '2021-02-08 09:56:09', '', '2021-03-09 15:12:47', b'0');  
963 -INSERT INTO `sys_user_session` VALUES ('9a3a5b8dee1841b69d70454ce23a53a3', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-27 01:27:20', '', '2021-02-26 00:09:49', '', '2021-03-09 15:12:47', b'0');  
964 -INSERT INTO `sys_user_session` VALUES ('9cc71dc2d7a24b978db1bfe0e4bae349', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-01-26 08:30:01', '', '2021-01-26 08:30:01', '', '2021-03-09 15:12:47', b'0');  
965 -INSERT INTO `sys_user_session` VALUES ('9e47f4bfee5e444194530de88900e259', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-23 01:54:51', '', '2021-02-09 20:25:02', '', '2021-03-09 15:12:47', b'0');  
966 -INSERT INTO `sys_user_session` VALUES ('a07756b7a4b24117b0bd14ec2c68b516', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-27 23:12:38', '', '2021-02-26 07:47:21', '', '2021-03-09 15:12:47', b'0');  
967 -INSERT INTO `sys_user_session` VALUES ('a1d01dbed7ff4b6392c3f27c18ce8778', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-14 12:13:56', '', '2021-02-07 07:36:14', '', '2021-03-09 15:12:47', b'0');  
968 -INSERT INTO `sys_user_session` VALUES ('a63c2208dd824440999bee9abc22ea7a', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-25 20:45:24', '', '2021-02-25 20:45:24', '', '2021-03-09 15:12:47', b'0');  
969 -INSERT INTO `sys_user_session` VALUES ('a7c495d00e2e4543ba943b4edb8c8176', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-27 12:50:23', '', '2021-02-26 03:44:46', '', '2021-03-09 15:12:47', b'0');  
970 -INSERT INTO `sys_user_session` VALUES ('a93edff183c447719ecb627d40ca22a6', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-05 20:28:51', '', '2021-02-05 20:28:51', '', '2021-03-09 15:12:47', b'0');  
971 -INSERT INTO `sys_user_session` VALUES ('aa22b7a5754b440e957ec47b832c9fd6', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-06 21:22:31', '', '2021-02-06 21:22:31', '', '2021-03-09 15:12:47', b'0');  
972 -INSERT INTO `sys_user_session` VALUES ('b3881aa0b09b4bcdaf9e5ce5f2bbf15a', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-09 20:18:33', '', '2021-02-09 20:18:33', '', '2021-03-09 15:12:47', b'0');  
973 -INSERT INTO `sys_user_session` VALUES ('bafb6445d05a4ee1bd9cdcf2ee83aea9', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-09 13:57:15', '', '2021-02-09 13:57:15', '', '2021-03-09 15:12:47', b'0');  
974 -INSERT INTO `sys_user_session` VALUES ('c1ede4001ac945f8844b3c7abdc86119', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-08 03:05:18', '', '2021-02-08 03:05:18', '', '2021-03-09 15:12:47', b'0');  
975 -INSERT INTO `sys_user_session` VALUES ('c527dcd973454664a75bbf5dbeae834a', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-22 20:33:03', '', '2021-02-09 17:06:03', '', '2021-03-09 15:12:47', b'0');  
976 -INSERT INTO `sys_user_session` VALUES ('df87c2afa8de4559a091292434df9fd8', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-23 00:25:16', '', '2021-02-09 20:05:45', '', '2021-03-09 15:12:47', b'0');  
977 -INSERT INTO `sys_user_session` VALUES ('e3ad1ef8b9aa4b329855b29c7b372e8f', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-05 06:21:44', '', '2021-02-05 06:21:44', '', '2021-03-09 15:12:47', b'0');  
978 -INSERT INTO `sys_user_session` VALUES ('ea0d48776db84da4ac0f4c2adf62c366', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-08 07:02:03', '', '2021-02-08 07:02:03', '', '2021-03-09 15:12:47', b'0');  
979 -INSERT INTO `sys_user_session` VALUES ('f881f7dc67d04cd29574657fdde32a62', 1, 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '2021-02-05 08:53:20', '', '2021-02-05 08:53:20', '', '2021-03-09 15:12:47', b'0');  
980 COMMIT; 917 COMMIT;
981 918
982 -- ---------------------------- 919 -- ----------------------------
@@ -1218,9 +1155,9 @@ CREATE TABLE `tool_test_demo` ( @@ -1218,9 +1155,9 @@ CREATE TABLE `tool_test_demo` (
1218 `type` tinyint(4) NOT NULL COMMENT '类型', 1155 `type` tinyint(4) NOT NULL COMMENT '类型',
1219 `category` tinyint(4) NOT NULL COMMENT '分类', 1156 `category` tinyint(4) NOT NULL COMMENT '分类',
1220 `remark` varchar(500) DEFAULT NULL COMMENT '备注', 1157 `remark` varchar(500) DEFAULT NULL COMMENT '备注',
1221 - `creator` varchar(64) DEFAULT '' COMMENT '创建者', 1158 + `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
1222 `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', 1159 `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
1223 - `updater` varchar(64) DEFAULT '' COMMENT '更新者', 1160 + `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
1224 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', 1161 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
1225 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', 1162 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
1226 PRIMARY KEY (`id`) USING BTREE 1163 PRIMARY KEY (`id`) USING BTREE
src/main/java/cn/iocoder/dashboard/framework/mybatis/config/MybatisConfiguration.java
1 package cn.iocoder.dashboard.framework.mybatis.config; 1 package cn.iocoder.dashboard.framework.mybatis.config;
2 2
3 -import cn.iocoder.dashboard.framework.mybatis.core.handle.DefaultDBFieldHandler; 3 +import cn.iocoder.dashboard.framework.mybatis.core.handler.DefaultDBFieldHandler;
4 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; 4 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
5 import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; 5 import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
6 import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; 6 import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
src/main/java/cn/iocoder/dashboard/framework/mybatis/core/dataobject/BaseDO.java
@@ -25,12 +25,16 @@ public class BaseDO implements Serializable { @@ -25,12 +25,16 @@ public class BaseDO implements Serializable {
25 @TableField(fill = FieldFill.INSERT_UPDATE) 25 @TableField(fill = FieldFill.INSERT_UPDATE)
26 private Date updateTime; 26 private Date updateTime;
27 /** 27 /**
28 - * 创建者 28 + * 创建者,目前使用 SysUser 的 id 编号
  29 + *
  30 + * 使用 String 类型的原因是,未来可能会存在非数值的情况,留好拓展性。
29 */ 31 */
30 @TableField(fill = FieldFill.INSERT) 32 @TableField(fill = FieldFill.INSERT)
31 private String creator; 33 private String creator;
32 /** 34 /**
33 - * 更新者 35 + * 更新者,目前使用 SysUser 的 id 编号
  36 + *
  37 + * 使用 String 类型的原因是,未来可能会存在非数值的情况,留好拓展性。
34 */ 38 */
35 @TableField(fill = FieldFill.INSERT_UPDATE) 39 @TableField(fill = FieldFill.INSERT_UPDATE)
36 private String updater; 40 private String updater;
src/main/java/cn/iocoder/dashboard/framework/mybatis/core/handle/DefaultDBFieldHandler.java renamed to src/main/java/cn/iocoder/dashboard/framework/mybatis/core/handler/DefaultDBFieldHandler.java
1 -package cn.iocoder.dashboard.framework.mybatis.core.handle; 1 +package cn.iocoder.dashboard.framework.mybatis.core.handler;
2 2
3 import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; 3 import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO;
4 import cn.iocoder.dashboard.framework.security.core.LoginUser; 4 import cn.iocoder.dashboard.framework.security.core.LoginUser;
5 import cn.iocoder.dashboard.framework.security.core.util.SecurityFrameworkUtils; 5 import cn.iocoder.dashboard.framework.security.core.util.SecurityFrameworkUtils;
6 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; 6 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
7 import org.apache.ibatis.reflection.MetaObject; 7 import org.apache.ibatis.reflection.MetaObject;
8 -import org.springframework.stereotype.Component;  
9 8
10 import java.util.Date; 9 import java.util.Date;
11 import java.util.Objects; 10 import java.util.Objects;
@@ -17,7 +16,6 @@ import java.util.Objects; @@ -17,7 +16,6 @@ import java.util.Objects;
17 * 16 *
18 * @author hexiaowu 17 * @author hexiaowu
19 */ 18 */
20 -@Component  
21 public class DefaultDBFieldHandler implements MetaObjectHandler { 19 public class DefaultDBFieldHandler implements MetaObjectHandler {
22 20
23 @Override 21 @Override
src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/InfConfigController.java
1 package cn.iocoder.dashboard.modules.infra.controller.config; 1 package cn.iocoder.dashboard.modules.infra.controller.config;
2 2
3 -import cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil;  
4 import cn.iocoder.dashboard.common.pojo.CommonResult; 3 import cn.iocoder.dashboard.common.pojo.CommonResult;
5 import cn.iocoder.dashboard.common.pojo.PageResult; 4 import cn.iocoder.dashboard.common.pojo.PageResult;
6 import cn.iocoder.dashboard.framework.excel.core.util.ExcelUtils; 5 import cn.iocoder.dashboard.framework.excel.core.util.ExcelUtils;
7 import cn.iocoder.dashboard.framework.idempotent.core.annotation.Idempotent; 6 import cn.iocoder.dashboard.framework.idempotent.core.annotation.Idempotent;
8 -import cn.iocoder.dashboard.framework.idempotent.core.keyresolver.impl.ExpressionIdempotentKeyResolver; 7 +import cn.iocoder.dashboard.framework.logger.operatelog.core.annotations.OperateLog;
9 import cn.iocoder.dashboard.modules.infra.controller.config.vo.*; 8 import cn.iocoder.dashboard.modules.infra.controller.config.vo.*;
10 import cn.iocoder.dashboard.modules.infra.convert.config.InfConfigConvert; 9 import cn.iocoder.dashboard.modules.infra.convert.config.InfConfigConvert;
11 import cn.iocoder.dashboard.modules.infra.dal.dataobject.config.InfConfigDO; 10 import cn.iocoder.dashboard.modules.infra.dal.dataobject.config.InfConfigDO;
@@ -13,50 +12,60 @@ import cn.iocoder.dashboard.modules.infra.service.config.InfConfigService; @@ -13,50 +12,60 @@ import cn.iocoder.dashboard.modules.infra.service.config.InfConfigService;
13 import io.swagger.annotations.Api; 12 import io.swagger.annotations.Api;
14 import io.swagger.annotations.ApiImplicitParam; 13 import io.swagger.annotations.ApiImplicitParam;
15 import io.swagger.annotations.ApiOperation; 14 import io.swagger.annotations.ApiOperation;
  15 +import org.springframework.security.access.prepost.PreAuthorize;
16 import org.springframework.validation.annotation.Validated; 16 import org.springframework.validation.annotation.Validated;
17 import org.springframework.web.bind.annotation.*; 17 import org.springframework.web.bind.annotation.*;
18 18
19 import javax.annotation.Resource; 19 import javax.annotation.Resource;
20 import javax.servlet.http.HttpServletResponse; 20 import javax.servlet.http.HttpServletResponse;
  21 +import javax.validation.Valid;
  22 +
21 import java.io.IOException; 23 import java.io.IOException;
22 import java.util.List; 24 import java.util.List;
23 25
  26 +import static cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil.exception;
24 import static cn.iocoder.dashboard.common.pojo.CommonResult.success; 27 import static cn.iocoder.dashboard.common.pojo.CommonResult.success;
  28 +import static cn.iocoder.dashboard.framework.logger.operatelog.core.enums.OperateTypeEnum.EXPORT;
25 import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.CONFIG_GET_VALUE_ERROR_IF_SENSITIVE; 29 import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.CONFIG_GET_VALUE_ERROR_IF_SENSITIVE;
26 30
27 @Api(tags = "参数配置") 31 @Api(tags = "参数配置")
28 @RestController 32 @RestController
29 @RequestMapping("/infra/config") 33 @RequestMapping("/infra/config")
  34 +@Validated
30 public class InfConfigController { 35 public class InfConfigController {
31 36
32 @Resource 37 @Resource
33 private InfConfigService configService; 38 private InfConfigService configService;
34 39
35 - @ApiOperation("获取参数配置分页")  
36 - @GetMapping("/page")  
37 -// @PreAuthorize("@ss.hasPermi('infra:config:list')")  
38 - public CommonResult<PageResult<InfConfigRespVO>> getConfigPage(@Validated InfConfigPageReqVO reqVO) {  
39 - PageResult<InfConfigDO> page = configService.getConfigPage(reqVO);  
40 - return success(InfConfigConvert.INSTANCE.convertPage(page)); 40 + @PostMapping("/create")
  41 + @ApiOperation("创建参数配置")
  42 + @PreAuthorize("@ss.hasPermission('infra:config:create')")
  43 + public CommonResult<Long> createConfig(@Valid @RequestBody InfConfigCreateReqVO reqVO) {
  44 + return success(configService.createConfig(reqVO));
41 } 45 }
42 46
43 - @ApiOperation("导出参数配置")  
44 - @GetMapping("/export")  
45 -// @Log(title = "参数管理", businessType = BusinessType.EXPORT)  
46 -// @PreAuthorize("@ss.hasPermi('infra:config:export')")  
47 - public void exportSysConfig(HttpServletResponse response, @Validated InfConfigExportReqVO reqVO) throws IOException {  
48 - List<InfConfigDO> list = configService.getConfigList(reqVO);  
49 - // 拼接数据  
50 - List<InfConfigExcelVO> excelDataList = InfConfigConvert.INSTANCE.convertList(list);  
51 - // 输出  
52 - ExcelUtils.write(response, "参数配置.xls", "配置列表",  
53 - InfConfigExcelVO.class, excelDataList); 47 + @ApiOperation("修改参数配置")
  48 + @PutMapping("/update")
  49 + @PreAuthorize("@ss.hasPermission('infra:config:update')")
  50 + @Idempotent(timeout = 60)
  51 + public CommonResult<Boolean> updateConfig(@Valid @RequestBody InfConfigUpdateReqVO reqVO) {
  52 + configService.updateConfig(reqVO);
  53 + return success(true);
54 } 54 }
55 55
56 - @ApiOperation("获得参数配置") 56 + @ApiOperation("删除参数配置")
57 @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) 57 @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
  58 + @DeleteMapping("/delete")
  59 + @PreAuthorize("@ss.hasPermission('infra:config:delete')")
  60 + public CommonResult<Boolean> deleteConfig(@RequestParam("id") Long id) {
  61 + configService.deleteConfig(id);
  62 + return success(true);
  63 + }
  64 +
58 @GetMapping(value = "/get") 65 @GetMapping(value = "/get")
59 -// @PreAuthorize("@ss.hasPermi('infra:config:query')") 66 + @ApiOperation("获得参数配置")
  67 + @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
  68 + @PreAuthorize("@ss.hasPermission('infra:config:query')")
60 public CommonResult<InfConfigRespVO> getConfig(@RequestParam("id") Long id) { 69 public CommonResult<InfConfigRespVO> getConfig(@RequestParam("id") Long id) {
61 return success(InfConfigConvert.INSTANCE.convert(configService.getConfig(id))); 70 return success(InfConfigConvert.INSTANCE.convert(configService.getConfig(id)));
62 } 71 }
@@ -70,38 +79,30 @@ public class InfConfigController { @@ -70,38 +79,30 @@ public class InfConfigController {
70 return null; 79 return null;
71 } 80 }
72 if (config.getSensitive()) { 81 if (config.getSensitive()) {
73 - throw ServiceExceptionUtil.exception(CONFIG_GET_VALUE_ERROR_IF_SENSITIVE); 82 + throw exception(CONFIG_GET_VALUE_ERROR_IF_SENSITIVE);
74 } 83 }
75 return success(config.getValue()); 84 return success(config.getValue());
76 } 85 }
77 86
78 - @ApiOperation("新增参数配置")  
79 - @PostMapping("/create")  
80 -// @PreAuthorize("@ss.hasPermi('infra:config:add')")  
81 -// @Log(title = "参数管理", businessType = BusinessType.INSERT)  
82 - @Idempotent(timeout = 60, keyResolver = ExpressionIdempotentKeyResolver.class, keyArg = "#reqVO.key")  
83 - public CommonResult<Long> createConfig(@Validated @RequestBody InfConfigCreateReqVO reqVO) {  
84 - return success(configService.createConfig(reqVO));  
85 - }  
86 -  
87 - @ApiOperation("修改参数配置")  
88 - @PutMapping("/update")  
89 -// @PreAuthorize("@ss.hasPermi('infra:config:edit')")  
90 -// @Log(title = "参数管理", businessType = BusinessType.UPDATE)  
91 - @Idempotent(timeout = 60)  
92 - public CommonResult<Boolean> updateConfig(@Validated @RequestBody InfConfigUpdateReqVO reqVO) {  
93 - configService.updateConfig(reqVO);  
94 - return success(true); 87 + @GetMapping("/page")
  88 + @ApiOperation("获取参数配置分页")
  89 + @PreAuthorize("@ss.hasPermission('infra:config:query')")
  90 + public CommonResult<PageResult<InfConfigRespVO>> getConfigPage(@Valid InfConfigPageReqVO reqVO) {
  91 + PageResult<InfConfigDO> page = configService.getConfigPage(reqVO);
  92 + return success(InfConfigConvert.INSTANCE.convertPage(page));
95 } 93 }
96 94
97 - @ApiOperation("删除参数配置")  
98 - @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)  
99 - @DeleteMapping("/delete")  
100 -// @PreAuthorize("@ss.hasPermi('infra:config:remove')")  
101 -// @Log(title = "参数管理", businessType = BusinessType.DELETE)  
102 - public CommonResult<Boolean> deleteConfig(@RequestParam("id") Long id) {  
103 - configService.deleteConfig(id);  
104 - return success(true); 95 + @GetMapping("/export")
  96 + @ApiOperation("导出参数配置")
  97 + @PreAuthorize("@ss.hasPermission('infra:config:export')")
  98 + @OperateLog(type = EXPORT)
  99 + public void exportSysConfig(@Valid InfConfigExportReqVO reqVO,
  100 + HttpServletResponse response) throws IOException {
  101 + List<InfConfigDO> list = configService.getConfigList(reqVO);
  102 + // 拼接数据
  103 + List<InfConfigExcelVO> datas = InfConfigConvert.INSTANCE.convertList(list);
  104 + // 输出
  105 + ExcelUtils.write(response, "参数配置.xls", "数据", InfConfigExcelVO.class, datas);
105 } 106 }
106 107
107 } 108 }
src/main/java/cn/iocoder/dashboard/modules/infra/service/config/InfConfigService.java
@@ -11,6 +11,8 @@ import java.util.List; @@ -11,6 +11,8 @@ import java.util.List;
11 11
12 /** 12 /**
13 * 参数配置 Service 接口 13 * 参数配置 Service 接口
  14 + *
  15 + * @author 芋道源码
14 */ 16 */
15 public interface InfConfigService { 17 public interface InfConfigService {
16 18
src/main/java/cn/iocoder/dashboard/modules/system/job/auth/SysUserSessionTimeoutJob.java
@@ -10,18 +10,21 @@ import javax.annotation.Resource; @@ -10,18 +10,21 @@ import javax.annotation.Resource;
10 /** 10 /**
11 * 用户 Session 超时 Job 11 * 用户 Session 超时 Job
12 * 12 *
13 - * @author 芋道源码 13 + * @author 願
14 */ 14 */
15 @Component 15 @Component
16 @Slf4j 16 @Slf4j
17 public class SysUserSessionTimeoutJob implements JobHandler { 17 public class SysUserSessionTimeoutJob implements JobHandler {
18 18
19 @Resource 19 @Resource
20 - SysUserSessionService sysUserSessionService; 20 + private SysUserSessionService sysUserSessionService;
21 21
22 @Override 22 @Override
23 public String execute(String param) throws Exception { 23 public String execute(String param) throws Exception {
24 - return String.valueOf(sysUserSessionService.clearSessionTimeout()); 24 + // 执行过期
  25 + Long timeoutCount = sysUserSessionService.clearSessionTimeout();
  26 + // 返回结果,记录每次的超时数量
  27 + return String.format("移除在线会话数量为 %s 个", timeoutCount);
25 } 28 }
26 29
27 } 30 }