Commit 0b34694a64f0d27f85894a8fd1bab8188e61068a
1 parent
570794a9
1. 上传最新 sql 脚本
2. 修改 readme 3. 优化 config 模块的排版
Showing
8 changed files
with
127 additions
and
159 deletions
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
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 | } |