diff --git a/README.md b/README.md index b1f67eadd69d181bf7eb676b94bc474c1c38efe0..8b788e46eadef428e607aa3a070d1e0e0e30edc8 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# Bootx-Platform (v1.3.5-园博园) +# Bootx-Platform (v1.3.6-园博园)

star - Build Status + Build Status Build Status Downloads @@ -28,7 +28,7 @@ ## 📚资料和文档 -- 系统演示地址:[管理平台(vue3)](http://v3.platform.bootx.cn/)、[可视化大屏](http://visualization.platform.bootx.cn/) +- 系统演示地址:[管理平台(vue3)](https://admin.platform.demo.bootx.cn/)、[可视化大屏](https://visualization.platform.demo.bootx.cn/) - 前端项目地址:[前端项目(vue3)](https://gitee.com/bootx/bootx-platform-vue3)、[可视化大屏](https://gitee.com/bootx/bootx-platform-visualization)、[前端项目(vue2只维护不再更新)](https://gitee.com/bootx/bootx-platform-ui) - 移动端项目地址:[移动端项目(taro+vue3+ts)](https://gitee.com/xucun/bootx-platform-mobile) - 日志收集:[PlumeLog](http://139.198.29.219:8891/) @@ -131,8 +131,7 @@ bootx-platform QQ扫码加入QQ交流群

- - +

## 🍻 鸣谢 diff --git a/_config/sql/bootx-platform.sql b/_config/sql/bootx-platform.sql index 8100f51270e09d74ce25e141972599d575998050..a14d59668c6a9fdb84c11f35a0c5e4c305b4cd7e 100644 --- a/_config/sql/bootx-platform.sql +++ b/_config/sql/bootx-platform.sql @@ -6,7 +6,7 @@ Target Server Type : MySQL File Encoding : 65001 - Date: 21/10/2023 18:53:38 + Date: 31/01/2024 10:42:54 */ SET NAMES utf8mb4; @@ -3012,6 +3012,29 @@ INSERT INTO `base_area` VALUES ('659009', '昆玉市', '6590'); INSERT INTO `base_area` VALUES ('659010', '胡杨河市', '6590'); INSERT INTO `base_area` VALUES ('659011', '新星市', '6590'); +-- ---------------------------- +-- Table structure for base_china_word +-- ---------------------------- +DROP TABLE IF EXISTS `base_china_word`; +CREATE TABLE `base_china_word` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `word` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '敏感词', + `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '分类', + `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '描述', + `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `white` bit(1) NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '敏感词' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_china_word +-- ---------------------------- + -- ---------------------------- -- Table structure for base_city -- ---------------------------- @@ -3370,181 +3393,71 @@ INSERT INTO `base_city` VALUES ('6543', '阿勒泰地区', '65'); INSERT INTO `base_city` VALUES ('6590', '自治区直辖县级行政区划', '65'); -- ---------------------------- --- Table structure for iam_perm_menu +-- Table structure for base_data_result_sql -- ---------------------------- -DROP TABLE IF EXISTS `iam_perm_menu`; -CREATE TABLE `iam_perm_menu` ( +DROP TABLE IF EXISTS `base_data_result_sql`; +CREATE TABLE `base_data_result_sql` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `database_id` bigint(20) NULL DEFAULT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, + `is_list` bit(1) NULL DEFAULT NULL, + `sql` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, + `params` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL, + `fields` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL, + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '数据集SQL语句' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_data_result_sql +-- ---------------------------- + +-- ---------------------------- +-- Table structure for base_dict +-- ---------------------------- +DROP TABLE IF EXISTS `base_dict`; +CREATE TABLE `base_dict` ( `id` bigint(20) NOT NULL, - `client_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '终端code', - `parent_id` bigint(20) NULL DEFAULT NULL COMMENT '父id', - `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜单名称', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路由名称', - `perm_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单权限编码', - `effect` bit(1) NULL DEFAULT NULL COMMENT '是否有效', - `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单图标', - `hidden` bit(1) NOT NULL COMMENT '是否隐藏', - `hide_children_in_menu` bit(1) NOT NULL COMMENT '是否隐藏子菜单', - `component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件', - `component_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件名字', - `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路径', - `redirect` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单跳转地址(重定向)', - `sort_no` double NOT NULL COMMENT '菜单排序', - `menu_type` int(5) NOT NULL COMMENT '类型(0:一级菜单;1:子菜单 ;2:按钮权限)', - `leaf` bit(1) NULL DEFAULT NULL COMMENT '是否叶子节点', - `keep_alive` bit(1) NULL DEFAULT NULL COMMENT '是否缓存页面', - `target_outside` bit(1) NULL DEFAULT NULL COMMENT '是否外部打开方式', - `hidden_header_content` bit(1) NULL DEFAULT NULL COMMENT '隐藏的标题内容', - `admin` bit(1) NOT NULL COMMENT '系统菜单', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '编码', + `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名称', + `enable` bit(1) NOT NULL DEFAULT b'1' COMMENT '启用状态', + `group_tag` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '分类标签', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '版本', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `version` int(8) NULL DEFAULT NULL COMMENT '版本', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '权限_菜单' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of iam_perm_menu +-- Records of base_dict -- ---------------------------- -INSERT INTO `iam_perm_menu` VALUES (1414596052497092608, 'admin', NULL, '系统管理', 'system', '', NULL, 'desktop', b'0', b'0', 'RouteView', '', '/system', '/system/user', -99999, 0, b'0', b'1', b'0', b'0', b'1', NULL, 1399985191002447872, '2021-08-27 10:32:53', 1399985191002447872, '2021-08-27 10:02:16', 2, 0); -INSERT INTO `iam_perm_menu` VALUES (1414596647509446656, 'admin', 1452569691537256448, '用户管理', 'User', '', NULL, '', b'0', b'0', 'system/user/UserList', '', '/system/userAuth/user', '', 0, 1, b'0', b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-08-27 10:32:53', 1399985191002447872, '2021-08-27 10:17:40', 4, 0); -INSERT INTO `iam_perm_menu` VALUES (1414596773275652096, 'admin', 1414596052497092608, '菜单管理', 'Menu', '', NULL, '', b'0', b'0', 'system/menu/MenuList', '', '/system/permission/menu', '', 0, 1, b'0', b'1', b'0', b'0', b'1', NULL, 1399985191002447872, '2021-08-27 10:32:53', 1399985191002447872, '2021-08-26 23:56:16', 2, 0); -INSERT INTO `iam_perm_menu` VALUES (1414596805538238464, 'admin', 1452569339987472384, '角色管理', 'Role', '', NULL, '', b'0', b'0', 'system/role/RoleList', '', '/system/permission/role', '', 0, 1, b'1', b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-08-27 10:32:53', 1399985191002447872, '2021-08-26 23:56:04', 4, 0); -INSERT INTO `iam_perm_menu` VALUES (1414596842322284544, 'admin', 1452569691537256448, '部门管理', 'Dept', '', NULL, '', b'0', b'0', 'system/dept/DeptList', '', '/system/userAuth/dept', '', 0, 1, b'1', b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-08-27 10:32:53', 1399985191002447872, '2021-08-26 23:56:31', 7, 0); -INSERT INTO `iam_perm_menu` VALUES (1414596877617352704, 'admin', 1452571269199540224, '数据字典', 'Dict', '', b'0', '', b'0', b'0', 'system/dict/DictList', '', '/system/config/dict', '', 0, 1, b'1', b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-08-27 10:32:53', 1399985191002447872, '2022-05-19 09:04:55', 11, 0); -INSERT INTO `iam_perm_menu` VALUES (1431082258161434624, 'admin', 1452569691537256448, '在线用户管理', 'OnlineUser', '', NULL, '', b'0', b'0', 'system/online/OnlineUserList', NULL, '/system/userAuth/online', '', 0, 1, b'1', b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-08-27 10:32:53', 1399985191002447872, '2021-08-27 10:32:53', 6, 0); -INSERT INTO `iam_perm_menu` VALUES (1431083330909208576, 'admin', 1541427353886859264, '登录方式', 'LoginType', '', b'0', '', b'0', b'0', 'system/client/LoginTypeList', NULL, '/system/config/loginType', '', 9, 1, b'1', b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-08-27 10:37:09', 1399985191002447872, '2022-07-05 21:18:12', 11, 0); -INSERT INTO `iam_perm_menu` VALUES (1431089129232498688, 'admin', 1452569339987472384, '请求权限管理', 'Path', '', NULL, '', b'0', b'0', 'system/path/PathList', NULL, '/system/permission/path', '', 0, 1, b'1', b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-08-27 11:00:11', 1399985191002447872, '2021-08-27 11:00:11', 2, 0); -INSERT INTO `iam_perm_menu` VALUES (1431152689832525824, 'admin', NULL, '系统监控', 'monitor', '', b'0', 'radar-chart', b'0', b'0', 'RouteView', NULL, '/monitor', '', 0, 0, b'1', b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2021-08-27 15:12:45', 1399985191002447872, '2022-06-17 17:57:30', 21, 0); -INSERT INTO `iam_perm_menu` VALUES (1431153358157348864, 'admin', 1431152689832525824, '接口文档', 'ApiSwagger', '', b'0', '', b'0', b'0', '', NULL, 'http://127.0.0.1:9999/doc.html', '', 0, 1, b'1', b'1', b'1', b'0', b'0', NULL, 1399985191002447872, '2021-08-27 15:15:25', 1399985191002447872, '2022-10-14 17:47:12', 18, 0); -INSERT INTO `iam_perm_menu` VALUES (1435143678721236992, 'admin', 1452567897717321728, '登录日志', 'LoginLog', '', b'0', '', b'0', b'0', 'starter/log/LoginLogList', NULL, '/monitor/log/loginLog', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-09-07 15:31:31', 1399985191002447872, '2022-10-20 20:38:06', 6, 0); -INSERT INTO `iam_perm_menu` VALUES (1435476255797624832, 'admin', 1452567897717321728, '操作日志', 'OperateLog', '', b'0', '', b'0', b'0', 'starter/log/OperateLogList', NULL, '/monitor/log/OperateLog', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-09-08 13:33:04', 1399985191002447872, '2022-10-20 20:38:12', 8, 0); -INSERT INTO `iam_perm_menu` VALUES (1438061887002759168, 'admin', NULL, '通知管理', 'notice', '', NULL, 'message', b'0', b'0', 'RouteView', NULL, '/notice', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-09-15 16:47:26', 1399985191002447872, '2021-09-15 16:47:26', 3, 0); -INSERT INTO `iam_perm_menu` VALUES (1438072357281542144, 'admin', 1438061887002759168, '邮件配置', 'MailConfig', '', NULL, '', b'0', b'0', 'notice/mail/MailConfigList', NULL, '/notice/mailConfig', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-09-15 17:29:03', 1399985191002447872, '2021-09-15 17:29:03', 3, 0); -INSERT INTO `iam_perm_menu` VALUES (1439196893514031104, 'admin', 1438061887002759168, '消息模板', 'MessageTemplate', '', NULL, '', b'0', b'0', 'notice/template/TemplateList', NULL, '/notice/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-09-18 19:57:33', 1399985191002447872, '2021-09-18 19:57:33', 3, 0); -INSERT INTO `iam_perm_menu` VALUES (1440216178722050048, 'admin', 1438061887002759168, '钉钉', 'DingTalk', '', NULL, '', b'0', b'0', 'RouteView', NULL, '/notice/dingTalk', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-09-21 15:27:50', 1399985191002447872, '2021-09-21 15:27:50', 0, 1); -INSERT INTO `iam_perm_menu` VALUES (1440216612211757056, 'admin', 1450822511087271936, '钉钉机器人', 'DingTalkRobot', '', b'0', '', b'0', b'0', 'third/dingtalk/robot/DingRobotConfigList', NULL, '/third/dingTalk/robot', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-09-21 15:29:33', 1399985191002447872, '2022-07-26 13:34:35', 5, 0); -INSERT INTO `iam_perm_menu` VALUES (1450473063320526848, 'admin', 1452569691537256448, '第三方登录', 'Social', '', b'0', '', b'1', b'0', 'system/social/SocialList', NULL, '/system/userAuth/social', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-19 22:45:01', 1399985191002447872, '2022-07-26 13:35:47', 5, 0); -INSERT INTO `iam_perm_menu` VALUES (1450803906215886848, 'admin', 1452571269199540224, '定时任务', 'QuartzJobList', '', NULL, '', b'0', b'0', 'starter/quartz/QuartzJobList', NULL, '/system/config/quartz', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-20 20:39:41', 1399985191002447872, '2021-10-20 20:39:41', 5, 0); -INSERT INTO `iam_perm_menu` VALUES (1450819607680991232, 'admin', NULL, '第三方对接', 'third', '', b'0', 'branches', b'0', b'0', 'RouteView', NULL, '/third', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-20 21:42:04', 1399985191002447872, '2022-07-26 13:34:02', 4, 0); -INSERT INTO `iam_perm_menu` VALUES (1450821723027881984, 'admin', 1450819607680991232, '微信', 'WeChat', '', b'0', '', b'0', b'0', 'RouteView', NULL, '/third/wechat', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-20 21:50:28', 1399985191002447872, '2022-08-03 23:23:10', 3, 0); -INSERT INTO `iam_perm_menu` VALUES (1450821877831254016, 'admin', 1450819607680991232, '企业微信', 'WeCom', '', b'0', '', b'0', b'0', 'RouteView', NULL, '/third/wecom', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-20 21:51:05', 1399985191002447872, '2022-08-03 23:22:58', 4, 0); -INSERT INTO `iam_perm_menu` VALUES (1450822511087271936, 'admin', 1450819607680991232, '钉钉', 'DingTalk', '', b'0', '', b'0', b'0', 'RouteView', NULL, '/third/dingtalk', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-20 21:53:36', 1399985191002447872, '2022-08-03 23:23:29', 3, 0); -INSERT INTO `iam_perm_menu` VALUES (1450827660459458560, 'admin', 1438061887002759168, '微信', 'NoticeWeChat', '', b'0', '', b'0', b'0', 'Dev', NULL, '/notice/wechat', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-20 22:14:04', 1399985191002447872, '2022-06-21 20:53:04', 1, 1); -INSERT INTO `iam_perm_menu` VALUES (1452567897717321728, 'admin', 1431152689832525824, '审计日志', 'auditLog', '', b'0', '', b'0', b'0', 'RouteView', NULL, '/monitor/log', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-25 17:29:09', 1399985191002447872, '2022-10-20 20:37:46', 2, 0); -INSERT INTO `iam_perm_menu` VALUES (1452569339987472384, 'admin', 1414596052497092608, '权限管理', 'permission', '', NULL, '', b'0', b'0', 'RouteView', NULL, '/system/permission', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-25 17:34:53', 1399985191002447872, '2021-10-25 17:34:53', 2, 0); -INSERT INTO `iam_perm_menu` VALUES (1452569691537256448, 'admin', 1414596052497092608, '用户信息', 'userAuth', '', NULL, '', b'0', b'0', 'RouteView', NULL, '/system/userAuth', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-25 17:36:17', 1399985191002447872, '2021-10-25 17:36:17', 2, 0); -INSERT INTO `iam_perm_menu` VALUES (1452571269199540224, 'admin', 1414596052497092608, '系统配置', 'systemConfig', '', NULL, '', b'0', b'0', 'RouteView', NULL, '/system/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-25 17:42:33', 1399985191002447872, '2021-10-25 17:42:33', 2, 0); -INSERT INTO `iam_perm_menu` VALUES (1452638905302966272, 'admin', 1452571269199540224, '系统参数', 'SystemParam', '', NULL, '', b'0', b'0', 'system/param/SystemParamList', NULL, '/system/config/param', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-25 22:11:18', 1399985191002447872, '2021-10-25 22:11:18', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1474694545336676352, 'admin', 1452569339987472384, '数据范围权限', 'DataScope', '', NULL, '', b'0', b'0', 'system/scope/DataScopeList', NULL, '/system/permission/data', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-12-25 18:52:33', 1399985191002447872, '2021-12-25 18:52:33', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1480839877352476672, 'admin', 1452567897717321728, '数据版本日志', 'DataVersionLog', NULL, b'0', '', b'0', b'0', 'starter/log/DataVersionLogList', NULL, '/monitor/log/DataVersionLog', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-01-11 17:51:54', 1399985191002447872, '2022-10-20 20:38:18', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1490984296616263680, 'admin', 1552207982510706688, '文件管理', 'FIleUpLoad', NULL, b'0', '', b'0', b'0', 'develop/file/FileUploadList', NULL, '/develop/file', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-02-08 17:42:12', 1399985191002447872, '2022-07-28 09:16:56', 2, 0); -INSERT INTO `iam_perm_menu` VALUES (1495013564652429312, 'admin', 1552207982510706688, '代码生成', 'CodeGen', NULL, b'0', '', b'0', b'0', 'develop/codegen/CodeGenList', NULL, '/develop/codegen', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-02-19 20:33:04', 1399985191002447872, '2022-07-27 16:25:05', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1495968302034210816, 'admin', NULL, '功能演示', 'Demo', NULL, b'0', 'block', b'0', b'0', 'RouteView', NULL, '/demo', '', 99, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-02-22 11:46:52', 1399985191002447872, '2022-05-10 11:02:05', 3, 0); -INSERT INTO `iam_perm_menu` VALUES (1495969099987963904, 'admin', 1495968302034210816, '数据相关', 'DemoData', NULL, b'0', '', b'0', b'0', 'RouteView', NULL, '/demo/data', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-02-22 11:50:02', 1399985191002447872, '2022-03-24 16:27:46', 4, 0); -INSERT INTO `iam_perm_menu` VALUES (1496020308992143360, 'admin', 1495968302034210816, '超级查询', 'SuperQueryDemo', NULL, b'0', '', b'0', b'0', 'demo/query/SuperQueryDemoList', NULL, '/demo/query/super', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-02-22 15:13:31', 1399985191002447872, '2022-05-27 17:34:41', 2, 0); -INSERT INTO `iam_perm_menu` VALUES (1506910599819165696, 'admin', 1495969099987963904, '数据权限', 'DataPermDemoList', NULL, b'0', '', b'0', b'0', 'demo/data/perm/DataPermDemoList', NULL, '/demo/data/perm', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-03-24 16:27:39', 1399985191002447872, '2022-03-24 16:28:56', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1506910885463851008, 'admin', 1495969099987963904, '加密解密', 'DataEncryptDemo', NULL, b'0', '', b'0', b'0', 'demo/data/encrypt/DataEncryptDemoList', NULL, '/demo/data/encrypt', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-03-24 16:28:47', 1399985191002447872, '2022-03-24 16:28:47', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1506911113394913280, 'admin', 1495969099987963904, '数据脱敏', 'DataSensitiveDemo', NULL, b'0', '', b'0', b'0', 'demo/data/sensitive/DataSensitiveDemoList', NULL, '/demo/data/sensitive', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-03-24 16:29:41', 1399985191002447872, '2022-03-24 17:16:03', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1507998458886197248, 'admin', 1495968302034210816, 'WS演示', 'WebsocketDemo', NULL, b'0', '', b'0', b'0', 'demo/ws/WebsocketDemo', NULL, '/demo/ws', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-03-27 16:30:25', 1399985191002447872, '2022-03-27 16:30:25', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1509488473583562752, 'admin', 1495968302034210816, '幂等请求演示', 'IdempotentDemo', NULL, b'0', '', b'0', b'0', 'demo/idempotent/Idempotent', NULL, '/demo/idempotent', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-03-31 19:11:12', 1399985191002447872, '2022-05-27 17:35:00', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1511266086400524288, 'admin', 1450822511087271936, '钉钉配置', 'DingTalkConfig', NULL, b'0', '', b'1', b'0', 'third/dingtalk/config/DingTalkConfigList', NULL, '/third/dingtalk/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-04-05 16:54:48', 1399985191002447872, '2022-07-26 13:34:44', 3, 0); -INSERT INTO `iam_perm_menu` VALUES (1530120084482084864, 'admin', 1495968302034210816, '消息中间件演示', 'MQDemo', NULL, b'0', '', b'0', b'0', 'demo/mq/MqDemo', NULL, '/demo/mq', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-05-27 17:33:51', 1399985191002447872, '2022-05-31 15:12:15', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1530120684645044224, 'admin', 1530120084482084864, 'MQTT消息', 'MqttDemo', NULL, b'0', '', b'0', b'0', '', NULL, '/demo/mq/mqtt', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-05-27 17:36:14', 1399985191002447872, '2022-05-27 17:36:14', 0, 1); -INSERT INTO `iam_perm_menu` VALUES (1530120821144473600, 'admin', 1530120084482084864, 'RabbitMQ', 'RabbitDemo', NULL, b'0', '', b'0', b'0', '', NULL, '/demo/mq/rabbit', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-05-27 17:36:47', 1399985191002447872, '2022-05-27 17:36:47', 0, 1); -INSERT INTO `iam_perm_menu` VALUES (1534000136370204672, 'admin', 1431152689832525824, 'ELK日志', 'ELK', '', b'0', '', b'1', b'0', '', NULL, 'http://elk.dev.bootx.cn:5601/app/discover', '', 0, 1, NULL, b'1', b'1', b'0', b'0', NULL, 1399985191002447872, '2022-06-07 10:31:48', 1399985191002447872, '2022-06-07 10:31:48', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1534008203006652416, 'admin', 1431152689832525824, 'PlumeLog日志', 'PlumeLog', '', b'0', '', b'0', b'0', '', NULL, 'http://127.0.0.1:9999/plumelog/#/', '', 0, 1, NULL, b'1', b'1', b'0', b'0', NULL, 1399985191002447872, '2022-06-07 11:03:51', 1399985191002447872, '2022-06-07 11:06:13', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1535451167008436224, 'admin', 1431152689832525824, '系统信息', 'SysInfo', NULL, b'0', '', b'0', b'0', 'starter/monitor/SystemInfoMonitor', NULL, '/monitor/sysinfo', '', 0, 1, NULL, b'0', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-06-11 10:37:40', 1399985191002447872, '2022-06-13 13:07:46', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1535965936371085312, 'admin', 1431152689832525824, 'Redis监控', 'RedisInfoMonitor', NULL, b'0', '', b'0', b'0', 'starter/monitor/RedisInfoMonitor', NULL, '/monitor/redis', '', 0, 1, NULL, b'0', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-06-12 20:43:11', 1399985191002447872, '2022-06-13 13:07:38', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1537730140522348544, 'admin', 1438061887002759168, '站内信', 'SiteMessageSender', '', b'0', '', b'0', b'0', 'notice/site/sender/SiteMessageList', NULL, '/notice/siteMessage', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-06-17 17:33:30', 1399985191002447872, '2022-08-20 21:12:30', 2, 0); -INSERT INTO `iam_perm_menu` VALUES (1538160478872625152, 'admin', 1495968302034210816, '富文本编辑', 'WangEditorDemo', NULL, b'0', '', b'0', b'0', 'demo/wangeditor/WangEditorDemo', NULL, '/demo/wangEditor', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-06-18 22:03:30', 1399985191002447872, '2022-06-18 22:03:31', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1541355214204030976, 'admin', 1541427353886859264, '认证终端', 'Client', '', b'0', '', b'0', b'0', 'system/client/ClientList', NULL, '/system/config/client', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-08-27 10:37:08', 1399985191002447872, '2022-07-05 21:17:45', 3, 0); -INSERT INTO `iam_perm_menu` VALUES (1541427353886859264, 'admin', 1414596052497092608, '认证管理', 'Auth', '', b'0', '', b'0', b'0', 'RouteView', NULL, '/system/auth', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-06-27 22:24:54', 1399985191002447872, '2022-06-27 22:24:54', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1551803592828932096, 'admin', 1450821877831254016, '企微机器人', 'WeComRobot', '', b'0', '', b'0', b'0', 'third/wecom/robot/WeComRobotConfigList', NULL, '/third/wecom/robot', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-07-26 13:36:22', 1399985191002447872, '2022-10-24 11:07:27', 3, 0); -INSERT INTO `iam_perm_menu` VALUES (1552207982510706688, 'admin', NULL, '开发管理', 'develop', NULL, b'0', 'gold', b'0', b'0', 'RouteView', NULL, '/develop', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-07-27 16:23:16', 1399985191002447872, '2022-07-27 16:39:09', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1552208167664062464, 'admin', 1552207982510706688, '动态表单', 'DynamicForm', NULL, b'0', '', b'0', b'0', 'develop/dynamicform/DynamicFormList', NULL, '/develop/form', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-07-27 16:24:00', 1399985191002447872, '2022-07-27 16:38:05', 2, 0); -INSERT INTO `iam_perm_menu` VALUES (1554720980865380352, 'admin', 1495968302034210816, '消息通知', 'NoticeDemo', NULL, b'0', '', b'0', b'0', 'RouteView', NULL, '/demo/notice', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-08-03 14:49:02', 1399985191002447872, '2022-08-03 14:49:02', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1554721654336385024, 'admin', 1554720980865380352, '邮件发送', 'EmailDemo', NULL, b'0', '', b'0', b'0', 'demo/notice/email/EmailSender', NULL, '/demo/notice/email', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-08-03 14:51:42', 1399985191002447872, '2022-08-03 14:51:42', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1554850179754975232, 'admin', 1450821723027881984, '消息模板', 'WeChatTemplate', NULL, b'0', '', b'0', b'0', 'third/wechat/template/WeChatTemplateList', NULL, '/third/wechat/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-08-03 23:22:25', 1399985191002447872, '2022-08-03 23:23:18', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1555835229426368512, 'admin', 1450821723027881984, '自定义菜单', 'WeChatMenu', NULL, b'0', '', b'0', b'0', 'third/wechat/menu/WeChatMenuList', NULL, '/third/wechat/menu', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-08-06 16:36:39', 1399985191002447872, '2022-08-08 12:14:14', 2, 0); -INSERT INTO `iam_perm_menu` VALUES (1556997405528805376, 'admin', 1450821723027881984, '素材管理', 'WeChatMedia', NULL, b'0', '', b'0', b'0', 'third/wechat/media/WeChatMediaList', NULL, '/third/wechat/media', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-08-09 21:34:44', 1399985191002447872, '2022-08-09 21:34:44', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1573669546890297344, 'admin', 1552207982510706688, '动态数据源', 'DynamicSource', NULL, b'0', '', b'0', b'0', 'develop/dynamicsource/DynamicDataSourceList', NULL, '/develop/source', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-09-24 21:43:52', 1399985191002447872, '2022-09-24 21:43:52', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1580740450633101312, 'adminv3', NULL, '系统管理', 'System', NULL, b'0', 'ant-design:setting-outlined', b'0', b'0', 'Layout', NULL, '/system', '/system1/client', -99999, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 10:01:07', 1414143554414059520, '2022-10-18 15:32:09', 4, 0); -INSERT INTO `iam_perm_menu` VALUES (1580740637841666048, 'adminv3', 1582253306356649984, '终端管理', 'ClientList', NULL, b'0', '', b'0', b'0', '/modules/system/client/ClientList.vue', NULL, '/system/client', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 10:01:51', 1414143554414059520, '2022-10-18 14:13:27', 5, 0); -INSERT INTO `iam_perm_menu` VALUES (1580740758629232640, 'adminv3', 1582253306356649984, '登录方式', 'LoginTypeList', NULL, b'0', '', b'0', b'0', '/modules/system/loginType/LoginTypeList.vue', NULL, '/system/loginType', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 10:02:20', 1414143554414059520, '2022-10-18 14:13:40', 5, 0); -INSERT INTO `iam_perm_menu` VALUES (1580858583654051840, 'adminv3', 1580740450633101312, '测试Iframe', 'Iframe', NULL, b'0', '', b'0', b'0', 'Iframe', NULL, '/system/Iframe', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 17:50:32', 1414143554414059520, '2022-10-17 17:46:19', 5, 1); -INSERT INTO `iam_perm_menu` VALUES (1580917438227075072, 'adminv3', 1580740450633101312, '三极目录', 'hello', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system1/a', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 21:44:24', 1399985191002447872, '2022-10-14 23:38:16', 2, 1); -INSERT INTO `iam_perm_menu` VALUES (1580917571069071360, 'adminv3', 1580917438227075072, '百度', 'baidu', NULL, b'0', '', b'0', b'0', '', NULL, 'https://www.baidu.com/', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 21:44:56', 1399985191002447872, '2022-10-14 23:37:44', 3, 1); -INSERT INTO `iam_perm_menu` VALUES (1580928436300337152, 'adminv3', 1580740450633101312, '菜单管理', 'MenuList', NULL, b'0', '', b'0', b'0', '/modules/system/menu/MenuList.vue', NULL, '/system/menu', '', -99, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 22:28:06', 1399985191002447872, '2022-10-14 22:28:32', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1582249924602580992, 'adminv3', 1580740450633101312, '权限管理', 'Permission', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/permission', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 13:59:13', 1414143554414059520, '2022-10-18 13:59:13', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1582253011803262976, 'adminv3', 1580740450633101312, '用户信息', 'UserAuth', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/user', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 14:11:30', 1414143554414059520, '2022-10-18 14:11:30', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1582253152903843840, 'adminv3', 1580740450633101312, '系统配置', 'SystemConfig', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 14:12:03', 1414143554414059520, '2022-10-18 14:12:03', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1582253306356649984, 'adminv3', 1580740450633101312, '认证管理', 'Auth', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/auth', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 14:12:40', 1414143554414059520, '2022-10-18 14:13:13', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1582275875424129024, 'adminv3', NULL, '系统监控', 'Monitor', NULL, b'0', 'ant-design:monitor-outlined', b'0', b'0', 'Layout', NULL, '/monitor', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:42:21', 1414143554414059520, '2022-10-19 17:29:29', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1582275984849326080, 'adminv3', NULL, '通知管理', 'Notice', NULL, b'0', 'ant-design:message-outlined', b'0', b'0', 'Layout', NULL, '/notice', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:42:47', 1414143554414059520, '2022-10-19 17:30:06', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1582276092038959104, 'adminv3', NULL, '第三方对接', 'Third', NULL, b'0', 'ant-design:api-twotone', b'0', b'0', 'Layout', NULL, '/third', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:43:12', 1414143554414059520, '2022-10-19 17:32:04', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1582276341792985088, 'adminv3', NULL, '开发管理', 'Develop', NULL, b'0', 'ant-design:apartment-outlined', b'0', b'0', 'Layout', NULL, '/develop', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:44:12', 1414143554414059520, '2022-10-19 15:24:22', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1582276516905177088, 'adminv3', NULL, '功能演示', 'Demo', NULL, b'0', 'ant-design:appstore-twotone', b'0', b'0', 'Layout', NULL, '/demo', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:44:54', 1414143554414059520, '2022-10-19 17:34:26', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1582277076421136384, 'adminv3', 1582249924602580992, '角色管理', 'RoleList', NULL, b'0', '', b'0', b'0', '/modules/system/role/RoleList.vue', NULL, '/system/permission/role', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:47:07', 1414143554414059520, '2022-10-18 15:59:37', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1582301940364308480, 'adminv3', 1582249924602580992, '请求权限管理', 'PermPathList', NULL, b'0', '', b'0', b'0', '/modules/system/path/PermPathList.vue', NULL, '/system/permission/path', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:25:55', 1414143554414059520, '2022-10-18 20:41:22', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1582302180999917568, 'adminv3', 1582249924602580992, '数据范围权限', 'DataScopeList', NULL, b'0', '', b'0', b'0', '/modules/system/scope/DataScopeList.vue', NULL, '/system/permission/scope', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:26:52', 1414143554414059520, '2022-10-18 17:26:52', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1582302542955769856, 'adminv3', 1582253011803262976, '用户管理', 'UserList', NULL, b'0', '', b'0', b'0', '/modules/system/user/UserList.vue', NULL, '/system/user/info', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:28:19', 1414143554414059520, '2022-10-18 17:28:19', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1582302764129808384, 'adminv3', 1582253011803262976, '部门管理', 'DeptList', NULL, b'0', '', b'0', b'0', '/modules/system/dept/DeptList.vue', NULL, '/system/user/dept', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:29:11', 1414143554414059520, '2022-10-18 17:32:26', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1582303143110340608, 'adminv3', 1582253152903843840, '数据字典', 'DictList', NULL, b'0', '', b'0', b'0', '/modules/system/dict/DictList.vue', NULL, '/system/config/dict', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:30:42', 1414143554414059520, '2022-10-18 17:30:42', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1582303290070364160, 'adminv3', 1582253152903843840, '定时任务', 'QuartzJobList', NULL, b'0', '', b'0', b'0', '/modules/baseapi/quartz/QuartzJobList.vue', NULL, '/system/config/quartz', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:31:17', 1414143554414059520, '2023-08-09 15:50:46', 2, 0); -INSERT INTO `iam_perm_menu` VALUES (1582303447428067328, 'adminv3', 1582253152903843840, '系统参数', 'SystemParamList', NULL, b'0', '', b'0', b'0', '/modules/system/param/SystemParamList.vue', NULL, '/system/config/param', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:31:54', 1414143554414059520, '2022-10-19 23:14:16', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1582632873244172288, 'adminv3', 1582276341792985088, '文件管理', 'FileUploadList', NULL, b'0', '', b'0', b'0', '/modules/develop/file/FileUploadList.vue', NULL, '/develop/file', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:20:56', 1414143554414059520, '2022-10-19 15:20:56', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1582633196587261952, 'adminv3', 1582276341792985088, '代码生成', 'CodeGenList', NULL, b'0', '', b'0', b'0', '/modules/develop/codegen/CodeGenList.vue', NULL, '/develop/codegen', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:22:13', 1414143554414059520, '2022-10-19 15:23:17', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1582633307786649600, 'adminv3', 1582276341792985088, '动态表单', 'DynamicFormList', NULL, b'0', '', b'0', b'0', '/modules/develop/dynamicform/DynamicFormList.vue', NULL, '/develop/form', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:22:39', 1414143554414059520, '2022-10-19 15:22:39', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1582633620321017856, 'adminv3', 1582276341792985088, '动态数据源', 'DynamicDataSourceList', NULL, b'0', '', b'0', b'0', '/modules/develop/dynamicsource/DynamicDataSourceList.vue', NULL, '/develop/source', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:23:54', 1414143554414059520, '2022-10-19 15:23:54', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1583074308040925184, 'adminv3', 1582275875424129024, '接口文档', 'ApiSwagger', NULL, b'0', '', b'0', b'0', '', NULL, 'http://127.0.0.1:9999/doc.html', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:35:02', 1414143554414059520, '2022-11-23 13:59:09', 2, 0); -INSERT INTO `iam_perm_menu` VALUES (1583075229563068416, 'adminv3', 1582275875424129024, '审计日志', 'AuditLog', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/monitor/log', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:38:42', 1414143554414059520, '2022-10-20 20:41:38', 2, 0); -INSERT INTO `iam_perm_menu` VALUES (1583076217481043968, 'adminv3', 1583075229563068416, '登录日志', 'LoginLogList', NULL, b'0', '', b'0', b'0', '/modules/monitor/login/LoginLogList.vue', NULL, '/monitor/log/login', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:42:37', 1414143554414059520, '2022-10-20 20:43:36', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1583076424935514112, 'adminv3', 1583075229563068416, '操作日志', 'OperateLogList', NULL, b'0', '', b'0', b'0', '/modules/monitor/operate/OperateLogList.vue', NULL, '/monitor/log/operate', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:43:26', 1414143554414059520, '2022-10-20 20:43:26', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1583076670881112064, 'adminv3', 1583075229563068416, '数据版本日志', 'DataVersionLogList', NULL, b'0', '', b'0', b'0', '/modules/monitor/data/DataVersionLogList.vue', NULL, '/monitor/log/data', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:44:25', 1414143554414059520, '2022-10-20 20:44:25', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1583076878956339200, 'adminv3', 1582275875424129024, 'ELK日志', 'ELK', NULL, b'0', '', b'1', b'0', '', NULL, 'http://elk.dev.bootx.cn:5601/app/discover', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:45:15', 1414143554414059520, '2023-08-12 19:26:12', 3, 0); -INSERT INTO `iam_perm_menu` VALUES (1583077015434797056, 'adminv3', 1582275875424129024, 'PlumeLog日志', 'PlumeLog', NULL, b'0', '', b'0', b'0', '', NULL, 'http://127.0.0.1:9999/plumelog/#/', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:45:47', 1414143554414059520, '2022-10-20 20:45:47', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1583077198772019200, 'adminv3', 1582275875424129024, '系统信息', 'SystemInfoMonitor', NULL, b'0', '', b'0', b'0', '/modules/monitor/system/SystemInfoMonitor.vue', NULL, '/monitor/sysinfo', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:46:31', 1414143554414059520, '2022-10-20 20:46:31', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1583077360827342848, 'adminv3', 1582275875424129024, 'Redis监控', 'RedisInfoMonitor', NULL, b'0', '', b'0', b'0', '/modules/monitor/redis/RedisInfoMonitor.vue', NULL, '/monitor/redis', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:47:10', 1414143554414059520, '2022-10-20 20:47:10', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1584378294652051456, 'adminv3', 1582275984849326080, '邮件配置', 'MailConfigList', NULL, b'0', '', b'0', b'0', '/modules/notice/mail/MailConfigList.vue', NULL, '/notice/notice', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 10:56:36', 1414143554414059520, '2022-10-24 16:14:34', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1584378497824137216, 'adminv3', 1582275984849326080, '消息模板', 'MessageTemplateList', NULL, b'0', '', b'0', b'0', '/modules/notice/template/MessageTemplateList.vue', NULL, '/notice/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 10:57:25', 1414143554414059520, '2022-10-25 22:14:14', 2, 0); -INSERT INTO `iam_perm_menu` VALUES (1584378671266996224, 'adminv3', 1582275984849326080, '站内信', 'SiteMessageList', NULL, b'0', '', b'0', b'0', '/modules/notice/site/sender/SiteMessageList.vue', NULL, '/notice/siteMessage', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 10:58:06', 1414143554414059520, '2022-10-24 10:58:06', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1584379602188574720, 'adminv3', 1582276092038959104, '微信', 'WeChat', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/third/wechat', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:01:48', 1414143554414059520, '2022-10-24 11:01:48', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1584379704122744832, 'adminv3', 1582276092038959104, '企业微信', 'WeCom', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/third/wecom', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:02:12', 1414143554414059520, '2022-10-24 11:02:12', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1584380087805091840, 'adminv3', 1582276092038959104, '钉钉', 'DingTalk', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/third/dingtalk', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:03:44', 1414143554414059520, '2022-10-24 11:03:44', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1584380527829524480, 'adminv3', 1584379602188574720, '消息模板', 'WechatTemplateList', NULL, b'0', '', b'0', b'0', '/modules/third/wechat/template/WechatTemplateList.vue', NULL, '/third/wechat/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:05:29', 1414143554414059520, '2022-10-26 15:58:56', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1584380679478779904, 'adminv3', 1584379602188574720, '自定义菜单', 'WechatMenuList', NULL, b'0', '', b'0', b'0', '/modules/third/wechat/menu/WechatMenuList.vue', NULL, '/third/wechat/menu', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:06:05', 1414143554414059520, '2022-10-27 10:15:24', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1584380824308097024, 'adminv3', 1584379602188574720, '素材管理', 'WechatMediaList', NULL, b'0', '', b'0', b'0', '/modules/third/wechat/media/WechatMediaList.vue', NULL, '/third/wechat/media', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:06:40', 1414143554414059520, '2022-10-27 16:38:47', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1584381134950834176, 'adminv3', 1584379704122744832, '企微机器人', 'WeComRobotConfigList', NULL, b'0', '', b'0', b'0', '/modules/third/wecom/robot/WecomRobotConfigList.vue', NULL, '/third/wecom/robot', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:07:54', 1414143554414059520, '2022-11-12 20:58:25', 3, 0); -INSERT INTO `iam_perm_menu` VALUES (1584381322184564736, 'adminv3', 1584380087805091840, '钉钉机器人', 'DingRobotConfigList', NULL, b'0', '', b'0', b'0', '/modules/third/dingtalk/robot/DingRobotConfigList.vue', NULL, '/third/dingTalk/robot', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:08:38', 1414143554414059520, '2022-11-12 20:58:37', 6, 0); -INSERT INTO `iam_perm_menu` VALUES (1584381477986181120, 'adminv3', 1584380087805091840, '钉钉配置', 'DingRobotConfigList', NULL, b'0', '', b'1', b'0', '/modules/third/dingtalk/config/DingTalkConfigList.vue', NULL, '/third/dingtalk/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:09:15', 1414143554414059520, '2022-11-11 16:04:47', 1, 1); -INSERT INTO `iam_perm_menu` VALUES (1597044371008516096, 'adminv3', NULL, '功能演示', 'Demo', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/demo', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-11-28 09:47:04', 1414143554414059520, '2022-11-28 09:47:04', 0, 1); -INSERT INTO `iam_perm_menu` VALUES (1597102799370317824, 'adminv3', 1582276516905177088, '数据相关', 'DemoData', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/demo/data', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-11-28 13:39:15', 1414143554414059520, '2022-11-28 13:39:15', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1597210969883275264, 'adminv3', 1582276516905177088, '超级查询', 'SuperQueryDemoList', NULL, b'0', '', b'0', b'0', '/modules/demo/query/SuperQueryDemoList.vue', NULL, '/demo/query/super', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-11-28 20:49:05', 1414143554414059520, '2022-11-28 21:00:14', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1599337250200440832, 'adminv3', NULL, '关于', '', NULL, b'0', 'simple-icons:about-dot-me', b'0', b'0', '', NULL, '/about/index', '', 99, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 17:38:09', 1414143554414059520, '2022-12-04 17:43:32', 3, 0); -INSERT INTO `iam_perm_menu` VALUES (1599378494880436224, 'adminv3', 1582276516905177088, 'WS演示', 'WebsocketDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/ws/WebsocketDemo', NULL, '/demo/ws', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 20:22:03', 1414143554414059520, '2023-02-08 12:17:58', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1599378579513102336, 'adminv3', 1582276516905177088, '幂等请求演示', 'IdempotentDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/idempotent/IdempotentDemo', NULL, '/demo/idempotent', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 20:22:23', 1414143554414059520, '2023-02-08 11:46:00', 3, 0); -INSERT INTO `iam_perm_menu` VALUES (1599378728490586112, 'adminv3', 1582276516905177088, '消息中间件演示', 'MqDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/mq/MqDemo', NULL, '/demo/mq', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 20:22:59', 1414143554414059520, '2023-02-08 22:09:04', 2, 0); -INSERT INTO `iam_perm_menu` VALUES (1599378838519762944, 'adminv3', 1582276516905177088, '富文本编辑', 'WangEditorDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/wangeditor/WangEditorDemo.vue', NULL, '/demo/wangEditor', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 20:23:25', 1414143554414059520, '2023-02-10 09:05:16', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1617847577158324224, 'adminv3', 1597102799370317824, '数据权限', 'DataPermDemoList', NULL, b'0', '', b'0', b'0', '/modules/demo/data/perm/DataPermDemoList.vue', NULL, '/demo/data/perm', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-01-24 19:31:35', 1414143554414059520, '2023-01-24 20:06:04', 2, 0); -INSERT INTO `iam_perm_menu` VALUES (1617847653746315264, 'adminv3', 1597102799370317824, '加密解密', 'DataEncryptDemoList', NULL, b'0', '', b'0', b'0', '/modules/demo/data/encrypt/DataEncryptDemoList.vue', NULL, '/demo/data/encrypt', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-01-24 19:31:53', 1414143554414059520, '2023-01-24 20:05:45', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1617847747375763456, 'adminv3', 1597102799370317824, '数据脱敏', 'DataSensitiveDemoList', NULL, b'0', '', b'0', b'0', '/modules/demo/data/sensitive/DataSensitiveDemoList.vue', NULL, '/demo/data/sensitive', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-01-24 19:32:16', 1414143554414059520, '2023-01-24 20:06:58', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1621150743447965696, 'admin', 1495968302034210816, '省市区联动', 'ChinaRegionDemo', NULL, b'0', '', b'0', b'0', 'demo/chinaregion/ChinaRegionDemo', NULL, '/demo/chinaregion', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-02-02 22:17:11', 1399985191002447872, '2023-02-08 09:43:39', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1623156857846034432, 'adminv3', 1582276516905177088, '省市区联动', 'ChinaRegionDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/chinaregion/ChinaRegionDemo', NULL, '/demo/chinaregion', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-02-08 11:08:46', 1414143554414059520, '2023-02-08 11:08:46', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1623325795944439808, 'adminv3', 1599378992811429888, '邮件通知', 'EmailSenderDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/notice/email/EmailSenderDemo.vue', NULL, '/demo/notice/email', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-02-08 22:20:04', 1414143554414059520, '2023-02-20 10:38:55', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1623494586215579648, 'admin', 1552207982510706688, '行政区划', 'ChinaRegion', NULL, b'0', '', b'1', b'0', 'develop/region/ChinaRegionList', NULL, '/develop/region', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-02-09 09:30:47', 1399985191002447872, '2023-02-09 17:50:05', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1629039360928075776, 'adminv3', 1582276341792985088, '可视化大屏', 'ProjectInfoList', NULL, b'0', '', b'0', b'0', '/modules/develop/report/ProjectInfoList', NULL, '/develop/report', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-02-24 16:43:44', 1414143554414059520, '2023-02-24 16:44:17', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1631946120891707392, 'admin', 1552207982510706688, '可视化大屏', 'ProjectInfoList', NULL, b'0', '', b'0', b'0', 'develop/report/ProjectInfoList', NULL, '/develop/report', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-03-04 17:14:10', 1399985191002447872, '2023-03-04 17:14:10', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1635274568758435840, 'adminv3', 1582276341792985088, '数据集管理', 'DataResultSqlList', NULL, b'0', '', b'0', b'0', '/modules/develop/dataresult/DataResultSqlList', NULL, '/develop/dataresult', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-03-13 21:40:14', 1414143554414059520, '2023-09-18 14:26:51', 3, 0); -INSERT INTO `iam_perm_menu` VALUES (1687369862646558720, 'adminv3', 1582275984849326080, '短信管理', 'Sms', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/notice/sms', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-04 15:48:20', 1414143554414059520, '2023-08-04 15:48:32', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1687370142234669056, 'adminv3', 1687369862646558720, '短信配置', 'SmsChannelConfigList', NULL, b'0', '', b'0', b'0', '/modules/notice/sms/config/SmsChannelConfigList', NULL, '/notice/sms/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-04 15:49:26', 1414143554414059520, '2023-08-04 15:49:26', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1687370277496778752, 'adminv3', 1687369862646558720, '短信模板', 'SmsTemplateList', NULL, b'0', '', b'0', b'0', '/modules/notice/sms/template/SmsTemplateList', NULL, '/notice/sms/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-04 15:49:59', 1414143554414059520, '2023-08-04 15:50:38', 1, 0); -INSERT INTO `iam_perm_menu` VALUES (1689181991598997504, 'adminv3', 1582253152903843840, '敏感词管理', 'ChinaWord', NULL, b'0', '', b'0', b'0', '/modules/baseapi/chianword/ChinaWordList.vue', NULL, '/system/config/chinaword', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-09 15:49:05', 1414143554414059520, '2023-08-09 15:49:05', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1690324070514782208, 'adminv3', 1582276341792985088, '通用模板', 'GeneralTemplateList', NULL, b'0', '', b'0', b'0', '/modules/develop/template/GeneralTemplateList', NULL, '/develop/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-12 19:27:18', 1414143554414059520, '2023-08-12 19:31:26', 3, 0); -INSERT INTO `iam_perm_menu` VALUES (1703665090038800384, 'adminv3', 1582276341792985088, '在线SQL', 'SqlQueryInfo', NULL, b'0', '', b'0', b'0', '/modules/develop/query/SqlQueryInfo', NULL, '/develop/sqlquery', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-09-18 14:59:45', 1414143554414059520, '2023-09-18 14:59:45', 0, 0); -INSERT INTO `iam_perm_menu` VALUES (1713931084759293952, 'adminv3', 1582253306356649984, '密码安全', 'PassowrdSecurity', NULL, b'0', '', b'0', b'0', '/modules/system/security/password/PasswordSecurityConfig.vue', NULL, '/system/config/passowrd', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-10-16 22:53:09', 1399985191002447872, '2023-10-16 22:58:59', 2, 0); +INSERT INTO `base_dict` VALUES (1422929378374828033, 'Sex', '性别', b'1', '基础属性', '性别', 0, '2021-08-04 22:36:15', 1399985191002447872, '2022-05-11 19:48:40', 0, 6); +INSERT INTO `base_dict` VALUES (1425744045414772737, 'MenuType', '菜单类型', b'1', '系统属性', '菜单类型', 0, '2021-08-12 17:00:44', 1399985191002447872, '2022-05-11 19:48:44', 0, 4); +INSERT INTO `base_dict` VALUES (1430063572491411456, 'loginType', '字典类型', b'1', '基础属性', '字典类型', 1399985191002447872, '2021-08-24 15:05:00', 1399985191002447872, '2021-08-24 15:05:00', 1, 2); +INSERT INTO `base_dict` VALUES (1435829999592759296, 'UserStatusCode', '用户状态码', b'1', '系统属性', '用户状态码', 1399985191002447872, '2021-09-09 12:58:43', 1399985191002447872, '2022-05-11 19:48:56', 0, 2); +INSERT INTO `base_dict` VALUES (1435838066191458304, 'LogBusinessType', '业务操作类型', b'1', '系统属性', '操作日志记录的业务操作类型', 1399985191002447872, '2021-09-09 13:30:46', 1399985191002447872, '2022-05-11 19:49:00', 0, 2); +INSERT INTO `base_dict` VALUES (1438078864509317120, 'MailSecurityCode', '邮箱安全方式编码', b'1', '消息服务', '邮箱安全方式编码', 1399985191002447872, '2021-09-15 17:54:54', 1399985191002447872, '2022-05-11 19:49:06', 0, 2); +INSERT INTO `base_dict` VALUES (1439961232651034624, 'MessageTemplateCode', '消息模板类型', b'1', '消息服务', '消息模板类型', 1399985191002447872, '2021-09-20 22:34:46', 1399985191002447872, '2022-05-11 19:48:34', 0, 1); +INSERT INTO `base_dict` VALUES (1452836604783845376, 'SocialType', '三方系统类型', b'1', '系统属性', '三方系统类型', 1399985191002447872, '2021-10-26 11:16:54', 1399985191002447872, '2022-05-11 19:48:28', 0, 3); +INSERT INTO `base_dict` VALUES (1452843488735621120, 'ParamType', '参数类型', b'1', '系统属性', '参数类型', 1399985191002447872, '2021-10-26 11:44:15', 1399985191002447872, '2022-05-11 19:48:21', 0, 2); +INSERT INTO `base_dict` VALUES (1496024933900169216, 'Political', '政治面貌', b'1', '基础数据', '政治面貌', 1399985191002447872, '2022-02-22 15:31:54', 1399985191002447872, '2022-05-11 19:48:04', 0, 1); +INSERT INTO `base_dict` VALUES (1556996322223968256, 'WeChatMediaType', '微信媒体类型', b'1', '微信', '微信媒体类型', 1399985191002447872, '2022-08-09 21:30:25', 1399985191002447872, '2022-08-09 21:30:26', 0, 0); +INSERT INTO `base_dict` VALUES (1561003021674987520, 'SiteMessageReceive', '消息接收类型', b'1', '站内信', '站内信接收类型', 1399985191002447872, '2022-08-20 22:51:37', 1399985191002447872, '2022-08-20 22:51:37', 0, 0); +INSERT INTO `base_dict` VALUES (1561003189111603200, 'SiteMessageState', '消息发布状态', b'1', '站内信', '站内信消息发布状态', 1399985191002447872, '2022-08-20 22:52:17', 1399985191002447872, '2022-08-20 22:52:17', 0, 0); +INSERT INTO `base_dict` VALUES (1589527951317389312, 'DataScopePerm', '数据权限类型', b'1', '系统属性', '数据权限类型', 1414143554414059520, '2022-11-07 15:59:30', 1399985191002447872, '2023-11-28 23:14:24', 0, 4); +INSERT INTO `base_dict` VALUES (1633393287952257024, 'DatabaseType', '数据库类型', b'1', '开发', '数据库类型', 1414143554414059520, '2023-03-08 17:04:41', 1414143554414059520, '2023-03-08 17:04:41', 0, 0); +INSERT INTO `base_dict` VALUES (1688742690398617600, 'SmsChannel', '短信渠道商', b'1', '消息服务', '短信渠道商', 1414143554414059520, '2023-08-08 10:43:27', 1414143554414059520, '2023-08-12 20:24:03', 0, 1); +INSERT INTO `base_dict` VALUES (1690338321769918464, 'GeneralTemplateUseType', '通用模板类型', b'1', '系统属性', '通用模板类型', 1414143554414059520, '2023-08-12 20:23:56', 1414143554414059520, '2023-08-12 20:24:22', 0, 1); +INSERT INTO `base_dict` VALUES (1690338545284378624, 'GeneralTemplateState', '通用模板状态', b'1', '系统属性', '通用模板状态', 1414143554414059520, '2023-08-12 20:24:49', 1414143554414059520, '2023-08-12 20:24:49', 0, 0); -- ---------------------------- -- Table structure for base_dict_item @@ -3560,9 +3473,9 @@ CREATE TABLE `base_dict_item` ( `sort_no` double(8, 2) NOT NULL COMMENT '排序', `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '更新时间', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', `version` int(8) NOT NULL COMMENT '版本', PRIMARY KEY (`id`) USING BTREE, @@ -3578,9 +3491,9 @@ INSERT INTO `base_dict_item` VALUES (1425744258544136194, 1425744045414772737, ' INSERT INTO `base_dict_item` VALUES (1425744436592340993, 1425744045414772737, 'MenuType', '1', '子菜单', b'1', 0.00, '子菜单', 0, '2021-08-12 17:02:17', 0, '2021-08-12 17:02:17', 0, 0); INSERT INTO `base_dict_item` VALUES (1425744470582980610, 1425744045414772737, 'MenuType', '2', '按钮权限', b'1', 0.00, '按钮权限', 0, '2021-08-12 17:02:26', 0, '2021-08-12 17:02:26', 0, 0); INSERT INTO `base_dict_item` VALUES (1430094707250413568, 1422929378374828033, 'Sex', '0', '未知', b'1', 0.00, '不确定性别', 1399985191002447872, '2021-08-24 17:08:43', 1399985191002447872, '2021-08-24 17:08:43', 0, 0); -INSERT INTO `base_dict_item` VALUES (1435830086406463488, 1435829999592759296, 'UserStatusCode', '1', '正常', b'1', 0.00, 'NORMAL', 1399985191002447872, '2021-09-09 12:59:04', 1399985191002447872, '2021-09-09 12:59:04', 0, 0); -INSERT INTO `base_dict_item` VALUES (1435830141855162368, 1435829999592759296, 'UserStatusCode', '2', '锁定', b'1', 0.00, 'LOCK, 多次登录失败被锁定', 1399985191002447872, '2021-09-09 12:59:17', 1399985191002447872, '2021-09-09 12:59:17', 0, 1); -INSERT INTO `base_dict_item` VALUES (1435830260503633920, 1435829999592759296, 'UserStatusCode', '3', '封禁', b'1', 0.00, 'BAN', 1399985191002447872, '2021-09-09 12:59:45', 1399985191002447872, '2021-09-09 12:59:45', 0, 0); +INSERT INTO `base_dict_item` VALUES (1435830086406463488, 1435829999592759296, 'UserStatusCode', 'normal', '正常', b'1', 0.00, 'NORMAL', 1399985191002447872, '2021-09-09 12:59:04', 1399985191002447872, '2023-11-25 15:32:04', 0, 1); +INSERT INTO `base_dict_item` VALUES (1435830141855162368, 1435829999592759296, 'UserStatusCode', 'lock', '锁定', b'1', 0.00, 'LOCK, 多次登录失败被锁定', 1399985191002447872, '2021-09-09 12:59:17', 1399985191002447872, '2023-11-25 15:32:14', 0, 2); +INSERT INTO `base_dict_item` VALUES (1435830260503633920, 1435829999592759296, 'UserStatusCode', 'ban', '封禁', b'1', 0.00, 'BAN', 1399985191002447872, '2021-09-09 12:59:45', 1399985191002447872, '2023-11-25 15:32:20', 0, 1); INSERT INTO `base_dict_item` VALUES (1435838374749626368, 1435838066191458304, 'LogBusinessType', 'other', '其它', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:32:00', 1399985191002447872, '2021-09-09 13:32:00', 0, 0); INSERT INTO `base_dict_item` VALUES (1435838414436130816, 1435838066191458304, 'LogBusinessType', 'insert', '新增', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:32:09', 1399985191002447872, '2021-09-09 13:32:09', 0, 0); INSERT INTO `base_dict_item` VALUES (1435838467624099840, 1435838066191458304, 'LogBusinessType', 'update', '修改', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:32:22', 1399985191002447872, '2021-09-09 13:32:22', 0, 0); @@ -3622,13 +3535,13 @@ INSERT INTO `base_dict_item` VALUES (1561003539772194816, 1561003189111603200, ' INSERT INTO `base_dict_item` VALUES (1561003575608328192, 1561003189111603200, 'SiteMessageState', 'cancel', '撤销', b'1', 0.00, '', 1399985191002447872, '2022-08-20 22:53:49', 1399985191002447872, '2022-08-20 22:53:49', 0, 0); INSERT INTO `base_dict_item` VALUES (1561245469535080448, 1561003189111603200, 'SiteMessageState', 'draft', '草稿', b'1', 0.00, '', 1399985191002447872, '2022-08-21 14:55:01', 1399985191002447872, '2022-08-21 14:55:01', 0, 0); INSERT INTO `base_dict_item` VALUES (1573665422392098816, 1439961232651034624, 'MessageTemplateCode', '0', '站内信', b'1', -11.00, 'SITE', 1399985191002447872, '2022-09-24 21:27:29', 1399985191002447872, '2022-09-24 21:27:39', 0, 1); -INSERT INTO `base_dict_item` VALUES (1589528254477488128, 1589527951317389312, 'DataScopePerm', '7', '所在及下级部门', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:00:43', 1414143554414059520, '2022-11-07 16:00:43', 0, 0); -INSERT INTO `base_dict_item` VALUES (1589528283539820544, 1589527951317389312, 'DataScopePerm', '6', '所在部门', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:00:49', 1414143554414059520, '2022-11-07 16:00:49', 0, 0); -INSERT INTO `base_dict_item` VALUES (1589528315672383488, 1589527951317389312, 'DataScopePerm', '5', '全部数据', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:00:57', 1414143554414059520, '2022-11-07 16:00:57', 0, 0); -INSERT INTO `base_dict_item` VALUES (1589528340267782144, 1589527951317389312, 'DataScopePerm', '4', '部门和用户范围', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:03', 1414143554414059520, '2022-11-07 16:01:03', 0, 0); -INSERT INTO `base_dict_item` VALUES (1589528367228768256, 1589527951317389312, 'DataScopePerm', '3', '部门范围', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:09', 1414143554414059520, '2022-11-07 16:01:09', 0, 0); -INSERT INTO `base_dict_item` VALUES (1589528393292173312, 1589527951317389312, 'DataScopePerm', '2', '用户范围', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:16', 1414143554414059520, '2022-11-07 16:01:16', 0, 0); -INSERT INTO `base_dict_item` VALUES (1589528423956729856, 1589527951317389312, 'DataScopePerm', '1', '自身数据', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:23', 1414143554414059520, '2022-11-07 16:01:23', 0, 0); +INSERT INTO `base_dict_item` VALUES (1589528254477488128, 1589527951317389312, 'DataScopePerm', 'self_dept_sub', '所在及下级部门', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:00:43', 1399985191002447872, '2023-11-28 23:16:02', 0, 2); +INSERT INTO `base_dict_item` VALUES (1589528283539820544, 1589527951317389312, 'DataScopePerm', 'self_dept', '所在部门', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:00:49', 1399985191002447872, '2023-11-28 23:15:52', 0, 2); +INSERT INTO `base_dict_item` VALUES (1589528315672383488, 1589527951317389312, 'DataScopePerm', 'all', '全部数据', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:00:57', 1399985191002447872, '2023-11-25 22:51:28', 0, 1); +INSERT INTO `base_dict_item` VALUES (1589528340267782144, 1589527951317389312, 'DataScopePerm', 'dept_and_user', '自定义部门和用户', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:03', 1399985191002447872, '2023-11-29 15:25:01', 0, 3); +INSERT INTO `base_dict_item` VALUES (1589528367228768256, 1589527951317389312, 'DataScopePerm', 'dept', '自定义部门', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:09', 1399985191002447872, '2023-11-29 15:24:47', 0, 2); +INSERT INTO `base_dict_item` VALUES (1589528393292173312, 1589527951317389312, 'DataScopePerm', 'user', '指定用户', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:16', 1399985191002447872, '2023-11-29 15:25:16', 0, 2); +INSERT INTO `base_dict_item` VALUES (1589528423956729856, 1589527951317389312, 'DataScopePerm', 'self', '自身数据', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:23', 1399985191002447872, '2023-11-25 22:50:41', 0, 1); INSERT INTO `base_dict_item` VALUES (1633403429028536320, 1633393287952257024, 'DatabaseType', 'mysql', 'MySQL', b'1', 1.00, '', 1414143554414059520, '2023-03-08 17:44:59', 1414143554414059520, '2023-03-08 17:44:59', 0, 0); INSERT INTO `base_dict_item` VALUES (1633403459470794752, 1633393287952257024, 'DatabaseType', 'oracle', 'Oracle', b'1', 2.00, '', 1414143554414059520, '2023-03-08 17:45:07', 1414143554414059520, '2023-03-08 17:45:07', 0, 0); INSERT INTO `base_dict_item` VALUES (1633403498695925760, 1633393287952257024, 'DatabaseType', 'mssql', 'SQLServer', b'1', 3.00, '', 1414143554414059520, '2023-03-08 17:45:16', 1414143554414059520, '2023-03-08 17:45:16', 0, 0); @@ -3646,248 +3559,109 @@ INSERT INTO `base_dict_item` VALUES (1690338619024437248, 1690338321769918464, ' INSERT INTO `base_dict_item` VALUES (1690338653442895872, 1690338321769918464, 'GeneralTemplateUseType', 'export', '导出', b'1', 0.00, '', 1414143554414059520, '2023-08-12 20:25:15', 1414143554414059520, '2023-08-12 20:25:15', 0, 0); INSERT INTO `base_dict_item` VALUES (1690338707129987072, 1690338545284378624, 'GeneralTemplateState', 'enable', '启用', b'1', 0.00, '', 1414143554414059520, '2023-08-12 20:25:27', 1414143554414059520, '2023-08-12 20:25:27', 0, 0); INSERT INTO `base_dict_item` VALUES (1690338748032839680, 1690338545284378624, 'GeneralTemplateState', 'disable', '停用', b'1', 0.00, '', 1414143554414059520, '2023-08-12 20:25:37', 1414143554414059520, '2023-08-12 20:25:37', 0, 0); +INSERT INTO `base_dict_item` VALUES (1729519341702086656, 1589527951317389312, 'DataScopePerm', 'dept_sub', '指定部门及下级部门', b'1', 0.00, '', 1399985191002447872, '2023-11-28 23:15:19', 1399985191002447872, '2023-11-28 23:15:19', 0, 0); -- ---------------------------- --- Table structure for base_province +-- Table structure for base_dynamic_data_source -- ---------------------------- -DROP TABLE IF EXISTS `base_province`; -CREATE TABLE `base_province` ( - `code` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '省份编码', - `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '省份名称', - PRIMARY KEY (`code`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '省份表' ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `base_dynamic_data_source`; +CREATE TABLE `base_dynamic_data_source` ( + `id` bigint(20) NOT NULL, + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据源编码', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据源名称', + `database_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据库类型', + `auto_load` bit(1) NULL DEFAULT NULL COMMENT '是否启动自动加载', + `db_driver` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驱动类', + `db_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据库地址', + `db_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据库名称', + `db_username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户名', + `db_password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '密码', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '动态数据源管理' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of base_province +-- Records of base_dynamic_data_source -- ---------------------------- -INSERT INTO `base_province` VALUES ('11', '北京市'); -INSERT INTO `base_province` VALUES ('12', '天津市'); -INSERT INTO `base_province` VALUES ('13', '河北省'); -INSERT INTO `base_province` VALUES ('14', '山西省'); -INSERT INTO `base_province` VALUES ('15', '内蒙古自治区'); -INSERT INTO `base_province` VALUES ('21', '辽宁省'); -INSERT INTO `base_province` VALUES ('22', '吉林省'); -INSERT INTO `base_province` VALUES ('23', '黑龙江省'); -INSERT INTO `base_province` VALUES ('31', '上海市'); -INSERT INTO `base_province` VALUES ('32', '江苏省'); -INSERT INTO `base_province` VALUES ('33', '浙江省'); -INSERT INTO `base_province` VALUES ('34', '安徽省'); -INSERT INTO `base_province` VALUES ('35', '福建省'); -INSERT INTO `base_province` VALUES ('36', '江西省'); -INSERT INTO `base_province` VALUES ('37', '山东省'); -INSERT INTO `base_province` VALUES ('41', '河南省'); -INSERT INTO `base_province` VALUES ('42', '湖北省'); -INSERT INTO `base_province` VALUES ('43', '湖南省'); -INSERT INTO `base_province` VALUES ('44', '广东省'); -INSERT INTO `base_province` VALUES ('45', '广西壮族自治区'); -INSERT INTO `base_province` VALUES ('46', '海南省'); -INSERT INTO `base_province` VALUES ('50', '重庆市'); -INSERT INTO `base_province` VALUES ('51', '四川省'); -INSERT INTO `base_province` VALUES ('52', '贵州省'); -INSERT INTO `base_province` VALUES ('53', '云南省'); -INSERT INTO `base_province` VALUES ('54', '西藏自治区'); -INSERT INTO `base_province` VALUES ('61', '陕西省'); -INSERT INTO `base_province` VALUES ('62', '甘肃省'); -INSERT INTO `base_province` VALUES ('63', '青海省'); -INSERT INTO `base_province` VALUES ('64', '宁夏回族自治区'); -INSERT INTO `base_province` VALUES ('65', '新疆维吾尔自治区'); -- ---------------------------- --- Table structure for base_dict +-- Table structure for base_dynamic_form -- ---------------------------- -DROP TABLE IF EXISTS `base_dict`; -CREATE TABLE `base_dict` ( +DROP TABLE IF EXISTS `base_dynamic_form`; +CREATE TABLE `base_dynamic_form` ( `id` bigint(20) NOT NULL, - `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '编码', - `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名称', - `enable` bit(1) NOT NULL DEFAULT b'1' COMMENT '启用状态', - `group_tag` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '分类标签', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单名称', + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单键名', + `value` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '表单内容', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', - `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', - `version` int(8) NULL DEFAULT NULL COMMENT '版本', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `version` int(8) NOT NULL COMMENT '版本', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '动态表单' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of base_dict --- ---------------------------- -INSERT INTO `base_dict` VALUES (1422929378374828033, 'Sex', '性别', b'1', '基础属性', '性别', 0, '2021-08-04 22:36:15', 1399985191002447872, '2022-05-11 19:48:40', 0, 6); -INSERT INTO `base_dict` VALUES (1425744045414772737, 'MenuType', '菜单类型', b'1', '系统属性', '菜单类型', 0, '2021-08-12 17:00:44', 1399985191002447872, '2022-05-11 19:48:44', 0, 4); -INSERT INTO `base_dict` VALUES (1430063572491411456, 'loginType', '字典类型', b'1', '基础属性', '字典类型', 1399985191002447872, '2021-08-24 15:05:00', 1399985191002447872, '2021-08-24 15:05:00', 1, 2); -INSERT INTO `base_dict` VALUES (1435829999592759296, 'UserStatusCode', '用户状态码', b'1', '系统属性', '用户状态码', 1399985191002447872, '2021-09-09 12:58:43', 1399985191002447872, '2022-05-11 19:48:56', 0, 2); -INSERT INTO `base_dict` VALUES (1435838066191458304, 'LogBusinessType', '业务操作类型', b'1', '系统属性', '操作日志记录的业务操作类型', 1399985191002447872, '2021-09-09 13:30:46', 1399985191002447872, '2022-05-11 19:49:00', 0, 2); -INSERT INTO `base_dict` VALUES (1438078864509317120, 'MailSecurityCode', '邮箱安全方式编码', b'1', '消息服务', '邮箱安全方式编码', 1399985191002447872, '2021-09-15 17:54:54', 1399985191002447872, '2022-05-11 19:49:06', 0, 2); -INSERT INTO `base_dict` VALUES (1439961232651034624, 'MessageTemplateCode', '消息模板类型', b'1', '消息服务', '消息模板类型', 1399985191002447872, '2021-09-20 22:34:46', 1399985191002447872, '2022-05-11 19:48:34', 0, 1); -INSERT INTO `base_dict` VALUES (1452836604783845376, 'SocialType', '三方系统类型', b'1', '系统属性', '三方系统类型', 1399985191002447872, '2021-10-26 11:16:54', 1399985191002447872, '2022-05-11 19:48:28', 0, 3); -INSERT INTO `base_dict` VALUES (1452843488735621120, 'ParamType', '参数类型', b'1', '系统属性', '参数类型', 1399985191002447872, '2021-10-26 11:44:15', 1399985191002447872, '2022-05-11 19:48:21', 0, 2); -INSERT INTO `base_dict` VALUES (1496024933900169216, 'Political', '政治面貌', b'1', '基础数据', '政治面貌', 1399985191002447872, '2022-02-22 15:31:54', 1399985191002447872, '2022-05-11 19:48:04', 0, 1); -INSERT INTO `base_dict` VALUES (1556996322223968256, 'WeChatMediaType', '微信媒体类型', b'1', '微信', '微信媒体类型', 1399985191002447872, '2022-08-09 21:30:25', 1399985191002447872, '2022-08-09 21:30:26', 0, 0); -INSERT INTO `base_dict` VALUES (1561003021674987520, 'SiteMessageReceive', '消息接收类型', b'1', '站内信', '站内信接收类型', 1399985191002447872, '2022-08-20 22:51:37', 1399985191002447872, '2022-08-20 22:51:37', 0, 0); -INSERT INTO `base_dict` VALUES (1561003189111603200, 'SiteMessageState', '消息发布状态', b'1', '站内信', '站内信消息发布状态', 1399985191002447872, '2022-08-20 22:52:17', 1399985191002447872, '2022-08-20 22:52:17', 0, 0); -INSERT INTO `base_dict` VALUES (1589527951317389312, 'DataScopePerm', '数据范围权限', b'1', '系统属性', '数据范围权限', 1414143554414059520, '2022-11-07 15:59:30', 1399985191002447872, '2022-12-09 22:09:25', 0, 3); -INSERT INTO `base_dict` VALUES (1633393287952257024, 'DatabaseType', '数据库类型', b'1', '开发', '数据库类型', 1414143554414059520, '2023-03-08 17:04:41', 1414143554414059520, '2023-03-08 17:04:41', 0, 0); -INSERT INTO `base_dict` VALUES (1688742690398617600, 'SmsChannel', '短信渠道商', b'1', '消息服务', '短信渠道商', 1414143554414059520, '2023-08-08 10:43:27', 1414143554414059520, '2023-08-12 20:24:03', 0, 1); -INSERT INTO `base_dict` VALUES (1690338321769918464, 'GeneralTemplateUseType', '通用模板类型', b'1', '系统属性', '通用模板类型', 1414143554414059520, '2023-08-12 20:23:56', 1414143554414059520, '2023-08-12 20:24:22', 0, 1); -INSERT INTO `base_dict` VALUES (1690338545284378624, 'GeneralTemplateState', '通用模板状态', b'1', '系统属性', '通用模板状态', 1414143554414059520, '2023-08-12 20:24:49', 1414143554414059520, '2023-08-12 20:24:49', 0, 0); - --- ---------------------------- --- Table structure for iam_dept --- ---------------------------- -DROP TABLE IF EXISTS `iam_dept`; -CREATE TABLE `iam_dept` ( - `id` bigint(20) NOT NULL COMMENT 'ID', - `parent_id` bigint(20) NULL DEFAULT NULL COMMENT '父机构ID', - `dept_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '机构/部门名称', - `sort_no` int(11) NOT NULL DEFAULT 0 COMMENT '排序', - `org_category` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '1' COMMENT '机构类别 1公司 2部门 3岗位', - `org_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '机构编码', - `mobile` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手机号', - `fax` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '传真', - `address` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地址', - `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '版本', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门组织机构表' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of iam_dept --- ---------------------------- -INSERT INTO `iam_dept` VALUES (1259382878857957377, NULL, 'Bootx Platform总公司', 0, '1', '1', '', NULL, '济南市高新区齐鲁软件园', NULL, -1, '2020-05-10 15:20:51', -1, '2020-05-10 17:52:15', 4, 0); -INSERT INTO `iam_dept` VALUES (1477976804995026944, NULL, 'Bootx Cloud公司', 0, '1', '1', '', NULL, '济南市高新区汉峪金谷', '', 1399985191002447872, '2022-01-03 20:15:04', 1399985191002447872, '2022-01-03 20:15:05', 0, 1); -INSERT INTO `iam_dept` VALUES (1477977184768282624, NULL, 'Bootx Cloud公司', 0, '1', '1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:16:35', 1399985191002447872, '2022-01-03 20:16:35', 0, 1); -INSERT INTO `iam_dept` VALUES (1477977301365739520, NULL, 'Bootx Cloud总公司', 0, '1', '2', '', NULL, '济南市高新区汉峪金谷', '', 1399985191002447872, '2022-01-03 20:17:03', 1399985191002447872, '2022-01-03 20:17:03', 1, 0); -INSERT INTO `iam_dept` VALUES (1477977592291053568, 1259382878857957377, 'bp济南分公司', 0, '1', '1_1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:18:12', 1399985191002447872, '2022-01-03 20:18:12', 1, 0); -INSERT INTO `iam_dept` VALUES (1477977690928500736, 1259382878857957377, '历城分公司', 0, '1', '1_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:18:36', 1399985191002447872, '2022-01-03 20:18:36', 0, 1); -INSERT INTO `iam_dept` VALUES (1477977827897692160, 1259382878857957377, 'bp潍坊分公司', 0, '1', '1_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:19:08', 1399985191002447872, '2022-01-03 20:19:08', 0, 0); -INSERT INTO `iam_dept` VALUES (1477977880947249152, 1477977301365739520, 'bc菏泽分公司', 0, '1', '2_1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:19:21', 1399985191002447872, '2022-01-03 20:19:21', 0, 0); -INSERT INTO `iam_dept` VALUES (1477977930175795200, 1477977301365739520, 'bc日照分公司', 0, '1', '2_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:19:33', 1399985191002447872, '2022-01-03 20:19:33', 0, 0); -INSERT INTO `iam_dept` VALUES (1477978464559484928, 1477977592291053568, '历城办事部', 0, '2', '1_1_1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:21:40', 1399985191002447872, '2022-01-03 20:21:40', 1, 0); -INSERT INTO `iam_dept` VALUES (1477978512177418240, 1477977592291053568, '历下办事部', 0, '2', '1_1_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:21:51', 1399985191002447872, '2022-01-03 20:21:52', 0, 0); -INSERT INTO `iam_dept` VALUES (1477978610865197056, 1477977592291053568, '高新办事部', 0, '2', '1_1_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:22:15', 1399985191002447872, '2022-01-03 20:22:15', 0, 0); -INSERT INTO `iam_dept` VALUES (1477978810526650368, 1477977827897692160, '奎文办事部', 0, '2', '1_2_1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:23:03', 1399985191002447872, '2022-01-03 20:23:03', 0, 0); -INSERT INTO `iam_dept` VALUES (1477978883247493120, 1477977827897692160, '潍城办事部', 0, '2', '1_2_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:23:20', 1399985191002447872, '2022-01-03 20:23:20', 0, 0); - --- ---------------------------- --- Table structure for iam_data_scope --- ---------------------------- -DROP TABLE IF EXISTS `iam_data_scope`; -CREATE TABLE `iam_data_scope` ( - `id` bigint(20) NOT NULL COMMENT '角色ID', - `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '编码', - `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称', - `type` int(4) NOT NULL COMMENT '类型', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '说明', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '版本', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据范围权限' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of iam_data_scope --- ---------------------------- -INSERT INTO `iam_data_scope` VALUES (1474706893178871808, 'self', '自身数据', 1, '只能查看自身范围的数据', 1399985191002447872, '2021-12-25 19:41:37', 1399985191002447872, '2021-12-25 19:41:37', 1, 0); -INSERT INTO `iam_data_scope` VALUES (1474717084985270272, 'user', '用户数据权限', 2, '用户数据权限', 1399985191002447872, '2021-12-25 20:22:07', 1399985191002447872, '2021-12-25 20:22:07', 0, 0); -INSERT INTO `iam_data_scope` VALUES (1474717160671485952, 'dept', '部门权限', 3, '', 1399985191002447872, '2021-12-25 20:22:25', 1399985191002447872, '2021-12-25 20:22:25', 0, 0); -INSERT INTO `iam_data_scope` VALUES (1474717276908232704, 'userAndDept', '用户和部门权限', 4, '', 1399985191002447872, '2021-12-25 20:22:52', 1399985191002447872, '2021-12-25 20:22:52', 0, 0); -INSERT INTO `iam_data_scope` VALUES (1474717344562356224, 'all', '全部数据', 5, '', 1399985191002447872, '2021-12-25 20:23:09', 1399985191002447872, '2021-12-25 20:23:09', 0, 0); -INSERT INTO `iam_data_scope` VALUES (1477990268903804928, 'belong_dept', '所在部门', 6, '', 1399985191002447872, '2022-01-03 21:08:34', 1399985191002447872, '2022-01-03 21:08:35', 0, 0); -INSERT INTO `iam_data_scope` VALUES (1477990290521247744, 'belong_dept', '所在部门', 6, '', 1399985191002447872, '2022-01-03 21:08:40', 1399985191002447872, '2022-01-03 21:08:40', 0, 1); -INSERT INTO `iam_data_scope` VALUES (1477990439800721408, 'belong_dept_and_sub', '所在及下级部门', 7, '', 1399985191002447872, '2022-01-03 21:09:15', 1399985191002447872, '2022-01-03 21:09:15', 0, 0); - --- ---------------------------- --- Table structure for iam_user_dept --- ---------------------------- -DROP TABLE IF EXISTS `iam_user_dept`; -CREATE TABLE `iam_user_dept` ( - `id` bigint(20) NOT NULL, - `user_id` bigint(20) NOT NULL COMMENT '用户id', - `dept_id` bigint(20) NOT NULL COMMENT '部门id', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户部门关联表' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of iam_user_dept +-- Records of base_dynamic_form -- ---------------------------- +INSERT INTO `base_dynamic_form` VALUES (1552656018381422592, '测试表单', 'test', '{\"list\":[{\"type\":\"input\",\"label\":\"输入框\",\"options\":{\"type\":\"text\",\"width\":\"100%\",\"defaultValue\":\"\",\"placeholder\":\"请输入\",\"clearable\":true,\"maxLength\":null,\"addonBefore\":\"\",\"addonAfter\":\"\",\"hidden\":false,\"disabled\":false},\"model\":\"aa\",\"key\":\"input_1659059676533\",\"help\":\"测试\",\"rules\":[{\"required\":true,\"message\":\"必填项\"}]},{\"type\":\"textarea\",\"label\":\"文本框\",\"options\":{\"width\":\"100%\",\"minRows\":4,\"maxRows\":6,\"maxLength\":null,\"defaultValue\":\"\",\"clearable\":true,\"hidden\":false,\"disabled\":false,\"placeholder\":\"请输入\"},\"model\":\"bb\",\"key\":\"textarea_1659020414125\",\"help\":\"\",\"rules\":[{\"required\":true,\"message\":\"必填项\"}]},{\"type\":\"slider\",\"label\":\"滑动输入条\",\"options\":{\"width\":\"100%\",\"defaultValue\":34,\"disabled\":false,\"hidden\":false,\"min\":0,\"max\":100,\"step\":1,\"showInput\":false},\"model\":\"cc\",\"key\":\"slider_1659020433092\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]}],\"config\":{\"layout\":\"horizontal\",\"labelCol\":{\"xs\":4,\"sm\":4,\"md\":4,\"lg\":4,\"xl\":4,\"xxl\":4},\"labelWidth\":100,\"labelLayout\":\"flex\",\"wrapperCol\":{\"xs\":18,\"sm\":18,\"md\":18,\"lg\":18,\"xl\":18,\"xxl\":18},\"hideRequiredMark\":false,\"customStyle\":\"\"}}', '测试动态表单', 1399985191002447872, '2022-07-28 22:03:36', 1399985191002447872, '2022-07-29 09:55:22', 0, 7); +INSERT INTO `base_dynamic_form` VALUES (1552656018381422593, '测试表单1', 'test1', '{\"list\":[{\"type\":\"input\",\"label\":\"申请人\",\"options\":{\"type\":\"text\",\"width\":\"100%\",\"defaultValue\":\"\",\"placeholder\":\"请输入\",\"clearable\":true,\"maxLength\":null,\"addonBefore\":\"\",\"addonAfter\":\"\",\"hidden\":false,\"disabled\":false},\"model\":\"apply_by\",\"key\":\"input_1659059676533\",\"help\":\"测试\",\"rules\":[{\"required\":true,\"message\":\"必填项\"}]},{\"type\":\"input\",\"label\":\"请假天数\",\"options\":{\"type\":\"text\",\"width\":\"100%\",\"defaultValue\":\"\",\"placeholder\":\"请输入\",\"clearable\":false,\"maxLength\":null,\"addonBefore\":\"\",\"addonAfter\":\"\",\"hidden\":false,\"disabled\":false},\"model\":\"leave_days\",\"key\":\"input_1662106166142\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]},{\"type\":\"textarea\",\"label\":\"备注\",\"options\":{\"width\":\"100%\",\"minRows\":4,\"maxRows\":6,\"maxLength\":null,\"defaultValue\":\"\",\"clearable\":true,\"hidden\":false,\"disabled\":false,\"placeholder\":\"请输入\"},\"model\":\"remark\",\"key\":\"textarea_1659020414125\",\"help\":\"\",\"rules\":[{\"required\":true,\"message\":\"必填项\"}]},{\"type\":\"switch\",\"label\":\"开关\",\"options\":{\"defaultValue\":false,\"hidden\":false,\"disabled\":false},\"model\":\"switch_1662108221389\",\"key\":\"switch_1662108221389\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]},{\"type\":\"slider\",\"label\":\"滑动输入条\",\"options\":{\"width\":\"100%\",\"defaultValue\":34,\"disabled\":false,\"hidden\":false,\"min\":0,\"max\":100,\"step\":1,\"showInput\":false},\"model\":\"cc\",\"key\":\"slider_1659020433092\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]},{\"type\":\"table\",\"label\":\"表格布局\",\"trs\":[{\"tds\":[{\"colspan\":1,\"rowspan\":1,\"list\":[]},{\"colspan\":1,\"rowspan\":1,\"list\":[]}]},{\"tds\":[{\"colspan\":1,\"rowspan\":1,\"list\":[{\"type\":\"editor\",\"label\":\"富文本\",\"icon\":\"icon-LC_icon_edit_line_1\",\"list\":[],\"options\":{\"height\":300,\"placeholder\":\"请输入\",\"defaultValue\":\"\",\"chinesization\":true,\"hidden\":false,\"disabled\":false,\"showLabel\":false,\"width\":\"100%\"},\"model\":\"editor_1662106288134\",\"key\":\"editor_1662106288134\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]}]},{\"colspan\":1,\"rowspan\":1,\"list\":[]}]}],\"options\":{\"width\":\"100%\",\"bordered\":true,\"bright\":false,\"small\":true,\"customStyle\":\"\"},\"key\":\"table_1662106283652\"}],\"config\":{\"layout\":\"vertical\",\"labelCol\":{\"xs\":6,\"sm\":6,\"md\":6,\"lg\":6,\"xl\":6,\"xxl\":6},\"labelWidth\":100,\"labelLayout\":\"Grid\",\"wrapperCol\":{\"xs\":18,\"sm\":18,\"md\":18,\"lg\":18,\"xl\":18,\"xxl\":18},\"hideRequiredMark\":false,\"customStyle\":\"\"}}', '测试动态表单', 1399985191002447872, '2022-07-28 22:03:36', 1414143554414059520, '2022-09-02 16:44:01', 0, 12); -- ---------------------------- --- Table structure for iam_login_type +-- Table structure for base_general_template -- ---------------------------- -DROP TABLE IF EXISTS `iam_login_type`; -CREATE TABLE `iam_login_type` ( +DROP TABLE IF EXISTS `base_general_template`; +CREATE TABLE `base_general_template` ( `id` bigint(20) NOT NULL COMMENT '主键', - `code` varchar(21) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码', - `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', - `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '类型', - `internal` bit(1) NOT NULL COMMENT '是否系统内置', - `timeout` bigint(11) NULL DEFAULT NULL COMMENT '在线时长(秒)', - `captcha_type` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '验证码类型', - `captcha` bit(1) NOT NULL COMMENT '启用验证码', - `enable` bit(1) NOT NULL COMMENT '是否可用', - `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板名称', + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板代码', + `use_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '使用类型(导入/导出)', + `file_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板类型', + `file_suffix` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板后缀名', + `state` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '状态', + `file_id` bigint(20) NULL DEFAULT NULL COMMENT '文件ID', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', `version` int(11) NOT NULL COMMENT '乐观锁', - `deleted` bit(1) NOT NULL DEFAULT 0 COMMENT '删除标志', + `deleted` bit(1) NOT NULL COMMENT '删除标志', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '登录方式' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '通用模板管理' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of iam_login_type +-- Records of base_general_template -- ---------------------------- -INSERT INTO `iam_login_type` VALUES (1430430071299207168, 'password', '账号密码登陆', 'password', b'1', 3600, '-1', b'0', b'1', NULL, 1399985191002447872, '2021-08-25 15:21:20', 1399985191002447872, '2022-11-03 22:24:53', 20, b'0'); -INSERT INTO `iam_login_type` VALUES (1430478946919653376, 'miniApp', '微信小程序', 'openId', b'0', 99999, '0', b'0', b'1', NULL, 1399985191002447872, '2021-08-25 18:35:33', 1399985191002447872, '2022-07-16 12:32:26', 3, b'0'); -INSERT INTO `iam_login_type` VALUES (1435138582839009280, 'phone', '手机短信登录', 'openId', b'0', 3600, '0', b'0', b'1', NULL, 1399985191002447872, '2021-09-07 15:11:16', 1399985191002447872, '2022-07-16 12:32:19', 5, b'0'); -INSERT INTO `iam_login_type` VALUES (1542091599907115008, 'dingTalk', '钉钉', 'openId', b'0', 5, '-1', b'0', b'1', '', 1399985191002447872, '2022-06-29 18:24:23', 1399985191002447872, '2022-07-02 14:55:01', 5, b'0'); -INSERT INTO `iam_login_type` VALUES (1542804450312122368, 'weCom', '企业微信', 'openId', b'0', 5, '-1', b'0', b'1', '', 1399985191002447872, '2022-07-01 17:37:00', 1399985191002447872, '2022-07-01 17:37:00', 0, b'0'); -INSERT INTO `iam_login_type` VALUES (1543126042909016064, 'weChat', '微信登录', 'openId', b'0', 5, '-1', b'0', b'1', '', 1399985191002447872, '2022-07-02 14:54:53', 0, '2022-10-12 22:15:05', 2, b'0'); -INSERT INTO `iam_login_type` VALUES (1626845524617203712, 'passwordGoView', '可视化平台登录', 'password', b'0', 3600, '-1', b'0', b'1', '', 1414143554414059520, '2023-02-18 15:26:13', 1414143554414059520, '2023-02-18 15:26:13', 0, b'0'); -- ---------------------------- --- Table structure for demo_super_query +-- Table structure for base_key_value -- ---------------------------- -DROP TABLE IF EXISTS `demo_super_query`; -CREATE TABLE `demo_super_query` ( - `id` bigint(20) NOT NULL COMMENT '角色ID', - `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称', - `age` int(5) NULL DEFAULT NULL COMMENT '年龄', - `vip` bit(1) NULL DEFAULT NULL COMMENT '是否vip', - `birthday` date NULL DEFAULT NULL COMMENT '生日', - `work_time` time(0) NULL DEFAULT NULL COMMENT '上班时间', - `registration_time` datetime(0) NULL DEFAULT NULL COMMENT '注册时间', - `political` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '政治面貌', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', +DROP TABLE IF EXISTS `base_key_value`; +CREATE TABLE `base_key_value` ( + `id` bigint(20) NOT NULL, + `key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '参数键名', + `value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '参数值', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '版本', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '更新时间', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `version` int(8) NOT NULL COMMENT '版本', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '超级查询演示' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'kv存储' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of demo_super_query +-- Records of base_key_value -- ---------------------------- -INSERT INTO `demo_super_query` VALUES (1496046463434567680, '小小明', 18, b'1', '1998-01-23', '08:30:00', '2022-02-22 16:57:27', '13', '这是备注', 1399985191002447872, '2022-02-22 16:57:27', 1399985191002447872, '2022-02-22 17:03:34', 1, 0); -INSERT INTO `demo_super_query` VALUES (1496372341213433856, '关羽', 52, b'1', '2000-02-23', '14:31:36', '2022-02-23 14:32:22', '1', '', 1399985191002447872, '2022-02-23 14:32:22', 1399985191002447872, '2022-02-23 14:32:22', 0, 0); -INSERT INTO `demo_super_query` VALUES (1496372489909899264, '张飞', 54, b'0', '1996-02-11', '08:00:00', '2022-02-23 14:32:58', '7', '备注', 1399985191002447872, '2022-02-23 14:32:58', 1399985191002447872, '2022-02-23 14:32:58', 0, 0); -INSERT INTO `demo_super_query` VALUES (1496372766427779072, '梁冀', 38, b'1', '1958-02-08', '08:30:00', '2022-02-23 14:34:03', '1', '', 1399985191002447872, '2022-02-23 14:34:03', 1399985191002447872, '2022-02-23 14:34:03', 0, 0); -INSERT INTO `demo_super_query` VALUES (1496373512871284736, '刘备', 108, b'0', '1993-11-12', '09:30:10', '2022-02-23 14:37:01', '2', '刘羽禅的粑粑', 1399985191002447872, '2022-02-23 14:37:01', 1399985191002447872, '2022-02-23 14:37:01', 0, 0); -- ---------------------------- -- Table structure for base_param @@ -3903,9 +3677,9 @@ CREATE TABLE `base_param` ( `internal` bit(1) NOT NULL COMMENT '内置参数', `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '更新时间', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', `version` int(8) NOT NULL COMMENT '版本', PRIMARY KEY (`id`) USING BTREE @@ -3916,158 +3690,182 @@ CREATE TABLE `base_param` ( -- ---------------------------- INSERT INTO `base_param` VALUES (1452842684284891136, '测试', 'test.v1', '123', 1, b'1', b'0', NULL, 1399985191002447872, '2021-10-26 11:41:03', 1399985191002447872, '2021-10-26 11:41:03', 0, 0); INSERT INTO `base_param` VALUES (1520668030248361984, '文件服务器地址', 'FileServerUrl', 'http://127.0.0.1:9999', 1, b'1', b'1', '', 1399985191002447872, '2022-05-01 15:34:46', 1399985191002447872, '2022-05-19 12:53:21', 0, 5); -INSERT INTO `base_param` VALUES (1529281530059161600, 'websocket服务器地址', 'WebsocketServerUrl', 'ws://127.0.0.1:9999', 1, b'1', b'1', '', 1399985191002447872, '2022-05-25 10:01:44', 1399985191002447872, '2022-05-25 10:01:44', 0, 0); +INSERT INTO `base_param` VALUES (1529281530059161600, 'websocket服务器地址', 'WebsocketServerUrl', 'ws://127.0.0.1:9999', 1, b'1', b'1', '', 1399985191002447872, '2022-05-25 10:01:44', 1399985191002447872, '2023-10-21 22:31:38', 0, 2); INSERT INTO `base_param` VALUES (1545765299880448000, '服务器地址', 'ServerUrl', 'http://127.0.0.1:9999', 1, b'1', b'1', '优先级高于配置文件内进行的配置', 1399985191002447872, '2022-07-09 21:42:21', 1414143554414059520, '2023-08-05 16:40:05', 0, 1); INSERT INTO `base_param` VALUES (1547511252795912192, '微信jsapi支付回调服务地址', 'JsapiRedirectUrl', 'http://127.0.0.1/api/', 1, b'1', b'1', '用于微信扫码登录使用', 1414143554414059520, '2022-07-14 17:20:09', 1414143554414059520, '2023-08-18 15:49:21', 0, 1); -- ---------------------------- --- Table structure for iam_role +-- Table structure for base_province -- ---------------------------- -DROP TABLE IF EXISTS `iam_role`; -CREATE TABLE `iam_role` ( - `id` bigint(20) NOT NULL COMMENT '角色ID', - `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '编码', - `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称', - `internal` bit(1) NOT NULL COMMENT '是否系统内置', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '说明', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '版本', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '角色' ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `base_province`; +CREATE TABLE `base_province` ( + `code` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '省份编码', + `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '省份名称', + PRIMARY KEY (`code`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '省份表' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of iam_role +-- Records of base_province -- ---------------------------- -INSERT INTO `iam_role` VALUES (1405414804771971072, 'admin', '管理员', b'1', '管理员', 1, '2021-06-17 14:39:35', 1399985191002447872, '2021-07-18 22:31:02', 6, 0); -INSERT INTO `iam_role` VALUES (1416730722714144768, 'test', '测试', b'0', '测试角色', 1399985191002447872, '2021-07-18 20:05:01', 1399985191002447872, '2021-07-18 20:16:15', 1, 0); -INSERT INTO `iam_role` VALUES (1422832797731778562, 'user', '用户', b'0', '用户角色', 0, '2021-08-04 16:12:29', 1399985191002447872, '2021-08-04 16:15:03', 7, 1); -INSERT INTO `iam_role` VALUES (1428891259564445696, 'manager', '管理者', b'0', 'manager管理者', 1399985191002447872, '2021-08-21 09:26:38', 1399985191002447872, '2021-08-21 09:26:39', 0, 1); +INSERT INTO `base_province` VALUES ('11', '北京市'); +INSERT INTO `base_province` VALUES ('12', '天津市'); +INSERT INTO `base_province` VALUES ('13', '河北省'); +INSERT INTO `base_province` VALUES ('14', '山西省'); +INSERT INTO `base_province` VALUES ('15', '内蒙古自治区'); +INSERT INTO `base_province` VALUES ('21', '辽宁省'); +INSERT INTO `base_province` VALUES ('22', '吉林省'); +INSERT INTO `base_province` VALUES ('23', '黑龙江省'); +INSERT INTO `base_province` VALUES ('31', '上海市'); +INSERT INTO `base_province` VALUES ('32', '江苏省'); +INSERT INTO `base_province` VALUES ('33', '浙江省'); +INSERT INTO `base_province` VALUES ('34', '安徽省'); +INSERT INTO `base_province` VALUES ('35', '福建省'); +INSERT INTO `base_province` VALUES ('36', '江西省'); +INSERT INTO `base_province` VALUES ('37', '山东省'); +INSERT INTO `base_province` VALUES ('41', '河南省'); +INSERT INTO `base_province` VALUES ('42', '湖北省'); +INSERT INTO `base_province` VALUES ('43', '湖南省'); +INSERT INTO `base_province` VALUES ('44', '广东省'); +INSERT INTO `base_province` VALUES ('45', '广西壮族自治区'); +INSERT INTO `base_province` VALUES ('46', '海南省'); +INSERT INTO `base_province` VALUES ('50', '重庆市'); +INSERT INTO `base_province` VALUES ('51', '四川省'); +INSERT INTO `base_province` VALUES ('52', '贵州省'); +INSERT INTO `base_province` VALUES ('53', '云南省'); +INSERT INTO `base_province` VALUES ('54', '西藏自治区'); +INSERT INTO `base_province` VALUES ('61', '陕西省'); +INSERT INTO `base_province` VALUES ('62', '甘肃省'); +INSERT INTO `base_province` VALUES ('63', '青海省'); +INSERT INTO `base_province` VALUES ('64', '宁夏回族自治区'); +INSERT INTO `base_province` VALUES ('65', '新疆维吾尔自治区'); -- ---------------------------- --- Table structure for iam_client +-- Table structure for base_query_sql -- ---------------------------- -DROP TABLE IF EXISTS `iam_client`; -CREATE TABLE `iam_client` ( +DROP TABLE IF EXISTS `base_query_sql`; +CREATE TABLE `base_query_sql` ( `id` bigint(20) NOT NULL COMMENT '主键', - `code` varchar(21) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码', - `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', - `internal` bit(1) NOT NULL COMMENT '是否系统内置', - `enable` bit(1) NOT NULL COMMENT '是否可用', - `default_endow` bit(1) NULL DEFAULT NULL COMMENT '新注册的用户是否默认赋予该终端', - `login_type_ids` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '关联登录方式\r\n', - `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', + `database_id` bigint(20) NULL DEFAULT NULL COMMENT '数据源ID', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '名称', + `is_list` bit(1) NULL DEFAULT NULL COMMENT '是否集合', + `sql` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT 'sql语句', + `params` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'SQL查询参数', + `fields` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'SQL查询结果字段', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', `version` int(11) NOT NULL COMMENT '乐观锁', `deleted` bit(1) NOT NULL COMMENT '删除标志', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '认证终端' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of iam_client --- ---------------------------- -INSERT INTO `iam_client` VALUES (1430430071299207168, 'admin', 'pc管理端', b'1', b'1', b'1', '1430430071299207168,1435138582839009280,1430478946919653376,1542091599907115008,1542804450312122368,1543126042909016064', 'pc浏览器', 1399985191002447872, '2021-08-25 15:21:20', 1399985191002447872, '2023-10-19 19:58:31', 5, b'0'); -INSERT INTO `iam_client` VALUES (1430430071299207169, 'h5', 'h5端', b'1', b'1', b'1', '1430430071299207168,1435138582839009280', '手机wap', 1399985191002447872, '2021-08-25 15:21:20', 1399985191002447872, '2023-10-19 19:58:27', 2, b'0'); -INSERT INTO `iam_client` VALUES (1580487061605175296, 'adminv3', 'pc管理端(vue3版)', b'0', b'1', b'1', '1430430071299207168,1430478946919653376,1435138582839009280,1542091599907115008,1542804450312122368,1543126042909016064', 'vue3版本', 1399985191002447872, '2022-10-13 17:14:14', 1399985191002447872, '2023-10-19 19:58:21', 3, b'0'); -INSERT INTO `iam_client` VALUES (1626840094767714304, 'GoView', '可视化平台', b'0', b'1', b'1', '1430430071299207168', '', 1414143554414059520, '2023-02-18 15:04:38', 1399985191002447872, '2023-10-19 19:58:34', 1, b'0'); +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'SQL查询语句' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Table structure for demo_data_perm +-- Records of base_query_sql -- ---------------------------- -DROP TABLE IF EXISTS `demo_data_perm`; -CREATE TABLE `demo_data_perm` ( - `id` bigint(20) NOT NULL COMMENT '角色ID', - `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称', - `creator_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者名称', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '说明', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '版本', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据权限演示' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of demo_data_perm +-- Table structure for base_street -- ---------------------------- -INSERT INTO `demo_data_perm` VALUES (1495969849707220992, '33', 'xxm', '444', 1399985191002447872, '2022-02-22 11:53:01', 1399985191002447872, '2022-02-22 11:53:01', 0, 0); -INSERT INTO `demo_data_perm` VALUES (1506921683460521984, '测试', '小小明', NULL, 1399985191002447872, '2022-03-24 17:11:41', 1399985191002447872, '2022-03-24 17:11:41', 0, 0); -INSERT INTO `demo_data_perm` VALUES (1531547191561072640, '测试', '测试', '123', 1435967884114194432, '2022-05-31 16:04:40', 1435967884114194432, '2022-05-31 16:04:40', 0, 0); +DROP TABLE IF EXISTS `base_street`; +CREATE TABLE `base_street` ( + `code` char(9) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '编码', + `name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '街道名称', + `area_code` char(6) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '县区编码', + PRIMARY KEY (`code`) USING BTREE, + INDEX `inx_area_code`(`area_code`) USING BTREE COMMENT '县区' +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '街道表' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Table structure for starter_quartz_job +-- Records of base_street -- ---------------------------- -DROP TABLE IF EXISTS `starter_quartz_job`; -CREATE TABLE `starter_quartz_job` ( + +-- ---------------------------- +-- Table structure for base_village +-- ---------------------------- +DROP TABLE IF EXISTS `base_village`; +CREATE TABLE `base_village` ( + `code` char(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '编码', + `name` varchar(55) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '名称', + `street_code` char(9) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '社区/乡镇编码', + PRIMARY KEY (`code`) USING BTREE, + INDEX `inx_street_code`(`street_code`) USING BTREE COMMENT '所属街道索引' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '村庄/社区' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of base_village +-- ---------------------------- + +-- ---------------------------- +-- Table structure for common_sequence_range +-- ---------------------------- +DROP TABLE IF EXISTS `common_sequence_range`; +CREATE TABLE `common_sequence_range` ( `id` bigint(20) NOT NULL COMMENT '主键', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务名称', - `job_class_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务类名', - `cron` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'cron表达式', - `parameter` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '参数', - `state` int(4) NULL DEFAULT NULL COMMENT '状态', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `range_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '区间key', + `range_value` bigint(20) NOT NULL COMMENT '区间开始值', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', `version` int(11) NOT NULL COMMENT '版本', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '定时任务' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '序列生成器队列区间管理' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of starter_quartz_job +-- Records of common_sequence_range -- ---------------------------- -INSERT INTO `starter_quartz_job` VALUES (1456579473573867520, '测试任务', 'cn.bootx.starter.quartz.task.TestTask', '50 0 * * * ? *', '{\"aaa\":\"5255\"}', 0, '测试任务', 1399985191002447872, '2021-11-05 19:09:43', 1399985191002447872, '2022-06-22 00:37:48', 25, 0); -INSERT INTO `starter_quartz_job` VALUES (1546857070483939328, '支付单超时检测', 'cn.bootx.payment.task.PayExpiredTimeTask', '0/5 * * * * ? *', NULL, 1, '检测超时的支付单, 超时后发送超时事件', 1399985191002447872, '2022-07-12 22:00:39', 1399985191002447872, '2022-07-12 22:00:45', 1, 0); +INSERT INTO `common_sequence_range` VALUES (1470679520373862400, 'Sequence:cs', 2006, 0, '2021-12-14 16:58:16', 0, '2021-12-14 16:58:16', 6, 0); +INSERT INTO `common_sequence_range` VALUES (1470679955230908416, 'cs', 2020, 0, '2021-12-14 17:00:00', 0, '2021-12-14 17:00:00', 13, 0); -- ---------------------------- --- Table structure for starter_audit_data_version +-- Table structure for demo_data_encrypt -- ---------------------------- -DROP TABLE IF EXISTS `starter_audit_data_version`; -CREATE TABLE `starter_audit_data_version` ( +DROP TABLE IF EXISTS `demo_data_encrypt`; +CREATE TABLE `demo_data_encrypt` ( `id` bigint(20) NOT NULL, - `table_name` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据表名称', - `data_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '数据名称', - `data_id` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据主键', - `data_content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '数据内容', - `change_content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '数据更新内容', - `version` int(10) NOT NULL COMMENT '版本', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '内容', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据版本日志' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据加密解密演示' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of starter_audit_data_version +-- Records of demo_data_encrypt -- ---------------------------- -INSERT INTO `starter_audit_data_version` VALUES (1480550993828446208, '', 'client', '1', '{\"dataName\":\"client\",\"dataId\":\"1\",\"dataContent\":{\"id\":\"1\",\"creator\":null,\"createTime\":\"2022-01-10 22:43:58\",\"lastModifier\":null,\"lastModifiedTime\":null,\"deleted\":false,\"version\":0,\"code\":null,\"name\":null,\"timeout\":null,\"captcha\":false,\"enable\":false,\"description\":null}}', NULL, 1, 0, '2022-01-10 22:43:59'); -INSERT INTO `starter_audit_data_version` VALUES (1480551021779288064, '', 'client', '1', '{\"dataName\":\"client\",\"dataId\":\"1\",\"dataContent\":{\"id\":\"1\",\"creator\":null,\"createTime\":\"2022-01-10 22:44:05\",\"lastModifier\":null,\"lastModifiedTime\":null,\"deleted\":false,\"version\":0,\"code\":null,\"name\":null,\"timeout\":null,\"captcha\":false,\"enable\":false,\"description\":null}}', NULL, 2, 0, '2022-01-10 22:44:06'); +INSERT INTO `demo_data_encrypt` VALUES (1506922411881103360, '测试加密效果', 'eI2RIrRLG+QUna3jMK+kejyJTTKdPFhaYWP4EhktJ2lkGTEsIxZesetNTzcqUA934ZN/OUdw4aj4t5Q+u1sH7A==', 1399985191002447872, '2022-03-24 17:14:35', 1399985191002447872, '2022-03-24 17:23:41', 1, 0); +INSERT INTO `demo_data_encrypt` VALUES (1506943412354408448, '测试下', 'Dgv5OSNiXuknceoZzeOUOQ==', 1399985191002447872, '2022-03-24 17:14:35', 1399985191002447872, '2022-03-24 17:23:41', 1, 0); -- ---------------------------- --- Table structure for iam_data_scope_dept +-- Table structure for demo_data_perm -- ---------------------------- -DROP TABLE IF EXISTS `iam_data_scope_dept`; -CREATE TABLE `iam_data_scope_dept` ( - `id` bigint(20) NOT NULL, - `data_scope_id` bigint(20) NOT NULL COMMENT '数据范围id', - `dept_id` bigint(20) NOT NULL COMMENT '部门id', +DROP TABLE IF EXISTS `demo_data_perm`; +CREATE TABLE `demo_data_perm` ( + `id` bigint(20) NOT NULL COMMENT '角色ID', + `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称', + `creator_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者名称', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '说明', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数据范围部门关联配置' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据权限演示' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of iam_data_scope_dept +-- Records of demo_data_perm -- ---------------------------- -INSERT INTO `iam_data_scope_dept` VALUES (1478742690014101504, 1474717160671485952, 1477978464559484928); -INSERT INTO `iam_data_scope_dept` VALUES (1478742920071675904, 1474717160671485952, 1477977592291053568); +INSERT INTO `demo_data_perm` VALUES (1495969849707220992, '33', 'xxm', '444', 1399985191002447872, '2022-02-22 11:53:01', 1399985191002447872, '2022-02-22 11:53:01', 0, 0); +INSERT INTO `demo_data_perm` VALUES (1506921683460521984, '测试', '小小明', NULL, 1399985191002447872, '2022-03-24 17:11:41', 1399985191002447872, '2022-03-24 17:11:41', 0, 0); +INSERT INTO `demo_data_perm` VALUES (1531547191561072640, '测试', '测试', '123', 1435967884114194432, '2022-05-31 16:04:40', 1435967884114194432, '2022-05-31 16:04:40', 0, 0); -- ---------------------------- -- Table structure for demo_data_sensitive @@ -4083,9 +3881,9 @@ CREATE TABLE `demo_data_sensitive` ( `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '电子邮件', `other` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '其他', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', `version` int(11) NOT NULL COMMENT '版本', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', PRIMARY KEY (`id`) USING BTREE @@ -4098,737 +3896,822 @@ INSERT INTO `demo_data_sensitive` VALUES (1506942377435037696, '刘向东', '123 INSERT INTO `demo_data_sensitive` VALUES (1506943326094352384, '成是非', '99885511', '101278112512107721', '18855446622', '汉S123456', 'chengshifei@foxmail.com', '这个就是就是就是就是就是就是这样的', 1399985191002447872, '2022-03-24 18:33:55', 1399985191002447872, '2022-03-24 18:35:00', 1, 0); -- ---------------------------- --- Table structure for demo_data_encrypt +-- Table structure for demo_super_query -- ---------------------------- -DROP TABLE IF EXISTS `demo_data_encrypt`; -CREATE TABLE `demo_data_encrypt` ( - `id` bigint(20) NOT NULL, - `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', - `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '内容', +DROP TABLE IF EXISTS `demo_super_query`; +CREATE TABLE `demo_super_query` ( + `id` bigint(20) NOT NULL COMMENT '角色ID', + `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称', + `age` int(5) NULL DEFAULT NULL COMMENT '年龄', + `vip` bit(1) NULL DEFAULT NULL COMMENT '是否vip', + `birthday` date NULL DEFAULT NULL COMMENT '生日', + `work_time` time NULL DEFAULT NULL COMMENT '上班时间', + `registration_time` datetime NULL DEFAULT NULL COMMENT '注册时间', + `political` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '政治面貌', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', `version` int(11) NOT NULL COMMENT '版本', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据加密解密演示' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '超级查询演示' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of demo_data_encrypt +-- Records of demo_super_query -- ---------------------------- -INSERT INTO `demo_data_encrypt` VALUES (1506922411881103360, '测试加密效果', 'eI2RIrRLG+QUna3jMK+kejyJTTKdPFhaYWP4EhktJ2lkGTEsIxZesetNTzcqUA934ZN/OUdw4aj4t5Q+u1sH7A==', 1399985191002447872, '2022-03-24 17:14:35', 1399985191002447872, '2022-03-24 17:23:41', 1, 0); -INSERT INTO `demo_data_encrypt` VALUES (1506943412354408448, '测试下', 'Dgv5OSNiXuknceoZzeOUOQ==', 1399985191002447872, '2022-03-24 17:14:35', 1399985191002447872, '2022-03-24 17:23:41', 1, 0); +INSERT INTO `demo_super_query` VALUES (1496046463434567680, '小小明', 18, b'1', '1998-01-23', '08:30:00', '2022-02-22 16:57:27', '13', '这是备注', 1399985191002447872, '2022-02-22 16:57:27', 1399985191002447872, '2022-02-22 17:03:34', 1, 0); +INSERT INTO `demo_super_query` VALUES (1496372341213433856, '关羽', 52, b'1', '2000-02-23', '14:31:36', '2022-02-23 14:32:22', '1', '', 1399985191002447872, '2022-02-23 14:32:22', 1399985191002447872, '2022-02-23 14:32:22', 0, 0); +INSERT INTO `demo_super_query` VALUES (1496372489909899264, '张飞', 54, b'0', '1996-02-11', '08:00:00', '2022-02-23 14:32:58', '7', '备注', 1399985191002447872, '2022-02-23 14:32:58', 1399985191002447872, '2022-02-23 14:32:58', 0, 0); +INSERT INTO `demo_super_query` VALUES (1496372766427779072, '梁冀', 38, b'1', '1958-02-08', '08:30:00', '2022-02-23 14:34:03', '1', '', 1399985191002447872, '2022-02-23 14:34:03', 1399985191002447872, '2022-02-23 14:34:03', 0, 0); +INSERT INTO `demo_super_query` VALUES (1496373512871284736, '刘备', 108, b'0', '1993-11-12', '09:30:10', '2022-02-23 14:37:01', '2', '刘羽禅的粑粑', 1399985191002447872, '2022-02-23 14:37:01', 1399985191002447872, '2022-02-23 14:37:01', 0, 0); -- ---------------------------- --- Table structure for common_sequence_range +-- Table structure for iam_client -- ---------------------------- -DROP TABLE IF EXISTS `common_sequence_range`; -CREATE TABLE `common_sequence_range` ( +DROP TABLE IF EXISTS `iam_client`; +CREATE TABLE `iam_client` ( `id` bigint(20) NOT NULL COMMENT '主键', - `range_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '区间key', - `range_value` bigint(20) NOT NULL COMMENT '区间开始值', + `code` varchar(21) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `internal` bit(1) NOT NULL COMMENT '是否系统内置', + `enable` bit(1) NOT NULL COMMENT '是否可用', + `default_endow` bit(1) NULL DEFAULT NULL COMMENT '新注册的用户是否默认赋予该终端', + `login_type_ids` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '关联登录方式\r\n', + `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '认证终端' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of iam_client +-- ---------------------------- +INSERT INTO `iam_client` VALUES (1430430071299207168, 'admin', 'pc管理端', b'1', b'1', b'1', '1430430071299207168,1435138582839009280,1430478946919653376,1542091599907115008,1542804450312122368,1543126042909016064', 'pc浏览器', 1399985191002447872, '2021-08-25 15:21:20', 1399985191002447872, '2023-10-19 19:58:31', 5, b'0'); +INSERT INTO `iam_client` VALUES (1430430071299207169, 'h5', 'h5端', b'1', b'1', b'1', '1430430071299207168,1435138582839009280', '手机wap', 1399985191002447872, '2021-08-25 15:21:20', 1399985191002447872, '2023-10-19 19:58:27', 2, b'0'); +INSERT INTO `iam_client` VALUES (1580487061605175296, 'adminv3', 'pc管理端(vue3版)', b'0', b'1', b'1', '1430430071299207168,1430478946919653376,1435138582839009280,1542091599907115008,1542804450312122368,1543126042909016064', 'vue3版本', 1399985191002447872, '2022-10-13 17:14:14', 1399985191002447872, '2023-10-19 19:58:21', 3, b'0'); +INSERT INTO `iam_client` VALUES (1626840094767714304, 'GoView', '可视化平台', b'0', b'1', b'1', '1430430071299207168', '', 1414143554414059520, '2023-02-18 15:04:38', 1399985191002447872, '2023-10-19 19:58:34', 1, b'0'); + +-- ---------------------------- +-- Table structure for iam_data_role +-- ---------------------------- +DROP TABLE IF EXISTS `iam_data_role`; +CREATE TABLE `iam_data_role` ( + `id` bigint(20) NOT NULL COMMENT '角色ID', + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '编码', + `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称', + `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '类型', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '说明', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', `version` int(11) NOT NULL COMMENT '版本', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '序列生成器队列区间管理' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据范围权限' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of common_sequence_range +-- Records of iam_data_role -- ---------------------------- -INSERT INTO `common_sequence_range` VALUES (1470679520373862400, 'Sequence:cs', 2006, 0, '2021-12-14 16:58:16', 0, '2021-12-14 16:58:16', 6, 0); -INSERT INTO `common_sequence_range` VALUES (1470679955230908416, 'cs', 2020, 0, '2021-12-14 17:00:00', 0, '2021-12-14 17:00:00', 13, 0); +INSERT INTO `iam_data_role` VALUES (1474706893178871808, 'self', '自身数据', 'self', '只能查看自身范围的数据', 1399985191002447872, '2021-12-25 19:41:37', 1399985191002447872, '2021-12-25 19:41:37', 0, 0); +INSERT INTO `iam_data_role` VALUES (1474717084985270272, 'user', '用户(测试)', 'user', '用户数据权限', 1399985191002447872, '2021-12-25 20:22:07', 1399985191002447872, '2023-11-29 10:34:24', 1, 0); +INSERT INTO `iam_data_role` VALUES (1474717160671485952, 'dept', '部门(测试)', 'dept', '', 1399985191002447872, '2021-12-25 20:22:25', 1399985191002447872, '2023-11-29 10:34:04', 1, 0); +INSERT INTO `iam_data_role` VALUES (1474717276908232704, 'userAndDept', '用户和部门(测试)', 'dept_and_user', '', 1399985191002447872, '2021-12-25 20:22:52', 1399985191002447872, '2023-11-29 10:34:13', 1, 0); +INSERT INTO `iam_data_role` VALUES (1474717344562356224, 'all', '全部数据', 'all', '', 1399985191002447872, '2021-12-25 20:23:09', 1399985191002447872, '2023-11-29 10:28:40', 1, 0); +INSERT INTO `iam_data_role` VALUES (1477990268903804928, 'self_dept', '所在部门', 'self_dept', '', 1399985191002447872, '2022-01-03 21:08:34', 1399985191002447872, '2023-11-29 10:33:38', 5, 0); +INSERT INTO `iam_data_role` VALUES (1477990439800721408, 'self_dept_and_sub', '当前加下级部门', 'self_dept_sub', '', 1399985191002447872, '2022-01-03 21:09:15', 1399985191002447872, '2023-11-29 13:55:12', 9, 0); -- ---------------------------- --- Table structure for base_dynamic_form +-- Table structure for iam_data_role_dept -- ---------------------------- -DROP TABLE IF EXISTS `base_dynamic_form`; -CREATE TABLE `base_dynamic_form` ( +DROP TABLE IF EXISTS `iam_data_role_dept`; +CREATE TABLE `iam_data_role_dept` ( `id` bigint(20) NOT NULL, - `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单名称', - `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单键名', - `value` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '表单内容', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', - `version` int(8) NOT NULL COMMENT '版本', + `role_id` bigint(20) NOT NULL COMMENT '数据角色id', + `dept_id` bigint(20) NOT NULL COMMENT '部门id', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '动态表单' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数据范围部门关联配置' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of base_dynamic_form +-- Records of iam_data_role_dept -- ---------------------------- -INSERT INTO `base_dynamic_form` VALUES (1552656018381422592, '测试表单', 'test', '{\"list\":[{\"type\":\"input\",\"label\":\"输入框\",\"options\":{\"type\":\"text\",\"width\":\"100%\",\"defaultValue\":\"\",\"placeholder\":\"请输入\",\"clearable\":true,\"maxLength\":null,\"addonBefore\":\"\",\"addonAfter\":\"\",\"hidden\":false,\"disabled\":false},\"model\":\"aa\",\"key\":\"input_1659059676533\",\"help\":\"测试\",\"rules\":[{\"required\":true,\"message\":\"必填项\"}]},{\"type\":\"textarea\",\"label\":\"文本框\",\"options\":{\"width\":\"100%\",\"minRows\":4,\"maxRows\":6,\"maxLength\":null,\"defaultValue\":\"\",\"clearable\":true,\"hidden\":false,\"disabled\":false,\"placeholder\":\"请输入\"},\"model\":\"bb\",\"key\":\"textarea_1659020414125\",\"help\":\"\",\"rules\":[{\"required\":true,\"message\":\"必填项\"}]},{\"type\":\"slider\",\"label\":\"滑动输入条\",\"options\":{\"width\":\"100%\",\"defaultValue\":34,\"disabled\":false,\"hidden\":false,\"min\":0,\"max\":100,\"step\":1,\"showInput\":false},\"model\":\"cc\",\"key\":\"slider_1659020433092\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]}],\"config\":{\"layout\":\"horizontal\",\"labelCol\":{\"xs\":4,\"sm\":4,\"md\":4,\"lg\":4,\"xl\":4,\"xxl\":4},\"labelWidth\":100,\"labelLayout\":\"flex\",\"wrapperCol\":{\"xs\":18,\"sm\":18,\"md\":18,\"lg\":18,\"xl\":18,\"xxl\":18},\"hideRequiredMark\":false,\"customStyle\":\"\"}}', '测试动态表单', 1399985191002447872, '2022-07-28 22:03:36', 1399985191002447872, '2022-07-29 09:55:22', 0, 7); -INSERT INTO `base_dynamic_form` VALUES (1552656018381422593, '测试表单1', 'test1', '{\"list\":[{\"type\":\"input\",\"label\":\"申请人\",\"options\":{\"type\":\"text\",\"width\":\"100%\",\"defaultValue\":\"\",\"placeholder\":\"请输入\",\"clearable\":true,\"maxLength\":null,\"addonBefore\":\"\",\"addonAfter\":\"\",\"hidden\":false,\"disabled\":false},\"model\":\"apply_by\",\"key\":\"input_1659059676533\",\"help\":\"测试\",\"rules\":[{\"required\":true,\"message\":\"必填项\"}]},{\"type\":\"input\",\"label\":\"请假天数\",\"options\":{\"type\":\"text\",\"width\":\"100%\",\"defaultValue\":\"\",\"placeholder\":\"请输入\",\"clearable\":false,\"maxLength\":null,\"addonBefore\":\"\",\"addonAfter\":\"\",\"hidden\":false,\"disabled\":false},\"model\":\"leave_days\",\"key\":\"input_1662106166142\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]},{\"type\":\"textarea\",\"label\":\"备注\",\"options\":{\"width\":\"100%\",\"minRows\":4,\"maxRows\":6,\"maxLength\":null,\"defaultValue\":\"\",\"clearable\":true,\"hidden\":false,\"disabled\":false,\"placeholder\":\"请输入\"},\"model\":\"remark\",\"key\":\"textarea_1659020414125\",\"help\":\"\",\"rules\":[{\"required\":true,\"message\":\"必填项\"}]},{\"type\":\"switch\",\"label\":\"开关\",\"options\":{\"defaultValue\":false,\"hidden\":false,\"disabled\":false},\"model\":\"switch_1662108221389\",\"key\":\"switch_1662108221389\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]},{\"type\":\"slider\",\"label\":\"滑动输入条\",\"options\":{\"width\":\"100%\",\"defaultValue\":34,\"disabled\":false,\"hidden\":false,\"min\":0,\"max\":100,\"step\":1,\"showInput\":false},\"model\":\"cc\",\"key\":\"slider_1659020433092\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]},{\"type\":\"table\",\"label\":\"表格布局\",\"trs\":[{\"tds\":[{\"colspan\":1,\"rowspan\":1,\"list\":[]},{\"colspan\":1,\"rowspan\":1,\"list\":[]}]},{\"tds\":[{\"colspan\":1,\"rowspan\":1,\"list\":[{\"type\":\"editor\",\"label\":\"富文本\",\"icon\":\"icon-LC_icon_edit_line_1\",\"list\":[],\"options\":{\"height\":300,\"placeholder\":\"请输入\",\"defaultValue\":\"\",\"chinesization\":true,\"hidden\":false,\"disabled\":false,\"showLabel\":false,\"width\":\"100%\"},\"model\":\"editor_1662106288134\",\"key\":\"editor_1662106288134\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]}]},{\"colspan\":1,\"rowspan\":1,\"list\":[]}]}],\"options\":{\"width\":\"100%\",\"bordered\":true,\"bright\":false,\"small\":true,\"customStyle\":\"\"},\"key\":\"table_1662106283652\"}],\"config\":{\"layout\":\"vertical\",\"labelCol\":{\"xs\":6,\"sm\":6,\"md\":6,\"lg\":6,\"xl\":6,\"xxl\":6},\"labelWidth\":100,\"labelLayout\":\"Grid\",\"wrapperCol\":{\"xs\":18,\"sm\":18,\"md\":18,\"lg\":18,\"xl\":18,\"xxl\":18},\"hideRequiredMark\":false,\"customStyle\":\"\"}}', '测试动态表单', 1399985191002447872, '2022-07-28 22:03:36', 1414143554414059520, '2022-09-02 16:44:01', 0, 12); -- ---------------------------- --- Table structure for notice_message_template +-- Table structure for iam_data_role_user -- ---------------------------- -DROP TABLE IF EXISTS `notice_message_template`; -CREATE TABLE `notice_message_template` ( +DROP TABLE IF EXISTS `iam_data_role_user`; +CREATE TABLE `iam_data_role_user` ( `id` bigint(20) NOT NULL, - `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', - `data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '模板数据', - `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板类型', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '版本', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `role_id` bigint(20) NOT NULL COMMENT '数据角色id', + `user_id` bigint(20) NOT NULL COMMENT '用户id', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '消息模板' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数据范围用户关联配置' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of notice_message_template +-- Records of iam_data_role_user -- ---------------------------- -INSERT INTO `notice_message_template` VALUES (1424936204932169730, 'cs', '测试', 'hello ${msg}6666666666666666666666666666', '1', '测试模板', 0, '2021-08-10 11:30:40', 0, '2021-08-10 11:30:40', 0, 0); -- ---------------------------- --- Table structure for iam_user_info +-- Table structure for iam_dept -- ---------------------------- -DROP TABLE IF EXISTS `iam_user_info`; -CREATE TABLE `iam_user_info` ( - `id` bigint(20) NOT NULL, - `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名称', - `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '账号', - `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码', - `phone` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '手机号', - `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱', - `client_ids` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '关联终端ds', - `administrator` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否超级管理员', - `status` varchar(55) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '账号状态', +DROP TABLE IF EXISTS `iam_dept`; +CREATE TABLE `iam_dept` ( + `id` bigint(20) NOT NULL COMMENT 'ID', + `parent_id` bigint(20) NULL DEFAULT NULL COMMENT '父机构ID', + `dept_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '机构/部门名称', + `sort_no` int(11) NOT NULL DEFAULT 0 COMMENT '排序', + `org_category` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '1' COMMENT '机构类别 1公司 2部门 3岗位', + `org_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '机构编码', + `mobile` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手机号', + `fax` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '传真', + `address` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地址', + `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', `version` int(11) NOT NULL COMMENT '版本', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户信息' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门组织机构表' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of iam_user_info +-- Records of iam_dept -- ---------------------------- -INSERT INTO `iam_user_info` VALUES (1399985191002447872, 'Bootx', 'bootx', 'f52020dca765fd3943ed40a615dc2c5c', '13333333333', 'bootx@bootx.com', '1430430071299207168,1430430071299207169,1626840094767714304,1580487061605175296', b'1', 'norm', 1, '2021-06-02 15:04:15', 1399985191002447872, '2023-10-19 14:14:46', 58, 0); +INSERT INTO `iam_dept` VALUES (1259382878857957377, NULL, 'Bootx Platform总公司', 0, '1', '1', '', NULL, '济南市高新区齐鲁软件园', NULL, -1, '2020-05-10 15:20:51', -1, '2020-05-10 17:52:15', 4, 0); +INSERT INTO `iam_dept` VALUES (1477976804995026944, NULL, 'Bootx Cloud公司', 0, '1', '1', '', NULL, '济南市高新区汉峪金谷', '', 1399985191002447872, '2022-01-03 20:15:04', 1399985191002447872, '2022-01-03 20:15:05', 0, 1); +INSERT INTO `iam_dept` VALUES (1477977184768282624, NULL, 'Bootx Cloud公司', 0, '1', '1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:16:35', 1399985191002447872, '2022-01-03 20:16:35', 0, 1); +INSERT INTO `iam_dept` VALUES (1477977301365739520, NULL, 'Bootx Cloud总公司', 0, '1', '2', '', NULL, '济南市高新区汉峪金谷', '', 1399985191002447872, '2022-01-03 20:17:03', 1399985191002447872, '2022-01-03 20:17:03', 1, 0); +INSERT INTO `iam_dept` VALUES (1477977592291053568, 1259382878857957377, 'bp济南分公司', 0, '1', '1_1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:18:12', 1399985191002447872, '2022-01-03 20:18:12', 1, 0); +INSERT INTO `iam_dept` VALUES (1477977690928500736, 1259382878857957377, '历城分公司', 0, '1', '1_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:18:36', 1399985191002447872, '2022-01-03 20:18:36', 0, 1); +INSERT INTO `iam_dept` VALUES (1477977827897692160, 1259382878857957377, 'bp潍坊分公司', 0, '1', '1_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:19:08', 1399985191002447872, '2022-01-03 20:19:08', 0, 0); +INSERT INTO `iam_dept` VALUES (1477977880947249152, 1477977301365739520, 'bc菏泽分公司', 0, '1', '2_1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:19:21', 1399985191002447872, '2022-01-03 20:19:21', 0, 0); +INSERT INTO `iam_dept` VALUES (1477977930175795200, 1477977301365739520, 'bc日照分公司', 0, '1', '2_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:19:33', 1399985191002447872, '2022-01-03 20:19:33', 0, 0); +INSERT INTO `iam_dept` VALUES (1477978464559484928, 1477977592291053568, '历城办事部', 0, '2', '1_1_1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:21:40', 1399985191002447872, '2022-01-03 20:21:40', 1, 0); +INSERT INTO `iam_dept` VALUES (1477978512177418240, 1477977592291053568, '历下办事部', 0, '2', '1_1_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:21:51', 1399985191002447872, '2022-01-03 20:21:52', 0, 0); +INSERT INTO `iam_dept` VALUES (1477978610865197056, 1477977592291053568, '高新办事部', 0, '2', '1_1_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:22:15', 1399985191002447872, '2022-01-03 20:22:15', 0, 0); +INSERT INTO `iam_dept` VALUES (1477978810526650368, 1477977827897692160, '奎文办事部', 0, '2', '1_2_1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:23:03', 1399985191002447872, '2022-01-03 20:23:03', 0, 0); +INSERT INTO `iam_dept` VALUES (1477978883247493120, 1477977827897692160, '潍城办事部', 0, '2', '1_2_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:23:20', 1399985191002447872, '2022-01-03 20:23:20', 0, 0); -- ---------------------------- --- Table structure for iam_user_expand_info +-- Table structure for iam_login_security_config -- ---------------------------- -DROP TABLE IF EXISTS `iam_user_expand_info`; -CREATE TABLE `iam_user_expand_info` ( +DROP TABLE IF EXISTS `iam_login_security_config`; +CREATE TABLE `iam_login_security_config` ( `id` bigint(20) NOT NULL COMMENT '主键', - `sex` int(4) NULL DEFAULT NULL COMMENT '性别', - `birthday` date NULL DEFAULT NULL COMMENT '生日', - `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '头像', - `last_login_time` datetime(0) NULL DEFAULT NULL COMMENT '上次登录时间', - `current_login_time` datetime(0) NULL DEFAULT NULL COMMENT '本次登录时间', - `initial_password` bit(1) NOT NULL COMMENT '是否初始密码', - `last_change_password_time` datetime(0) NULL DEFAULT NULL COMMENT '上次修改密码时间', - `register_time` datetime(0) NOT NULL COMMENT '注册时间', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '乐观锁', - `deleted` bit(1) NOT NULL DEFAULT 0 COMMENT '删除标志', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户扩展信息' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of iam_user_expand_info --- ---------------------------- -INSERT INTO `iam_user_expand_info` VALUES (1399985191002447872, 1, '1996-12-01', NULL, '2023-10-19 19:21:46', '2023-10-20 09:31:26', b'0', '2023-10-19 14:14:08', '2021-08-01 18:52:37', 1, '2021-06-02 15:04:15', 1, '2023-10-20 09:31:26', 382, b'0'); - --- ---------------------------- --- Table structure for iam_password_security_config --- ---------------------------- -DROP TABLE IF EXISTS `iam_password_security_config`; -CREATE TABLE `iam_password_security_config` ( - `id` bigint(20) NOT NULL COMMENT '主键', - `max_pwd_error_count` int(11) NULL DEFAULT NULL COMMENT '最大密码错误数', - `error_lock_time` int(11) NULL DEFAULT NULL COMMENT '密码错误锁定时间(分钟)', - `require_change_pwd` bit(1) NULL DEFAULT NULL COMMENT '强制修改初始密码', - `update_frequency` int(11) NULL DEFAULT NULL COMMENT '更新频率', - `expire_remind` int(11) NULL DEFAULT NULL COMMENT '到期提醒(天数)', - `same_as_login_name` bit(1) NULL DEFAULT NULL COMMENT '与登录名相同', - `recent_password` int(11) NULL DEFAULT NULL COMMENT '不能与近期多少次密码相同', + `client_id` bigint(20) NULL DEFAULT NULL COMMENT '关联终端ID', + `require_login_change_pwd` bit(1) NULL DEFAULT NULL COMMENT '修改密码是否需要重新登录', + `captcha_enable` bit(1) NULL DEFAULT NULL COMMENT '默认启用验证码', + `max_captcha_error_count` int(11) NULL DEFAULT NULL COMMENT '出现验证码的错误次数', + `allow_multi_login` bit(1) NULL DEFAULT NULL COMMENT '同端是否允许同时登录', + `allow_multi_terminal_login` bit(1) NULL DEFAULT NULL COMMENT '多终端是否允许同时登录', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', `version` int(11) NOT NULL COMMENT '乐观锁', `deleted` bit(1) NOT NULL COMMENT '删除标志', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '密码安全策略' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of iam_password_security_config --- ---------------------------- -INSERT INTO `iam_password_security_config` VALUES (1714844168393515008, 5, 10, b'1', 90, 14, b'0', 5, 1399985191002447872, '2023-10-19 11:21:25', 1399985191002447872, '2023-10-19 11:21:25', 0, b'0'); - --- ---------------------------- --- Table structure for starter_wx_template --- ---------------------------- -DROP TABLE IF EXISTS `starter_wx_template`; -CREATE TABLE `starter_wx_template` ( - `id` bigint(20) NOT NULL, - `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', - `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '编码', - `enable` bit(1) NOT NULL COMMENT '是否启用', - `template_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '模板ID', - `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板标题', - `primary_industry` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板所属行业的一级行业', - `deputy_industry` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板所属行业的二级行业', - `content` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板内容', - `example` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '示例', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '版本', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `inx_`(`template_id`) USING BTREE COMMENT '模板id' -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信消息模板' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '登录安全策略' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of starter_wx_template +-- Records of iam_login_security_config -- ---------------------------- -- ---------------------------- --- Table structure for starter_wx_menu +-- Table structure for iam_login_type -- ---------------------------- -DROP TABLE IF EXISTS `starter_wx_menu`; -CREATE TABLE `starter_wx_menu` ( +DROP TABLE IF EXISTS `iam_login_type`; +CREATE TABLE `iam_login_type` ( `id` bigint(20) NOT NULL COMMENT '主键', - `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '名称', - `menu_info` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '菜单信息', - `remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注', - `publish` bit(1) NOT NULL COMMENT '是否发布', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', - `version` int(11) NOT NULL COMMENT '版本', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '微信自定义菜单' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of starter_wx_menu --- ---------------------------- - --- ---------------------------- --- Table structure for starter_wx_fans --- ---------------------------- -DROP TABLE IF EXISTS `starter_wx_fans`; -CREATE TABLE `starter_wx_fans` ( - `id` bigint(20) NOT NULL, - `openid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '关联OpenId', - `subscribe_status` bit(1) NULL DEFAULT NULL COMMENT '订阅状态', - `subscribe_time` datetime(0) NULL DEFAULT NULL COMMENT '订阅时间', - `nickname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称', - `sex` varchar(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '性别', - `language` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '语言', - `country` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '国家', - `province` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '省份', - `city` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '城市', - `avatar_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像地址', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信公众号粉丝' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of starter_wx_fans --- ---------------------------- - --- ---------------------------- --- Table structure for starter_wecom_robot_config --- ---------------------------- -DROP TABLE IF EXISTS `starter_wecom_robot_config`; -CREATE TABLE `starter_wecom_robot_config` ( - `id` bigint(20) NOT NULL, - `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称', - `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编号', - `webhook_key` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'webhook地址的key值', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(6) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '版本', - `deleted` bit(1) NOT NULL COMMENT '0:未删除。1:已删除', + `code` varchar(21) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '类型', + `internal` bit(1) NOT NULL COMMENT '是否系统内置', + `timeout` bigint(11) NULL DEFAULT NULL COMMENT '在线时长(秒)', + `captcha_type` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '验证码类型', + `captcha` bit(1) NOT NULL COMMENT '启用验证码', + `enable` bit(1) NOT NULL COMMENT '是否可用', + `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '删除标志', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '企业微信机器人配置' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '登录方式' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of starter_wecom_robot_config +-- Records of iam_login_type -- ---------------------------- +INSERT INTO `iam_login_type` VALUES (1430430071299207168, 'password', '账号密码登陆', 'password', b'1', 3600, '-1', b'0', b'1', NULL, 1399985191002447872, '2021-08-25 15:21:20', 1399985191002447872, '2022-11-03 22:24:53', 20, b'0'); +INSERT INTO `iam_login_type` VALUES (1430478946919653376, 'miniApp', '微信小程序', 'openId', b'0', 99999, '0', b'0', b'1', NULL, 1399985191002447872, '2021-08-25 18:35:33', 1399985191002447872, '2022-07-16 12:32:26', 3, b'0'); +INSERT INTO `iam_login_type` VALUES (1435138582839009280, 'phone', '手机短信登录', 'openId', b'0', 3600, '0', b'0', b'1', NULL, 1399985191002447872, '2021-09-07 15:11:16', 1399985191002447872, '2022-07-16 12:32:19', 5, b'0'); +INSERT INTO `iam_login_type` VALUES (1542091599907115008, 'dingTalk', '钉钉', 'openId', b'0', 5, '-1', b'0', b'1', '', 1399985191002447872, '2022-06-29 18:24:23', 1399985191002447872, '2022-07-02 14:55:01', 5, b'0'); +INSERT INTO `iam_login_type` VALUES (1542804450312122368, 'weCom', '企业微信', 'openId', b'0', 5, '-1', b'0', b'1', '', 1399985191002447872, '2022-07-01 17:37:00', 1399985191002447872, '2022-07-01 17:37:00', 0, b'0'); +INSERT INTO `iam_login_type` VALUES (1543126042909016064, 'weChat', '微信登录', 'openId', b'0', 5, '-1', b'0', b'1', '', 1399985191002447872, '2022-07-02 14:54:53', 0, '2022-10-12 22:15:05', 2, b'0'); +INSERT INTO `iam_login_type` VALUES (1626845524617203712, 'passwordGoView', '可视化平台登录', 'password', b'0', 3600, '-1', b'0', b'1', '', 1414143554414059520, '2023-02-18 15:26:13', 1414143554414059520, '2023-02-18 15:26:13', 0, b'0'); -- ---------------------------- --- Table structure for starter_quartz_job_log +-- Table structure for iam_password_change_history -- ---------------------------- -DROP TABLE IF EXISTS `starter_quartz_job_log`; -CREATE TABLE `starter_quartz_job_log` ( +DROP TABLE IF EXISTS `iam_password_change_history`; +CREATE TABLE `iam_password_change_history` ( `id` bigint(20) NOT NULL COMMENT '主键', - `handler_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '处理器名称', - `class_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '处理器全限定名', - `success` bit(1) NOT NULL COMMENT '是否执行成功', - `error_message` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误信息', - `start_time` datetime(0) NULL DEFAULT NULL COMMENT '开始时间', - `end_time` datetime(0) NULL DEFAULT NULL COMMENT '结束时间', - `duration` bigint(255) NULL DEFAULT NULL COMMENT '执行时长', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户Id', + `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '密码', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '任务执行日志' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '密码更改历史' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of starter_quartz_job_log +-- Records of iam_password_change_history -- ---------------------------- -- ---------------------------- --- Table structure for starter_file_upload_info +-- Table structure for iam_password_login_fail_record -- ---------------------------- -DROP TABLE IF EXISTS `starter_file_upload_info`; -CREATE TABLE `starter_file_upload_info` ( +DROP TABLE IF EXISTS `iam_password_login_fail_record`; +CREATE TABLE `iam_password_login_fail_record` ( `id` bigint(20) NOT NULL COMMENT '主键', - `file_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '存储位置', - `file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文件名称', - `file_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文件类型', - `file_suffix` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文件后缀', - `file_size` bigint(20) NULL DEFAULT NULL COMMENT '文件大小', - `external_storage_id` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '外部关联id', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户id', + `fail_count` int(11) NULL DEFAULT NULL COMMENT '登录失败次数', + `fail_time` datetime NULL DEFAULT NULL COMMENT '登录失败时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '上传文件信息' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '密码登录失败记录' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of starter_file_upload_info +-- Records of iam_password_login_fail_record -- ---------------------------- -- ---------------------------- --- Table structure for starter_file_data +-- Table structure for iam_password_security_config -- ---------------------------- -DROP TABLE IF EXISTS `starter_file_data`; -CREATE TABLE `starter_file_data` ( +DROP TABLE IF EXISTS `iam_password_security_config`; +CREATE TABLE `iam_password_security_config` ( `id` bigint(20) NOT NULL COMMENT '主键', - `base64` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT 'base64方式存储', - `data` longblob NULL COMMENT '数据方式存储', + `max_pwd_error_count` int(11) NULL DEFAULT NULL COMMENT '最大密码错误数', + `error_lock_time` int(11) NULL DEFAULT NULL COMMENT '密码错误锁定时间(分钟)', + `require_change_pwd` bit(1) NULL DEFAULT NULL COMMENT '强制修改初始密码', + `update_frequency` int(11) NULL DEFAULT NULL COMMENT '更新频率', + `expire_remind` int(11) NULL DEFAULT NULL COMMENT '到期提醒(天数)', + `same_as_login_name` bit(1) NULL DEFAULT NULL COMMENT '与登录名相同', + `recent_password` int(11) NULL DEFAULT NULL COMMENT '不能与近期多少次密码相同', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '上传文件数据' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '密码安全策略' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of starter_file_data +-- Records of iam_password_security_config -- ---------------------------- +INSERT INTO `iam_password_security_config` VALUES (1714844168393515008, 5, 10, b'1', 90, 14, b'0', 5, 1399985191002447872, '2023-10-19 11:21:25', 1399985191002447872, '2023-10-19 11:21:25', 0, b'0'); -- ---------------------------- --- Table structure for starter_ding_robot_config +-- Table structure for iam_perm_menu -- ---------------------------- -DROP TABLE IF EXISTS `starter_ding_robot_config`; -CREATE TABLE `starter_ding_robot_config` ( +DROP TABLE IF EXISTS `iam_perm_menu`; +CREATE TABLE `iam_perm_menu` ( `id` bigint(20) NOT NULL, - `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', - `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编号', - `access_token` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钉钉机器人访问token', - `enable_signature_check` bit(1) NOT NULL COMMENT '是否开启验签', - `sign_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钉钉机器人私钥', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `client_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '终端code', + `parent_id` bigint(20) NULL DEFAULT NULL COMMENT '父id', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜单名称', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路由名称', + `perm_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单权限编码', + `effect` bit(1) NULL DEFAULT NULL COMMENT '是否有效', + `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单图标', + `hidden` bit(1) NOT NULL COMMENT '是否隐藏', + `hide_children_in_menu` bit(1) NOT NULL COMMENT '是否隐藏子菜单', + `component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件', + `component_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件名字', + `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路径', + `redirect` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单跳转地址(重定向)', + `sort_no` double NOT NULL COMMENT '菜单排序', + `menu_type` int(5) NOT NULL COMMENT '类型(0:一级菜单;1:子菜单 ;2:按钮权限)', + `leaf` bit(1) NULL DEFAULT NULL COMMENT '是否叶子节点', + `keep_alive` bit(1) NULL DEFAULT NULL COMMENT '是否缓存页面', + `target_outside` bit(1) NULL DEFAULT NULL COMMENT '是否外部打开方式', + `hidden_header_content` bit(1) NULL DEFAULT NULL COMMENT '隐藏的标题内容', + `admin` bit(1) NOT NULL COMMENT '系统菜单', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(6) NULL DEFAULT NULL COMMENT '最后修改时间', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', `version` int(11) NOT NULL COMMENT '版本', - `deleted` bit(1) NOT NULL COMMENT '0:未删除。1:已删除', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '钉钉机器人配置' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '权限_菜单' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of starter_ding_robot_config +-- Records of iam_perm_menu -- ---------------------------- +INSERT INTO `iam_perm_menu` VALUES (1580740450633101312, 'adminv3', NULL, '系统管理', 'System', NULL, b'0', 'ant-design:setting-outlined', b'0', b'0', 'Layout', NULL, '/system', '/system1/client', -99999, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 10:01:07', 1414143554414059520, '2022-10-18 15:32:09', 4, 0); +INSERT INTO `iam_perm_menu` VALUES (1580740637841666048, 'adminv3', 1582253306356649984, '终端管理', 'ClientList', NULL, b'0', '', b'0', b'0', '/modules/system/client/ClientList.vue', NULL, '/system/client', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 10:01:51', 1414143554414059520, '2022-10-18 14:13:27', 5, 0); +INSERT INTO `iam_perm_menu` VALUES (1580740758629232640, 'adminv3', 1582253306356649984, '登录方式', 'LoginTypeList', NULL, b'0', '', b'0', b'0', '/modules/system/loginType/LoginTypeList.vue', NULL, '/system/loginType', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 10:02:20', 1414143554414059520, '2022-10-18 14:13:40', 5, 0); +INSERT INTO `iam_perm_menu` VALUES (1580858583654051840, 'adminv3', 1580740450633101312, '测试Iframe', 'Iframe', NULL, b'0', '', b'0', b'0', 'Iframe', NULL, '/system/Iframe', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 17:50:32', 1414143554414059520, '2022-10-17 17:46:19', 5, 1); +INSERT INTO `iam_perm_menu` VALUES (1580917438227075072, 'adminv3', 1580740450633101312, '三极目录', 'hello', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system1/a', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 21:44:24', 1399985191002447872, '2022-10-14 23:38:16', 2, 1); +INSERT INTO `iam_perm_menu` VALUES (1580917571069071360, 'adminv3', 1580917438227075072, '百度', 'baidu', NULL, b'0', '', b'0', b'0', '', NULL, 'https://www.baidu.com/', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 21:44:56', 1399985191002447872, '2022-10-14 23:37:44', 3, 1); +INSERT INTO `iam_perm_menu` VALUES (1580928436300337152, 'adminv3', 1580740450633101312, '菜单管理', 'MenuList', NULL, b'0', '', b'0', b'0', '/modules/system/menu/MenuList.vue', NULL, '/system/menu', '', -99, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 22:28:06', 1399985191002447872, '2022-10-14 22:28:32', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582249924602580992, 'adminv3', 1580740450633101312, '权限管理', 'Permission', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/permission', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 13:59:13', 1414143554414059520, '2022-10-18 13:59:13', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582253011803262976, 'adminv3', 1580740450633101312, '用户信息', 'UserAuth', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/user', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 14:11:30', 1414143554414059520, '2022-10-18 14:11:30', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582253152903843840, 'adminv3', 1580740450633101312, '系统配置', 'SystemConfig', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 14:12:03', 1414143554414059520, '2022-10-18 14:12:03', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582253306356649984, 'adminv3', 1580740450633101312, '认证管理', 'Auth', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/auth', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 14:12:40', 1414143554414059520, '2022-10-18 14:13:13', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582275875424129024, 'adminv3', NULL, '系统监控', 'Monitor', NULL, b'0', 'ant-design:monitor-outlined', b'0', b'0', 'Layout', NULL, '/monitor', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:42:21', 1414143554414059520, '2022-10-19 17:29:29', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582275984849326080, 'adminv3', NULL, '通知管理', 'Notice', NULL, b'0', 'ant-design:message-outlined', b'0', b'0', 'Layout', NULL, '/notice', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:42:47', 1414143554414059520, '2022-10-19 17:30:06', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582276092038959104, 'adminv3', NULL, '第三方对接', 'Third', NULL, b'0', 'ant-design:api-twotone', b'0', b'0', 'Layout', NULL, '/third', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:43:12', 1414143554414059520, '2022-10-19 17:32:04', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582276341792985088, 'adminv3', NULL, '开发管理', 'Develop', NULL, b'0', 'ant-design:apartment-outlined', b'0', b'0', 'Layout', NULL, '/develop', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:44:12', 1414143554414059520, '2022-10-19 15:24:22', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582276516905177088, 'adminv3', NULL, '功能演示', 'Demo', NULL, b'0', 'ant-design:appstore-twotone', b'0', b'0', 'Layout', NULL, '/demo', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:44:54', 1414143554414059520, '2022-10-19 17:34:26', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582277076421136384, 'adminv3', 1582249924602580992, '角色管理', 'RoleList', NULL, b'0', '', b'0', b'0', '/modules/system/role/RoleList.vue', NULL, '/system/permission/role', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:47:07', 1414143554414059520, '2022-10-18 15:59:37', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582301940364308480, 'adminv3', 1582249924602580992, '请求权限', 'PermPathList', NULL, b'0', '', b'0', b'0', '/modules/system/path/PermPathList.vue', NULL, '/system/permission/path', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:25:55', 1399985191002447872, '2023-11-29 13:57:56', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1582302180999917568, 'adminv3', 1582249924602580992, '数据角色', 'DataRoleList', NULL, b'0', '', b'0', b'0', '/modules/system/scope/DataRoleList.vue', NULL, '/system/permission/data', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:26:52', 1399985191002447872, '2023-11-28 21:02:57', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1582302542955769856, 'adminv3', 1582253011803262976, '用户管理', 'UserList', NULL, b'0', '', b'0', b'0', '/modules/system/user/UserList.vue', NULL, '/system/user/info', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:28:19', 1414143554414059520, '2022-10-18 17:28:19', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582302764129808384, 'adminv3', 1582253011803262976, '部门管理', 'DeptList', NULL, b'0', '', b'0', b'0', '/modules/system/dept/DeptList.vue', NULL, '/system/user/dept', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:29:11', 1414143554414059520, '2022-10-18 17:32:26', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582303143110340608, 'adminv3', 1582253152903843840, '数据字典', 'DictList', NULL, b'0', '', b'0', b'0', '/modules/system/dict/DictList.vue', NULL, '/system/config/dict', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:30:42', 1414143554414059520, '2022-10-18 17:30:42', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582303290070364160, 'adminv3', 1582253152903843840, '定时任务', 'QuartzJobList', NULL, b'0', '', b'0', b'0', '/modules/baseapi/quartz/QuartzJobList.vue', NULL, '/system/config/quartz', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:31:17', 1414143554414059520, '2023-08-09 15:50:46', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1582303447428067328, 'adminv3', 1582253152903843840, '系统参数', 'SystemParamList', NULL, b'0', '', b'0', b'0', '/modules/system/param/SystemParamList.vue', NULL, '/system/config/param', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:31:54', 1414143554414059520, '2022-10-19 23:14:16', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582632873244172288, 'adminv3', 1582276341792985088, '文件管理', 'FileUploadList', NULL, b'0', '', b'0', b'0', '/modules/develop/file/FileUploadList.vue', NULL, '/develop/file', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:20:56', 1414143554414059520, '2022-10-19 15:20:56', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582633196587261952, 'adminv3', 1582276341792985088, '代码生成', 'CodeGenList', NULL, b'0', '', b'0', b'0', '/modules/develop/codegen/CodeGenList.vue', NULL, '/develop/codegen', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:22:13', 1414143554414059520, '2022-10-19 15:23:17', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1582633307786649600, 'adminv3', 1582276341792985088, '动态表单', 'DynamicFormList', NULL, b'0', '', b'0', b'0', '/modules/develop/dynamicform/DynamicFormList.vue', NULL, '/develop/form', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:22:39', 1414143554414059520, '2022-10-19 15:22:39', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1582633620321017856, 'adminv3', 1582276341792985088, '动态数据源', 'DynamicDataSourceList', NULL, b'0', '', b'0', b'0', '/modules/develop/dynamicsource/DynamicDataSourceList.vue', NULL, '/develop/source', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:23:54', 1414143554414059520, '2022-10-19 15:23:54', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1583074308040925184, 'adminv3', 1582275875424129024, '接口文档', 'ApiSwagger', NULL, b'0', '', b'0', b'0', '', NULL, 'http://127.0.0.1:9999/doc.html', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:35:02', 1414143554414059520, '2022-11-23 13:59:09', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1583075229563068416, 'adminv3', 1582275875424129024, '审计日志', 'AuditLog', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/monitor/log', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:38:42', 1414143554414059520, '2022-10-20 20:41:38', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1583076217481043968, 'adminv3', 1583075229563068416, '登录日志', 'LoginLogList', NULL, b'0', '', b'0', b'0', '/modules/monitor/login/LoginLogList.vue', NULL, '/monitor/log/login', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:42:37', 1414143554414059520, '2022-10-20 20:43:36', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1583076424935514112, 'adminv3', 1583075229563068416, '操作日志', 'OperateLogList', NULL, b'0', '', b'0', b'0', '/modules/monitor/operate/OperateLogList.vue', NULL, '/monitor/log/operate', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:43:26', 1414143554414059520, '2022-10-20 20:43:26', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1583076670881112064, 'adminv3', 1583075229563068416, '数据版本日志', 'DataVersionLogList', NULL, b'0', '', b'0', b'0', '/modules/monitor/data/DataVersionLogList.vue', NULL, '/monitor/log/data', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:44:25', 1414143554414059520, '2022-10-20 20:44:25', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1583076878956339200, 'adminv3', 1582275875424129024, 'ELK日志', 'ELK', NULL, b'0', '', b'1', b'0', '', NULL, 'http://elk.dev.bootx.cn:5601/app/discover', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:45:15', 1414143554414059520, '2023-08-12 19:26:12', 3, 0); +INSERT INTO `iam_perm_menu` VALUES (1583077015434797056, 'adminv3', 1582275875424129024, 'PlumeLog日志', 'PlumeLog', NULL, b'0', '', b'0', b'0', '', NULL, 'http://127.0.0.1:9999/plumelog/#/', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:45:47', 1414143554414059520, '2022-10-20 20:45:47', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1583077198772019200, 'adminv3', 1582275875424129024, '系统信息', 'SystemInfoMonitor', NULL, b'0', '', b'0', b'0', '/modules/monitor/system/SystemInfoMonitor.vue', NULL, '/monitor/sysinfo', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:46:31', 1414143554414059520, '2022-10-20 20:46:31', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1583077360827342848, 'adminv3', 1582275875424129024, 'Redis监控', 'RedisInfoMonitor', NULL, b'0', '', b'0', b'0', '/modules/monitor/redis/RedisInfoMonitor.vue', NULL, '/monitor/redis', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:47:10', 1414143554414059520, '2022-10-20 20:47:10', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1584378294652051456, 'adminv3', 1582275984849326080, '邮件配置', 'MailConfigList', NULL, b'0', '', b'0', b'0', '/modules/notice/mail/MailConfigList.vue', NULL, '/notice/notice', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 10:56:36', 1414143554414059520, '2022-10-24 16:14:34', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1584378497824137216, 'adminv3', 1582275984849326080, '消息模板', 'MessageTemplateList', NULL, b'0', '', b'0', b'0', '/modules/notice/template/MessageTemplateList.vue', NULL, '/notice/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 10:57:25', 1414143554414059520, '2022-10-25 22:14:14', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1584378671266996224, 'adminv3', 1582275984849326080, '站内信', 'SiteMessageList', NULL, b'0', '', b'0', b'0', '/modules/notice/site/sender/SiteMessageList.vue', NULL, '/notice/siteMessage', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 10:58:06', 1414143554414059520, '2022-10-24 10:58:06', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1584379602188574720, 'adminv3', 1582276092038959104, '微信', 'WeChat', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/third/wechat', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:01:48', 1414143554414059520, '2022-10-24 11:01:48', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1584379704122744832, 'adminv3', 1582276092038959104, '企业微信', 'WeCom', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/third/wecom', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:02:12', 1414143554414059520, '2022-10-24 11:02:12', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1584380087805091840, 'adminv3', 1582276092038959104, '钉钉', 'DingTalk', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/third/dingtalk', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:03:44', 1414143554414059520, '2022-10-24 11:03:44', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1584380527829524480, 'adminv3', 1584379602188574720, '消息模板', 'WechatTemplateList', NULL, b'0', '', b'0', b'0', '/modules/third/wechat/template/WechatTemplateList.vue', NULL, '/third/wechat/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:05:29', 1414143554414059520, '2022-10-26 15:58:56', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1584380679478779904, 'adminv3', 1584379602188574720, '自定义菜单', 'WechatMenuList', NULL, b'0', '', b'0', b'0', '/modules/third/wechat/menu/WechatMenuList.vue', NULL, '/third/wechat/menu', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:06:05', 1414143554414059520, '2022-10-27 10:15:24', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1584380824308097024, 'adminv3', 1584379602188574720, '素材管理', 'WechatMediaList', NULL, b'0', '', b'0', b'0', '/modules/third/wechat/media/WechatMediaList.vue', NULL, '/third/wechat/media', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:06:40', 1414143554414059520, '2022-10-27 16:38:47', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1584381134950834176, 'adminv3', 1584379704122744832, '企微机器人', 'WeComRobotConfigList', NULL, b'0', '', b'0', b'0', '/modules/third/wecom/robot/WecomRobotConfigList.vue', NULL, '/third/wecom/robot', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:07:54', 1414143554414059520, '2022-11-12 20:58:25', 3, 0); +INSERT INTO `iam_perm_menu` VALUES (1584381322184564736, 'adminv3', 1584380087805091840, '钉钉机器人', 'DingRobotConfigList', NULL, b'0', '', b'0', b'0', '/modules/third/dingtalk/robot/DingRobotConfigList.vue', NULL, '/third/dingTalk/robot', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:08:38', 1414143554414059520, '2022-11-12 20:58:37', 6, 0); +INSERT INTO `iam_perm_menu` VALUES (1584381477986181120, 'adminv3', 1584380087805091840, '钉钉配置', 'DingRobotConfigList', NULL, b'0', '', b'1', b'0', '/modules/third/dingtalk/config/DingTalkConfigList.vue', NULL, '/third/dingtalk/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:09:15', 1414143554414059520, '2022-11-11 16:04:47', 1, 1); +INSERT INTO `iam_perm_menu` VALUES (1597044371008516096, 'adminv3', NULL, '功能演示', 'Demo', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/demo', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-11-28 09:47:04', 1414143554414059520, '2022-11-28 09:47:04', 0, 1); +INSERT INTO `iam_perm_menu` VALUES (1597102799370317824, 'adminv3', 1582276516905177088, '数据相关', 'DemoData', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/demo/data', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-11-28 13:39:15', 1414143554414059520, '2022-11-28 13:39:15', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1597210969883275264, 'adminv3', 1582276516905177088, '超级查询', 'SuperQueryDemoList', NULL, b'0', '', b'0', b'0', '/modules/demo/query/SuperQueryDemoList.vue', NULL, '/demo/query/super', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-11-28 20:49:05', 1414143554414059520, '2022-11-28 21:00:14', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1599337250200440832, 'adminv3', NULL, '关于', '', NULL, b'0', 'simple-icons:about-dot-me', b'0', b'0', '', NULL, '/about/index', '', 99, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 17:38:09', 1414143554414059520, '2022-12-04 17:43:32', 3, 0); +INSERT INTO `iam_perm_menu` VALUES (1599378494880436224, 'adminv3', 1582276516905177088, 'WS演示', 'WebsocketDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/ws/WebsocketDemo', NULL, '/demo/ws', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 20:22:03', 1414143554414059520, '2023-02-08 12:17:58', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1599378579513102336, 'adminv3', 1582276516905177088, '幂等请求演示', 'IdempotentDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/idempotent/IdempotentDemo', NULL, '/demo/idempotent', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 20:22:23', 1414143554414059520, '2023-02-08 11:46:00', 3, 0); +INSERT INTO `iam_perm_menu` VALUES (1599378728490586112, 'adminv3', 1582276516905177088, '消息中间件演示', 'MqDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/mq/MqDemo', NULL, '/demo/mq', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 20:22:59', 1414143554414059520, '2023-02-08 22:09:04', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1599378838519762944, 'adminv3', 1582276516905177088, '富文本编辑', 'WangEditorDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/wangeditor/WangEditorDemo.vue', NULL, '/demo/wangEditor', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 20:23:25', 1414143554414059520, '2023-02-10 09:05:16', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1617847577158324224, 'adminv3', 1597102799370317824, '数据权限', 'DataPermDemoList', NULL, b'0', '', b'0', b'0', '/modules/demo/data/perm/DataPermDemoList.vue', NULL, '/demo/data/perm', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-01-24 19:31:35', 1414143554414059520, '2023-01-24 20:06:04', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1617847653746315264, 'adminv3', 1597102799370317824, '加密解密', 'DataEncryptDemoList', NULL, b'0', '', b'0', b'0', '/modules/demo/data/encrypt/DataEncryptDemoList.vue', NULL, '/demo/data/encrypt', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-01-24 19:31:53', 1414143554414059520, '2023-01-24 20:05:45', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1617847747375763456, 'adminv3', 1597102799370317824, '数据脱敏', 'DataSensitiveDemoList', NULL, b'0', '', b'0', b'0', '/modules/demo/data/sensitive/DataSensitiveDemoList.vue', NULL, '/demo/data/sensitive', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-01-24 19:32:16', 1414143554414059520, '2023-01-24 20:06:58', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1621150743447965696, 'admin', 1495968302034210816, '省市区联动', 'ChinaRegionDemo', NULL, b'0', '', b'0', b'0', 'demo/chinaregion/ChinaRegionDemo', NULL, '/demo/chinaregion', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-02-02 22:17:11', 1399985191002447872, '2023-02-08 09:43:39', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1623156857846034432, 'adminv3', 1582276516905177088, '省市区联动', 'ChinaRegionDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/chinaregion/ChinaRegionDemo', NULL, '/demo/chinaregion', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-02-08 11:08:46', 1414143554414059520, '2023-02-08 11:08:46', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1623325795944439808, 'adminv3', 1599378992811429888, '邮件通知', 'EmailSenderDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/notice/email/EmailSenderDemo.vue', NULL, '/demo/notice/email', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-02-08 22:20:04', 1414143554414059520, '2023-02-20 10:38:55', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1623494586215579648, 'admin', 1552207982510706688, '行政区划', 'ChinaRegion', NULL, b'0', '', b'1', b'0', 'develop/region/ChinaRegionList', NULL, '/develop/region', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-02-09 09:30:47', 1399985191002447872, '2023-02-09 17:50:05', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1629039360928075776, 'adminv3', 1582276341792985088, '可视化大屏', 'ProjectInfoList', NULL, b'0', '', b'0', b'0', '/modules/develop/report/ProjectInfoList', NULL, '/develop/report', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-02-24 16:43:44', 1414143554414059520, '2023-02-24 16:44:17', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1631946120891707392, 'admin', 1552207982510706688, '可视化大屏', 'ProjectInfoList', NULL, b'0', '', b'0', b'0', 'develop/report/ProjectInfoList', NULL, '/develop/report', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-03-04 17:14:10', 1399985191002447872, '2023-03-04 17:14:10', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1635274568758435840, 'adminv3', 1582276341792985088, '数据集管理', 'DataResultSqlList', NULL, b'0', '', b'0', b'0', '/modules/develop/dataresult/DataResultSqlList', NULL, '/develop/dataresult', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-03-13 21:40:14', 1414143554414059520, '2023-09-18 14:26:51', 3, 0); +INSERT INTO `iam_perm_menu` VALUES (1687369862646558720, 'adminv3', 1582275984849326080, '短信管理', 'Sms', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/notice/sms', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-04 15:48:20', 1414143554414059520, '2023-08-04 15:48:32', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1687370142234669056, 'adminv3', 1687369862646558720, '短信配置', 'SmsChannelConfigList', NULL, b'0', '', b'0', b'0', '/modules/notice/sms/config/SmsChannelConfigList', NULL, '/notice/sms/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-04 15:49:26', 1414143554414059520, '2023-08-04 15:49:26', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1687370277496778752, 'adminv3', 1687369862646558720, '短信模板', 'SmsTemplateList', NULL, b'0', '', b'0', b'0', '/modules/notice/sms/template/SmsTemplateList', NULL, '/notice/sms/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-04 15:49:59', 1414143554414059520, '2023-08-04 15:50:38', 1, 0); +INSERT INTO `iam_perm_menu` VALUES (1689181991598997504, 'adminv3', 1582253152903843840, '敏感词管理', 'ChinaWord', NULL, b'0', '', b'0', b'0', '/modules/baseapi/chianword/ChinaWordList.vue', NULL, '/system/config/chinaword', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-09 15:49:05', 1414143554414059520, '2023-08-09 15:49:05', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1690324070514782208, 'adminv3', 1582276341792985088, '通用模板', 'GeneralTemplateList', NULL, b'0', '', b'0', b'0', '/modules/develop/template/GeneralTemplateList', NULL, '/develop/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-12 19:27:18', 1414143554414059520, '2023-08-12 19:31:26', 3, 0); +INSERT INTO `iam_perm_menu` VALUES (1703665090038800384, 'adminv3', 1582276341792985088, '在线SQL', 'SqlQueryInfo', NULL, b'0', '', b'0', b'0', '/modules/develop/query/SqlQueryInfo', NULL, '/develop/sqlquery', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-09-18 14:59:45', 1414143554414059520, '2023-09-18 14:59:45', 0, 0); +INSERT INTO `iam_perm_menu` VALUES (1713931084759293952, 'adminv3', 1582253306356649984, '密码安全', 'PassowrdSecurity', NULL, b'0', '', b'0', b'0', '/modules/system/security/password/PasswordSecurityConfig.vue', NULL, '/system/config/passowrd', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-10-16 22:53:09', 1399985191002447872, '2023-10-16 22:58:59', 2, 0); +INSERT INTO `iam_perm_menu` VALUES (1719311626751950848, 'adminv3', 1582276516905177088, '大屏', '', NULL, b'0', '', b'0', b'0', 'Iframe', NULL, '/demo/big', 'http://localhost:8112/#/index', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-10-31 19:13:30', 1399985191002447872, '2023-11-15 11:11:26', 0, 1); +INSERT INTO `iam_perm_menu` VALUES (1733829906427682816, 'adminv3', 1582275875424129024, '在线用户', 'OnlineUserList', NULL, b'0', '', b'0', b'0', '/modules/monitor/user/online/OnlineUserList', NULL, '/monitor/user/online', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-12-10 20:43:57', 1399985191002447872, '2023-12-10 20:43:57', 0, 0); -- ---------------------------- --- Table structure for starter_ding_media_md5 +-- Table structure for iam_perm_path -- ---------------------------- -DROP TABLE IF EXISTS `starter_ding_media_md5`; -CREATE TABLE `starter_ding_media_md5` ( +DROP TABLE IF EXISTS `iam_perm_path`; +CREATE TABLE `iam_perm_path` ( `id` bigint(20) NOT NULL, - `media_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '媒体id', - `md5` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'md5值', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间', + `code` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '权限标识', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限名称', + `request_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '请求类型', + `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '请求路径', + `group_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分组名称', + `enable` bit(1) NOT NULL COMMENT '启用状态', + `generate` bit(1) NOT NULL COMMENT '是否通过系统生成的权限', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', + `creator` bigint(20) NULL DEFAULT NULL, + `create_time` datetime(6) NULL DEFAULT NULL, + `last_modifier` bigint(20) NULL DEFAULT NULL, + `last_modified_time` datetime(6) NULL DEFAULT NULL, + `deleted` bit(1) NOT NULL, + `version` int(11) NOT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '钉钉媒体文件MD5值关联关系' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '权限_请求' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of starter_ding_media_md5 +-- Records of iam_perm_path -- ---------------------------- -- ---------------------------- --- Table structure for starter_audit_operate_log +-- Table structure for iam_role -- ---------------------------- -DROP TABLE IF EXISTS `starter_audit_operate_log`; -CREATE TABLE `starter_audit_operate_log` ( - `id` bigint(20) NOT NULL, - `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作模块', - `operate_id` bigint(20) NULL DEFAULT NULL COMMENT '操作人员id', - `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作人员账号', - `business_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型', - `method` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求方法', - `request_method` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求方式', - `operate_url` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求url', - `operate_ip` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作ip', - `operate_location` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作地点', - `operate_param` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求参数', - `operate_return` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '返回参数', - `success` bit(1) NULL DEFAULT NULL COMMENT '是否成功', - `error_msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '错误提示', - `operate_time` datetime(0) NULL DEFAULT NULL COMMENT '操作时间', +DROP TABLE IF EXISTS `iam_role`; +CREATE TABLE `iam_role` ( + `id` bigint(20) NOT NULL COMMENT '角色ID', + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '编码', + `pid` bigint(20) NULL DEFAULT NULL COMMENT '父ID', + `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称', + `internal` bit(1) NOT NULL COMMENT '是否系统内置', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '说明', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '操作日志' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '角色' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of starter_audit_operate_log +-- Records of iam_role -- ---------------------------- +INSERT INTO `iam_role` VALUES (1405414804771971072, 'admin', NULL, '管理员', b'1', '管理员', 1, '2021-06-17 14:39:35', 1399985191002447872, '2021-07-18 22:31:02', 6, 0); +INSERT INTO `iam_role` VALUES (1416730722714144768, 'test', NULL, '测试', b'0', '测试角色', 1399985191002447872, '2021-07-18 20:05:01', 1399985191002447872, '2021-07-18 20:16:15', 1, 0); +INSERT INTO `iam_role` VALUES (1422832797731778562, 'user', NULL, '用户', b'0', '用户角色', 0, '2021-08-04 16:12:29', 1399985191002447872, '2021-08-04 16:15:03', 7, 0); +INSERT INTO `iam_role` VALUES (1428891259564445696, 'manager', NULL, '管理者', b'0', 'manager管理者', 1399985191002447872, '2021-08-21 09:26:38', 1399985191002447872, '2021-08-21 09:26:39', 0, 0); -- ---------------------------- --- Table structure for starter_audit_login_log +-- Table structure for iam_role_menu -- ---------------------------- -DROP TABLE IF EXISTS `starter_audit_login_log`; -CREATE TABLE `starter_audit_login_log` ( +DROP TABLE IF EXISTS `iam_role_menu`; +CREATE TABLE `iam_role_menu` ( `id` bigint(20) NOT NULL, - `user_id` bigint(11) NULL DEFAULT NULL COMMENT '用户id', - `account` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户名称', - `login` bit(1) NULL DEFAULT NULL COMMENT '登录成功状态', - `client` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '终端', - `login_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录方式', - `ip` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录IP地址', - `login_location` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录地点', - `os` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作系统', - `browser` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '浏览器类型', - `msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '提示消息', - `login_time` datetime(0) NULL DEFAULT NULL COMMENT '访问时间', + `role_id` bigint(20) NOT NULL COMMENT '角色id', + `client_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '终端code', + `permission_id` bigint(20) NOT NULL COMMENT '菜单权限id', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '登陆日志' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色菜单权限表' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of starter_audit_login_log +-- Records of iam_role_menu -- ---------------------------- -- ---------------------------- --- Table structure for report_project_info_publish +-- Table structure for iam_role_path -- ---------------------------- -DROP TABLE IF EXISTS `report_project_info_publish`; -CREATE TABLE `report_project_info_publish` ( - `id` bigint(20) NOT NULL COMMENT '主键', - `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '报表内容', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '乐观锁', - `deleted` bit(1) NOT NULL COMMENT '删除标志', +DROP TABLE IF EXISTS `iam_role_path`; +CREATE TABLE `iam_role_path` ( + `id` bigint(20) NOT NULL, + `role_id` bigint(20) NOT NULL COMMENT '角色id', + `permission_id` bigint(20) NOT NULL COMMENT '请求权限id', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '自定义大屏发布信息' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色请求权限表' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of report_project_info_publish +-- Records of iam_role_path -- ---------------------------- -- ---------------------------- --- Table structure for report_project_info +-- Table structure for iam_user_data_role -- ---------------------------- -DROP TABLE IF EXISTS `report_project_info`; -CREATE TABLE `report_project_info` ( +DROP TABLE IF EXISTS `iam_user_data_role`; +CREATE TABLE `iam_user_data_role` ( `id` bigint(20) NOT NULL COMMENT '主键', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目名称', - `state` int(11) NULL DEFAULT NULL COMMENT '发布状态', - `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '报表内容', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '乐观锁', - `deleted` bit(1) NOT NULL COMMENT '删除标志', - `index_image` bigint(20) NULL DEFAULT NULL COMMENT '预览图片id', - `edit` bit(1) NULL DEFAULT NULL COMMENT '是否在编辑中', + `user_id` bigint(20) NOT NULL COMMENT '用户ID', + `role_id` bigint(20) NOT NULL COMMENT '数据角色ID', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '自定义大屏信息' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户数据范围关系\r\n' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of report_project_info +-- Records of iam_user_data_role -- ---------------------------- -- ---------------------------- --- Table structure for qrtz_triggers +-- Table structure for iam_user_dept -- ---------------------------- -DROP TABLE IF EXISTS `qrtz_triggers`; -CREATE TABLE `qrtz_triggers` ( - `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `NEXT_FIRE_TIME` bigint(13) NULL DEFAULT NULL, - `PREV_FIRE_TIME` bigint(13) NULL DEFAULT NULL, - `PRIORITY` int(11) NULL DEFAULT NULL, - `TRIGGER_STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `TRIGGER_TYPE` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `START_TIME` bigint(13) NOT NULL, - `END_TIME` bigint(13) NULL DEFAULT NULL, - `CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `MISFIRE_INSTR` smallint(2) NULL DEFAULT NULL, - `JOB_DATA` blob NULL, - PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, - INDEX `IDX_QRTZ_T_NFT_ST`(`SCHED_NAME`, `TRIGGER_STATE`, `NEXT_FIRE_TIME`) USING BTREE, - INDEX `IDX_QRTZ_T_N_STATE`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE, - INDEX `IDX_QRTZ_T_NEXT_FIRE_TIME`(`SCHED_NAME`, `NEXT_FIRE_TIME`) USING BTREE, - INDEX `IDX_QRTZ_T_C`(`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE, - INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_STATE`) USING BTREE, - INDEX `IDX_QRTZ_T_G`(`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE, - INDEX `IDX_QRTZ_T_J`(`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE, - INDEX `IDX_QRTZ_T_JG`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE, - INDEX `IDX_QRTZ_T_N_G_STATE`(`SCHED_NAME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE, - INDEX `IDX_QRTZ_T_NFT_MISFIRE`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`) USING BTREE, - INDEX `IDX_QRTZ_T_STATE`(`SCHED_NAME`, `TRIGGER_STATE`) USING BTREE, - INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE_GRP`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE, - CONSTRAINT `qrtz_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) REFERENCES `qrtz_job_details` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `iam_user_dept`; +CREATE TABLE `iam_user_dept` ( + `id` bigint(20) NOT NULL, + `user_id` bigint(20) NOT NULL COMMENT '用户id', + `dept_id` bigint(20) NOT NULL COMMENT '部门id', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户部门关联表' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of qrtz_triggers +-- Records of iam_user_dept -- ---------------------------- --- ---------------------------- --- Table structure for qrtz_simprop_triggers --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_simprop_triggers`; -CREATE TABLE `qrtz_simprop_triggers` ( - `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `STR_PROP_1` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `STR_PROP_2` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `STR_PROP_3` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `INT_PROP_1` int(11) NULL DEFAULT NULL, - `INT_PROP_2` int(11) NULL DEFAULT NULL, - `LONG_PROP_1` bigint(20) NULL DEFAULT NULL, - `LONG_PROP_2` bigint(20) NULL DEFAULT NULL, - `DEC_PROP_1` decimal(13, 4) NULL DEFAULT NULL, - `DEC_PROP_2` decimal(13, 4) NULL DEFAULT NULL, - `BOOL_PROP_1` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `BOOL_PROP_2` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, - CONSTRAINT `qrtz_simprop_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; +-- ---------------------------- +-- Table structure for iam_user_expand_info +-- ---------------------------- +DROP TABLE IF EXISTS `iam_user_expand_info`; +CREATE TABLE `iam_user_expand_info` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `sex` int(4) NULL DEFAULT NULL COMMENT '性别', + `birthday` date NULL DEFAULT NULL COMMENT '生日', + `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '头像', + `last_login_time` datetime NULL DEFAULT NULL COMMENT '上次登录时间', + `current_login_time` datetime NULL DEFAULT NULL COMMENT '本次登录时间', + `initial_password` bit(1) NOT NULL COMMENT '是否初始密码', + `expire_password` bit(1) NOT NULL COMMENT '密码是否过期', + `last_change_password_time` datetime NULL DEFAULT NULL COMMENT '上次修改密码时间', + `register_time` datetime NOT NULL COMMENT '注册时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户扩展信息' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of qrtz_simprop_triggers +-- Records of iam_user_expand_info -- ---------------------------- +INSERT INTO `iam_user_expand_info` VALUES (1399985191002447872, 1, '1996-12-01', NULL, '2023-10-19 19:21:46', '2023-10-20 09:31:26', b'0', b'0', '2023-10-19 14:14:08', '2021-08-01 18:52:37', 1, '2021-06-02 15:04:15', 1, '2023-10-20 09:31:26', 382, b'0'); -- ---------------------------- --- Table structure for qrtz_simple_triggers +-- Table structure for iam_user_info -- ---------------------------- -DROP TABLE IF EXISTS `qrtz_simple_triggers`; -CREATE TABLE `qrtz_simple_triggers` ( - `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `REPEAT_COUNT` bigint(7) NOT NULL, - `REPEAT_INTERVAL` bigint(12) NOT NULL, - `TIMES_TRIGGERED` bigint(10) NOT NULL, - PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, - CONSTRAINT `qrtz_simple_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `iam_user_info`; +CREATE TABLE `iam_user_info` ( + `id` bigint(20) NOT NULL, + `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名称', + `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '账号', + `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码', + `phone` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '手机号', + `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱', + `client_ids` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '关联终端ds', + `administrator` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否超级管理员', + `status` varchar(55) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '账号状态', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户信息' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of qrtz_simple_triggers +-- Records of iam_user_info -- ---------------------------- +INSERT INTO `iam_user_info` VALUES (1399985191002447872, 'Bootx', 'bootx', 'f52020dca765fd3943ed40a615dc2c5c', '13333333333', 'bootx@bootx.com', '1430430071299207168,1430430071299207169,1626840094767714304,1580487061605175296', b'1', 'norm', 1, '2021-06-02 15:04:15', 1399985191002447872, '2023-10-19 14:14:46', 58, 0); -- ---------------------------- --- Table structure for qrtz_scheduler_state +-- Table structure for iam_user_role -- ---------------------------- -DROP TABLE IF EXISTS `qrtz_scheduler_state`; -CREATE TABLE `qrtz_scheduler_state` ( - `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `LAST_CHECKIN_TIME` bigint(13) NOT NULL, - `CHECKIN_INTERVAL` bigint(13) NOT NULL, - PRIMARY KEY (`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `iam_user_role`; +CREATE TABLE `iam_user_role` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `user_id` bigint(20) NOT NULL COMMENT '用户ID', + `role_id` bigint(20) NOT NULL COMMENT '角色ID', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户角色关系\r\n' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of qrtz_scheduler_state +-- Records of iam_user_role -- ---------------------------- -- ---------------------------- --- Table structure for qrtz_paused_trigger_grps +-- Table structure for iam_user_third -- ---------------------------- -DROP TABLE IF EXISTS `qrtz_paused_trigger_grps`; -CREATE TABLE `qrtz_paused_trigger_grps` ( - `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - PRIMARY KEY (`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `iam_user_third`; +CREATE TABLE `iam_user_third` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户id', + `we_chat_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信openId', + `we_chat_open_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信开放平台id', + `qq_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'qqId', + `weibo_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微博Id', + `gitee_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '码云唯一标识', + `ding_talk_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钉钉唯一标识', + `we_com_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '企业微信唯一标识', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE, + INDEX `pk_user_index`(`user_id`) USING BTREE COMMENT '用户id索引' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户三方登录绑定' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of qrtz_paused_trigger_grps +-- Records of iam_user_third -- ---------------------------- -- ---------------------------- --- Table structure for qrtz_locks +-- Table structure for iam_user_third_info -- ---------------------------- -DROP TABLE IF EXISTS `qrtz_locks`; -CREATE TABLE `qrtz_locks` ( - `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `LOCK_NAME` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - PRIMARY KEY (`SCHED_NAME`, `LOCK_NAME`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `iam_user_third_info`; +CREATE TABLE `iam_user_third_info` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `user_id` bigint(20) NOT NULL COMMENT '用户id', + `client_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '第三方终端类型', + `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户名', + `nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户昵称', + `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户头像', + `third_user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '关联第三方平台的用户id', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE, + INDEX `pk_user_client`(`user_id`, `client_code`) USING BTREE COMMENT '用户id和终端code' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '用户三方登录绑定详情' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of qrtz_locks +-- Records of iam_user_third_info -- ---------------------------- -- ---------------------------- --- Table structure for qrtz_job_details +-- Table structure for notice_mail_config -- ---------------------------- -DROP TABLE IF EXISTS `qrtz_job_details`; -CREATE TABLE `qrtz_job_details` ( - `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `JOB_CLASS_NAME` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `IS_DURABLE` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `IS_UPDATE_DATA` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `JOB_DATA` blob NULL, - PRIMARY KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE, - INDEX `IDX_QRTZ_J_GRP`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE, - INDEX `IDX_QRTZ_J_REQ_RECOVERY`(`SCHED_NAME`, `REQUESTS_RECOVERY`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `notice_mail_config`; +CREATE TABLE `notice_mail_config` ( + `id` bigint(20) NOT NULL, + `code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '编号', + `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称', + `host` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱服务器host', + `port` int(5) NOT NULL COMMENT '邮箱服务器 port', + `username` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱服务器 username', + `password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱服务器 password', + `sender` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱服务器 sender', + `from_` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱服务器 from', + `activity` tinyint(1) NULL DEFAULT 0 COMMENT '是否默认配置,0:否。1:是', + `security_type` int(2) NULL DEFAULT NULL COMMENT '安全传输方式 1:plain 2:tls 3:ssl', + `creator` bigint(18) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(18) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `version` int(8) NULL DEFAULT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '邮件配置' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of qrtz_job_details +-- Records of notice_mail_config -- ---------------------------- -- ---------------------------- --- Table structure for qrtz_fired_triggers +-- Table structure for notice_message_template -- ---------------------------- -DROP TABLE IF EXISTS `qrtz_fired_triggers`; -CREATE TABLE `qrtz_fired_triggers` ( - `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `ENTRY_ID` varchar(95) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `FIRED_TIME` bigint(13) NOT NULL, - `SCHED_TIME` bigint(13) NOT NULL, - `PRIORITY` int(11) NOT NULL, - `STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`SCHED_NAME`, `ENTRY_ID`) USING BTREE, - INDEX `IDX_QRTZ_FT_T_G`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, - INDEX `IDX_QRTZ_FT_TRIG_INST_NAME`(`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE, - INDEX `IDX_QRTZ_FT_J_G`(`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE, - INDEX `IDX_QRTZ_FT_INST_JOB_REQ_RCVRY`(`SCHED_NAME`, `INSTANCE_NAME`, `REQUESTS_RECOVERY`) USING BTREE, - INDEX `IDX_QRTZ_FT_TG`(`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE, - INDEX `IDX_QRTZ_FT_JG`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `notice_message_template`; +CREATE TABLE `notice_message_template` ( + `id` bigint(20) NOT NULL, + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '模板数据', + `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板类型', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '消息模板' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of qrtz_fired_triggers +-- Records of notice_message_template -- ---------------------------- +INSERT INTO `notice_message_template` VALUES (1424936204932169730, 'cs', '测试', 'hello ${msg}6666666666666666666666666666', '1', '测试模板', 0, '2021-08-10 11:30:40', 0, '2021-08-10 11:30:40', 0, 0); -- ---------------------------- --- Table structure for qrtz_cron_triggers +-- Table structure for notice_site_message -- ---------------------------- -DROP TABLE IF EXISTS `qrtz_cron_triggers`; -CREATE TABLE `qrtz_cron_triggers` ( - `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `CRON_EXPRESSION` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `TIME_ZONE_ID` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, - CONSTRAINT `qrtz_cron_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `notice_site_message`; +CREATE TABLE `notice_site_message` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '消息标题', + `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '消息内容', + `sender_id` bigint(20) NULL DEFAULT NULL COMMENT '发送者id', + `sender_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发送者姓名', + `sender_time` datetime NULL DEFAULT NULL COMMENT '发送时间', + `receive_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '消息类型', + `send_state` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发布状态', + `efficient_time` datetime NULL DEFAULT NULL COMMENT '截至有效期', + `cancel_time` datetime NULL DEFAULT NULL COMMENT '撤回时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '站内信' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of qrtz_cron_triggers +-- Records of notice_site_message -- ---------------------------- -- ---------------------------- --- Table structure for qrtz_calendars +-- Table structure for notice_site_message_user -- ---------------------------- -DROP TABLE IF EXISTS `qrtz_calendars`; -CREATE TABLE `qrtz_calendars` ( - `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `CALENDAR` blob NOT NULL, - PRIMARY KEY (`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `notice_site_message_user`; +CREATE TABLE `notice_site_message_user` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `message_id` bigint(20) NOT NULL COMMENT '消息id', + `receive_id` bigint(20) NOT NULL COMMENT '接收者id', + `have_read` bit(1) NOT NULL COMMENT '已读/未读', + `read_time` datetime NULL DEFAULT NULL COMMENT '已读时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uni_receive_message`(`receive_id`, `message_id`) USING BTREE COMMENT '接收人和消息联合索引', + INDEX `inx_message`(`message_id`) USING BTREE COMMENT '消息索引' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '消息用户关联' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of qrtz_calendars +-- Records of notice_site_message_user -- ---------------------------- -- ---------------------------- --- Table structure for qrtz_blob_triggers +-- Table structure for notice_sms_channel_config -- ---------------------------- -DROP TABLE IF EXISTS `qrtz_blob_triggers`; -CREATE TABLE `qrtz_blob_triggers` ( - `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - `BLOB_DATA` blob NULL, - PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, - INDEX `SCHED_NAME`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, - CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `notice_sms_channel_config`; +CREATE TABLE `notice_sms_channel_config` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '渠道类型编码', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '渠道类型名称', + `state` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态', + `access_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'AccessKey', + `config` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '配置字符串', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `access_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'AccessSecret', + `image` bigint(20) NULL DEFAULT NULL COMMENT '图片', + `sort_no` double(10, 0) NULL DEFAULT NULL COMMENT '排序', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '短信渠道配置' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of qrtz_blob_triggers +-- Records of notice_sms_channel_config -- ---------------------------- +INSERT INTO `notice_sms_channel_config` VALUES (1688432603289337856, 'alibaba', '阿里云短信', 'normal', '1', '{\"accessKeyId\":\"1231231231232111\",\"accessKeySecret\":\"12312312321111\",\"signature\":\"1231\",\"templateId\":\"2312313\",\"templateName\":\"123\",\"requestUrl\":\"五千二无二\",\"action\":\"SendSms\",\"version\":\"11\",\"regionId\":\"cn-hangzhou\"}', NULL, '1', 1688450284000247808, 0, 1414143554414059520, '2023-08-07 14:11:17', 1414143554414059520, '2023-08-07 15:35:34', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688456604610953216, 'huawei', '华为云短信', 'normal', '1', '{\"appKey\":\"1231231231232\",\"appSecret\":\"1111\",\"signature\":\"1\",\"sender\":\"1\",\"templateId\":\"12\",\"statusCallBack\":\"1\",\"url\":\"1\"}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-07 15:46:39', 1414143554414059520, '2023-08-07 15:46:49', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688461302302732288, 'yunpian', '云片短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"callbackUrl\":null,\"templateName\":null}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-07 16:05:19', 1414143554414059520, '2023-08-08 14:12:23', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788784751001600, 'tencent', '腾讯短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"sdkAppId\":null,\"territory\":\"ap-guangzhou\",\"connTimeout\":60,\"requestUrl\":\"sms.tencentcloudapi.com\",\"action\":\"SendSms\",\"version\":\"2021-01-11\",\"service\":\"sms\"}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:46:37', 1414143554414059520, '2023-08-08 13:46:37', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788807228276736, 'uni_sms', '合一短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"isSimple\":true,\"templateName\":null}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:46:42', 1414143554414059520, '2023-08-08 13:46:43', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788823900635136, 'netease', '网易云短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"templateName\":null,\"templateUrl\":\"https://api.netease.im/sms/sendtemplate.action\",\"codeUrl\":\"https://api.netease.im/sms/sendcode.action\",\"verifyUrl\":\"https://api.netease.im/sms/verifycode.action\",\"needUp\":null}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:46:46', 1414143554414059520, '2023-08-08 13:46:47', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788846944141312, 'ctyun', '天翼云短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"templateName\":null,\"requestUrl\":\"https://sms-global.ctapi.ctyun.cn/sms/api/v1\",\"action\":\"SendSms\"}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:46:52', 1414143554414059520, '2023-08-08 13:46:52', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788862987354112, 'emay', '亿美短信', 'normal', '1', '{\"appId\":\"1\",\"secretKey\":\"1\",\"requestUrl\":null}', NULL, '1', 1688792913003102208, 0, 1414143554414059520, '2023-08-08 13:46:56', 1414143554414059520, '2023-08-08 14:03:04', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788885141667840, 'cloopen', '容联短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"appId\":null,\"baseUrl\":\"https://app.cloopen.com:8883/2013-12-26\",\"serverIp\":null,\"serverPort\":null}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:47:01', 1414143554414059520, '2023-08-08 13:47:01', 0, b'0'); +INSERT INTO `notice_sms_channel_config` VALUES (1688788904481603584, 'jd_cloud', '京东短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"region\":\"cn-north-1\"}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:47:06', 1414143554414059520, '2023-08-08 13:47:06', 0, b'0'); -- ---------------------------- --- Table structure for notice_wechat_config +-- Table structure for notice_sms_config -- ---------------------------- -DROP TABLE IF EXISTS `notice_wechat_config`; -CREATE TABLE `notice_wechat_config` ( +DROP TABLE IF EXISTS `notice_sms_config`; +CREATE TABLE `notice_sms_config` ( `id` bigint(18) NOT NULL, `tid` bigint(18) NOT NULL COMMENT '租户id', `code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `corp_id` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `corp_secret` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `account_sid` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `path_sid` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '发送号码的唯一标识(基于twillio的命名风格)', + `auth_token` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `from_num` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `is_default` tinyint(1) NULL DEFAULT 0 COMMENT '是否默认配置,0:否。1:是', `creator` bigint(18) NULL DEFAULT NULL, - `create_time` datetime(0) NULL DEFAULT NULL, + `create_time` datetime NULL DEFAULT NULL, `last_modifier` bigint(18) NULL DEFAULT NULL, - `last_modified_time` datetime(0) NULL DEFAULT NULL, + `last_modified_time` datetime NULL DEFAULT NULL, `version` int(10) NULL DEFAULT NULL, `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `secret` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `isp` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `reply_msg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '微信消息配置' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '短信配置' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of notice_wechat_config +-- Records of notice_sms_config -- ---------------------------- -- ---------------------------- @@ -4842,9 +4725,9 @@ CREATE TABLE `notice_sms_template` ( `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '短信模板名称', `content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '短信模板内容', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', `version` int(11) NOT NULL COMMENT '乐观锁', `deleted` bit(1) NOT NULL COMMENT '删除标志', PRIMARY KEY (`id`) USING BTREE @@ -4855,546 +4738,623 @@ CREATE TABLE `notice_sms_template` ( -- ---------------------------- -- ---------------------------- --- Table structure for notice_sms_config +-- Table structure for notice_wechat_config -- ---------------------------- -DROP TABLE IF EXISTS `notice_sms_config`; -CREATE TABLE `notice_sms_config` ( +DROP TABLE IF EXISTS `notice_wechat_config`; +CREATE TABLE `notice_wechat_config` ( `id` bigint(18) NOT NULL, `tid` bigint(18) NOT NULL COMMENT '租户id', `code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `account_sid` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `path_sid` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '发送号码的唯一标识(基于twillio的命名风格)', - `auth_token` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `from_num` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `corp_id` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `corp_secret` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `is_default` tinyint(1) NULL DEFAULT 0 COMMENT '是否默认配置,0:否。1:是', `creator` bigint(18) NULL DEFAULT NULL, - `create_time` datetime(0) NULL DEFAULT NULL, + `create_time` datetime NULL DEFAULT NULL, `last_modifier` bigint(18) NULL DEFAULT NULL, - `last_modified_time` datetime(0) NULL DEFAULT NULL, + `last_modified_time` datetime NULL DEFAULT NULL, `version` int(10) NULL DEFAULT NULL, `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', - `secret` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `isp` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - `reply_msg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '短信配置' ROW_FORMAT = DYNAMIC; - --- ---------------------------- --- Records of notice_sms_config --- ---------------------------- - --- ---------------------------- --- Table structure for notice_sms_channel_config --- ---------------------------- -DROP TABLE IF EXISTS `notice_sms_channel_config`; -CREATE TABLE `notice_sms_channel_config` ( - `id` bigint(20) NOT NULL COMMENT '主键', - `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '渠道类型编码', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '渠道类型名称', - `state` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态', - `access_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'AccessKey', - `config` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '配置字符串', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', - `access_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'AccessSecret', - `image` bigint(20) NULL DEFAULT NULL COMMENT '图片', - `sort_no` double(10, 0) NULL DEFAULT NULL COMMENT '排序', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '乐观锁', - `deleted` bit(1) NOT NULL COMMENT '删除标志', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '短信渠道配置' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '微信消息配置' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of notice_sms_channel_config +-- Records of notice_wechat_config -- ---------------------------- -- ---------------------------- --- Table structure for notice_site_message_user +-- Table structure for qrtz_blob_triggers -- ---------------------------- -DROP TABLE IF EXISTS `notice_site_message_user`; -CREATE TABLE `notice_site_message_user` ( - `id` bigint(20) NOT NULL COMMENT '主键', - `message_id` bigint(20) NOT NULL COMMENT '消息id', - `receive_id` bigint(20) NOT NULL COMMENT '接收者id', - `have_read` bit(1) NOT NULL COMMENT '已读/未读', - `read_time` datetime(0) NULL DEFAULT NULL COMMENT '已读时间', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE INDEX `uni_receive_message`(`receive_id`, `message_id`) USING BTREE COMMENT '接收人和消息联合索引', - INDEX `inx_message`(`message_id`) USING BTREE COMMENT '消息索引' -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '消息用户关联' ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `qrtz_blob_triggers`; +CREATE TABLE `qrtz_blob_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `BLOB_DATA` blob NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + INDEX `SCHED_NAME`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of notice_site_message_user +-- Records of qrtz_blob_triggers -- ---------------------------- -- ---------------------------- --- Table structure for notice_site_message +-- Table structure for qrtz_calendars -- ---------------------------- -DROP TABLE IF EXISTS `notice_site_message`; -CREATE TABLE `notice_site_message` ( - `id` bigint(20) NOT NULL COMMENT '主键', - `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '消息标题', - `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '消息内容', - `sender_id` bigint(20) NULL DEFAULT NULL COMMENT '发送者id', - `sender_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发送者姓名', - `sender_time` datetime(0) NULL DEFAULT NULL COMMENT '发送时间', - `receive_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '消息类型', - `send_state` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发布状态', - `efficient_time` datetime(0) NULL DEFAULT NULL COMMENT '截至有效期', - `cancel_time` datetime(0) NULL DEFAULT NULL COMMENT '撤回时间', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '版本', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '站内信' ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `qrtz_calendars`; +CREATE TABLE `qrtz_calendars` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `CALENDAR` blob NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of notice_site_message +-- Records of qrtz_calendars -- ---------------------------- -- ---------------------------- --- Table structure for notice_mail_config +-- Table structure for qrtz_cron_triggers -- ---------------------------- -DROP TABLE IF EXISTS `notice_mail_config`; -CREATE TABLE `notice_mail_config` ( - `id` bigint(20) NOT NULL, - `code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '编号', - `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称', - `host` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱服务器host', - `port` int(5) NOT NULL COMMENT '邮箱服务器 port', - `username` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱服务器 username', - `password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱服务器 password', - `sender` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱服务器 sender', - `from_` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱服务器 from', - `activity` tinyint(1) NULL DEFAULT 0 COMMENT '是否默认配置,0:否。1:是', - `security_type` int(2) NULL DEFAULT NULL COMMENT '安全传输方式 1:plain 2:tls 3:ssl', - `creator` bigint(18) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(18) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', - `version` int(8) NULL DEFAULT NULL COMMENT '版本', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '邮件配置' ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `qrtz_cron_triggers`; +CREATE TABLE `qrtz_cron_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `CRON_EXPRESSION` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TIME_ZONE_ID` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + CONSTRAINT `qrtz_cron_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of notice_mail_config +-- Records of qrtz_cron_triggers -- ---------------------------- -- ---------------------------- --- Table structure for iam_user_third_info +-- Table structure for qrtz_fired_triggers -- ---------------------------- -DROP TABLE IF EXISTS `iam_user_third_info`; -CREATE TABLE `iam_user_third_info` ( - `id` bigint(20) NOT NULL COMMENT '主键', - `user_id` bigint(20) NOT NULL COMMENT '用户id', - `client_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '第三方终端类型', - `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户名', - `nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户昵称', - `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户头像', - `third_user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '关联第三方平台的用户id', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '版本', - PRIMARY KEY (`id`) USING BTREE, - INDEX `pk_user_client`(`user_id`, `client_code`) USING BTREE COMMENT '用户id和终端code' -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '用户三方登录绑定详情' ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `qrtz_fired_triggers`; +CREATE TABLE `qrtz_fired_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `ENTRY_ID` varchar(95) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `FIRED_TIME` bigint(13) NOT NULL, + `SCHED_TIME` bigint(13) NOT NULL, + `PRIORITY` int(11) NOT NULL, + `STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`SCHED_NAME`, `ENTRY_ID`) USING BTREE, + INDEX `IDX_QRTZ_FT_T_G`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_FT_TRIG_INST_NAME`(`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE, + INDEX `IDX_QRTZ_FT_J_G`(`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_FT_INST_JOB_REQ_RCVRY`(`SCHED_NAME`, `INSTANCE_NAME`, `REQUESTS_RECOVERY`) USING BTREE, + INDEX `IDX_QRTZ_FT_TG`(`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_FT_JG`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of iam_user_third_info +-- Records of qrtz_fired_triggers -- ---------------------------- -- ---------------------------- --- Table structure for iam_user_third +-- Table structure for qrtz_job_details -- ---------------------------- -DROP TABLE IF EXISTS `iam_user_third`; -CREATE TABLE `iam_user_third` ( - `id` bigint(20) NOT NULL COMMENT '主键', - `user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户id', - `we_chat_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信openId', - `we_chat_open_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信开放平台id', - `qq_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'qqId', - `weibo_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微博Id', - `gitee_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '码云唯一标识', - `ding_talk_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钉钉唯一标识', - `we_com_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '企业微信唯一标识', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '版本', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', - PRIMARY KEY (`id`) USING BTREE, - INDEX `pk_user_index`(`user_id`) USING BTREE COMMENT '用户id索引' -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户三方登录绑定' ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `qrtz_job_details`; +CREATE TABLE `qrtz_job_details` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `JOB_CLASS_NAME` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `IS_DURABLE` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `IS_UPDATE_DATA` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `JOB_DATA` blob NULL, + PRIMARY KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_J_GRP`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_J_REQ_RECOVERY`(`SCHED_NAME`, `REQUESTS_RECOVERY`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of iam_user_third +-- Records of qrtz_job_details -- ---------------------------- -- ---------------------------- --- Table structure for iam_user_role +-- Table structure for qrtz_locks -- ---------------------------- -DROP TABLE IF EXISTS `iam_user_role`; -CREATE TABLE `iam_user_role` ( - `id` bigint(20) NOT NULL COMMENT '主键', - `user_id` bigint(20) NOT NULL COMMENT '用户ID', - `role_id` bigint(20) NOT NULL COMMENT '角色ID', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户角色关系\r\n' ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `qrtz_locks`; +CREATE TABLE `qrtz_locks` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `LOCK_NAME` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `LOCK_NAME`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of iam_user_role +-- Records of qrtz_locks -- ---------------------------- -- ---------------------------- --- Table structure for iam_user_data_scope +-- Table structure for qrtz_paused_trigger_grps -- ---------------------------- -DROP TABLE IF EXISTS `iam_user_data_scope`; -CREATE TABLE `iam_user_data_scope` ( - `id` bigint(20) NOT NULL COMMENT '主键', - `user_id` bigint(20) NOT NULL COMMENT '用户ID', - `data_scope_id` bigint(20) NOT NULL COMMENT '数据权限ID', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户数据范围关系\r\n' ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `qrtz_paused_trigger_grps`; +CREATE TABLE `qrtz_paused_trigger_grps` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of iam_user_data_scope +-- Records of qrtz_paused_trigger_grps -- ---------------------------- -- ---------------------------- --- Table structure for iam_role_path +-- Table structure for qrtz_scheduler_state -- ---------------------------- -DROP TABLE IF EXISTS `iam_role_path`; -CREATE TABLE `iam_role_path` ( - `id` bigint(20) NOT NULL, - `role_id` bigint(20) NOT NULL COMMENT '角色id', - `permission_id` bigint(20) NOT NULL COMMENT '请求权限id', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色请求权限表' ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `qrtz_scheduler_state`; +CREATE TABLE `qrtz_scheduler_state` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `LAST_CHECKIN_TIME` bigint(13) NOT NULL, + `CHECKIN_INTERVAL` bigint(13) NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of iam_role_path +-- Records of qrtz_scheduler_state -- ---------------------------- -- ---------------------------- --- Table structure for iam_role_menu +-- Table structure for qrtz_simple_triggers -- ---------------------------- -DROP TABLE IF EXISTS `iam_role_menu`; -CREATE TABLE `iam_role_menu` ( - `id` bigint(20) NOT NULL, - `role_id` bigint(20) NOT NULL COMMENT '角色id', - `client_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '终端code', - `permission_id` bigint(20) NOT NULL COMMENT '菜单权限id', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色菜单权限表' ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `qrtz_simple_triggers`; +CREATE TABLE `qrtz_simple_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `REPEAT_COUNT` bigint(7) NOT NULL, + `REPEAT_INTERVAL` bigint(12) NOT NULL, + `TIMES_TRIGGERED` bigint(10) NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + CONSTRAINT `qrtz_simple_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of iam_role_menu +-- Records of qrtz_simple_triggers -- ---------------------------- -- ---------------------------- --- Table structure for iam_perm_path +-- Table structure for qrtz_simprop_triggers -- ---------------------------- -DROP TABLE IF EXISTS `iam_perm_path`; -CREATE TABLE `iam_perm_path` ( - `id` bigint(20) NOT NULL, - `code` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '权限标识', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限名称', - `request_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '请求类型', - `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '请求路径', - `group_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分组名称', - `enable` bit(1) NOT NULL COMMENT '启用状态', - `generate` bit(1) NOT NULL COMMENT '是否通过系统生成的权限', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', - `creator` bigint(20) NULL DEFAULT NULL, - `create_time` datetime(6) NULL DEFAULT NULL, - `last_modifier` bigint(20) NULL DEFAULT NULL, - `last_modified_time` datetime(6) NULL DEFAULT NULL, - `deleted` bit(1) NOT NULL, - `version` int(11) NOT NULL, - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '权限_请求' ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `qrtz_simprop_triggers`; +CREATE TABLE `qrtz_simprop_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `STR_PROP_1` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `STR_PROP_2` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `STR_PROP_3` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `INT_PROP_1` int(11) NULL DEFAULT NULL, + `INT_PROP_2` int(11) NULL DEFAULT NULL, + `LONG_PROP_1` bigint(20) NULL DEFAULT NULL, + `LONG_PROP_2` bigint(20) NULL DEFAULT NULL, + `DEC_PROP_1` decimal(13, 4) NULL DEFAULT NULL, + `DEC_PROP_2` decimal(13, 4) NULL DEFAULT NULL, + `BOOL_PROP_1` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `BOOL_PROP_2` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + CONSTRAINT `qrtz_simprop_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of iam_perm_path +-- Records of qrtz_simprop_triggers -- ---------------------------- -- ---------------------------- --- Table structure for iam_password_login_fail_record +-- Table structure for qrtz_triggers -- ---------------------------- -DROP TABLE IF EXISTS `iam_password_login_fail_record`; -CREATE TABLE `iam_password_login_fail_record` ( +DROP TABLE IF EXISTS `qrtz_triggers`; +CREATE TABLE `qrtz_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `NEXT_FIRE_TIME` bigint(13) NULL DEFAULT NULL, + `PREV_FIRE_TIME` bigint(13) NULL DEFAULT NULL, + `PRIORITY` int(11) NULL DEFAULT NULL, + `TRIGGER_STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `TRIGGER_TYPE` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `START_TIME` bigint(13) NOT NULL, + `END_TIME` bigint(13) NULL DEFAULT NULL, + `CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `MISFIRE_INSTR` smallint(2) NULL DEFAULT NULL, + `JOB_DATA` blob NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_ST`(`SCHED_NAME`, `TRIGGER_STATE`, `NEXT_FIRE_TIME`) USING BTREE, + INDEX `IDX_QRTZ_T_N_STATE`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE, + INDEX `IDX_QRTZ_T_NEXT_FIRE_TIME`(`SCHED_NAME`, `NEXT_FIRE_TIME`) USING BTREE, + INDEX `IDX_QRTZ_T_C`(`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_STATE`) USING BTREE, + INDEX `IDX_QRTZ_T_G`(`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_T_J`(`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_T_JG`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_T_N_G_STATE`(`SCHED_NAME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_MISFIRE`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`) USING BTREE, + INDEX `IDX_QRTZ_T_STATE`(`SCHED_NAME`, `TRIGGER_STATE`) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE_GRP`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE, + CONSTRAINT `qrtz_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) REFERENCES `qrtz_job_details` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of qrtz_triggers +-- ---------------------------- + +-- ---------------------------- +-- Table structure for report_project_info +-- ---------------------------- +DROP TABLE IF EXISTS `report_project_info`; +CREATE TABLE `report_project_info` ( `id` bigint(20) NOT NULL COMMENT '主键', - `user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户id', - `fail_count` int(11) NULL DEFAULT NULL COMMENT '登录失败次数', - `fail_time` datetime(0) NULL DEFAULT NULL COMMENT '登录失败时间', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目名称', + `state` int(11) NULL DEFAULT NULL COMMENT '发布状态', + `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '报表内容', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', `version` int(11) NOT NULL COMMENT '乐观锁', `deleted` bit(1) NOT NULL COMMENT '删除标志', + `index_image` bigint(20) NULL DEFAULT NULL COMMENT '预览图片id', + `edit` bit(1) NULL DEFAULT NULL COMMENT '是否在编辑中', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '密码登录失败记录' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '自定义大屏信息' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of iam_password_login_fail_record +-- Records of report_project_info -- ---------------------------- -- ---------------------------- --- Table structure for iam_password_change_history +-- Table structure for report_project_info_publish -- ---------------------------- -DROP TABLE IF EXISTS `iam_password_change_history`; -CREATE TABLE `iam_password_change_history` ( +DROP TABLE IF EXISTS `report_project_info_publish`; +CREATE TABLE `report_project_info_publish` ( `id` bigint(20) NOT NULL COMMENT '主键', - `user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户Id', - `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '密码', + `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '报表内容', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', `version` int(11) NOT NULL COMMENT '乐观锁', `deleted` bit(1) NOT NULL COMMENT '删除标志', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '密码更改历史,' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '自定义大屏发布信息' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of iam_password_change_history +-- Records of report_project_info_publish -- ---------------------------- -- ---------------------------- --- Table structure for iam_login_security_config +-- Table structure for starter_audit_data_version -- ---------------------------- -DROP TABLE IF EXISTS `iam_login_security_config`; -CREATE TABLE `iam_login_security_config` ( - `id` bigint(20) NOT NULL COMMENT '主键', - `client_id` bigint(20) NULL DEFAULT NULL COMMENT '关联终端ID', - `require_login_change_pwd` bit(1) NULL DEFAULT NULL COMMENT '修改密码是否需要重新登录', - `captcha_enable` bit(1) NULL DEFAULT NULL COMMENT '默认启用验证码', - `max_captcha_error_count` int(11) NULL DEFAULT NULL COMMENT '出现验证码的错误次数', - `allow_multi_login` bit(1) NULL DEFAULT NULL COMMENT '同端是否允许同时登录', - `allow_multi_terminal_login` bit(1) NULL DEFAULT NULL COMMENT '多终端是否允许同时登录', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '乐观锁', - `deleted` bit(1) NOT NULL COMMENT '删除标志', +DROP TABLE IF EXISTS `starter_audit_data_version`; +CREATE TABLE `starter_audit_data_version` ( + `id` bigint(20) NOT NULL, + `table_name` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据表名称', + `data_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '数据名称', + `data_id` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据主键', + `data_content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '数据内容', + `change_content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '数据更新内容', + `version` int(10) NOT NULL COMMENT '版本', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据版本日志' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_audit_data_version +-- ---------------------------- +INSERT INTO `starter_audit_data_version` VALUES (1480550993828446208, '', 'client', '1', '{\"dataName\":\"client\",\"dataId\":\"1\",\"dataContent\":{\"id\":\"1\",\"creator\":null,\"createTime\":\"2022-01-10 22:43:58\",\"lastModifier\":null,\"lastModifiedTime\":null,\"deleted\":false,\"version\":0,\"code\":null,\"name\":null,\"timeout\":null,\"captcha\":false,\"enable\":false,\"description\":null}}', NULL, 1, 0, '2022-01-10 22:43:59'); +INSERT INTO `starter_audit_data_version` VALUES (1480551021779288064, '', 'client', '1', '{\"dataName\":\"client\",\"dataId\":\"1\",\"dataContent\":{\"id\":\"1\",\"creator\":null,\"createTime\":\"2022-01-10 22:44:05\",\"lastModifier\":null,\"lastModifiedTime\":null,\"deleted\":false,\"version\":0,\"code\":null,\"name\":null,\"timeout\":null,\"captcha\":false,\"enable\":false,\"description\":null}}', NULL, 2, 0, '2022-01-10 22:44:06'); + +-- ---------------------------- +-- Table structure for starter_audit_login_log +-- ---------------------------- +DROP TABLE IF EXISTS `starter_audit_login_log`; +CREATE TABLE `starter_audit_login_log` ( + `id` bigint(20) NOT NULL, + `user_id` bigint(11) NULL DEFAULT NULL COMMENT '用户id', + `account` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户名称', + `login` bit(1) NULL DEFAULT NULL COMMENT '登录成功状态', + `client` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '终端', + `login_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录方式', + `ip` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录IP地址', + `login_location` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录地点', + `os` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作系统', + `browser` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '浏览器类型', + `msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '提示消息', + `login_time` datetime NULL DEFAULT NULL COMMENT '访问时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '登陆日志' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_audit_login_log +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_audit_operate_log +-- ---------------------------- +DROP TABLE IF EXISTS `starter_audit_operate_log`; +CREATE TABLE `starter_audit_operate_log` ( + `id` bigint(20) NOT NULL, + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作模块', + `operate_id` bigint(20) NULL DEFAULT NULL COMMENT '操作人员id', + `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作人员账号', + `business_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型', + `method` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求方法', + `request_method` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求方式', + `operate_url` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求url', + `operate_ip` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作ip', + `operate_location` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作地点', + `operate_param` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求参数', + `operate_return` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '返回参数', + `success` bit(1) NULL DEFAULT NULL COMMENT '是否成功', + `error_msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '错误提示', + `operate_time` datetime NULL DEFAULT NULL COMMENT '操作时间', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '登录安全策略' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '操作日志' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of iam_login_security_config +-- Records of starter_audit_operate_log -- ---------------------------- -- ---------------------------- --- Table structure for iam_data_scope_user +-- Table structure for starter_ding_media_md5 -- ---------------------------- -DROP TABLE IF EXISTS `iam_data_scope_user`; -CREATE TABLE `iam_data_scope_user` ( +DROP TABLE IF EXISTS `starter_ding_media_md5`; +CREATE TABLE `starter_ding_media_md5` ( `id` bigint(20) NOT NULL, - `data_scope_id` bigint(20) NOT NULL COMMENT '数据范围id', - `user_id` bigint(20) NOT NULL COMMENT '用户id', + `media_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '媒体id', + `md5` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'md5值', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数据范围用户关联配置' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '钉钉媒体文件MD5值关联关系' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of iam_data_scope_user +-- Records of starter_ding_media_md5 -- ---------------------------- -- ---------------------------- --- Table structure for base_village +-- Table structure for starter_ding_robot_config -- ---------------------------- -DROP TABLE IF EXISTS `base_village`; -CREATE TABLE `base_village` ( - `code` char(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '编码', - `name` varchar(55) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '名称', - `street_code` char(9) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '社区/乡镇编码', - PRIMARY KEY (`code`) USING BTREE, - INDEX `inx_street_code`(`street_code`) USING BTREE COMMENT '所属街道索引' -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '村庄/社区' ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `starter_ding_robot_config`; +CREATE TABLE `starter_ding_robot_config` ( + `id` bigint(20) NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编号', + `access_token` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钉钉机器人访问token', + `enable_signature_check` bit(1) NOT NULL COMMENT '是否开启验签', + `sign_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钉钉机器人私钥', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime(6) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + `deleted` bit(1) NOT NULL COMMENT '0:未删除。1:已删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '钉钉机器人配置' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of base_village +-- Records of starter_ding_robot_config -- ---------------------------- -- ---------------------------- --- Table structure for base_street +-- Table structure for starter_file_data -- ---------------------------- -DROP TABLE IF EXISTS `base_street`; -CREATE TABLE `base_street` ( - `code` char(9) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '编码', - `name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '街道名称', - `area_code` char(6) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '县区编码', - PRIMARY KEY (`code`) USING BTREE, - INDEX `inx_area_code`(`area_code`) USING BTREE COMMENT '县区' -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '街道表' ROW_FORMAT = DYNAMIC; +DROP TABLE IF EXISTS `starter_file_data`; +CREATE TABLE `starter_file_data` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `base64` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT 'base64方式存储', + `data` longblob NULL COMMENT '数据方式存储', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '上传文件数据' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of base_street +-- Records of starter_file_data -- ---------------------------- -- ---------------------------- --- Table structure for base_query_sql +-- Table structure for starter_file_upload_info -- ---------------------------- -DROP TABLE IF EXISTS `base_query_sql`; -CREATE TABLE `base_query_sql` ( - `id` bigint(20) NOT NULL COMMENT '主键', - `database_id` bigint(20) NULL DEFAULT NULL COMMENT '数据源ID', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '名称', - `is_list` bit(1) NULL DEFAULT NULL COMMENT '是否集合', - `sql` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT 'sql语句', - `params` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'SQL查询参数', - `fields` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'SQL查询结果字段', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '乐观锁', - `deleted` bit(1) NOT NULL COMMENT '删除标志', +DROP TABLE IF EXISTS `starter_file_upload_info`; +CREATE TABLE `starter_file_upload_info` ( + `id` bigint(20) NOT NULL COMMENT '文件id', + `url` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文件访问地址', + `size` bigint(20) NULL DEFAULT NULL COMMENT '文件大小,单位字节', + `filename` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件名称', + `original_filename` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '原始文件名', + `base_path` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '基础存储路径', + `path` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '存储路径', + `ext` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件扩展名', + `content_type` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'MIME类型', + `platform` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '存储平台', + `th_url` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '缩略图访问路径', + `th_filename` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '缩略图名称', + `th_size` bigint(20) NULL DEFAULT NULL COMMENT '缩略图大小,单位字节', + `th_content_type` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '缩略图MIME类型', + `object_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件所属对象id', + `object_type` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件所属对象类型,例如用户头像,评价图片', + `metadata` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '文件元数据', + `user_metadata` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '文件用户元数据', + `th_metadata` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '缩略图元数据', + `th_user_metadata` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '缩略图用户元数据', + `attr` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '附加属性', + `file_acl` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件ACL', + `th_file_acl` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '缩略图文件ACL', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'SQL查询语句' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '文件记录表' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of base_query_sql +-- Records of starter_file_upload_info -- ---------------------------- -- ---------------------------- --- Table structure for base_key_value +-- Table structure for starter_quartz_job -- ---------------------------- -DROP TABLE IF EXISTS `base_key_value`; -CREATE TABLE `base_key_value` ( - `id` bigint(20) NOT NULL, - `key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '参数键名', - `value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '参数值', +DROP TABLE IF EXISTS `starter_quartz_job`; +CREATE TABLE `starter_quartz_job` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务名称', + `job_class_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务类名', + `cron` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'cron表达式', + `parameter` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '参数', + `state` int(4) NULL DEFAULT NULL COMMENT '状态', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', - `version` int(8) NOT NULL COMMENT '版本', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'kv存储' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '定时任务' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of base_key_value +-- Records of starter_quartz_job -- ---------------------------- +INSERT INTO `starter_quartz_job` VALUES (1456579473573867520, '测试任务', 'cn.bootx.starter.quartz.task.TestTask', '50 0 * * * ? *', '{\"aaa\":\"5255\"}', 0, '测试任务', 1399985191002447872, '2021-11-05 19:09:43', 1399985191002447872, '2022-06-22 00:37:48', 25, 0); +INSERT INTO `starter_quartz_job` VALUES (1546857070483939328, '支付单超时检测', 'cn.bootx.payment.task.PayExpiredTimeTask', '0/5 * * * * ? *', NULL, 1, '检测超时的支付单, 超时后发送超时事件', 1399985191002447872, '2022-07-12 22:00:39', 1399985191002447872, '2022-07-12 22:00:45', 1, 0); -- ---------------------------- --- Table structure for base_general_template +-- Table structure for starter_quartz_job_log -- ---------------------------- -DROP TABLE IF EXISTS `base_general_template`; -CREATE TABLE `base_general_template` ( +DROP TABLE IF EXISTS `starter_quartz_job_log`; +CREATE TABLE `starter_quartz_job_log` ( `id` bigint(20) NOT NULL COMMENT '主键', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板名称', - `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板代码', - `use_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '使用类型(导入/导出)', - `file_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板类型', - `file_suffix` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板后缀名', - `state` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '状态', - `file_id` bigint(20) NULL DEFAULT NULL COMMENT '文件ID', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '乐观锁', - `deleted` bit(1) NOT NULL COMMENT '删除标志', + `handler_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '处理器名称', + `class_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '处理器全限定名', + `success` bit(1) NOT NULL COMMENT '是否执行成功', + `error_message` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误信息', + `start_time` datetime NULL DEFAULT NULL COMMENT '开始时间', + `end_time` datetime NULL DEFAULT NULL COMMENT '结束时间', + `duration` bigint(255) NULL DEFAULT NULL COMMENT '执行时长', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '通用模板管理' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '任务执行日志' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of base_general_template +-- Records of starter_quartz_job_log -- ---------------------------- -- ---------------------------- --- Table structure for base_dynamic_data_source +-- Table structure for starter_wecom_robot_config -- ---------------------------- -DROP TABLE IF EXISTS `base_dynamic_data_source`; -CREATE TABLE `base_dynamic_data_source` ( +DROP TABLE IF EXISTS `starter_wecom_robot_config`; +CREATE TABLE `starter_wecom_robot_config` ( `id` bigint(20) NOT NULL, - `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据源编码', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据源名称', - `database_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据库类型', - `auto_load` bit(1) NULL DEFAULT NULL COMMENT '是否启动自动加载', - `db_driver` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驱动类', - `db_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据库地址', - `db_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据库名称', - `db_username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户名', - `db_password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '密码', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注', + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称', + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编号', + `webhook_key` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'webhook地址的key值', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间', `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `last_modified_time` datetime(6) NULL DEFAULT NULL COMMENT '最后修改时间', `version` int(11) NOT NULL COMMENT '版本', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `deleted` bit(1) NOT NULL COMMENT '0:未删除。1:已删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '动态数据源管理' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '企业微信机器人配置' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of base_dynamic_data_source +-- Records of starter_wecom_robot_config -- ---------------------------- -- ---------------------------- --- Table structure for base_data_result_sql +-- Table structure for starter_wx_fans -- ---------------------------- -DROP TABLE IF EXISTS `base_data_result_sql`; -CREATE TABLE `base_data_result_sql` ( - `id` bigint(20) NOT NULL COMMENT '主键', - `database_id` bigint(20) NULL DEFAULT NULL, - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, - `is_list` bit(1) NULL DEFAULT NULL, - `sql` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, - `params` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL, - `fields` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL, - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '乐观锁', - `deleted` bit(1) NOT NULL COMMENT '删除标志', +DROP TABLE IF EXISTS `starter_wx_fans`; +CREATE TABLE `starter_wx_fans` ( + `id` bigint(20) NOT NULL, + `openid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '关联OpenId', + `subscribe_status` bit(1) NULL DEFAULT NULL COMMENT '订阅状态', + `subscribe_time` datetime NULL DEFAULT NULL COMMENT '订阅时间', + `nickname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称', + `sex` varchar(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '性别', + `language` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '语言', + `country` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '国家', + `province` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '省份', + `city` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '城市', + `avatar_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像地址', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '数据集SQL语句' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信公众号粉丝' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of base_data_result_sql +-- Records of starter_wx_fans -- ---------------------------- -- ---------------------------- --- Table structure for base_china_word +-- Table structure for starter_wx_menu -- ---------------------------- -DROP TABLE IF EXISTS `base_china_word`; -CREATE TABLE `base_china_word` ( +DROP TABLE IF EXISTS `starter_wx_menu`; +CREATE TABLE `starter_wx_menu` ( `id` bigint(20) NOT NULL COMMENT '主键', - `word` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '敏感词', - `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '分类', - `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '描述', - `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用', - `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', - `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', - `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', - `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', - `version` int(11) NOT NULL COMMENT '乐观锁', - `white` bit(1) NULL DEFAULT NULL, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '名称', + `menu_info` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '菜单信息', + `remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注', + `publish` bit(1) NOT NULL COMMENT '是否发布', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除', + `version` int(11) NOT NULL COMMENT '版本', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '敏感词' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '微信自定义菜单' ROW_FORMAT = DYNAMIC; -- ---------------------------- --- Records of base_china_word +-- Records of starter_wx_menu +-- ---------------------------- + +-- ---------------------------- +-- Table structure for starter_wx_template +-- ---------------------------- +DROP TABLE IF EXISTS `starter_wx_template`; +CREATE TABLE `starter_wx_template` ( + `id` bigint(20) NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '编码', + `enable` bit(1) NOT NULL COMMENT '是否启用', + `template_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '模板ID', + `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板标题', + `primary_industry` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板所属行业的一级行业', + `deputy_industry` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板所属行业的二级行业', + `content` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板内容', + `example` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '示例', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人', + `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '版本', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `inx_`(`template_id`) USING BTREE COMMENT '模板id' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信消息模板' ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of starter_wx_template -- ---------------------------- SET FOREIGN_KEY_CHECKS = 1; diff --git a/_doc/ChangeLog.md b/_doc/ChangeLog.md index f8a443d4fb86245fa5cf5386ae30cf053aa4fc72..963f213271b8210fac411cbbd390b4317d36c9ca 100644 --- a/_doc/ChangeLog.md +++ b/_doc/ChangeLog.md @@ -1,4 +1,20 @@ # CHANGELOG +## [v1.3.6] 一号线-园博园 +- 新增: 文件上传替换为基于`x-file-storage`定制 +- 新增: 角色结构改为树形结构, 支持父子角色, 权限分配时支持进行级联收回, 也可以级联分配给下级 +- 优化: 密码过期后清除所有的权限,必须强制更改密码 +- 优化: 密码安全配置设置为必填. 保存信息状态变为查看状态 +- 优化: 密码安全配置设置为必填. 保存信息化状态变为查看状态 +- 优化: 数据权限重构为数据角色, 用于管理数据权限相关配置 +- 优化: Swagger相关配置不进行配置会无法启动处理 +- 优化: 时间反序列化时, 支持反序列化秒和毫秒级别的时间 +- 优化: MP分页和列表查询默认为ID降序 +- 优化: 查询构造器字段排序支持查询参数直接继承实现 +- fix: 请求权限配置新建时偶发类型不可以更改 +- fix: 部分实体类数据更新策略配置错误修复 +- fix: 新增和编辑用户时. 手机号和邮件校验有问题 +- fix: 用户列表和详情字典显示有问题 +- fix: 更新用户信息时, 脱敏的字段保存时未被忽略 ## [v1.3.5] 一号线-园博园 - 新增: SQL查询功能 - 新增: SQL查询功能支持导出 diff --git a/_doc/Task.md b/_doc/Task.md index 7908286bf03e799cc11c2e686be7ad134b72c6fd..cf75e30f36968849badbcbf728e71117fd6063a7 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -1,34 +1,46 @@ -## 1.3.5 -- x SQL查询功能 -- x SQL查询功能支持导出 -- x 完整集成Knife4j, 支持增强功能 -- x 前端登录时检测密码是否需要进行修改 -- x 前端websocket连接前先检测是否已经登录 -- x 默认密码强制修改功能 -- x 记录密码输入错误次数 -- x 多次输错密码自动锁定功能 -- x 超过锁定时间后,再登录时解除锁定清空 -- x 记录密码更改记录,不能与前N次相同功能 -- x 控制密码多少天必须更改 -- x 密码安全策略配置 -- x 审计日志增加定时删除和一键清除超期日志功能 ## 1.3.6 -- 文件上传替换为基于`x-file-storage`定制 +- [x] 文件上传替换为基于`[x]-file-storage`定制 +- [x] 新增一种新的JSON字段类型转换抽象处理器,可应用复杂类型的集合类型字段 +- [x] 密码过期后清除所有的权限,必须强制更改密码 + - [x] 菜单权限 + - [x] 请求权限 +- [x] 密码安全配置设置为必填. 保存信息状态变为查看状态 +- [x] 请求权限配置新建时偶发类型不可以更改 +- [x] 新增和编辑用户时. 手机号和邮件校验有问题 +- [x] 用户列表和详情字典显示有问题 +- [x] 更新用户信息时, 脱敏的字段保存时未被忽略 +- [x] 数据权限重构为数据角色, 用于管理数据权限相关配置 + - [x] 增加关联部门及下级部门 +- [x] 更新WebSocket的Demo样例 +- [x] Swagger相关配置不进行配置会无法启动处理 +- [x] 时间反序列化时, 支持反序列化秒和毫秒级别的时间 +- 权限相关 +- [x] 角色结构改为树形结构 +- [x] 菜单和权限码, 子角色的权限不能大于父角色 +- [x] 请求权限, 支持父子角色,子角色的权限不能大于父角色 +- [x] 角色删除分配的权限后, 支持进行级联收回, 也可以级联分配给下级 + - [x] 菜单和权限码 + - [x] 请求权限 +- [x] 给角色分配权限时,查看是否有父角色,如果有,限定只能在父角色下进行分配 +- [x] MP分页和列表查询默认为ID降序 +- [x] 查询构造器字段排序支持查询参数直接继承实现 +## 1.3.7 +- [ ] 权限相关缓存机制更改, 不能直接用户关联到具体的权限 +- [ ] 菜单和请求权限只能系统管理员配置, 没有数据权限的控制 +- [ ] 查询构造器支持帮助功能 +- [ ] 请求权限优化, 新增注解, 扫描时可以根据注解自动进行特定的处理 +- [ ] 查询构造器增加时间范围查询和和字段排序功能 +## 1.3.[x]、1.4.[x] +- 接口平台功能 - 添加配置备份功能(菜单/系统参数/字典), csv或者表格方式 -- Websocket连接管理页 -- 可视化大屏端支持一键登录 -- 密码过期后清除所有的权限,必须强制更改密码 -## 1.3.x、1.4.x - 数据集功能 -- 小程序工单功能 -- 小程序日报功能 +- 接入LiteFLow - PostgreSQL 数据库适配 - 添加短信模板功能, 可以与各短信商渠道进行同步 - 优化异常类,将各种异常类进行拆分出来 - 优化参数校验, 将各种入参进行校验 - 代码生成模板支持配置 - 支持预览编辑完成的富文本 -- 添加配置备份功能(菜单/系统参数/字典), csv方式 - 添加各种批量操作功能 - 一键缓存同步和更新操作(字典/参数) - 加密模块支持主键加密 diff --git a/_doc/images/qq_qun.jpg b/_doc/images/qq_qun.jpg new file mode 100644 index 0000000000000000000000000000000000000000..476dd54d36372aa4900cebb2c7c770ece2b4832e Binary files /dev/null and b/_doc/images/qq_qun.jpg differ diff --git a/bootx-common-core/pom.xml b/bootx-common-core/pom.xml index 78d8d5456dd68c6b55c4e17f68e4899fc8f5f24a..e8f6ee335dd43b16de1a3edeb669395096dba727 100644 --- a/bootx-common-core/pom.xml +++ b/bootx-common-core/pom.xml @@ -5,7 +5,7 @@ cn.bootx.platform bootx-platform-parent - 1.3.5 + 1.3.6 4.0.0 diff --git a/bootx-common-core/src/main/java/cn/bootx/platform/common/core/annotation/QueryParam.java b/bootx-common-core/src/main/java/cn/bootx/platform/common/core/annotation/QueryParam.java index d79dfc3e0b0fa7d49d40360a87b8216ac8eedc2f..a3d89271e0d978b994f0aa7cf03cc948c6be5cce 100644 --- a/bootx-common-core/src/main/java/cn/bootx/platform/common/core/annotation/QueryParam.java +++ b/bootx-common-core/src/main/java/cn/bootx/platform/common/core/annotation/QueryParam.java @@ -13,14 +13,13 @@ import java.lang.annotation.*; @Documented @Inherited public @interface QueryParam { - /** * 匹配条件类型 */ CompareTypeEnum type() default CompareTypeEnum.EQ; /** - * 是否忽略 + * 生成查询条件时是否忽略 */ boolean ignore() default false; @@ -53,6 +52,8 @@ public @interface QueryParam { /** 等于 */ EQ, + /** 范围查询, 需要放在对象上, */ + BETWEEN, /** 模糊匹配 */ LIKE, @@ -64,8 +65,10 @@ public @interface QueryParam { LIKE_RIGHT, /** 是否为空, 只作用在布尔类型上, true 代表 is null, false 代表 not null */ - IS_NULL; + IS_NULL, + /** 排序 */ + SORT; } /** diff --git a/bootx-common-core/src/main/java/cn/bootx/platform/common/core/function/QueryBetween.java b/bootx-common-core/src/main/java/cn/bootx/platform/common/core/function/QueryBetween.java new file mode 100644 index 0000000000000000000000000000000000000000..238202857689b85899c90787e92cbf1ebfaa4888 --- /dev/null +++ b/bootx-common-core/src/main/java/cn/bootx/platform/common/core/function/QueryBetween.java @@ -0,0 +1,19 @@ +package cn.bootx.platform.common.core.function; + +/** + * 查询生成器范围查询标识接口 + * @author xxm + * @since 2024/1/15 + */ +public interface QueryBetween { + + /** + * 获取开始值 + */ + Object getStart(); + + /** + * 获取结束值 + */ + Object getEnd(); +} diff --git a/bootx-common-core/src/main/java/cn/bootx/platform/common/core/rest/param/DateRangeParam.java b/bootx-common-core/src/main/java/cn/bootx/platform/common/core/rest/param/DateRangeParam.java new file mode 100644 index 0000000000000000000000000000000000000000..247fa0a080f2bf2a290152d59851b0b68ab622fb --- /dev/null +++ b/bootx-common-core/src/main/java/cn/bootx/platform/common/core/rest/param/DateRangeParam.java @@ -0,0 +1,91 @@ +package cn.bootx.platform.common.core.rest.param; + +import cn.bootx.platform.common.core.annotation.QueryParam; +import cn.bootx.platform.common.core.util.LocalDateTimeUtil; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; + +/** + * 时间日期范围 + * @author xxm + * @since 2024/1/14 + */ +@Getter +@Setter +@QueryParam(ignore = true) +public class DateRangeParam { + + @JsonFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @Schema(description = "开始时间") + private LocalDate startTime; + + @JsonFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @Schema(description = "结束时间") + private LocalDate endTime; + + /** + * 获取开始时间 + */ + public String startTime(){ + return startTime("yyyy-MM-dd HH:mm:ss"); + } + + /** + * 获取开始时间 + */ + public String startTime(String format){ + return LocalDateTimeUtil.format(getStartTime().atStartOfDay(),format); + } + + /** + * 获取结束时间 + */ + public String endTime(){ + return endTime("yyyy-MM-dd HH:mm:ss"); + } + + /** + * 获取结束日期 + */ + public String endTime(String format){ + return LocalDateTimeUtil.format(getEndTime().plusDays(1).atStartOfDay(),"format"); + } + + + /** + * 获取开始日期 + */ + public String startDate(){ + return startDate("yyyy-MM-dd HH:mm:ss"); + } + + /** + * 获取开始日期 + */ + public String startDate(String format){ + return LocalDateTimeUtil.format(getStartTime(),format); + } + + + /** + * 获取开始日期 + */ + public String endDate(){ + return startDate("yyyy-MM-dd HH:mm:ss"); + } + + /** + * 获取结束日期 + */ + public String endDate(String format){ + return LocalDateTimeUtil.format(getEndTime(),format); + } + +} diff --git a/bootx-commons/common-super-query/src/main/java/cn/bootx/platform/common/query/entity/QueryOrder.java b/bootx-common-core/src/main/java/cn/bootx/platform/common/core/rest/param/QueryOrder.java similarity index 71% rename from bootx-commons/common-super-query/src/main/java/cn/bootx/platform/common/query/entity/QueryOrder.java rename to bootx-common-core/src/main/java/cn/bootx/platform/common/core/rest/param/QueryOrder.java index bf0d6c46530602bf9c087a7b8587986c11aba04b..9412a4f778d80ea64c3813fd35b72b3ff57dc217 100644 --- a/bootx-commons/common-super-query/src/main/java/cn/bootx/platform/common/query/entity/QueryOrder.java +++ b/bootx-common-core/src/main/java/cn/bootx/platform/common/core/rest/param/QueryOrder.java @@ -1,5 +1,6 @@ -package cn.bootx.platform.common.query.entity; +package cn.bootx.platform.common.core.rest.param; +import cn.bootx.platform.common.core.annotation.QueryParam; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.experimental.Accessors; @@ -13,12 +14,15 @@ import lombok.experimental.Accessors; @Schema(title = "查询排序") public class QueryOrder { + @QueryParam(ignore = true) @Schema(description = "设置排序字段") private String sortField; + @QueryParam(ignore = true) @Schema(description = "是否升序") private boolean asc = true; + @QueryParam(ignore = true) @Schema(description = "参数名称是否需要转换成下划线命名") private boolean underLine = true; diff --git a/bootx-common-core/src/main/java/cn/bootx/platform/common/core/util/ClassUtils.java b/bootx-common-core/src/main/java/cn/bootx/platform/common/core/util/ClassUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..281ffc45f0d7948f1ee67dbef691c18e50c8ec3f --- /dev/null +++ b/bootx-common-core/src/main/java/cn/bootx/platform/common/core/util/ClassUtils.java @@ -0,0 +1,68 @@ +package cn.bootx.platform.common.core.util; + +import cn.hutool.core.util.ClassUtil; +import lombok.experimental.UtilityClass; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 类工具类 + * @author xxm + * @since 2023/5/30 + */ +@UtilityClass +public class ClassUtils { + + /** + * 获取字段属性 + */ + public Field getField(Class clas, String fieldName){ + if (Objects.isNull(clas)){ + throw new IllegalArgumentException("类为空"); + } + // 查询是否有该属性 + Field field = ClassUtil.getDeclaredField(clas, fieldName); + if (Objects.nonNull(field)){ + return field; + } + // 递归查询父类中的字段值 + if (Objects.nonNull(clas.getSuperclass())){ + return getField(clas.getSuperclass(),fieldName); + } + return null; + } + + /** + * 递归扫描父类的fields + * @param clas 类 + * @param fields 属性 + */ + public Field[] recursionParents(Class clas, Field[] fields) { + if (Objects.nonNull(clas.getSuperclass())) { + Class clsSup = clas.getSuperclass(); + List fieldList = new ArrayList<>(Arrays.asList(fields)); + // 获取当前class的所有fields的name列表 + List fdNames = fieldList.stream().map(Field::getName).collect(Collectors.toList()); + for (Field pfd : clsSup.getDeclaredFields()) { + // 避免重载属性 + if (fdNames.contains(pfd.getName())) { + continue; + } + fieldList.add(pfd); + } + fields = new Field[fieldList.size()]; + int i = 0; + for (Object field : fieldList.toArray()) { + fields[i] = (Field) field; + i++; + } + fields = recursionParents(clsSup, fields); + } + return fields; + } +} diff --git a/bootx-common-core/src/main/java/cn/bootx/platform/common/core/util/TreeBuildUtil.java b/bootx-common-core/src/main/java/cn/bootx/platform/common/core/util/TreeBuildUtil.java index c67e143fe40e89be7f9d94bccc82fbae1ccb02f3..632c2cd2aac6b4880af61fc2037d98a27bb5afb9 100644 --- a/bootx-common-core/src/main/java/cn/bootx/platform/common/core/util/TreeBuildUtil.java +++ b/bootx-common-core/src/main/java/cn/bootx/platform/common/core/util/TreeBuildUtil.java @@ -3,6 +3,7 @@ package cn.bootx.platform.common.core.util; import cn.hutool.core.collection.CollectionUtil; import lombok.experimental.UtilityClass; +import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Objects; @@ -28,7 +29,7 @@ public class TreeBuildUtil { * @param setChildren 设置子节点列表的方法引用 */ public List build(List list, Object pid, Function getId, Function getPid, - BiConsumer> setChildren) { + BiConsumer> setChildren) { return build(list, pid, getId, getPid, setChildren, null); } @@ -42,7 +43,7 @@ public class TreeBuildUtil { * @param comparator 节点顺序的排序规则 */ public List build(List list, Object pid, Function getId, Function getPid, - BiConsumer> setChildren, Comparator comparator) { + BiConsumer> setChildren, Comparator comparator) { List children = list.stream().filter(m -> Objects.equals(getPid.apply(m), pid)).collect(Collectors.toList()); if (CollectionUtil.isEmpty(children)) { return null; @@ -58,4 +59,33 @@ public class TreeBuildUtil { return children; } + /** + * 展开树为list列表 + * + * @param list 要进行展开的列表 + * @param getChildren 获取子节点列表的方法引用 + * @return 展开后的结果列表 + */ + public List unfold(List list, Function> getChildren){ + return unfold(list,getChildren, new ArrayList<>()); + } + + /** + * 展开树为list列表 + * + * @param list 要进行展开的列表 + * @param getChildren 获取子节点列表的方法引用 + * @param result 用于存储展开后的列表对象 + * @return 展开后的结果列表 + */ + private List unfold(List list, Function> getChildren, List result){ + if (CollectionUtil.isEmpty(list)) { + return null; + } + for (T region : list) { + unfold(getChildren.apply(region), getChildren, result); + result.add(region); + } + return result; + } } diff --git a/bootx-common-starters/common-starter-audit-log/pom.xml b/bootx-common-starters/common-starter-audit-log/pom.xml index 02e4d782ce8f42b846fe73c56c2d74b04dee7857..50f5c8b1c4d8c0914e5fa9908b9905ae4eb448c7 100644 --- a/bootx-common-starters/common-starter-audit-log/pom.xml +++ b/bootx-common-starters/common-starter-audit-log/pom.xml @@ -5,7 +5,7 @@ bootx-common-starters cn.bootx.platform - 1.3.5 + 1.3.6 4.0.0 diff --git a/bootx-common-starters/common-starter-auth/pom.xml b/bootx-common-starters/common-starter-auth/pom.xml index c3f79cd1fba4ce47dbe2be2ba95a5c3723001c4a..c8ed4555292ec7d2e043a49839e734de5dc759b9 100644 --- a/bootx-common-starters/common-starter-auth/pom.xml +++ b/bootx-common-starters/common-starter-auth/pom.xml @@ -5,7 +5,7 @@ cn.bootx.platform bootx-common-starters - 1.3.5 + 1.3.6 4.0.0 common-starter-auth diff --git a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/cache/SessionCacheLocal.java b/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/cache/SessionCacheLocal.java index 273fa8557a069806613051c12ed9e7a9d31fd954..351e4c164a691176fc437ab9a5a243b162165a56 100644 --- a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/cache/SessionCacheLocal.java +++ b/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/cache/SessionCacheLocal.java @@ -1,6 +1,7 @@ package cn.bootx.platform.starter.auth.cache; import cn.bootx.platform.common.core.entity.UserDetail; +import cn.bootx.platform.starter.auth.entity.UserStatus; import com.alibaba.ttl.TransmittableThreadLocal; /** @@ -11,27 +12,43 @@ import com.alibaba.ttl.TransmittableThreadLocal; */ public final class SessionCacheLocal { - private static final ThreadLocal THREAD_LOCAL = new TransmittableThreadLocal<>(); + private static final ThreadLocal USER_INFO_LOCAL = new TransmittableThreadLocal<>(); + private static final ThreadLocal USER_STATUS_LOCAL = new TransmittableThreadLocal<>(); /** - * TTL 设置数据 + * 设置用户信息 */ - public static void put(UserDetail userDetail) { - THREAD_LOCAL.set(userDetail); + public static void putUserInfo(UserDetail userDetail) { + USER_INFO_LOCAL.set(userDetail); } /** - * 获取TTL中的数据 + * 获取用户信息 */ - public static UserDetail get() { - return THREAD_LOCAL.get(); + public static UserDetail getUserInfo() { + return USER_INFO_LOCAL.get(); + } + + /** + * 设置用户状态 + */ + public static void putUserStatus(UserStatus userStatus) { + USER_STATUS_LOCAL.set(userStatus); + } + + /** + * 获取用户状态上下文 + */ + public static UserStatus getUserStatusContext() { + return USER_STATUS_LOCAL.get(); } /** * 清除 */ public static void clear() { - THREAD_LOCAL.remove(); + USER_INFO_LOCAL.remove(); + USER_STATUS_LOCAL.remove(); } } diff --git a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/entity/UserStatus.java b/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/entity/UserStatus.java new file mode 100644 index 0000000000000000000000000000000000000000..2b11f41a89a15fa2761fad43262e90c2c0fc7dd3 --- /dev/null +++ b/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/entity/UserStatus.java @@ -0,0 +1,26 @@ +package cn.bootx.platform.starter.auth.entity; + +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.util.HashMap; + +/** + * 用户状态上下文 + * @author xxm + * @since 2023/11/25 + */ +@Getter +@Setter +@Accessors(chain = true) +public class UserStatus extends HashMap { + + /** 是否初始密码 */ + private boolean initialPassword; + + /** 密码是否过期 */ + private boolean expirePassword; + + +} diff --git a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/handler/SaRouteHandler.java b/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/handler/SaRouteHandler.java index 0f9e8d7d2b2336cd94df4d392c992ec1d3651420..ee27294129555e649ce83de8463793d7c2b67d82 100644 --- a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/handler/SaRouteHandler.java +++ b/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/handler/SaRouteHandler.java @@ -1,6 +1,6 @@ package cn.bootx.platform.starter.auth.handler; -import cn.bootx.platform.starter.auth.authentication.RouterCheck; +import cn.bootx.platform.starter.auth.service.RouterCheck; import cn.bootx.platform.starter.auth.exception.RouterCheckException; import cn.bootx.platform.common.spring.util.WebServletUtil; import cn.dev33.satoken.fun.SaFunction; diff --git a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/impl/IgnoreAdminUserRouterCheck.java b/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/impl/IgnoreAdminUserRouterCheck.java index f4498114270b8831bb4e8c3ae06bcdc1301af1e5..a531f5ccafa59193e5fb9fd928fa25289fba1592 100644 --- a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/impl/IgnoreAdminUserRouterCheck.java +++ b/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/impl/IgnoreAdminUserRouterCheck.java @@ -1,7 +1,7 @@ package cn.bootx.platform.starter.auth.impl; import cn.bootx.platform.common.core.entity.UserDetail; -import cn.bootx.platform.starter.auth.authentication.RouterCheck; +import cn.bootx.platform.starter.auth.service.RouterCheck; import cn.bootx.platform.starter.auth.configuration.AuthProperties; import cn.bootx.platform.starter.auth.util.SecurityUtil; import lombok.RequiredArgsConstructor; @@ -19,11 +19,6 @@ public class IgnoreAdminUserRouterCheck implements RouterCheck { private final AuthProperties authProperties; - @Override - public int sortNo() { - return 0; - } - @Override public boolean check(Object handler) { if (authProperties.isEnableAdmin()) { diff --git a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/impl/IgnoreAnnotationRouterCheck.java b/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/impl/IgnoreAnnotationRouterCheck.java index acc4934fb88c72524007a8fa2e273dcc8546bc94..e2d67e0e7af63f572ef649ab263d1058615b9bf3 100644 --- a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/impl/IgnoreAnnotationRouterCheck.java +++ b/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/impl/IgnoreAnnotationRouterCheck.java @@ -1,7 +1,7 @@ package cn.bootx.platform.starter.auth.impl; import cn.bootx.platform.common.core.annotation.IgnoreAuth; -import cn.bootx.platform.starter.auth.authentication.RouterCheck; +import cn.bootx.platform.starter.auth.service.RouterCheck; import cn.bootx.platform.starter.auth.util.SecurityUtil; import org.springframework.stereotype.Component; import org.springframework.web.method.HandlerMethod; diff --git a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/online/OnlineUserDto.java b/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/online/OnlineUserDto.java deleted file mode 100644 index 252f2b69675699824aa51af96c30bae56e76931a..0000000000000000000000000000000000000000 --- a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/online/OnlineUserDto.java +++ /dev/null @@ -1,53 +0,0 @@ -package cn.bootx.platform.starter.auth.online; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.experimental.Accessors; - -import java.time.LocalDateTime; -import java.util.List; - -/** - * @author xxm - * @since 2021/9/8 - */ -@Data -@Accessors(chain = true) -@Schema(title = "在线用户") -public class OnlineUserDto { - - @Schema(description = "用户id") - private Long userId; - - @Schema(description = "会话id") - private String sessionId; - - @Schema(description = "用户名称") - private String name; - - @Schema(description = "用户账号") - private String userName; - - @Schema(description = "创建时间") - private LocalDateTime creationTime; - - @Schema(description = "剩余有效时间(秒)") - private Long timeout; - - @Schema(description = "Token列表") - private List tokenSigns; - - @Data - @Accessors(chain = true) - @Schema(title = "Token签名") - public static class TokenSign { - - @Schema(description = "token值") - private String value; - - @Schema(description = "所在设备标识") - private String device; - - } - -} diff --git a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/online/OnlineUserService.java b/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/online/OnlineUserService.java deleted file mode 100644 index 81e0dd5cd0ad3945ce6f9cc8915c3655f25f0a89..0000000000000000000000000000000000000000 --- a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/online/OnlineUserService.java +++ /dev/null @@ -1,107 +0,0 @@ -package cn.bootx.platform.starter.auth.online; - -import cn.bootx.platform.common.core.annotation.OperateLog; -import cn.bootx.platform.common.core.code.CommonCode; -import cn.bootx.platform.common.core.entity.UserDetail; -import cn.bootx.platform.common.core.exception.BizException; -import cn.bootx.platform.common.core.rest.PageResult; -import cn.bootx.platform.common.core.rest.param.PageParam; -import cn.bootx.platform.common.core.util.LocalDateTimeUtil; -import cn.dev33.satoken.session.SaSession; -import cn.dev33.satoken.stp.StpUtil; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - -/** - * 在线用户 - * - * @author xxm - * @since 2021/9/8 - */ -@Slf4j -@Service -@RequiredArgsConstructor -public class OnlineUserService { - - @SuppressWarnings("FieldCanBeLocal") - private final String SessionPattern = "AccessToken:login:session:*"; - - private final StringRedisTemplate stringRedisTemplate; - - private final RedisTemplate objectRedisTemplate; - - /** - * 分页查询 - */ - public PageResult page(PageParam pageParam) { - ArrayList keys = Optional.ofNullable(stringRedisTemplate.keys(SessionPattern)) - .map(ArrayList::new) - .orElseGet(ArrayList::new); - List list = new ArrayList<>(); - int start = pageParam.start(); - int end = pageParam.end(); - for (int i = start; i < end; i++) { - if (i >= keys.size()) { - break; - } - else { - list.add(keys.get(i)); - } - } - List onlineUsers = Optional.ofNullable(objectRedisTemplate.opsForValue().multiGet(list)) - .orElseGet(ArrayList::new) - .stream() - .map(this::convert) - .collect(Collectors.toList()); - return new PageResult().setCurrent(pageParam.getCurrent()) - .setSize(pageParam.getSize()) - .setTotal(keys.size()) - .setRecords(onlineUsers); - } - - /** - * 获取单条 - */ - public OnlineUserDto findBySessionId(String sessionId) { - SaSession saSession = Optional.ofNullable(objectRedisTemplate.opsForValue().get(sessionId)) - .orElseThrow(() -> new BizException("会话不存在")); - return this.convert(saSession); - } - - /** - * 转换if在线用户对象 - */ - private OnlineUserDto convert(SaSession saSession) { - UserDetail userDetail = saSession.getModel(CommonCode.USER, UserDetail.class); - List tokenSignList = saSession.getTokenSignList() - .stream() - .map(tokenSign -> new OnlineUserDto.TokenSign().setDevice(tokenSign.getDevice()) - .setValue(tokenSign.getValue())) - .collect(Collectors.toList()); - - return new OnlineUserDto().setUserId(userDetail.getId()) - .setUserName(userDetail.getUsername()) - .setName(userDetail.getName()) - .setTimeout(saSession.getTimeout()) - .setCreationTime(LocalDateTimeUtil.of(saSession.getCreateTime())) - .setSessionId(saSession.getId()) - .setTokenSigns(tokenSignList); - } - - /** - * 下线 - */ - @OperateLog(title = "强退用户", businessType = OperateLog.BusinessType.FORCE, saveParam = true) - public void logoutByUserId(Long userId) { - StpUtil.kickout(userId); - } - -} diff --git a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/authentication/RouterCheck.java b/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/service/RouterCheck.java similarity index 82% rename from bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/authentication/RouterCheck.java rename to bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/service/RouterCheck.java index 2f488a1b5977a3aa10d079d4742059e106e0219e..2bc2ca9d6ab051ba4bca40243a44a41db9b4f20b 100644 --- a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/authentication/RouterCheck.java +++ b/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/service/RouterCheck.java @@ -1,4 +1,4 @@ -package cn.bootx.platform.starter.auth.authentication; +package cn.bootx.platform.starter.auth.service; /** * 路由拦截检查 diff --git a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/service/UserStatusService.java b/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/service/UserStatusService.java new file mode 100644 index 0000000000000000000000000000000000000000..a44f676d21796796e5869a2b86688e6ac718be30 --- /dev/null +++ b/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/service/UserStatusService.java @@ -0,0 +1,16 @@ +package cn.bootx.platform.starter.auth.service; + +import cn.bootx.platform.starter.auth.entity.UserStatus; + +/** + * 用户状态服务 + * @author xxm + * @since 2023/11/25 + */ +public interface UserStatusService { + + /** + * 获取用户状态 + */ + UserStatus getUserStatus(); +} diff --git a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/util/SecurityUtil.java b/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/util/SecurityUtil.java index e78671554db3feab42f1c9a5f9c064e2f2542700..547395c5eab35a8d34944ad2f266e6877f7b4c05 100644 --- a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/util/SecurityUtil.java +++ b/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/util/SecurityUtil.java @@ -78,12 +78,12 @@ public class SecurityUtil { * 获取当前用户,无异常, 使用线程缓存来减少redis的访问频率 */ private Optional getCurrentUser0() { - Optional userDetail = Optional.ofNullable(SessionCacheLocal.get()); + Optional userDetail = Optional.ofNullable(SessionCacheLocal.getUserInfo()); if (!userDetail.isPresent()) { try { userDetail = Optional.ofNullable(StpUtil.getSession()) .map(saSession -> saSession.getModel(CommonCode.USER, UserDetail.class)); - SessionCacheLocal.put(userDetail.orElse(null)); + SessionCacheLocal.putUserInfo(userDetail.orElse(null)); } catch (SaTokenException e) { userDetail = Optional.empty(); diff --git a/bootx-common-starters/common-starter-code-gen/pom.xml b/bootx-common-starters/common-starter-code-gen/pom.xml index 1ebd300da95487aa83b32204e2501b4db059c8c0..21bf7fd31b220ebf5a7c117b9783b6787560582f 100644 --- a/bootx-common-starters/common-starter-code-gen/pom.xml +++ b/bootx-common-starters/common-starter-code-gen/pom.xml @@ -5,7 +5,7 @@ cn.bootx.platform bootx-common-starters - 1.3.5 + 1.3.6 4.0.0 diff --git a/bootx-common-starters/common-starter-data-perm/pom.xml b/bootx-common-starters/common-starter-data-perm/pom.xml index eef935bfbf985ac922b2cf4f002faf4302f43779..4296524b76dc4f70981963399023b931b1abe7c5 100644 --- a/bootx-common-starters/common-starter-data-perm/pom.xml +++ b/bootx-common-starters/common-starter-data-perm/pom.xml @@ -5,7 +5,7 @@ bootx-common-starters cn.bootx.platform - 1.3.5 + 1.3.6 4.0.0 diff --git a/bootx-common-starters/common-starter-data-perm/src/main/java/cn/bootx/platform/starter/data/perm/code/DataScopeEnum.java b/bootx-common-starters/common-starter-data-perm/src/main/java/cn/bootx/platform/starter/data/perm/code/DataScopeEnum.java index 3963f835d8ee50fe6c01bee595fe558ed614de9c..d0b0d601c05edda0c67e57834182e3a5250f9933 100644 --- a/bootx-common-starters/common-starter-data-perm/src/main/java/cn/bootx/platform/starter/data/perm/code/DataScopeEnum.java +++ b/bootx-common-starters/common-starter-data-perm/src/main/java/cn/bootx/platform/starter/data/perm/code/DataScopeEnum.java @@ -5,6 +5,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import java.util.Arrays; +import java.util.Objects; /** * 数据范围权限类型 @@ -17,28 +18,30 @@ import java.util.Arrays; public enum DataScopeEnum { /** 自己的数据 */ - SELF(1), + SELF("self"), /** 指定用户级别 */ - USER_SCOPE(2), + USER_SCOPE("user"), /** 指定部门级别 */ - DEPT_SCOPE(3), + DEPT_SCOPE("dept"), + /** 指定部门和下级部门 */ + DEPT_SCOPE_AND_SUB("dept_sub"), /** 指定部门与用户级别 */ - DEPT_AND_USER_SCOPE(4), + DEPT_AND_USER_SCOPE("dept_and_user"), /** 全部数据 */ - ALL_SCOPE(5), + ALL_SCOPE("all"), /** 所在部门 */ - BELONG_DEPT(6), + SELF_DEPT("self_dept"), /** 所在及下级部门 */ - BELONG_DEPT_AND_SUB(7); + SELF_DEPT_AND_SUB("self_dept_sub"); - private final int code; + private final String code; /** * 根据数字编号获取 */ - public static DataScopeEnum findByCode(int code) { + public static DataScopeEnum findByCode(String code) { return Arrays.stream(DataScopeEnum.values()) - .filter(e -> e.getCode() == code) + .filter(e -> Objects.equals(e.getCode(), code)) .findFirst() .orElseThrow(() -> new BizException("不支持的数据权限类型")); } diff --git a/bootx-common-starters/common-starter-data-perm/src/main/java/cn/bootx/platform/starter/data/perm/configuration/DataPermProperties.java b/bootx-common-starters/common-starter-data-perm/src/main/java/cn/bootx/platform/starter/data/perm/configuration/DataPermProperties.java index 530bb97e3f6c5af67b7357f1affad6b91419d19c..2972e6155e8a853f8bf446feb567642c351293fc 100644 --- a/bootx-common-starters/common-starter-data-perm/src/main/java/cn/bootx/platform/starter/data/perm/configuration/DataPermProperties.java +++ b/bootx-common-starters/common-starter-data-perm/src/main/java/cn/bootx/platform/starter/data/perm/configuration/DataPermProperties.java @@ -1,6 +1,8 @@ package cn.bootx.platform.starter.data.perm.configuration; +import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -24,28 +26,32 @@ public class DataPermProperties { /** 开启数据权限 */ private boolean enableDataPerm = true; - /** 数据权限配置 */ - private DataPerm dataPerm = new DataPerm(); + /** 部门关联类型数据权限关联表配置 */ + private DataPerm deptDataPerm = new DataPerm("iam_user_dept", "user_id", "dept_id"); + + /** 角色关联类型数据权限关联表配置 */ + private DataPerm roleDataPerm = new DataPerm("iam_user_role", "user_id", "role _id"); /** 开启查询字段权限 */ private boolean enableSelectFieldPerm = true; /** - * 数据权限(通常是用户/部门关联表) + * 部门相关数据权限 */ @Getter @Setter + @NoArgsConstructor + @AllArgsConstructor public static class DataPerm { /** 关联表名 */ - private String table = "iam_user_dept"; + private String table; - /** 查询字段(用户字段名) */ - private String queryField = "user_id"; + /** 查询字段(输出字段名, 通常为用户字段, 用于筛选出子查询的结果) */ + private String queryField; /** 条件字段(筛选条件字段名) */ - private String whereField = "dept_id"; - + private String whereField; } } diff --git a/bootx-common-starters/common-starter-data-perm/src/main/java/cn/bootx/platform/starter/data/perm/scope/DataScopeInterceptor.java b/bootx-common-starters/common-starter-data-perm/src/main/java/cn/bootx/platform/starter/data/perm/scope/DataScopeInterceptor.java index 14c4b3711ccfeba4b1657e6fce04c2cbc60d71b8..457703e5b373bc93a8656f510825146817690066 100644 --- a/bootx-common-starters/common-starter-data-perm/src/main/java/cn/bootx/platform/starter/data/perm/scope/DataScopeInterceptor.java +++ b/bootx-common-starters/common-starter-data-perm/src/main/java/cn/bootx/platform/starter/data/perm/scope/DataScopeInterceptor.java @@ -170,6 +170,7 @@ public class DataScopeInterceptor extends JsqlParserSupport implements InnerInte queryExpression = this.selfScope(mainTableName); break; } + case DEPT_SCOPE_AND_SUB: case DEPT_SCOPE: { Expression deptScopeExpression = this.deptScope(dataPermScope.getDeptScopeIds(), mainTableName); // 追加查询自身的数据 @@ -177,16 +178,18 @@ public class DataScopeInterceptor extends JsqlParserSupport implements InnerInte break; } case USER_SCOPE: { + // 包含自身的数据 queryExpression = this.userScope(dataPermScope.getUserScopeIds(), mainTableName); break; } case DEPT_AND_USER_SCOPE: { + // 包含自身的数据 queryExpression = this.deptAndUserScope(dataPermScope.getDeptScopeIds(), dataPermScope.getUserScopeIds(), mainTableName); break; } - case BELONG_DEPT: - case BELONG_DEPT_AND_SUB: { + case SELF_DEPT: + case SELF_DEPT_AND_SUB: { queryExpression = this.deptScope(dataPermScope.getDeptScopeIds(), mainTableName); break; } @@ -234,17 +237,17 @@ public class DataScopeInterceptor extends JsqlParserSupport implements InnerInte * 查询部门范围的数据 */ protected Expression deptScope(Set deptIds, String mainTableName) { - DataPermProperties.DataPerm dataPerm = dataPermProperties.getDataPerm(); + DataPermProperties.DataPerm deptDataPerm = dataPermProperties.getDeptDataPerm(); // 创建嵌套子查询 PlainSelect plainSelect = new PlainSelect(); // 设置查询字段 SelectExpressionItem selectItem = new SelectExpressionItem(); - selectItem.setExpression(new Column(dataPerm.getQueryField())); + selectItem.setExpression(new Column(deptDataPerm.getQueryField())); plainSelect.addSelectItems(selectItem); // 过滤重复的子查询结果 plainSelect.setDistinct(new Distinct()); // 设置所查询表 - plainSelect.setFromItem(new Table(dataPerm.getTable())); + plainSelect.setFromItem(new Table(deptDataPerm.getTable())); // 构建查询条件 List deptExpressions = Optional.ofNullable(deptIds) @@ -253,12 +256,12 @@ public class DataScopeInterceptor extends JsqlParserSupport implements InnerInte .map(LongValue::new) .collect(Collectors.toList()); // 构造空查询 - if (deptExpressions.size() == 0) { + if (deptExpressions.isEmpty()) { deptExpressions.add(null); } // 设置查询条件 plainSelect - .setWhere(new InExpression(new Column(dataPerm.getWhereField()), new ExpressionList(deptExpressions))); + .setWhere(new InExpression(new Column(deptDataPerm.getWhereField()), new ExpressionList(deptExpressions))); // 拼接子查询 SubSelect subSelect = new SubSelect(); diff --git a/bootx-common-starters/common-starter-dingtalk/pom.xml b/bootx-common-starters/common-starter-dingtalk/pom.xml index b4c0895991aad39135b3c24601f04559ce084669..66ab3a84dbea7dc553384352fba2b770226f0360 100644 --- a/bootx-common-starters/common-starter-dingtalk/pom.xml +++ b/bootx-common-starters/common-starter-dingtalk/pom.xml @@ -5,7 +5,7 @@ bootx-common-starters cn.bootx.platform - 1.3.5 + 1.3.6 4.0.0 diff --git a/bootx-common-starters/common-starter-file/pom.xml b/bootx-common-starters/common-starter-file/pom.xml index e302b6f028537f6324f549f8eada153cb67b3635..bf524bfc54b07075c1fa29f43f6ce6f2e91bf284 100644 --- a/bootx-common-starters/common-starter-file/pom.xml +++ b/bootx-common-starters/common-starter-file/pom.xml @@ -5,7 +5,7 @@ bootx-common-starters cn.bootx.platform - 1.3.5 + 1.3.6 4.0.0 @@ -30,11 +30,19 @@ table-modify-mysql-boot-starter provided + cn.bootx.platform common-mybatis-plus true + + + org.dromara.x-file-storage + x-file-storage-spring + ${x-file-storage.version} + + io.minio @@ -45,12 +53,12 @@ com.qcloud cos_api - 5.6.155 + ${cos_api.version} com.qcloud cos-sts_api - 3.1.0 + ${cos-sts_api.version} diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/FileAutoConfiguration.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/FileAutoConfiguration.java index fea14281ab834ecd5044c35180527ecf7ba6392b..2f201cbd36642e3f7e5253b18d7d6bc321c2659e 100644 --- a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/FileAutoConfiguration.java +++ b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/FileAutoConfiguration.java @@ -1,6 +1,7 @@ package cn.bootx.platform.starter.file; import org.apache.ibatis.annotations.Mapper; +import org.dromara.x.file.storage.spring.EnableFileStorage; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.context.properties.ConfigurationPropertiesScan; @@ -16,6 +17,7 @@ import org.springframework.data.mongodb.repository.config.EnableMongoRepositorie @ComponentScan @ConfigurationPropertiesScan @EnableMongoRepositories +@EnableFileStorage @AutoConfiguration @MapperScan(annotationClass = Mapper.class) public class FileAutoConfiguration { diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/UploadFileParam.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/UploadFileParam.java new file mode 100644 index 0000000000000000000000000000000000000000..8c69f08633e32ca790a0b5f072b4a3d26e5ff011 --- /dev/null +++ b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/UploadFileParam.java @@ -0,0 +1,39 @@ +package cn.bootx.platform.starter.file; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.time.LocalDateTime; + +/** + * 上传文件查询参数 + * @author xxm + * @since 2023/11/15 + */ +@Data +@Accessors(chain = true) +@Schema(title = "上传文件查询参数") +public class UploadFileParam { + + /** 原始文件名 */ + @Schema(description = "原始文件名") + private String originalFilename; + + /** 开始时间 */ + @Schema(description = "开始时间") + private LocalDateTime startTime; + + /** 结束时间 */ + @Schema(description = "结束时间") + private LocalDateTime endTime; + + /** 文件扩展名 */ + @Schema(description = "文件扩展名") + private String ext; + + /** MIME 类型 */ + @Schema(description = "MIME 类型") + private String contentType; + +} diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/configuration/FileUploadConfiguration.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/configuration/FileUploadConfiguration.java deleted file mode 100644 index d8337c5193ca8b7cdf90a09a0df376bb170c1b20..0000000000000000000000000000000000000000 --- a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/configuration/FileUploadConfiguration.java +++ /dev/null @@ -1,32 +0,0 @@ -package cn.bootx.platform.starter.file.configuration; - -import lombok.RequiredArgsConstructor; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.mongodb.MongoDatabaseFactory; -import org.springframework.data.mongodb.core.convert.MongoConverter; -import org.springframework.data.mongodb.gridfs.GridFsTemplate; - -/** - * 文件上传配置 - * - * @author xxm - * @since 2022/2/15 - */ -@Configuration -@ConditionalOnClass(name="org.springframework.data.mongodb.gridfs.GridFsTemplate") -@RequiredArgsConstructor -public class FileUploadConfiguration { - - private final FileUploadProperties properties; - - /** - * 自定义 GridFsTemplate - */ - @Bean - public GridFsTemplate gridFsTemplate(MongoDatabaseFactory dbFactory, MongoConverter converter) { - return new GridFsTemplate(dbFactory, converter, properties.getMongo().getBucket()); - } - -} diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/configuration/FileUploadProperties.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/configuration/FileUploadProperties.java index a7344761ec2992dbe92bc73706234bbe1ef3e2bc..ef17f63c84d3f684187635d78aa12fa6a0ddce50 100644 --- a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/configuration/FileUploadProperties.java +++ b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/configuration/FileUploadProperties.java @@ -1,9 +1,6 @@ package cn.bootx.platform.starter.file.configuration; -import cn.bootx.platform.starter.file.code.FileUploadTypeEnum; import lombok.Data; -import lombok.Getter; -import lombok.Setter; import lombok.experimental.Accessors; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -19,143 +16,14 @@ import org.springframework.boot.context.properties.ConfigurationProperties; public class FileUploadProperties { /** - * 上传文件类型 默认为本地 + * 是否通过后端服务进行文件访问的代理 + * 开启 Web -> 后端服务 -> 具体的的文件服务 */ - private FileUploadTypeEnum uploadType = FileUploadTypeEnum.LOCAL; + private boolean serviceProxy = true; /** - * 服务器地址,优先级低于系统参数配置 + * 文件服务访问地址 */ private String serverUrl = "http://127.0.0.1:9999"; - /** - * 本地存储 - */ - private Local local = new Local(); - - /** - * 数据库存储 - */ - private JDBC jdbc = new JDBC(); - - /** - * mongo存储配置 - */ - private Mongo mongo = new Mongo(); - - /** - * minio存储配置 - */ - private Minio minio = new Minio(); - - /** - * 腾讯云存储配置 - */ - private TencentOss tencentOss = new TencentOss(); - - /** - * 本地存储 - */ - @Getter - @Setter - public static class Local { - - /** - * 本地存储路径 - */ - private String localPath = "/data/file/"; - - } - - /** - * 数据库存储 - */ - @Getter - @Setter - public static class JDBC { - - /** - * 是否以Base64方式进行存储 - */ - private boolean base64 = false; - - } - - /** - * mongo存储配置 - */ - @Getter - @Setter - public static class Mongo { - - /** - * 存储桶 - */ - private String bucket = "fs"; - - } - - /** - * Minio存储配置 - */ - @Getter - @Setter - public static class Minio { - - /** - * 端点地址 - */ - private String endpoint; - - /** - * 区域 - */ - private String region; - - /** - * 访问 key - */ - private String accessKey; - - /** - * 访问 Secret - */ - private String accessSecret; - - /** - * 存储桶 需要至少三位 - */ - private String bucket = "bootx"; - - } - - @Getter - @Setter - public static class TencentOss { - - /** - * 地域 - */ - private String region; - - /** - * 标识Id - */ - private String secretId; - /** - * 秘钥 - */ - private String secretKey; - - /** - * 会话Token - */ - private String sessionToken; - - /** - * 存储桶 - */ - private String bucket; - } - } diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/controller/FIleUpLoadController.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/controller/FIleUpLoadController.java index eec514d985b6d816d915a10c3ed560d7b94f70d9..3ab35b888e1abdede4e2cd39846ad5ebe4cd2f50 100644 --- a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/controller/FIleUpLoadController.java +++ b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/controller/FIleUpLoadController.java @@ -5,9 +5,8 @@ import cn.bootx.platform.common.core.rest.PageResult; import cn.bootx.platform.common.core.rest.Res; import cn.bootx.platform.common.core.rest.ResResult; import cn.bootx.platform.common.core.rest.param.PageParam; -import cn.bootx.platform.starter.file.dto.UpLoadOptions; -import cn.bootx.platform.starter.file.dto.UpdateFileDto; -import cn.bootx.platform.starter.file.entity.UpdateFileInfo; +import cn.bootx.platform.starter.file.UploadFileParam; +import cn.bootx.platform.starter.file.dto.UploadFileDto; import cn.bootx.platform.starter.file.service.FileUploadService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -37,16 +36,15 @@ public class FIleUpLoadController { @IgnoreAuth(ignore = false) @Operation(summary = "分页") @GetMapping("/page") - public ResResult> page(PageParam pageParam) { - return Res.ok(uploadService.page(pageParam)); + public ResResult> page(PageParam pageParam, UploadFileParam param) { + return Res.ok(uploadService.page(pageParam,param)); } - - @IgnoreAuth(ignore = false, login = true) - @Operation(summary = "上传") - @PostMapping("/upload") - public ResResult local(MultipartFile file, String fileName) throws IOException { - return Res.ok(uploadService.upload(file, fileName)); + @IgnoreAuth(ignore = false) + @Operation(summary = "获取单条详情") + @GetMapping("/findById") + public ResResult findById(Long id) { + return Res.ok(uploadService.findById(id)); } @Operation(summary = "删除") @@ -56,7 +54,14 @@ public class FIleUpLoadController { return Res.ok(); } - @Operation(summary = "获取文件预览地址") + @IgnoreAuth(ignore = false, login = true) + @Operation(summary = "上传") + @PostMapping("/upload") + public ResResult local(MultipartFile file, String fileName) throws IOException { + return Res.ok(uploadService.upload(file, fileName)); + } + + @Operation(summary = "获取文件预览地址(流量会经过后端)") @GetMapping("getFilePreviewUrl") public ResResult getFilePreviewUrl(Long id) { return Res.ok(uploadService.getFilePreviewUrl(id)); @@ -68,35 +73,22 @@ public class FIleUpLoadController { return Res.ok(uploadService.getFilePreviewUrlPrefix()); } - @Operation(summary = "获取文件下载地址") + @Operation(summary = "获取文件下载地址(流量会经过后端)") @GetMapping("getFileDownloadUrl") public ResResult getFileDownloadUrl(Long id) { return Res.ok(uploadService.getFileDownloadUrl(id)); } - @Operation(summary = "预览文件") + @Operation(summary = "预览文件(流量会经过后端)") @GetMapping("/preview/{id}") public void preview(@PathVariable Long id, HttpServletResponse response) { uploadService.preview(id, response); } - @Operation(summary = "下载文件") + @Operation(summary = "下载文件(流量会经过后端)") @GetMapping("/download/{id}") public ResponseEntity download(@PathVariable Long id) { return uploadService.download(id); } - @Operation(summary = "获取临时oss密钥") - @GetMapping("/getUpLoadOptions") - public ResResult getTempCredentials() { - return Res.ok(uploadService.getTempCredentials()); - } - @Operation(summary = "保存记录") - @PostMapping("/saveUploadResult") - public ResResult saveUploadResult(@RequestBody UpdateFileInfo info) { - return Res.ok(uploadService.saveUploadResult(info)); - } - - - } diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/convert/FileConvert.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/convert/FileConvert.java index 19a6e719075f35f04473621e5f81f89c18fe8dec..129d0ef2de23f1a971c8eaee2d57baf9022ff5e3 100644 --- a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/convert/FileConvert.java +++ b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/convert/FileConvert.java @@ -1,7 +1,8 @@ package cn.bootx.platform.starter.file.convert; -import cn.bootx.platform.starter.file.dto.UpdateFileDto; -import cn.bootx.platform.starter.file.entity.UpdateFileInfo; +import cn.bootx.platform.starter.file.dto.UploadFileDto; +import cn.bootx.platform.starter.file.entity.UploadFileInfo; +import org.dromara.x.file.storage.core.FileInfo; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @@ -10,10 +11,17 @@ import org.mapstruct.factory.Mappers; * @since 2022/1/12 */ @Mapper -public interface FileConvert { +public interface FileConvert { FileConvert CONVERT = Mappers.getMapper(FileConvert.class); - UpdateFileDto convert(UpdateFileInfo in); + UploadFileDto convert(UploadFileInfo in); + + UploadFileInfo convert(FileInfo in); + + FileInfo toFileInfo(UploadFileInfo in); + + UploadFileDto toDto(FileInfo in); + } diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/dao/UpdateFileManager.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/dao/UploadFileManager.java similarity index 32% rename from bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/dao/UpdateFileManager.java rename to bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/dao/UploadFileManager.java index 7232ab4a2ea3f53dbdb11e7003c0ae78d0cd1d57..16683cfb1fe81712dfc814d96a28c6781172f7f1 100644 --- a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/dao/UpdateFileManager.java +++ b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/dao/UploadFileManager.java @@ -1,14 +1,18 @@ package cn.bootx.platform.starter.file.dao; -import cn.bootx.platform.starter.file.entity.UpdateFileInfo; import cn.bootx.platform.common.core.rest.param.PageParam; import cn.bootx.platform.common.mybatisplus.impl.BaseManager; import cn.bootx.platform.common.mybatisplus.util.MpUtil; +import cn.bootx.platform.starter.file.UploadFileParam; +import cn.bootx.platform.starter.file.entity.UploadFileInfo; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Repository; +import java.util.Objects; + /** * @author xxm * @since 2022/1/12 @@ -16,14 +20,20 @@ import org.springframework.stereotype.Repository; @Slf4j @Repository @RequiredArgsConstructor -public class UpdateFileManager extends BaseManager { +public class UploadFileManager extends BaseManager { /** * 分页 */ - public Page page(PageParam pageParam) { - Page mpPage = MpUtil.getMpPage(pageParam, UpdateFileInfo.class); - return lambdaQuery().orderByDesc(UpdateFileInfo::getId).page(mpPage); + public Page page(PageParam pageParam, UploadFileParam param) { + Page mpPage = MpUtil.getMpPage(pageParam, UploadFileInfo.class); + return lambdaQuery() + .like(StrUtil.isNotBlank(param.getOriginalFilename()), UploadFileInfo::getOriginalFilename, param.getOriginalFilename()) + .like(StrUtil.isNotBlank(param.getExt()), UploadFileInfo::getExt, param.getExt()) + .like(StrUtil.isNotBlank(param.getContentType()), UploadFileInfo::getContentType, param.getContentType()) + .ge(Objects.nonNull(param.getStartTime()), UploadFileInfo::getCreateTime, param.getStartTime()) + .le(Objects.nonNull(param.getEndTime()), UploadFileInfo::getCreateTime, param.getEndTime()) + .orderByDesc(UploadFileInfo::getId).page(mpPage); } } diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/dao/UpdateFileMapper.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/dao/UploadFileMapper.java similarity index 62% rename from bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/dao/UpdateFileMapper.java rename to bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/dao/UploadFileMapper.java index 8e3ed31e0866a96863b4d38ba52c1943146e29fb..508fa55e0dc103be48b696d16582219539257944 100644 --- a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/dao/UpdateFileMapper.java +++ b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/dao/UploadFileMapper.java @@ -1,6 +1,6 @@ package cn.bootx.platform.starter.file.dao; -import cn.bootx.platform.starter.file.entity.UpdateFileInfo; +import cn.bootx.platform.starter.file.entity.UploadFileInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; @@ -9,6 +9,6 @@ import org.apache.ibatis.annotations.Mapper; * @since 2022/1/12 */ @Mapper -public interface UpdateFileMapper extends BaseMapper { +public interface UploadFileMapper extends BaseMapper { } diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/dto/UpdateFileDto.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/dto/UpdateFileDto.java deleted file mode 100644 index 23fba3e384f540c99261da7a8ea1426d7643b658..0000000000000000000000000000000000000000 --- a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/dto/UpdateFileDto.java +++ /dev/null @@ -1,54 +0,0 @@ -package cn.bootx.platform.starter.file.dto; - -import cn.hutool.core.io.FileUtil; -import com.baomidou.mybatisplus.annotation.FieldFill; -import com.baomidou.mybatisplus.annotation.TableField; -import lombok.Data; -import lombok.experimental.Accessors; - -import java.time.LocalDateTime; - -/** - * 上传文件信息 - * - * @author xxm - * @since 2022/1/12 - */ -@Data -@Accessors(chain = true) -public class UpdateFileDto { - - /** 主键 */ - private Long id; - - /** 存储位置 */ - private String filePath; - - /** 文件名称 */ - private String fileName; - - /** 文件后缀 */ - private String fileSuffix; - - /** 文件类型 */ - private String fileType; - - /** 文件大小 */ - private Long fileSize; - - /** 外部存储id */ - private String externalStorageId; - - /** 创建者ID */ - @TableField(fill = FieldFill.INSERT) - private Long creator; - - /** 创建时间 */ - @TableField(fill = FieldFill.INSERT) - private LocalDateTime createTime; - - public String getFileSize() { - return FileUtil.readableFileSize(fileSize); - } - -} diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/dto/UploadFileDto.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/dto/UploadFileDto.java new file mode 100644 index 0000000000000000000000000000000000000000..223897fa37490f6bc8120933ff5b382cc522104c --- /dev/null +++ b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/dto/UploadFileDto.java @@ -0,0 +1,168 @@ +package cn.bootx.platform.starter.file.dto; + +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.lang.Dict; +import lombok.Data; +import lombok.experimental.Accessors; +import org.dromara.x.file.storage.core.FileInfo; +import org.dromara.x.file.storage.core.constant.Constant; + +import java.time.LocalDateTime; +import java.util.Map; + +/** + * 上传文件信息 + * + * @author xxm + * @since 2022/1/12 + */ +@Data +@Accessors(chain = true) +public class UploadFileDto { + + /** + * 文件id + */ + private Long id; + + /** + * 文件访问地址 + */ + private String url; + + /** + * 文件大小,单位字节 + */ + private Long size; + + /** + * 文件名称 + */ + private String filename; + + /** + * 原始文件名 + */ + private String originalFilename; + + /** + * 基础存储路径 + */ + private String basePath; + + /** + * 存储路径 + */ + private String path; + + /** + * 文件扩展名 + */ + private String ext; + + /** + * MIME 类型 + */ + private String contentType; + + /** + * 存储平台 + */ + private String platform; + + /** + * 缩略图访问路径 + */ + private String thUrl; + + /** + * 缩略图名称 + */ + private String thFilename; + + /** + * 缩略图大小,单位字节 + */ + private Long thSize; + + /** + * 缩略图 MIME 类型 + */ + private String thContentType; + + /** + * 文件所属对象id + */ + private String objectId; + + /** + * 文件所属对象类型,例如用户头像,评价图片 + */ + private String objectType; + + /** + * 文件元数据 + */ + private Map metadata; + + /** + * 文件用户元数据 + */ + private Map userMetadata; + + /** + * 缩略图元数据 + */ + private Map thMetadata; + + /** + * 缩略图用户元数据 + */ + private Map thUserMetadata; + + /** + * 附加属性字典 + */ + private Dict attr; + + /** + * 文件的访问控制列表,一般情况下只有对象存储支持该功能,支持 String 或对应存储平台的 ACL 对象 + *
+     * //方式一,通过字符串设置通用的 ACL 详情:{@link Constant.ACL }
+     * setFileAcl(ACL.PUBLIC_READ);
+     * //方式二,针对指定存储平台设置更复杂的权限控制,以华为云 OBS 为例
+     * AccessControlList acl = new AccessControlList();
+     * Owner owner = new Owner();
+     * owner.setId("ownerid");
+     * acl.setOwner(owner);
+     * // 保留Owner的完全控制权限(注:如果不设置该权限,该对象Owner自身将没有访问权限)
+     * acl.grantPermission(new CanonicalGrantee("ownerid"), Permission.PERMISSION_FULL_CONTROL);
+     * // 为指定用户设置完全控制权限
+     * acl.grantPermission(new CanonicalGrantee("userid"), Permission.PERMISSION_FULL_CONTROL);
+     * // 为所有用户设置读权限
+     * acl.grantPermission(GroupGrantee.ALL_USERS, Permission.PERMISSION_READ);
+     * setFileAcl(acl);
+     * 
+     */
+    private Object fileAcl;
+
+    /**
+     * 缩略图的访问控制列表,一般情况下只有对象存储支持该功能
+     * 详情见{@link FileInfo#setFileAcl}
+     */
+    private Object thFileAcl;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+
+    /**
+     * 文件大小
+     */
+    public String getFileSize() {
+        return FileUtil.readableFileSize(size);
+    }
+
+}
diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/entity/UpdateFileInfo.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/entity/UpdateFileInfo.java
deleted file mode 100644
index 10f8a7cabb4660205c24cb9a6170711b02233dd3..0000000000000000000000000000000000000000
--- a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/entity/UpdateFileInfo.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package cn.bootx.platform.starter.file.entity;
-
-import cn.bootx.platform.starter.file.convert.FileConvert;
-import cn.bootx.platform.common.core.function.EntityBaseFunction;
-import cn.bootx.platform.common.mybatisplus.base.MpIdEntity;
-import cn.bootx.platform.starter.file.dto.UpdateFileDto;
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.time.LocalDateTime;
-
-/**
- * 上传文件信息
- *
- * @author xxm
- * @since 2022/1/12
- */
-@EqualsAndHashCode(callSuper = true)
-@Data
-@Accessors(chain = true)
-@TableName("starter_file_upload_info")
-public class UpdateFileInfo extends MpIdEntity implements EntityBaseFunction {
-
-    /** 存储位置 */
-    private String filePath;
-
-    /** 文件名称 */
-    private String fileName;
-
-    /** 文件类型 */
-    private String fileType;
-
-    /** 文件后缀 */
-    private String fileSuffix;
-
-    /** 文件大小 */
-    private Long fileSize;
-
-    /** 外部存储id */
-    private String externalStorageId;
-
-    /** 创建者ID */
-    @TableField(fill = FieldFill.INSERT)
-    private Long creator;
-
-    /** 创建时间 */
-    @TableField(fill = FieldFill.INSERT)
-    private LocalDateTime createTime;
-
-    @Override
-    public UpdateFileDto toDto() {
-        return FileConvert.CONVERT.convert(this);
-    }
-
-}
diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/entity/UploadFileContext.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/entity/UploadFileContext.java
deleted file mode 100644
index 442a4d54cc848b668007180836ea45dbf5314cf0..0000000000000000000000000000000000000000
--- a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/entity/UploadFileContext.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package cn.bootx.platform.starter.file.entity;
-
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-/**
- * 上传文件上下文
- *
- * @author xxm
- * @since 2022/1/20
- */
-@Data
-@Accessors(chain = true)
-public class UploadFileContext {
-
-    /** 文件id */
-    private Long fileId;
-
-    /** 文件名称 */
-    private String fileName;
-
-    /** 文件后缀名 */
-    private String fileSuffix;
-
-}
diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/entity/UploadFileInfo.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/entity/UploadFileInfo.java
new file mode 100644
index 0000000000000000000000000000000000000000..44db35a2cf24033ac8b733257aea5a95ae100c2d
--- /dev/null
+++ b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/entity/UploadFileInfo.java
@@ -0,0 +1,190 @@
+package cn.bootx.platform.starter.file.entity;
+
+import cn.bootx.platform.common.core.function.EntityBaseFunction;
+import cn.bootx.platform.common.mybatisplus.base.MpIdEntity;
+import cn.bootx.platform.common.mybatisplus.handler.JacksonRawTypeHandler;
+import cn.bootx.platform.starter.file.convert.FileConvert;
+import cn.bootx.platform.starter.file.dto.UploadFileDto;
+import cn.hutool.core.lang.Dict;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.dromara.x.file.storage.core.FileInfo;
+import org.dromara.x.file.storage.core.constant.Constant;
+
+import java.time.LocalDateTime;
+import java.util.Map;
+
+/**
+ * 上传文件信息
+ *
+ * @author xxm
+ * @since 2022/1/12
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@Accessors(chain = true)
+@TableName(value = "starter_file_upload_info", autoResultMap = true)
+public class UploadFileInfo extends MpIdEntity implements EntityBaseFunction {
+
+    /**
+     * 文件访问地址
+     */
+    private String url;
+
+    /**
+     * 文件大小,单位字节
+     */
+    private Long size;
+
+    /**
+     * 文件名称
+     */
+    private String filename;
+
+    /**
+     * 原始文件名
+     */
+    private String originalFilename;
+
+    /**
+     * 基础存储路径
+     */
+    private String basePath;
+
+    /**
+     * 存储路径
+     */
+    private String path;
+
+    /**
+     * 文件扩展名
+     */
+    private String ext;
+
+    /**
+     * MIME 类型
+     */
+    private String contentType;
+
+    /**
+     * 存储平台
+     */
+    private String platform;
+
+    /**
+     * 缩略图访问路径
+     */
+    private String thUrl;
+
+    /**
+     * 缩略图名称
+     */
+    private String thFilename;
+
+    /**
+     * 缩略图大小,单位字节
+     */
+    private Long thSize;
+
+    /**
+     * 缩略图 MIME 类型
+     */
+    private String thContentType;
+
+    /**
+     * 文件所属对象id
+     */
+    private String objectId;
+
+    /**
+     * 文件所属对象类型,例如用户头像,评价图片
+     */
+    private String objectType;
+
+    /**
+     * 文件元数据
+     */
+    @TableField(typeHandler = JacksonRawTypeHandler.class)
+    private Map metadata;
+
+    /**
+     * 文件用户元数据
+     */
+    @TableField(typeHandler = JacksonRawTypeHandler.class)
+    private Map userMetadata;
+
+    /**
+     * 缩略图元数据
+     */
+    @TableField(typeHandler = JacksonRawTypeHandler.class)
+    private Map thMetadata;
+
+    /**
+     * 缩略图用户元数据
+     */
+    @TableField(typeHandler = JacksonRawTypeHandler.class)
+    private Map thUserMetadata;
+
+    /**
+     * 附加属性字典
+     */
+    @TableField(typeHandler = JacksonRawTypeHandler.class)
+    private Dict attr;
+
+    /**
+     * 文件的访问控制列表,一般情况下只有对象存储支持该功能,支持 String 或对应存储平台的 ACL 对象
+     * 
+     * //方式一,通过字符串设置通用的 ACL 详情:{@link Constant.ACL }
+     * setFileAcl(ACL.PUBLIC_READ);
+     * //方式二,针对指定存储平台设置更复杂的权限控制,以华为云 OBS 为例
+     * AccessControlList acl = new AccessControlList();
+     * Owner owner = new Owner();
+     * owner.setId("ownerid");
+     * acl.setOwner(owner);
+     * // 保留Owner的完全控制权限(注:如果不设置该权限,该对象Owner自身将没有访问权限)
+     * acl.grantPermission(new CanonicalGrantee("ownerid"), Permission.PERMISSION_FULL_CONTROL);
+     * // 为指定用户设置完全控制权限
+     * acl.grantPermission(new CanonicalGrantee("userid"), Permission.PERMISSION_FULL_CONTROL);
+     * // 为所有用户设置读权限
+     * acl.grantPermission(GroupGrantee.ALL_USERS, Permission.PERMISSION_READ);
+     * setFileAcl(acl);
+     * 
+     */
+    @TableField(typeHandler = JacksonRawTypeHandler.class)
+    private Object fileAcl;
+
+    /**
+     * 缩略图的访问控制列表,一般情况下只有对象存储支持该功能
+     * 详情见{@link FileInfo#setFileAcl}
+     */
+    @TableField(typeHandler = JacksonRawTypeHandler.class)
+    private Object thFileAcl;
+
+    /** 创建时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @Override
+    public UploadFileDto toDto() {
+        return FileConvert.CONVERT.convert(this);
+    }
+
+    /**
+     * 初始化创建
+     */
+    public static UploadFileInfo init(FileInfo fileInfo){
+        return FileConvert.CONVERT.convert(fileInfo);
+    }
+
+    /**
+     * 转换为 x.file.storage 的文件信息对象
+     */
+    public FileInfo toFileInfo(){
+        return FileConvert.CONVERT.toFileInfo(this);
+    }
+
+}
diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/handler/FileDetailRecordHandler.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/handler/FileDetailRecordHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..ce5048eb7f2acf8679c9ee327177c69a901fbb7d
--- /dev/null
+++ b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/handler/FileDetailRecordHandler.java
@@ -0,0 +1,58 @@
+package cn.bootx.platform.starter.file.handler;
+
+import cn.bootx.platform.common.core.exception.BizException;
+import cn.bootx.platform.starter.file.dao.UploadFileManager;
+import cn.bootx.platform.starter.file.entity.UploadFileInfo;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.x.file.storage.core.FileInfo;
+import org.dromara.x.file.storage.core.recorder.FileRecorder;
+import org.springframework.stereotype.Service;
+
+/**
+ * x.file.storage 文件上传信息储存
+ * @author xxm
+ * @since 2023/11/13
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class FileDetailRecordHandler implements FileRecorder {
+    private final UploadFileManager uploadFileManager;
+
+    /**
+     * 保存文件记录
+     */
+    @Override
+    public boolean save(FileInfo fileInfo) {
+        UploadFileInfo save = uploadFileManager.save(UploadFileInfo.init(fileInfo));
+        fileInfo.setId(String.valueOf(save.getId()));
+        return true;
+    }
+
+    /**
+     * 根据 ID(Long) 获取文件记录, 注意不是根据URL
+     */
+    @Override
+    public FileInfo getByUrl(String url) {
+        try {
+            Long id = Long.valueOf(url);
+            return uploadFileManager.findById(id).map(UploadFileInfo::toFileInfo).orElse(null);
+        } catch (NumberFormatException e) {
+            throw new BizException("URL是文件的ID,注意不要传错参数");
+        }
+    }
+
+    /**
+     * 根据  ID(Long) 删除文件记录, 注意不是根据URL
+     */
+    @Override
+    public boolean delete(String url) {
+        try {
+            Long id = Long.valueOf(url);
+            return uploadFileManager.deleteById(id);
+        } catch (NumberFormatException e) {
+            return false;
+        }
+    }
+}
diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/FileUploadService.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/FileUploadService.java
index 7d1a712692508240b0922485e76be5aed535495b..5a9daa1749ee79c0b514f5949a1eb370c4c982e1 100644
--- a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/FileUploadService.java
+++ b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/FileUploadService.java
@@ -1,26 +1,25 @@
 package cn.bootx.platform.starter.file.service;
 
-import cn.bootx.platform.starter.file.code.FileUploadTypeEnum;
-import cn.bootx.platform.starter.file.configuration.FileUploadProperties;
-import cn.bootx.platform.common.core.exception.BizException;
-import cn.bootx.platform.common.core.function.ParamService;
+import cn.bootx.platform.common.core.exception.DataNotExistException;
 import cn.bootx.platform.common.core.rest.PageResult;
 import cn.bootx.platform.common.core.rest.param.PageParam;
 import cn.bootx.platform.common.mybatisplus.util.MpUtil;
-import cn.bootx.platform.starter.file.dao.UpdateFileManager;
-import cn.bootx.platform.starter.file.dto.UpLoadOptions;
-import cn.bootx.platform.starter.file.dto.UpdateFileDto;
-import cn.bootx.platform.starter.file.entity.UpdateFileInfo;
-import cn.bootx.platform.starter.file.entity.UploadFileContext;
-import cn.bootx.platform.starter.file.service.impl.OssUploadService;
-import cn.bootx.platform.starter.file.service.impl.TencentOssUploadService;
-import cn.hutool.core.io.FileTypeUtil;
+import cn.bootx.platform.starter.file.UploadFileParam;
+import cn.bootx.platform.starter.file.configuration.FileUploadProperties;
+import cn.bootx.platform.starter.file.convert.FileConvert;
+import cn.bootx.platform.starter.file.dao.UploadFileManager;
+import cn.bootx.platform.starter.file.dto.UploadFileDto;
+import cn.bootx.platform.starter.file.entity.UploadFileInfo;
 import cn.hutool.core.io.IoUtil;
-import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.CharsetUtil;
 import cn.hutool.core.util.StrUtil;
 import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import lombok.val;
+import org.dromara.x.file.storage.core.FileInfo;
+import org.dromara.x.file.storage.core.FileStorageService;
+import org.dromara.x.file.storage.core.UploadPretreatment;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
@@ -29,11 +28,10 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-import java.util.List;
+import java.io.ByteArrayInputStream;
+import java.net.URLEncoder;
 
 /**
  * 文件上传管理类
@@ -45,50 +43,24 @@ import java.util.List;
 @Service
 @RequiredArgsConstructor
 public class FileUploadService {
-
-    private final List uploadServices;
-
-    private final UpdateFileManager updateFileManager;
-
+    private final UploadFileManager uploadFileManager;
+    private final FileStorageService fileStorageService;
     private final FileUploadProperties fileUploadProperties;
 
-    private final ParamService paramService;
-
     /**
-     * 文件上传
-     * @param file 文件
-     * @param fileName 文件名称
+     * 分页
      */
-    @Transactional(rollbackFor = Exception.class)
-    public UpdateFileDto upload(MultipartFile file, String fileName) throws IOException {
-        val uploadType = fileUploadProperties.getUploadType();
-        UploadService uploadService = uploadServices.stream()
-            .filter(s -> s.enable(uploadType))
-            .findFirst()
-            .orElseThrow(() -> new BizException("未找到该类的上传处理器"));
-        if (file.isEmpty()) {
-            throw new BizException("文件不可为空");
-        }
-        // 上传文件信息
-        if (StrUtil.isBlank(fileName)) {
-            fileName = file.getOriginalFilename();
-        }
-        String fileType = FileTypeUtil.getType(file.getInputStream(), fileName);
-        String fileSuffix = fileType;
-
-        // 获取不到类型名,后缀名使用上传文件名称的后缀
-        if (StrUtil.isBlank(fileSuffix)) {
-            fileSuffix = StrUtil.subAfter(fileName, ".", true);
-        }
-        UploadFileContext context = new UploadFileContext().setFileId(IdUtil.getSnowflakeNextId())
-            .setFileName(fileName)
-            .setFileSuffix(fileSuffix);
+    public PageResult page(PageParam pageParam, UploadFileParam param) {
+        return MpUtil.convert2DtoPageResult(uploadFileManager.page(pageParam,param));
+    }
 
-        UpdateFileInfo uploadInfo = uploadService.upload(file, context);
-        uploadInfo.setFileSuffix(fileSuffix).setFileType(fileType).setFileName(fileName);
-        uploadInfo.setId(context.getFileId());
-        updateFileManager.save(uploadInfo);
-        return uploadInfo.toDto();
+    /**
+     * 获取单条详情
+     */
+    public UploadFileDto findById(Long id){
+        return uploadFileManager.findById(id)
+                .map(UploadFileInfo::toDto)
+               .orElseThrow(DataNotExistException::new);
     }
 
     /**
@@ -96,74 +68,66 @@ public class FileUploadService {
      */
     @Transactional(rollbackFor = Exception.class)
     public void delete(Long id){
-        val uploadType = fileUploadProperties.getUploadType();
-        UploadService uploadService = uploadServices.stream()
-                .filter(s -> s.enable(uploadType))
-                .findFirst()
-                .orElseThrow(() -> new BizException("未找到该类的上传处理器"));
-        UpdateFileInfo updateFileInfo = updateFileManager.findById(id).orElseThrow(() -> new BizException("文件不存在"));
-        uploadService.delete(updateFileInfo);
-        updateFileManager.deleteById(updateFileInfo.getId());
+        UploadFileInfo uploadFileInfo = uploadFileManager.findById(id)
+                .orElseThrow(DataNotExistException::new);
+        fileStorageService.delete(FileConvert.CONVERT.toFileInfo(uploadFileInfo));
+    }
+
+    /**
+     * 文件上传
+     * @param file 文件
+     * @param fileName 文件名称
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public UploadFileDto upload(MultipartFile file, String fileName) {
+        UploadPretreatment uploadPretreatment = fileStorageService.of(file);
+        if (StrUtil.isNotBlank(fileName)){
+            uploadPretreatment.setOriginalFilename(fileName);
+        }
+        FileInfo upload =uploadPretreatment.upload();
+        return FileConvert.CONVERT.toDto(upload);
     }
 
     /**
      * 浏览
      */
+    @SneakyThrows
     public void preview(Long id, HttpServletResponse response) {
-        val uploadType = fileUploadProperties.getUploadType();
-        UploadService uploadService = uploadServices.stream()
-            .filter(s -> s.enable(uploadType))
-            .findFirst()
-            .orElseThrow(() -> new BizException("未找到该类的上传处理器"));
-        UpdateFileInfo updateFileInfo = updateFileManager.findById(id).orElseThrow(() -> new BizException("文件不存在"));
-        uploadService.preview(updateFileInfo, response);
+        FileInfo info = fileStorageService.getFileInfoByUrl(String.valueOf(id));
+        byte[] bytes = fileStorageService.download(info).bytes();
+        val is = new ByteArrayInputStream(bytes);
+        // 获取响应输出流
+        ServletOutputStream os = response.getOutputStream();
+        IoUtil.copy(is, os);
+        response.addHeader(HttpHeaders.CONTENT_DISPOSITION, info.getContentType());
+        IoUtil.close(is);
+        IoUtil.close(os);
     }
 
     /**
      * 文件下载
      */
+    @SneakyThrows
     public ResponseEntity download(Long id) {
-        val uploadType = fileUploadProperties.getUploadType();
-        UploadService uploadService = uploadServices.stream()
-            .filter(s -> s.enable(uploadType))
-            .findFirst()
-            .orElseThrow(() -> new BizException("未找到该类文件的处理器"));
-        UpdateFileInfo updateFileInfo = updateFileManager.findById(id).orElseThrow(() -> new BizException("文件不存在"));
-        InputStream inputStream = uploadService.download(updateFileInfo);
+        FileInfo fileInfo = fileStorageService.getFileInfoByUrl(String.valueOf(id));
+        byte[] bytes = fileStorageService.download(fileInfo).bytes();
         // 设置header信息
         HttpHeaders headers = new HttpHeaders();
         headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
-        headers.setContentDispositionFormData("attachment",
-                new String(updateFileInfo.getFileName().getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1));
-        return new ResponseEntity<>(IoUtil.readBytes(inputStream), headers, HttpStatus.OK);
-    }
-
-    /**
-     * 获取文件字节数组
-     */
-    public byte[] getFileBytes(Long id) {
-        val uploadType = fileUploadProperties.getUploadType();
-        UploadService uploadService = uploadServices.stream()
-            .filter(s -> s.enable(uploadType))
-            .findFirst()
-            .orElseThrow(() -> new BizException("未找到该类文件的处理器"));
-        UpdateFileInfo updateFileInfo = updateFileManager.findById(id).orElseThrow(() -> new BizException("文件不存在"));
-        InputStream inputStream = uploadService.download(updateFileInfo);
-        return IoUtil.readBytes(inputStream);
-    }
-
-    /**
-     * 分页
-     */
-    public PageResult page(PageParam pageParam) {
-        return MpUtil.convert2DtoPageResult(updateFileManager.page(pageParam));
+        String fileName = fileInfo.getOriginalFilename();
+        headers.setContentDispositionFormData("attachment", URLEncoder.encode(fileName, CharsetUtil.UTF_8));
+        return new ResponseEntity<>(bytes,headers,HttpStatus.OK);
     }
 
     /**
      * 获取文件预览地址
      */
     public String getFilePreviewUrl(Long id) {
-        return this.getServerUrl() + "/file/preview/" + id;
+        if (fileUploadProperties.isServiceProxy()){
+            return this.getServerUrl() + "/file/preview/" + id;
+        } else {
+            return "";
+        }
     }
 
     /**
@@ -177,33 +141,17 @@ public class FileUploadService {
      * 获取文件地址
      */
     public String getFileDownloadUrl(Long id) {
-        return this.getServerUrl() + "/file/download/" + id;
+        if (fileUploadProperties.isServiceProxy()){
+            return this.getServerUrl() + "/file/download/" + id;
+        } else {
+            return "";
+        }
     }
 
     /**
      * 服务地址
      */
     private String getServerUrl() {
-        String serverUrl = paramService.getValue("FileServerUrl");
-        if (StrUtil.isBlank(serverUrl)) {
-            serverUrl = fileUploadProperties.getServerUrl();
-        }
-        return serverUrl;
-    }
-
-    public UpLoadOptions getTempCredentials() {
-
-        TencentOssUploadService ossUploadService=(TencentOssUploadService)uploadServices.stream().filter(s -> s.enable(FileUploadTypeEnum.TENCENT_OSS))
-                .findFirst().orElseThrow(() -> new BizException("未找到该类文件的处理器"));
-
-        return ossUploadService.getTemplateCredential();
-
-    }
-
-    public UpdateFileDto saveUploadResult(UpdateFileInfo uploadInfo) {
-
-        uploadInfo.setId(IdUtil.getSnowflakeNextId());
-        updateFileManager.save(uploadInfo);
-        return uploadInfo.toDto();
+        return fileUploadProperties.getServerUrl();
     }
 }
diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/UploadService.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/UploadService.java
deleted file mode 100644
index e3e818dfddca865b121b8567b473eecc0334a147..0000000000000000000000000000000000000000
--- a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/UploadService.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package cn.bootx.platform.starter.file.service;
-
-import cn.bootx.platform.starter.file.code.FileUploadTypeEnum;
-import cn.bootx.platform.starter.file.entity.UpdateFileInfo;
-import cn.bootx.platform.starter.file.entity.UploadFileContext;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.InputStream;
-
-/**
- * 文件上传接口
- *
- * @author xxm
- * @since 2022/1/14
- */
-public interface UploadService {
-
-    /**
-     * 判断启用
-     */
-    boolean enable(FileUploadTypeEnum type);
-
-    /**
-     * 上传文件
-     */
-    UpdateFileInfo upload(MultipartFile file, UploadFileContext context);
-
-    /**
-     * 预览文件
-     */
-    void preview(UpdateFileInfo updateFileInfo, HttpServletResponse response);
-
-    /**
-     * 下载文件
-     */
-    InputStream download(UpdateFileInfo updateFileInfo);
-
-    /**
-     * 删除文件
-     */
-    void delete(UpdateFileInfo updateFileInfo);
-
-}
diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/impl/JdbcUploadService.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/impl/JdbcUploadService.java
deleted file mode 100644
index 8e57479abf63f57d36cebfebe2b1e56785ce6340..0000000000000000000000000000000000000000
--- a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/impl/JdbcUploadService.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package cn.bootx.platform.starter.file.service.impl;
-
-import cn.bootx.platform.common.core.exception.DataNotExistException;
-import cn.bootx.platform.starter.file.code.FileUploadTypeEnum;
-import cn.bootx.platform.starter.file.configuration.FileUploadProperties;
-import cn.bootx.platform.starter.file.dao.JdbcFileDataManager;
-import cn.bootx.platform.starter.file.entity.JdbcFileData;
-import cn.bootx.platform.starter.file.entity.UpdateFileInfo;
-import cn.bootx.platform.starter.file.entity.UploadFileContext;
-import cn.bootx.platform.starter.file.service.UploadService;
-import cn.hutool.core.codec.Base64;
-import cn.hutool.core.io.IoUtil;
-import lombok.RequiredArgsConstructor;
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.http.HttpHeaders;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-
-/**
- * 数据库存储上传文件
- * @author xxm
- * @since 2023/8/5
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class JdbcUploadService implements UploadService {
-    private final JdbcFileDataManager jdbcFileDataManager;
-
-    private final FileUploadProperties fileUploadProperties;
-
-    /**
-     * 判断启用
-     */
-    @Override
-    public boolean enable(FileUploadTypeEnum type) {
-        return type==FileUploadTypeEnum.JDBC;
-    }
-
-    /**
-     * 上传文件
-     *
-     * @param file
-     * @param context
-     */
-    @SneakyThrows
-    @Override
-    public UpdateFileInfo upload(MultipartFile file, UploadFileContext context) {
-        FileUploadProperties.JDBC jdbc = fileUploadProperties.getJdbc();
-        JdbcFileData jdbcFileData;
-        byte[] bytes = file.getBytes();
-        if (jdbc.isBase64()){
-            jdbcFileData =new JdbcFileData().setBase64(Base64.encode(bytes));
-        } else {
-            jdbcFileData =new JdbcFileData().setData(bytes);
-        }
-        jdbcFileDataManager.save(jdbcFileData);
-        return new UpdateFileInfo().setExternalStorageId(String.valueOf(jdbcFileData.getId())).setFileSize(file.getSize());
-    }
-
-    /**
-     * 预览文件
-     */
-    @SneakyThrows
-    @Override
-    public void preview(UpdateFileInfo updateFileInfo, HttpServletResponse response) {
-        FileUploadProperties.JDBC jdbc = fileUploadProperties.getJdbc();
-        Long id = Long.valueOf(updateFileInfo.getExternalStorageId());
-        JdbcFileData jdbcFileData = jdbcFileDataManager.findById(id)
-                .orElseThrow(DataNotExistException::new);
-        InputStream inputStream;
-        if (jdbc.isBase64()){
-            inputStream = new ByteArrayInputStream(Base64.decode(jdbcFileData.getBase64()));
-        } else {
-            inputStream = new ByteArrayInputStream(jdbcFileData.getData());
-        }
-
-        // 获取响应输出流
-        ServletOutputStream os = response.getOutputStream();
-        IoUtil.copy(inputStream, os);
-        response.addHeader(HttpHeaders.CONTENT_DISPOSITION, updateFileInfo.getFileType());
-        IoUtil.close(inputStream);
-        IoUtil.close(os);
-
-    }
-
-    /**
-     * 下载文件
-     */
-    @Override
-    public InputStream download(UpdateFileInfo updateFileInfo) {
-        FileUploadProperties.JDBC jdbc = fileUploadProperties.getJdbc();
-        Long id = Long.valueOf(updateFileInfo.getExternalStorageId());
-        JdbcFileData jdbcFileData = jdbcFileDataManager.findById(id)
-                .orElseThrow(DataNotExistException::new);
-        if (jdbc.isBase64()){
-            return new ByteArrayInputStream(Base64.decode(jdbcFileData.getBase64()));
-        } else {
-            return new ByteArrayInputStream(jdbcFileData.getData());
-        }
-    }
-
-    /**
-     * 删除文件
-     */
-    @Override
-    public void delete(UpdateFileInfo updateFileInfo) {
-        Long id = Long.valueOf(updateFileInfo.getExternalStorageId());
-        jdbcFileDataManager.deleteById(id);
-    }
-}
diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/impl/LocalUploadService.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/impl/LocalUploadService.java
deleted file mode 100644
index 4cdbf72b20baae134d3a9b16a5f34469ac1dd8fa..0000000000000000000000000000000000000000
--- a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/impl/LocalUploadService.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package cn.bootx.platform.starter.file.service.impl;
-
-import cn.bootx.platform.starter.file.configuration.FileUploadProperties;
-import cn.bootx.platform.common.core.exception.BizException;
-import cn.bootx.platform.starter.file.code.FileUploadTypeEnum;
-import cn.bootx.platform.starter.file.entity.UpdateFileInfo;
-import cn.bootx.platform.starter.file.entity.UploadFileContext;
-import cn.bootx.platform.starter.file.service.UploadService;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.io.IoUtil;
-import cn.hutool.core.util.IdUtil;
-import lombok.RequiredArgsConstructor;
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.http.HttpHeaders;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.nio.file.Files;
-import java.util.Optional;
-
-/**
- * 上传文件本地存储
- *
- * @author xxm
- * @since 2022/1/12
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class LocalUploadService implements UploadService {
-
-    private final FileUploadProperties fileUploadProperties;
-
-    @Override
-    public boolean enable(FileUploadTypeEnum type) {
-        return type == FileUploadTypeEnum.LOCAL;
-    }
-
-    /**
-     * 文件上传
-     */
-    @SneakyThrows
-    @Override
-    public UpdateFileInfo upload(MultipartFile file, UploadFileContext context) {
-        String fileSuffix = Optional.ofNullable(context.getFileSuffix()).map(s -> "." + s).orElse("");
-        String filePath = DateUtil.today() + "/" + IdUtil.getSnowflakeNextIdStr() + fileSuffix;
-        String storePath = fileUploadProperties.getLocal().getLocalPath() + filePath;
-        FileUtil.writeFromStream(file.getInputStream(), storePath);
-        return new UpdateFileInfo().setFilePath(filePath).setFileSize(file.getSize());
-    }
-
-    /**
-     * 浏览
-     */
-    @SneakyThrows
-    @Override
-    public void preview(UpdateFileInfo updateFileInfo, HttpServletResponse response) {
-        String storePath = fileUploadProperties.getLocal().getLocalPath() + updateFileInfo.getFilePath();
-        File file = new File(storePath);
-        if (!file.exists()) {
-            throw new BizException("文件不存在");
-        }
-        FileInputStream is = new FileInputStream(file);
-        // 获取响应输出流
-        ServletOutputStream os = response.getOutputStream();
-        IoUtil.copy(is, os);
-        response.addHeader(HttpHeaders.CONTENT_DISPOSITION, updateFileInfo.getFileType());
-        IoUtil.close(is);
-        IoUtil.close(os);
-    }
-
-    /**
-     * 下载
-     */
-    @SneakyThrows
-    @Override
-    public InputStream download(UpdateFileInfo updateFileInfo) {
-        String storePath = fileUploadProperties.getLocal().getLocalPath() + updateFileInfo.getFilePath();
-        File file = new File(storePath);
-        if (!file.exists()) {
-            throw new BizException("文件不存在");
-        }
-        return Files.newInputStream(file.toPath());
-    }
-
-    /**
-     * 删除文件
-     */
-    @Override
-    public void delete(UpdateFileInfo updateFileInfo) {
-        String storePath = fileUploadProperties.getLocal().getLocalPath() + updateFileInfo.getFilePath();
-        FileUtil.del(storePath);
-    }
-
-}
diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/impl/MinioUploadService.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/impl/MinioUploadService.java
deleted file mode 100644
index 09d1b19551376ce6fdcc4b776c0fcf3e058842e1..0000000000000000000000000000000000000000
--- a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/impl/MinioUploadService.java
+++ /dev/null
@@ -1,130 +0,0 @@
-package cn.bootx.platform.starter.file.service.impl;
-
-import cn.bootx.platform.starter.file.configuration.FileUploadProperties;
-import cn.bootx.platform.starter.file.code.FileUploadTypeEnum;
-import cn.bootx.platform.starter.file.entity.UpdateFileInfo;
-import cn.bootx.platform.starter.file.entity.UploadFileContext;
-import cn.bootx.platform.starter.file.service.UploadService;
-import cn.hutool.core.io.IoUtil;
-import io.minio.*;
-import lombok.RequiredArgsConstructor;
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
-import org.springframework.http.HttpHeaders;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
-import java.io.InputStream;
-import java.util.Objects;
-
-/**
- * minio方式存储文件
- *
- * @author xxm
- * @since 2022/1/12
- */
-@Slf4j
-@Service
-@ConditionalOnMissingClass("io.minio.MinioClient")
-@RequiredArgsConstructor
-public class MinioUploadService implements UploadService {
-
-    private final FileUploadProperties fileUploadProperties;
-
-    private MinioClient client;
-
-    /**
-     * 判断启用
-     */
-    @Override
-    public boolean enable(FileUploadTypeEnum type) {
-        boolean initFlag = type == FileUploadTypeEnum.MINIO;
-        if (initFlag) {
-            this.doInit();
-        }
-        return initFlag;
-    }
-
-    /**
-     * 上传文件
-     */
-    @SneakyThrows
-    @Override
-    public UpdateFileInfo upload(MultipartFile file, UploadFileContext context) {
-        FileUploadProperties.Minio minio = fileUploadProperties.getMinio();
-        PutObjectArgs putObjectArgs = PutObjectArgs.builder()
-            .bucket(minio.getBucket()) // bucket必须传递
-            .contentType(file.getContentType())
-            .object(context.getFileId() + "." + context.getFileSuffix())
-            .stream(file.getInputStream(), file.getSize(), -1) // 文件内容
-            .build();
-        // 执行上传
-        client.putObject(putObjectArgs);
-        return new UpdateFileInfo().setExternalStorageId(putObjectArgs.object()).setFileSize(file.getSize());
-    }
-
-    /**
-     * 预览文件
-     */
-    @SneakyThrows
-    @Override
-    public void preview(UpdateFileInfo updateFileInfo, HttpServletResponse response) {
-        FileUploadProperties.Minio minio = fileUploadProperties.getMinio();
-        String storageId = updateFileInfo.getExternalStorageId();
-        GetObjectResponse inputStream = client
-            .getObject(GetObjectArgs.builder().bucket(minio.getBucket()).object(storageId).build());
-        // 获取响应输出流
-        ServletOutputStream os = response.getOutputStream();
-        IoUtil.copy(inputStream, os);
-        response.addHeader(HttpHeaders.CONTENT_DISPOSITION, updateFileInfo.getFileType());
-        IoUtil.close(inputStream);
-        IoUtil.close(os);
-    }
-
-    /**
-     * 下载文件
-     */
-    @SneakyThrows
-    @Override
-    public InputStream download(UpdateFileInfo updateFileInfo) {
-        FileUploadProperties.Minio minio = fileUploadProperties.getMinio();
-        String storageId = updateFileInfo.getExternalStorageId();
-        return client.getObject(GetObjectArgs.builder()
-            .bucket(minio.getBucket()) // bucket 必须传递
-            .object(storageId) // 相对路径作为 key
-            .build());
-    }
-
-    /**
-     * 删除文件
-     */
-    @SneakyThrows
-    @Override
-    public void delete(UpdateFileInfo updateFileInfo) {
-        FileUploadProperties.Minio minio = fileUploadProperties.getMinio();
-        client.removeObject(RemoveObjectArgs.builder()
-            .bucket(minio.getBucket()) // bucket必须传递
-            .object(updateFileInfo.getExternalStorageId()) // 相对路径作为 key
-            .build());
-    }
-
-    /**
-     * 初始化
-     */
-    protected void doInit() {
-        if (Objects.nonNull(client)) {
-            return;
-        }
-        FileUploadProperties.Minio minio = fileUploadProperties.getMinio();
-        // 初始化客户端
-        client = MinioClient.builder()
-            .endpoint(minio.getEndpoint()) // Endpoint URL
-            .region(minio.getRegion()) // Region
-            .credentials(minio.getAccessKey(), minio.getAccessSecret()) // 认证密钥
-            .build();
-    }
-
-}
diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/impl/MongoUploadService.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/impl/MongoUploadService.java
deleted file mode 100644
index f2ccbc86a3ba74403771e661fc7e70179df2aa6a..0000000000000000000000000000000000000000
--- a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/impl/MongoUploadService.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package cn.bootx.platform.starter.file.service.impl;
-
-import cn.bootx.platform.common.core.exception.DataNotExistException;
-import cn.bootx.platform.starter.file.code.FileUploadTypeEnum;
-import cn.bootx.platform.starter.file.entity.UpdateFileInfo;
-import cn.bootx.platform.starter.file.entity.UploadFileContext;
-import cn.bootx.platform.starter.file.service.UploadService;
-import cn.hutool.core.io.IoUtil;
-import com.mongodb.client.gridfs.model.GridFSFile;
-import lombok.RequiredArgsConstructor;
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
-import org.bson.types.ObjectId;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-import org.springframework.data.mongodb.core.query.Criteria;
-import org.springframework.data.mongodb.core.query.Query;
-import org.springframework.data.mongodb.gridfs.GridFsResource;
-import org.springframework.data.mongodb.gridfs.GridFsTemplate;
-import org.springframework.http.HttpHeaders;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
-import java.io.InputStream;
-import java.util.Optional;
-
-/**
- * mongo方式存储文件
- *
- * @author xxm
- * @since 2022/1/12
- */
-@Slf4j
-@Service
-@ConditionalOnClass(name="org.springframework.data.mongodb.gridfs.GridFsTemplate")
-@RequiredArgsConstructor
-public class MongoUploadService implements UploadService {
-
-    private final GridFsTemplate gridFsTemplate;
-
-    @Override
-    public boolean enable(FileUploadTypeEnum type) {
-        return type == FileUploadTypeEnum.MONGO;
-    }
-
-    /**
-     * 上传
-     */
-    @SneakyThrows
-    @Override
-    public UpdateFileInfo upload(MultipartFile file, UploadFileContext context) {
-        ObjectId store = gridFsTemplate.store(file.getInputStream(), context.getFileName(), file.getContentType());
-        return new UpdateFileInfo().setExternalStorageId(store.toString()).setFileSize(file.getSize());
-    }
-
-    @SneakyThrows
-    @Override
-    public void preview(UpdateFileInfo updateFileInfo, HttpServletResponse response) {
-        Criteria criteria = Criteria.where("_id").is(updateFileInfo.getExternalStorageId());
-        Query query = new Query(criteria);
-
-        GridFSFile gridFSFile = Optional.ofNullable(gridFsTemplate.findOne(query))
-            .orElseThrow(DataNotExistException::new);
-        GridFsResource resource = gridFsTemplate.getResource(gridFSFile);
-        InputStream inputStream = resource.getInputStream();
-
-        // 获取响应输出流
-        ServletOutputStream os = response.getOutputStream();
-        IoUtil.copy(inputStream, os);
-        response.addHeader(HttpHeaders.CONTENT_DISPOSITION, updateFileInfo.getFileType());
-        IoUtil.close(inputStream);
-        IoUtil.close(os);
-    }
-
-    @SneakyThrows
-    @Override
-    public InputStream download(UpdateFileInfo updateFileInfo) {
-        Criteria criteria = Criteria.where("_id").is(new ObjectId(updateFileInfo.getExternalStorageId()));
-        Query query = new Query(criteria);
-
-        GridFSFile gridFSFile = Optional.ofNullable(gridFsTemplate.findOne(query))
-            .orElseThrow(DataNotExistException::new);
-        GridFsResource resource = gridFsTemplate.getResource(gridFSFile);
-        return resource.getInputStream();
-    }
-
-    /**
-     * 删除文件
-     */
-    @Override
-    public void delete(UpdateFileInfo updateFileInfo) {
-        Criteria criteria = Criteria.where("_id").is(new ObjectId(updateFileInfo.getExternalStorageId()));
-        Query query = new Query(criteria);
-        gridFsTemplate.delete(query);
-    }
-
-}
diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/impl/TencentOssUploadService.java b/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/impl/TencentOssUploadService.java
deleted file mode 100644
index efd397fc24b18047fa2fb9f891b6611794bb585d..0000000000000000000000000000000000000000
--- a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/impl/TencentOssUploadService.java
+++ /dev/null
@@ -1,248 +0,0 @@
-package cn.bootx.platform.starter.file.service.impl;
-
-import cn.bootx.platform.common.core.exception.BizException;
-import cn.bootx.platform.common.jackson.util.JacksonUtil;
-import cn.bootx.platform.starter.file.code.FileUploadTypeEnum;
-import cn.bootx.platform.starter.file.configuration.FileUploadProperties;
-import cn.bootx.platform.starter.file.dto.UpLoadOptions;
-import cn.bootx.platform.starter.file.entity.UpdateFileInfo;
-import cn.bootx.platform.starter.file.entity.UploadFileContext;
-import cn.bootx.platform.starter.file.service.UploadService;
-import cn.hutool.core.codec.Base64Encoder;
-import cn.hutool.core.date.LocalDateTimeUtil;
-import cn.hutool.crypto.SecureUtil;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.qcloud.cos.COSClient;
-import com.qcloud.cos.ClientConfig;
-import com.qcloud.cos.auth.BasicCOSCredentials;
-import com.qcloud.cos.auth.COSCredentials;
-import com.qcloud.cos.exception.CosClientException;
-import com.qcloud.cos.http.HttpMethodName;
-import com.qcloud.cos.http.HttpProtocol;
-import com.qcloud.cos.model.GeneratePresignedUrlRequest;
-import com.qcloud.cos.model.ObjectMetadata;
-import com.qcloud.cos.model.PutObjectRequest;
-import com.qcloud.cos.model.UploadResult;
-import com.qcloud.cos.region.Region;
-import com.qcloud.cos.transfer.TransferManager;
-import com.qcloud.cos.transfer.TransferManagerConfiguration;
-import com.qcloud.cos.transfer.Upload;
-import com.tencent.cloud.CosStsClient;
-import com.tencent.cloud.Response;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.util.Date;
-import java.util.Objects;
-import java.util.TreeMap;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import static java.time.temporal.ChronoUnit.MINUTES;
-
-/**
- * 阿里云OSS上传文件
- *
- * @author xxm
- * @since 2022/1/12
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class TencentOssUploadService implements UploadService {
-    private final FileUploadProperties fileUploadProperties;
-
-    private final ObjectMapper objectMapper;
-
-    COSClient client;
-    TransferManager transferManager;
-
-    @Override
-    public boolean enable(FileUploadTypeEnum type) {
-        boolean initFlag = type == FileUploadTypeEnum.TENCENT_OSS;
-        if (initFlag) {
-            this.doInit();
-        }
-        return initFlag;
-    }
-
-    @Override
-    public UpdateFileInfo upload(MultipartFile file, UploadFileContext context) {
-        FileUploadProperties.TencentOss oss = fileUploadProperties.getTencentOss();
-        ObjectMetadata objectMetadata = new ObjectMetadata();
-        objectMetadata.setContentLength(file.getSize());
-        PutObjectRequest putObjectRequest;
-        UploadResult uploadResult;
-        try {
-            putObjectRequest = new PutObjectRequest(oss.getBucket(), context.getFileId().toString(), file.getInputStream(), objectMetadata);
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-        try {
-            // 高级接口会返回一个异步结果Upload
-            // 可同步地调用 waitForUploadResult 方法等待上传完成,成功返回 UploadResult, 失败抛出异常
-            Upload upload = transferManager.upload(putObjectRequest);
-            uploadResult = upload.waitForUploadResult();
-        } catch (CosClientException | InterruptedException e) {
-            e.printStackTrace();
-            log.error("上传失败,原因:", e);
-            throw new BizException("上传失败");
-        }
-
-        return new UpdateFileInfo().setExternalStorageId(uploadResult.getKey()).setFileSize(file.getSize());
-    }
-
-    @Override
-    public void preview(UpdateFileInfo updateFileInfo, HttpServletResponse response) {
-        FileUploadProperties.TencentOss oss = fileUploadProperties.getTencentOss();
-        String key = updateFileInfo.getExternalStorageId();
-        GeneratePresignedUrlRequest req =
-                new GeneratePresignedUrlRequest(oss.getBucket(), key, HttpMethodName.GET);
-        Date expirationDate = new Date(System.currentTimeMillis() + 30L * 60L * 1000L);
-        req.setExpiration(expirationDate);
-        URL url = client.generatePresignedUrl(req);
-        try {
-            response.sendRedirect(url.toString());
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    @Override
-    public InputStream download(UpdateFileInfo updateFileInfo) {
-        FileUploadProperties.TencentOss oss = fileUploadProperties.getTencentOss();
-        String key = updateFileInfo.getExternalStorageId();
-        GeneratePresignedUrlRequest req =
-                new GeneratePresignedUrlRequest(oss.getBucket(), key, HttpMethodName.GET);
-        Date expirationDate = new Date(System.currentTimeMillis() + 30L * 60L * 1000L);
-        req.setExpiration(expirationDate);
-        URL url = client.generatePresignedUrl(req);
-        try {
-            return url.openStream();
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    @Override
-    public void delete(UpdateFileInfo updateFileInfo) {
-        FileUploadProperties.TencentOss oss = fileUploadProperties.getTencentOss();
-        client.deleteObject(oss.getBucket(), updateFileInfo.getFileName());
-    }
-
-    public UpLoadOptions getTemplateCredential() {
-        UpLoadOptions options;
-        FileUploadProperties.TencentOss oss = fileUploadProperties.getTencentOss();
-        TreeMap config = new TreeMap();
-        config.put("secretId", oss.getSecretId());
-        config.put("secretKey", oss.getSecretKey());
-        config.put("durationSeconds", 1800);
-        config.put("bucket", oss.getBucket());
-        config.put("region", oss.getRegion());
-        config.put("allowPrefixes", new String[]{
-                "bootx/*"
-        });
-
-        String[] allowActions = new String[]{
-                // 简单上传
-                "name/cos:PutObject",
-                // 表单上传、小程序上传
-                "name/cos:PostObject",
-                // 分块上传
-                "name/cos:InitiateMultipartUpload",
-                "name/cos:ListMultipartUploads",
-                "name/cos:ListParts",
-                "name/cos:UploadPart",
-                "name/cos:CompleteMultipartUpload"
-        };
-
-        config.put("allowActions", allowActions);
-        try {
-            Response response = CosStsClient.getCredential(config);
-            options = new UpLoadOptions();
-            options.setSessionToken(response.credentials.sessionToken);
-            options.setTmpSecretKey(response.credentials.tmpSecretKey);
-            options.setTmpSecretId(response.credentials.tmpSecretId);
-            options.setExpiredTime(1800L);
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-        LocalDateTime startTime = LocalDateTime.now();
-        LocalDateTime endTime = startTime.plus(5, MINUTES);
-        String keyTime = LocalDateTimeUtil.toEpochMilli(startTime) / 1000 + ";" + LocalDateTimeUtil.toEpochMilli(endTime) / 1000;
-        TreeMap formData = new TreeMap<>();
-        ObjectNode root = objectMapper.createObjectNode();
-        root.put("expiration", endTime.plus(30, MINUTES).withNano(0).atZone(ZoneId.of("Z"))
-                .toString());
-        ArrayNode conditions = objectMapper.createArrayNode();
-        root.putIfAbsent("conditions", conditions);
-        ObjectNode child = objectMapper.createObjectNode();
-        child.put("acl", "default");
-        child = objectMapper.createObjectNode();
-        child.put("bucket", oss.getBucket());
-        ArrayNode tempArr = objectMapper.createArrayNode();
-        tempArr.add("starts-with");
-        tempArr.add("$key");
-        tempArr.add("bootx/");
-        conditions.addPOJO(tempArr);
-        conditions.addPOJO(child);
-        child = objectMapper.createObjectNode();
-        child.put("q-sign-algorithm", "sha1");
-        conditions.addPOJO(child);
-        child = objectMapper.createObjectNode();
-        child.put("q-ak", options.getTmpSecretId());
-
-        conditions.addPOJO(child);
-        child = objectMapper.createObjectNode();
-        child.put("q-sign-time", keyTime);
-        conditions.addPOJO(child);
-        formData.put("x-cos-security-token", options.getSessionToken());
-        String policyText = JacksonUtil.toJson(root);
-        formData.put("policy", Base64Encoder.encode(policyText));
-        formData.put("acl", "default");
-        formData.put("q-sign-algorithm", "sha1");
-        formData.put("q-ak", options.getTmpSecretId());
-        formData.put("q-key-time", keyTime);
-        String signKey = SecureUtil.hmacSha1(options.getTmpSecretKey()).digestHex(keyTime);
-        String stringToSign = SecureUtil.sha1().digestHex(policyText);
-        String signature = SecureUtil.hmacSha1(signKey).digestHex(stringToSign);
-        formData.put("q-signature", signature);
-        log.info("signKey:{},stringToSign:{},signature:{}", signKey, stringToSign, signature);
-        options.setFormData(formData);
-        options.setUploadUrl("https://" + oss.getBucket() + ".cos.ap-beijing.myqcloud.com");
-        
-        
-        return options;
-    }
-
-    protected void doInit() {
-        if (Objects.nonNull(client)) {
-            return;
-        }
-        // 初始化客户端
-        FileUploadProperties.TencentOss oss = fileUploadProperties.getTencentOss();
-
-        Region region = new Region(oss.getRegion()); //COS_REGION 参数:配置成存储桶 bucket 的实际地域,例如 ap-beijing,更多 COS 地域的简称请参见 https://cloud.tencent.com/document/product/436/6224
-        ClientConfig clientConfig = new ClientConfig(region);
-        clientConfig.setHttpProtocol(HttpProtocol.https);
-        COSCredentials cred = new BasicCOSCredentials(oss.getSecretId(), oss.getSecretKey());
-        client = new COSClient(cred, clientConfig);
-        ExecutorService threadPool = Executors.newFixedThreadPool(32);
-        transferManager = new TransferManager(client, threadPool);
-        TransferManagerConfiguration transferManagerConfiguration = new TransferManagerConfiguration();
-        transferManagerConfiguration.setMultipartUploadThreshold(5 * 1024 * 1024);
-        transferManagerConfiguration.setMinimumUploadPartSize(1024 * 1024);
-        transferManager.setConfiguration(transferManagerConfiguration);
-
-    }
-}
diff --git a/bootx-common-starters/common-starter-monitor/pom.xml b/bootx-common-starters/common-starter-monitor/pom.xml
index fda54f962eedf64b88e983992a4980c35025e209..3dfa080098af640978e4fa3baf9bb1aebe2ffbba 100644
--- a/bootx-common-starters/common-starter-monitor/pom.xml
+++ b/bootx-common-starters/common-starter-monitor/pom.xml
@@ -5,7 +5,7 @@
     
         bootx-common-starters
         cn.bootx.platform
-        1.3.5
+        1.3.6
     
     4.0.0
     jar
diff --git a/bootx-common-starters/common-starter-quartz/pom.xml b/bootx-common-starters/common-starter-quartz/pom.xml
index 931c925b5b9c983e6401720a915fa5c07dcb5a46..76600697b650fb9fde76218ba2d2fc3aed9ef49b 100644
--- a/bootx-common-starters/common-starter-quartz/pom.xml
+++ b/bootx-common-starters/common-starter-quartz/pom.xml
@@ -5,7 +5,7 @@
     
         cn.bootx.platform
         bootx-common-starters
-        1.3.5
+        1.3.6
     
     4.0.0
 
diff --git a/bootx-common-starters/common-starter-quartz/src/main/java/cn/bootx/platform/starter/quartz/task/TestTask.java b/bootx-common-starters/common-starter-quartz/src/main/java/cn/bootx/platform/starter/quartz/task/TestTask.java
index 34d275558a5d195469869b5c9912ade01eb41773..0208fbcaa2f7275d9d64ad88c7b4ccb22e51b3b2 100644
--- a/bootx-common-starters/common-starter-quartz/src/main/java/cn/bootx/platform/starter/quartz/task/TestTask.java
+++ b/bootx-common-starters/common-starter-quartz/src/main/java/cn/bootx/platform/starter/quartz/task/TestTask.java
@@ -12,7 +12,6 @@ import org.springframework.stereotype.Component;
 
 /**
  * 测试定时任务
- *
  * @author xxm
  * @since 2021/11/8
  */
diff --git a/bootx-common-starters/common-starter-wechat/pom.xml b/bootx-common-starters/common-starter-wechat/pom.xml
index 169a71b135e25ce2cef57d56c7533bd87b0a04d4..0baae280c95c8a8dc0a708d6fea1fa2a25ada1fb 100644
--- a/bootx-common-starters/common-starter-wechat/pom.xml
+++ b/bootx-common-starters/common-starter-wechat/pom.xml
@@ -5,7 +5,7 @@
     
         bootx-common-starters
         cn.bootx.platform
-        1.3.5
+        1.3.6
     
     4.0.0
 
diff --git a/bootx-common-starters/common-starter-wechat/src/main/java/cn/bootx/platform/starter/wechat/configuration/WeChatAppletProperties.java b/bootx-common-starters/common-starter-wechat/src/main/java/cn/bootx/platform/starter/wechat/configuration/WeChatAppletProperties.java
index 2dc48b7b86f774ff6b01049d0ad53104adf8377c..1a95ed7d4a2d22ec155f43c242e23d7c4daeba69 100644
--- a/bootx-common-starters/common-starter-wechat/src/main/java/cn/bootx/platform/starter/wechat/configuration/WeChatAppletProperties.java
+++ b/bootx-common-starters/common-starter-wechat/src/main/java/cn/bootx/platform/starter/wechat/configuration/WeChatAppletProperties.java
@@ -16,11 +16,9 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class WeChatAppletProperties {
 
     /** AppKey */
-    private String appId;
+    private String appId = "?";
 
     /** AppSecret */
-    private String appSecret;
-
-
+    private String appSecret = "?";
 
 }
diff --git a/bootx-common-starters/common-starter-wechat/src/main/java/cn/bootx/platform/starter/wechat/configuration/WeChatProperties.java b/bootx-common-starters/common-starter-wechat/src/main/java/cn/bootx/platform/starter/wechat/configuration/WeChatProperties.java
index 7d1c4353607b494e481342f654cc0fb01bd94d9a..b6246580f0c1152ebd13ffd58f97e1386668d94c 100644
--- a/bootx-common-starters/common-starter-wechat/src/main/java/cn/bootx/platform/starter/wechat/configuration/WeChatProperties.java
+++ b/bootx-common-starters/common-starter-wechat/src/main/java/cn/bootx/platform/starter/wechat/configuration/WeChatProperties.java
@@ -16,15 +16,15 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class WeChatProperties {
 
     /** AppKey */
-    private String appId;
+    private String appId = "?";
 
     /** AppSecret */
-    private String appSecret;
+    private String appSecret = "?";
 
     /** token */
-    private String token;
+    private String token = "?";
 
     /** 消息加解密密钥 */
-    private String encodingAesKey;
+    private String encodingAesKey = "?";
 
 }
diff --git a/bootx-common-starters/common-starter-wechat/src/main/java/cn/bootx/platform/starter/wechat/controller/WeChatQrLoginController.java b/bootx-common-starters/common-starter-wechat/src/main/java/cn/bootx/platform/starter/wechat/controller/WeChatQrLoginController.java
index de3fda8b67a052bb26e0ffc35264550d046aa90f..825f56305c0e0edf06c062a205653a24ed6a4f6d 100644
--- a/bootx-common-starters/common-starter-wechat/src/main/java/cn/bootx/platform/starter/wechat/controller/WeChatQrLoginController.java
+++ b/bootx-common-starters/common-starter-wechat/src/main/java/cn/bootx/platform/starter/wechat/controller/WeChatQrLoginController.java
@@ -32,14 +32,12 @@ public class WeChatQrLoginController {
     @PostMapping("/applyQrCode")
     public ResResult applyQrCode() {
          return Res.ok(weChatQrLoginService.applyQrCode());
-//        return Res.ok(new WeChatLoginQrCode().setQrCodeKey("123").setQrCodeUrl("xxkl"));
     }
 
     @Operation(summary = "获取扫码状态")
     @GetMapping("/getStatus")
     public ResResult getStatus(String qrCodeKey) {
          return Res.ok(weChatQrLoginService.getStatus(qrCodeKey));
-//        return Res.ok("wait");
     }
 
 }
diff --git a/bootx-common-starters/common-starter-wecom/pom.xml b/bootx-common-starters/common-starter-wecom/pom.xml
index e91e9c032230a57600a6256ef267122ab54793b5..0c52fbfc58fd805e5308763d303fcbbc373d7797 100644
--- a/bootx-common-starters/common-starter-wecom/pom.xml
+++ b/bootx-common-starters/common-starter-wecom/pom.xml
@@ -5,7 +5,7 @@
     
         cn.bootx.platform
         bootx-common-starters
-        1.3.5
+        1.3.6
     
     4.0.0
     jar
diff --git a/bootx-common-starters/pom.xml b/bootx-common-starters/pom.xml
index 065167fdf3e89fc21ab0a23023054ad7bdba4282..d31add1382cc11aac842d721dbb85674d44da2d3 100644
--- a/bootx-common-starters/pom.xml
+++ b/bootx-common-starters/pom.xml
@@ -5,7 +5,7 @@
     
         cn.bootx.platform
         bootx-platform-parent
-        1.3.5
+        1.3.6
     
     4.0.0
 
diff --git a/bootx-commons/common-cache/pom.xml b/bootx-commons/common-cache/pom.xml
index 793b603d9daef8ade0a8789e44f1ee7e5eb98404..64ff405b42a73ed23ae36a2d04a7bd504abc9713 100644
--- a/bootx-commons/common-cache/pom.xml
+++ b/bootx-commons/common-cache/pom.xml
@@ -5,7 +5,7 @@
     
         cn.bootx.platform
         bootx-commons
-        1.3.5
+        1.3.6
     
     4.0.0
 
diff --git a/bootx-commons/common-data-translate/pom.xml b/bootx-commons/common-data-translate/pom.xml
index 9ccc84e59a7dd699505dfca5cf5752ad44877090..ae89a44cab7f3cb6bd2ce497de32b530023b8c0f 100644
--- a/bootx-commons/common-data-translate/pom.xml
+++ b/bootx-commons/common-data-translate/pom.xml
@@ -5,7 +5,7 @@
     
         cn.bootx.platform
         bootx-commons
-        1.3.5
+        1.3.6
     
 
     4.0.0
diff --git a/bootx-commons/common-eventer/pom.xml b/bootx-commons/common-eventer/pom.xml
index affde9f606ff4b06d97442bdd09386aa1f8fba5a..8da165b329625200b423db387cee53325a5cf562 100644
--- a/bootx-commons/common-eventer/pom.xml
+++ b/bootx-commons/common-eventer/pom.xml
@@ -6,7 +6,7 @@
     
         cn.bootx.platform
         bootx-commons
-        1.3.5
+        1.3.6
     
 
     common-eventer
diff --git a/bootx-commons/common-exception-handler/pom.xml b/bootx-commons/common-exception-handler/pom.xml
index 97d95ddf2816b90dc23390c121ffb6bfc0670b3c..0d94bdd12436e2ae4c55cedb5835c270e015765e 100644
--- a/bootx-commons/common-exception-handler/pom.xml
+++ b/bootx-commons/common-exception-handler/pom.xml
@@ -5,7 +5,7 @@
     
         bootx-commons
         cn.bootx.platform
-        1.3.5
+        1.3.6
     
     4.0.0
     common-exception-handler
diff --git a/bootx-commons/common-header-holder/pom.xml b/bootx-commons/common-header-holder/pom.xml
index e46dfd9decf1966502a7bb7f9af8b27d7016d98e..b42a427e571d3c1f882bb4f831938ff680c17b01 100644
--- a/bootx-commons/common-header-holder/pom.xml
+++ b/bootx-commons/common-header-holder/pom.xml
@@ -5,7 +5,7 @@
     
         bootx-commons
         cn.bootx.platform
-        1.3.5
+        1.3.6
     
     4.0.0
 
diff --git a/bootx-commons/common-idempotency/pom.xml b/bootx-commons/common-idempotency/pom.xml
index 411c31a228b9aa5ecf951fcdc59cd2f5662c13c4..fe73eb491fabde193f147889d1158db652cf825d 100644
--- a/bootx-commons/common-idempotency/pom.xml
+++ b/bootx-commons/common-idempotency/pom.xml
@@ -5,7 +5,7 @@
     
         bootx-commons
         cn.bootx.platform
-        1.3.5
+        1.3.6
     
     4.0.0
 
diff --git a/bootx-commons/common-jackson/pom.xml b/bootx-commons/common-jackson/pom.xml
index c739d5861bd18b7ad7cd7c8cfcda511a7e71849d..87d111b5f2561d9106d8fba325e57a6726a29ab0 100644
--- a/bootx-commons/common-jackson/pom.xml
+++ b/bootx-commons/common-jackson/pom.xml
@@ -5,7 +5,7 @@
     
         cn.bootx.platform
         bootx-commons
-        1.3.5
+        1.3.6
     
     4.0.0
 
diff --git a/bootx-commons/common-jackson/src/main/java/cn/bootx/platform/common/jackson/deserializer/BootxLocalDateTimeDeserializer.java b/bootx-commons/common-jackson/src/main/java/cn/bootx/platform/common/jackson/deserializer/BootxLocalDateTimeDeserializer.java
new file mode 100644
index 0000000000000000000000000000000000000000..f92d37e5d21ae86451570374a06857602d7b2241
--- /dev/null
+++ b/bootx-commons/common-jackson/src/main/java/cn/bootx/platform/common/jackson/deserializer/BootxLocalDateTimeDeserializer.java
@@ -0,0 +1,32 @@
+package cn.bootx.platform.common.jackson.deserializer;
+
+import cn.bootx.platform.common.core.util.LocalDateTimeUtil;
+import cn.hutool.core.date.DatePattern;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeParseException;
+
+/**
+ * java8日期时间反序列化, 支持反序列化秒和毫秒级别的时间
+ * @author xxm
+ * @since 2024/1/16
+ */
+public class BootxLocalDateTimeDeserializer extends LocalDateTimeDeserializer {
+
+    /**
+     * 解析日期时间
+     */
+    @Override
+    protected LocalDateTime _fromString(JsonParser p, DeserializationContext ctxt, String string0) throws IOException {
+        // 首先解析毫秒级时间, 如果解析失败, 则解析秒级时间
+        try {
+            return LocalDateTimeUtil.parse(string0, DatePattern.NORM_DATETIME_MS_PATTERN);
+        } catch (DateTimeParseException e) {
+            return LocalDateTimeUtil.parse(string0, DatePattern.NORM_DATETIME_PATTERN);
+        }
+    }
+}
diff --git a/bootx-commons/common-jackson/src/main/java/cn/bootx/platform/common/jackson/deserializer/BootxLocalTimeDeserializer.java b/bootx-commons/common-jackson/src/main/java/cn/bootx/platform/common/jackson/deserializer/BootxLocalTimeDeserializer.java
new file mode 100644
index 0000000000000000000000000000000000000000..1f177e9493450fb97eda66aa7b4c7a8fd3254635
--- /dev/null
+++ b/bootx-commons/common-jackson/src/main/java/cn/bootx/platform/common/jackson/deserializer/BootxLocalTimeDeserializer.java
@@ -0,0 +1,31 @@
+package cn.bootx.platform.common.jackson.deserializer;
+
+import cn.hutool.core.date.DatePattern;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
+
+import java.io.IOException;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+
+/**
+ * java时间反序列化, 支持反序列化秒和毫秒级别的时间
+ * @author xxm
+ * @since 2024/1/16
+ */
+public class BootxLocalTimeDeserializer extends LocalTimeDeserializer {
+
+    /**
+     * 反序列化
+     */
+    @Override
+    protected LocalTime _fromString(JsonParser p, DeserializationContext ctxt, String string0) throws IOException {
+        try {
+            return LocalTime.parse(string0, DateTimeFormatter.ofPattern("HH:mm:ss.SSS"));
+        } catch (DateTimeParseException e) {
+            return LocalTime.parse(string0, DatePattern.NORM_TIME_FORMATTER);
+        }
+    }
+}
diff --git a/bootx-commons/common-jackson/src/main/java/cn/bootx/platform/common/jackson/jdk/Java8TimeModule.java b/bootx-commons/common-jackson/src/main/java/cn/bootx/platform/common/jackson/jdk/Java8TimeModule.java
index dfc1d39c81d9529d370a026c8302535e9700bc34..e929781377b0d39e2f1a7fc0b5935453eac80bf6 100644
--- a/bootx-commons/common-jackson/src/main/java/cn/bootx/platform/common/jackson/jdk/Java8TimeModule.java
+++ b/bootx-commons/common-jackson/src/main/java/cn/bootx/platform/common/jackson/jdk/Java8TimeModule.java
@@ -1,10 +1,10 @@
 package cn.bootx.platform.common.jackson.jdk;
 
+import cn.bootx.platform.common.jackson.deserializer.BootxLocalDateTimeDeserializer;
+import cn.bootx.platform.common.jackson.deserializer.BootxLocalTimeDeserializer;
 import cn.hutool.core.date.DatePattern;
 import com.fasterxml.jackson.databind.module.SimpleModule;
 import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
 import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
 import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
 import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
@@ -15,26 +15,27 @@ import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 
 /**
- * java8 时间序列化
- *
+ * java8 时间序列化 受MySQL限制, 无法存储毫秒值. 只能处理到秒级别
+ * 写入时间支持毫秒格式的时间
+ * 读取时间时可以处理到秒或毫秒
  * @author xxm
  * @since 2020/4/14 13:33
  */
 public class Java8TimeModule extends SimpleModule {
 
     public Java8TimeModule() {
+        // 序列化
         this.addSerializer(LocalDateTime.class,
                 new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));
         this.addSerializer(LocalDate.class,
                 new LocalDateSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
         this.addSerializer(LocalTime.class,
                 new LocalTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN)));
-        this.addDeserializer(LocalDateTime.class,
-                new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));
+        // 反序列化
+        this.addDeserializer(LocalDateTime.class, new BootxLocalDateTimeDeserializer());
         this.addDeserializer(LocalDate.class,
                 new LocalDateDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
-        this.addDeserializer(LocalTime.class,
-                new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN)));
+        this.addDeserializer(LocalTime.class,new BootxLocalTimeDeserializer());
     }
 
 }
diff --git a/bootx-commons/common-log/pom.xml b/bootx-commons/common-log/pom.xml
index d1a8d81268cf93f8ab20d1ee49a6c1f693c21901..98e46e190551d386f75b73833ff9aa812043adb3 100644
--- a/bootx-commons/common-log/pom.xml
+++ b/bootx-commons/common-log/pom.xml
@@ -5,7 +5,7 @@
     
         cn.bootx.platform
         bootx-commons
-        1.3.5
+        1.3.6
     
     4.0.0
 
@@ -27,7 +27,7 @@
         
         
             com.plumelog
-            plumelog-lite-spring-boot-starter
+            plumelog-lite
             ${plumelog.version}
             provided
         
diff --git a/bootx-commons/common-log/src/main/java/cn/bootx/platform/common/log/handler/LogTraceHeaderHolderFilter.java b/bootx-commons/common-log/src/main/java/cn/bootx/platform/common/log/handler/LogTraceHeaderHolderFilter.java
index cdf583578889cc589d853e7a45e80dc3408bc19b..12aa194ef106d58456b50e8a7dd334a454875fad 100644
--- a/bootx-commons/common-log/src/main/java/cn/bootx/platform/common/log/handler/LogTraceHeaderHolderFilter.java
+++ b/bootx-commons/common-log/src/main/java/cn/bootx/platform/common/log/handler/LogTraceHeaderHolderFilter.java
@@ -34,8 +34,10 @@ public class LogTraceHeaderHolderFilter extends OncePerRequestFilter {
         try {
             String traceId = RandomUtil.randomString(12);
             // 添加普通日志和 plumelog 日志的 TraceId
-            TraceId.logTraceID.set(traceId);
             MDC.put(CommonCode.TRACE_ID, traceId);
+            try {
+                TraceId.logTraceID.set(traceId);
+            } catch (NoClassDefFoundError ignored) {}
             chain.doFilter(request, response);
         }
         finally {
diff --git a/bootx-commons/common-mongo/pom.xml b/bootx-commons/common-mongo/pom.xml
index 05c04eb027dc1581b1c61e78943da2a88dd29cd5..3c50226e5b3f647c6b7146e015d89e6487e9d766 100644
--- a/bootx-commons/common-mongo/pom.xml
+++ b/bootx-commons/common-mongo/pom.xml
@@ -5,7 +5,7 @@
     
         cn.bootx.platform
         bootx-commons
-        1.3.5
+        1.3.6
     
     4.0.0
     common-mongo
diff --git a/bootx-commons/common-mybatis-plus/pom.xml b/bootx-commons/common-mybatis-plus/pom.xml
index 4cebbe13c772f51a475092cc475e2ca2dd81bcc0..6f7ee90f374a108ac6fa2e470ed527f4c93adf7a 100644
--- a/bootx-commons/common-mybatis-plus/pom.xml
+++ b/bootx-commons/common-mybatis-plus/pom.xml
@@ -5,7 +5,7 @@
     
         bootx-commons
         cn.bootx.platform
-        1.3.5
+        1.3.6
     
     4.0.0
 
diff --git a/bootx-commons/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/base/MpIdEntity.java b/bootx-commons/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/base/MpIdEntity.java
index 018559504ab3b7dc1487f7637cf21209f3d224eb..f722c95a6e83f6ab7346deea4147ac3e09acd6da 100644
--- a/bootx-commons/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/base/MpIdEntity.java
+++ b/bootx-commons/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/base/MpIdEntity.java
@@ -2,6 +2,7 @@ package cn.bootx.platform.common.mybatisplus.base;
 
 import cn.bootx.table.modify.annotation.DbColumn;
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.OrderBy;
 import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Getter;
 import lombok.Setter;
@@ -24,6 +25,7 @@ public abstract class MpIdEntity implements Serializable {
 
     @DbColumn(comment = "主键", isKey = true, order = Integer.MIN_VALUE + 100)
     @TableId(type = IdType.ASSIGN_ID)
+    @OrderBy
     private Long id;
 
 }
diff --git a/bootx-commons/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/handler/JacksonRawTypeHandler.java b/bootx-commons/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/handler/JacksonRawTypeHandler.java
index 68a0fe5a17b75a03dadf1022eb78d1df94bc4a83..3073d0299d50608db2856507af5c955184e0f23f 100644
--- a/bootx-commons/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/handler/JacksonRawTypeHandler.java
+++ b/bootx-commons/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/handler/JacksonRawTypeHandler.java
@@ -10,8 +10,9 @@ import org.apache.ibatis.type.MappedTypes;
 
 /**
  * Jackson 实现 JSON 字段类型处理器, 会记录对象属性类型, 通常用于储存不确定对象的属性上
- * 例如: 泛型对象、存储的数据是字段类型的子类等
- *
+ * 例如: object对象, 泛型对象、存储的数据是字段声明类型的子类等
+ * 如果在使用知道明确类型的包装类是,如List、Set, 请使用 JacksonTypeReferenceHandler
+ * @see JacksonTypeReferenceHandler
  * @author xxm
  * @since 2022/7/11
  */
diff --git a/bootx-commons/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/handler/JacksonTypeReferenceHandler.java b/bootx-commons/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/handler/JacksonTypeReferenceHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..580e10ba51c6e4fa107eef60032d63e510201995
--- /dev/null
+++ b/bootx-commons/common-mybatis-plus/src/main/java/cn/bootx/platform/common/mybatisplus/handler/JacksonTypeReferenceHandler.java
@@ -0,0 +1,45 @@
+package cn.bootx.platform.common.mybatisplus.handler;
+
+import cn.bootx.platform.common.jackson.util.JacksonUtil;
+import com.baomidou.mybatisplus.extension.handlers.AbstractJsonTypeHandler;
+import com.fasterxml.jackson.core.type.TypeReference;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedJdbcTypes;
+import org.apache.ibatis.type.MappedTypes;
+
+/**
+ * JSON字段类型转换抽象处理器, 需要进行继承实现, 可以在不在JSON字符串中记录数据类型,就可以对一些特殊类型进行反序列化
+ * 例如: 集合类型List, 泛型对象ResResult 等
+ * 通过 getTypeReference 接口, 将要进行反序列的对象传入
+ *
+ * @author xxm
+ * @since 2024/1/3
+ */
+@Slf4j
+@MappedTypes({ Object.class })
+@MappedJdbcTypes(value = { JdbcType.VARCHAR, JdbcType.LONGVARCHAR })
+public abstract class JacksonTypeReferenceHandler extends AbstractJsonTypeHandler {
+
+    /**
+     * 返回要反序列化的类型对象
+     */
+    public abstract TypeReference getTypeReference();
+
+    /**
+     * 反序列化
+     */
+    @Override
+    protected Object parse(String json) {
+        return JacksonUtil.toBean(json, this.getTypeReference());
+    }
+
+    /**
+     * 序列化
+     */
+    @Override
+    protected String toJson(Object obj) {
+        return JacksonUtil.toJson(obj);
+    }
+
+}
diff --git a/bootx-commons/common-rabbitmq/pom.xml b/bootx-commons/common-rabbitmq/pom.xml
index 5efbeaaaec63fe3495f2cf7552c43b273a9262ba..102251c91c210867e360059056c3e0a9999875cf 100644
--- a/bootx-commons/common-rabbitmq/pom.xml
+++ b/bootx-commons/common-rabbitmq/pom.xml
@@ -5,7 +5,7 @@
     
         bootx-commons
         cn.bootx.platform
-        1.3.5
+        1.3.6
     
     4.0.0
 
diff --git a/bootx-commons/common-redis-client/pom.xml b/bootx-commons/common-redis-client/pom.xml
index 29b729465da53a5cd4bcf06f1060ad492de77bdf..e38993b143dec202e7cdec372a90948acca435ea 100644
--- a/bootx-commons/common-redis-client/pom.xml
+++ b/bootx-commons/common-redis-client/pom.xml
@@ -5,7 +5,7 @@
     
         bootx-commons
         cn.bootx.platform
-        1.3.5
+        1.3.6
     
     4.0.0
 
diff --git a/bootx-commons/common-sequence/pom.xml b/bootx-commons/common-sequence/pom.xml
index 67bab2df47e3c2e1874df9637703ab6299fcdad6..466ec48fbd551669681c380bf8910433178d896d 100644
--- a/bootx-commons/common-sequence/pom.xml
+++ b/bootx-commons/common-sequence/pom.xml
@@ -5,7 +5,7 @@
     
         bootx-commons
         cn.bootx.platform
-        1.3.5
+        1.3.6
     
     4.0.0
 
diff --git a/bootx-commons/common-spring/pom.xml b/bootx-commons/common-spring/pom.xml
index 574b0b8325b84e9b31585763d76c9a640fd0edf8..1197aa37e42aeeea699d333f4c8abbb4a2e74206 100644
--- a/bootx-commons/common-spring/pom.xml
+++ b/bootx-commons/common-spring/pom.xml
@@ -5,7 +5,7 @@
     
         bootx-commons
         cn.bootx.platform
-        1.3.5
+        1.3.6
     
     4.0.0
 
diff --git a/bootx-commons/common-super-query/pom.xml b/bootx-commons/common-super-query/pom.xml
index 2477d870e428dfe08fe0094e2b1fb002bf0f337f..8e9bdf12316b90faa79281f299899dff156c6dbb 100644
--- a/bootx-commons/common-super-query/pom.xml
+++ b/bootx-commons/common-super-query/pom.xml
@@ -5,7 +5,7 @@
     
         bootx-commons
         cn.bootx.platform
-        1.3.5
+        1.3.6
     
     4.0.0
 
diff --git a/bootx-commons/common-super-query/src/main/java/cn/bootx/platform/common/query/entity/QueryParams.java b/bootx-commons/common-super-query/src/main/java/cn/bootx/platform/common/query/entity/QueryParams.java
index 790a2349e562352dcd5e47b637fbce9729cc449a..55adb74896bee23f84a440f907d44cc545070c00 100644
--- a/bootx-commons/common-super-query/src/main/java/cn/bootx/platform/common/query/entity/QueryParams.java
+++ b/bootx-commons/common-super-query/src/main/java/cn/bootx/platform/common/query/entity/QueryParams.java
@@ -1,5 +1,6 @@
 package cn.bootx.platform.common.query.entity;
 
+import cn.bootx.platform.common.core.rest.param.QueryOrder;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.experimental.Accessors;
diff --git a/bootx-commons/common-super-query/src/main/java/cn/bootx/platform/common/query/generator/AnnotationQueryGenerator.java b/bootx-commons/common-super-query/src/main/java/cn/bootx/platform/common/query/generator/AnnotationQueryGenerator.java
index cd0fd5305219bff571c2d12b9742fee8e6e14456..8c0762ea357d5481e620235bfd69dc8ec04a0fbb 100644
--- a/bootx-commons/common-super-query/src/main/java/cn/bootx/platform/common/query/generator/AnnotationQueryGenerator.java
+++ b/bootx-commons/common-super-query/src/main/java/cn/bootx/platform/common/query/generator/AnnotationQueryGenerator.java
@@ -2,8 +2,10 @@ package cn.bootx.platform.common.query.generator;
 
 import cn.bootx.platform.common.core.annotation.QueryParam;
 import cn.bootx.platform.common.core.function.CollectorsFunction;
+import cn.bootx.platform.common.core.function.QueryBetween;
+import cn.bootx.platform.common.core.rest.param.QueryOrder;
+import cn.bootx.platform.common.core.util.ClassUtils;
 import cn.bootx.platform.common.mybatisplus.util.MpUtil;
-import cn.bootx.platform.common.query.entity.QueryOrder;
 import cn.hutool.core.annotation.AnnotationUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
@@ -83,7 +85,7 @@ public class AnnotationQueryGenerator {
      * @param  泛型
      * @return 查询器
      */
-     QueryWrapper generator(Object queryParams, QueryOrder...queryOrder) {
+     QueryWrapper generator(Object queryParams, QueryOrder...queryOrders) {
         QueryWrapper wrapper = new QueryWrapper<>();
 
         if (Objects.isNull(queryParams)) {
@@ -115,8 +117,13 @@ public class AnnotationQueryGenerator {
         }
 
         // 处理排序条件
-        initQueryOrder(wrapper,Objects.isNull(queryOrder)?null: Lists.newArrayList(queryOrder));
-
+        if (queryOrders.length > 0){
+            initQueryOrder(wrapper,Lists.newArrayList(queryOrders));
+        } else if (queryParams instanceof QueryOrder){
+            // 如果没有显式传入排序参数, 则判断查询参数是否继承了QueryOrder对象, 如果继承了, 则使用该对象的排序条件
+            QueryOrder order = (QueryOrder) queryParams;
+            initQueryOrder(wrapper, Collections.singletonList(order));
+        }
         return wrapper;
     }
 
@@ -142,6 +149,15 @@ public class AnnotationQueryGenerator {
             case LE:
                 wrapper.le(columnName, paramValue);
                 break;
+            case BETWEEN:{
+                if (paramValue instanceof QueryBetween) {
+                    QueryBetween queryBetween = (QueryBetween) paramValue;
+                    wrapper.between(columnName, queryBetween.getStart(), queryBetween.getEnd());
+                } else {
+                    throw new IllegalArgumentException("Between查询条件值必须是实现QueryBetween接口");
+                }
+                break;
+            }
             case LIKE:
                 wrapper.like(columnName, paramValue);
                 break;
@@ -153,7 +169,7 @@ public class AnnotationQueryGenerator {
                 break;
             case IS_NULL:
                 if (paramValue instanceof Boolean) {
-                    if (((Boolean) paramValue).booleanValue()) {
+                    if ((Boolean) paramValue) {
                         wrapper.isNull(columnName);
                     }
                     else {
@@ -171,13 +187,12 @@ public class AnnotationQueryGenerator {
     /**
      * 获取查询参数注解 获取顺序: QueryParams 查询参数字段 > Entity 数据库实体字段 > QueryParams 查询类 > Entity
      * 数据库实体类
-     * @return
      */
     private Optional getQueryParamAnnotation(PropertyDescriptor paramDescriptor, Class paramClass,
             PropertyDescriptor entityDescriptor, Class entityClass) {
 
         // 参数字段
-        Field paramField = ClassUtil.getDeclaredField(paramClass, paramDescriptor.getName());
+        Field paramField = ClassUtils.getField(paramClass, paramDescriptor.getName());
         if (AnnotationUtil.hasAnnotation(paramField, QueryParam.class)) {
             return Optional.ofNullable(AnnotationUtil.getAnnotation(paramField, QueryParam.class));
         }
@@ -187,6 +202,7 @@ public class AnnotationQueryGenerator {
                 return Optional.ofNullable(AnnotationUtil.getAnnotation(entityField, QueryParam.class));
             }
         }
+        // 参数类
         if (AnnotationUtil.hasAnnotation(paramClass, QueryParam.class)) {
             return Optional.ofNullable(AnnotationUtil.getAnnotation(paramClass, QueryParam.class));
         }
@@ -235,10 +251,10 @@ public class AnnotationQueryGenerator {
         }
         for (QueryOrder queryOrder : queryOrders) {
             if (queryOrder.isUnderLine()) {
-                queryWrapper.orderBy(true, queryOrder.isAsc(), StrUtil.toUnderlineCase(queryOrder.getSortField()));
+                queryWrapper.orderBy(StrUtil.isNotBlank(queryOrder.getSortField()), queryOrder.isAsc(), StrUtil.toUnderlineCase(queryOrder.getSortField()));
             }
             else {
-                queryWrapper.orderBy(true, queryOrder.isAsc(), queryOrder.getSortField());
+                queryWrapper.orderBy(StrUtil.isNotBlank(queryOrder.getSortField()), queryOrder.isAsc(), queryOrder.getSortField());
             }
         }
     }
diff --git a/bootx-commons/common-super-query/src/main/java/cn/bootx/platform/common/query/generator/QueryGenerator.java b/bootx-commons/common-super-query/src/main/java/cn/bootx/platform/common/query/generator/QueryGenerator.java
index 555b13246d434c9d59b56fda8ad618c033e2471a..d516c84660ace20202183aa45f2daa219fe0d356 100644
--- a/bootx-commons/common-super-query/src/main/java/cn/bootx/platform/common/query/generator/QueryGenerator.java
+++ b/bootx-commons/common-super-query/src/main/java/cn/bootx/platform/common/query/generator/QueryGenerator.java
@@ -1,6 +1,6 @@
 package cn.bootx.platform.common.query.generator;
 
-import cn.bootx.platform.common.query.entity.QueryOrder;
+import cn.bootx.platform.common.core.rest.param.QueryOrder;
 import cn.bootx.platform.common.query.entity.QueryParams;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 
diff --git a/bootx-commons/common-super-query/src/main/java/cn/bootx/platform/common/query/generator/SuperQueryGenerator.java b/bootx-commons/common-super-query/src/main/java/cn/bootx/platform/common/query/generator/SuperQueryGenerator.java
index 1121ffbde3d5af2a3adbebeb0bb4b4dcba665c08..ebc89acf8766fa2e04e9ea152ad8874aa37d6211 100644
--- a/bootx-commons/common-super-query/src/main/java/cn/bootx/platform/common/query/generator/SuperQueryGenerator.java
+++ b/bootx-commons/common-super-query/src/main/java/cn/bootx/platform/common/query/generator/SuperQueryGenerator.java
@@ -3,7 +3,7 @@ package cn.bootx.platform.common.query.generator;
 import cn.bootx.platform.common.core.exception.BizException;
 import cn.bootx.platform.common.query.code.CompareTypeEnum;
 import cn.bootx.platform.common.query.entity.QueryBetweenParam;
-import cn.bootx.platform.common.query.entity.QueryOrder;
+import cn.bootx.platform.common.core.rest.param.QueryOrder;
 import cn.bootx.platform.common.query.entity.QueryParam;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
diff --git a/bootx-commons/common-swagger/pom.xml b/bootx-commons/common-swagger/pom.xml
index 32b3e31f264de68d1e770b67e61323f4d23c5478..f8503b5b7eb219392a1455564b3099f5ad9ec9e5 100644
--- a/bootx-commons/common-swagger/pom.xml
+++ b/bootx-commons/common-swagger/pom.xml
@@ -5,7 +5,7 @@
     
         bootx-commons
         cn.bootx.platform
-        1.3.5
+        1.3.6
     
     4.0.0
 
diff --git a/bootx-commons/common-websocket/pom.xml b/bootx-commons/common-websocket/pom.xml
index ebc401c73bacb12512c5b5ccd9c1c7756c198319..d63b805b00eaaf92106f6d1db9eaeb68d07b7a89 100644
--- a/bootx-commons/common-websocket/pom.xml
+++ b/bootx-commons/common-websocket/pom.xml
@@ -5,7 +5,7 @@
     
         bootx-commons
         cn.bootx.platform
-        1.3.5
+        1.3.6
     
     4.0.0
 
diff --git a/bootx-commons/common-websocket/src/main/java/cn/bootx/platform/common/websocket/controller/WebsocketAdminController.java b/bootx-commons/common-websocket/src/main/java/cn/bootx/platform/common/websocket/controller/WebsocketAdminController.java
deleted file mode 100644
index 816b2f52e5264e2f496dff2257c6fc04e7926331..0000000000000000000000000000000000000000
--- a/bootx-commons/common-websocket/src/main/java/cn/bootx/platform/common/websocket/controller/WebsocketAdminController.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package cn.bootx.platform.common.websocket.controller;
-
-import cn.bootx.platform.common.websocket.service.WebSocketAdminService;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- *
- * @author xxm
- * @since 2023/10/15
- */
-@Tag(name = "websocket会话管理")
-@RestController
-@RequestMapping("/websocket/admin")
-@RequiredArgsConstructor
-public class WebsocketAdminController {
-    private final WebSocketAdminService webSocketAdminService;
-}
diff --git a/bootx-commons/common-websocket/src/main/java/cn/bootx/platform/common/websocket/manager/SpringWebSocketSessionManager.java b/bootx-commons/common-websocket/src/main/java/cn/bootx/platform/common/websocket/manager/SpringWebSocketSessionManager.java
index 57c902d91fc8933dcfa3a57a9146ccae2f37f6f8..fe05688e68ab6b6f39a33daef725d43c8c5e4df3 100644
--- a/bootx-commons/common-websocket/src/main/java/cn/bootx/platform/common/websocket/manager/SpringWebSocketSessionManager.java
+++ b/bootx-commons/common-websocket/src/main/java/cn/bootx/platform/common/websocket/manager/SpringWebSocketSessionManager.java
@@ -19,19 +19,17 @@ import java.util.stream.Collectors;
  * @author xxm
  * @since 2022/5/27
  */
+@Getter
 public class SpringWebSocketSessionManager {
 
     // session缓存
-    @Getter
-    private static final Map sessionPool = new ConcurrentSkipListMap<>();
+    private final Map sessionPool = new ConcurrentSkipListMap<>();
 
     // sessionId 与 用户标识id 的映射关系 n:1
-    @Getter
-    private static final Map sid2uid = new ConcurrentSkipListMap<>();
+    private final Map sid2uid = new ConcurrentSkipListMap<>();
 
     // 用户标识id 与 sessionId 的映射关系 1:n
-    @Getter
-    private static final Map> uid2sid = new ConcurrentSkipListMap<>();
+    private final Map> uid2sid = new ConcurrentSkipListMap<>();
 
     /**
      * 添加会话session关联
@@ -69,10 +67,10 @@ public class SpringWebSocketSessionManager {
     }
 
     /**
-     * 根据id获取关联的session列表
+     * 根据userId获取关联的session列表
      */
-    public List getSessionsById(String id) {
-        List sessionIds = Optional.ofNullable(uid2sid.get(id)).orElse(Lists.newArrayList());
+    public List getSessionsByUserId(String userId) {
+        List sessionIds = Optional.ofNullable(uid2sid.get(userId)).orElse(Lists.newArrayList());
         return sessionIds.stream().map(sessionPool::get).collect(Collectors.toList());
     }
 
diff --git a/bootx-commons/common-websocket/src/main/java/cn/bootx/platform/common/websocket/manager/WebSocketSessionManager.java b/bootx-commons/common-websocket/src/main/java/cn/bootx/platform/common/websocket/manager/WebSocketSessionManager.java
index 6bf60a1f7385568366f815627eae0d760a00e06f..aa6c1d2957b2bf42fbe20545d7f1557c63f604f1 100644
--- a/bootx-commons/common-websocket/src/main/java/cn/bootx/platform/common/websocket/manager/WebSocketSessionManager.java
+++ b/bootx-commons/common-websocket/src/main/java/cn/bootx/platform/common/websocket/manager/WebSocketSessionManager.java
@@ -9,7 +9,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.stream.Collectors;
 
 /**
- * websocket管理器 (java原生)
+ * websocket管理器 (java原生, 进攻演示, 通常使用 SpringWebSocketSessionManager )
  *
  * @author xxm
  * @since 2022/5/27
diff --git a/bootx-commons/common-websocket/src/main/java/cn/bootx/platform/common/websocket/notice/UserNoticeWebSocketHandler.java b/bootx-commons/common-websocket/src/main/java/cn/bootx/platform/common/websocket/notice/UserNoticeWebSocketHandler.java
index c24dbd8e41dddb986accbafdf2bbdf4630202573..c9d21896091b4a41881960b250707f020b905fc5 100644
--- a/bootx-commons/common-websocket/src/main/java/cn/bootx/platform/common/websocket/notice/UserNoticeWebSocketHandler.java
+++ b/bootx-commons/common-websocket/src/main/java/cn/bootx/platform/common/websocket/notice/UserNoticeWebSocketHandler.java
@@ -61,7 +61,7 @@ public class UserNoticeWebSocketHandler extends TextWebSocketHandler {
     @Override
     public void handleTextMessage(WebSocketSession session, TextMessage message) {
         // 不处理接收的消息, 通常只会接收到心跳请求
-        // log.debug("心跳请求");
+//         log.debug("心跳请求");
     }
 
     /**
@@ -77,7 +77,7 @@ public class UserNoticeWebSocketHandler extends TextWebSocketHandler {
      */
     public void sendMessageByUser(String message, Long userId) {
         try {
-            List sessions = wsManager.getSessionsById(String.valueOf(userId));
+            List sessions = wsManager.getSessionsByUserId(String.valueOf(userId));
 
             for (WebSocketSession session : sessions) {
                 session.sendMessage(new TextMessage(message));
diff --git a/bootx-commons/common-websocket/src/main/java/cn/bootx/platform/common/websocket/service/WebSocketAdminService.java b/bootx-commons/common-websocket/src/main/java/cn/bootx/platform/common/websocket/service/WebSocketAdminService.java
deleted file mode 100644
index 74fb819197124e8ca72810e130f62abc767e16e6..0000000000000000000000000000000000000000
--- a/bootx-commons/common-websocket/src/main/java/cn/bootx/platform/common/websocket/service/WebSocketAdminService.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package cn.bootx.platform.common.websocket.service;
-
-import cn.bootx.platform.common.websocket.manager.SpringWebSocketSessionManager;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import lombok.val;
-import org.springframework.stereotype.Service;
-import org.springframework.web.socket.WebSocketSession;
-
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-/**
- * websocket会话管理
- * @author xxm
- * @since 2023/10/15
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class WebSocketAdminService {
-
-
-    /**
-     * 分页
-     */
-    public void page(){
-        Map> uid2sid = SpringWebSocketSessionManager.getUid2sid();
-    }
-
-    /**
-     * 获取用户链接数
-     */
-    public void getByUserId(String userId){
-        List sessionIds = SpringWebSocketSessionManager.getUid2sid()
-                .get(userId);
-        Map sessionPool = SpringWebSocketSessionManager.getSessionPool();
-        // 组装用户信息
-        val userSession = sessionIds.stream()
-                .map(sessionPool::get)
-                .map(session->{
-                    System.out.println(session.getRemoteAddress());
-                    return session;
-                })
-                .collect(Collectors.toList());
-    }
-
-}
diff --git a/bootx-commons/common-xxl-job/pom.xml b/bootx-commons/common-xxl-job/pom.xml
index 33d496ef5dc52e0727a60c651a08b10e47df81b6..8db5feba6dfd97a0378fd3496d40ec29b7868f5e 100644
--- a/bootx-commons/common-xxl-job/pom.xml
+++ b/bootx-commons/common-xxl-job/pom.xml
@@ -5,7 +5,7 @@
     
         bootx-commons
         cn.bootx.platform
-        1.3.5
+        1.3.6
     
     4.0.0
 
diff --git a/bootx-commons/pom.xml b/bootx-commons/pom.xml
index 22954de8ab9ea6a4f493a454bd8b3ee2921d8da1..e1813a8afaf5d8e7c9786333fbca0207302a683c 100644
--- a/bootx-commons/pom.xml
+++ b/bootx-commons/pom.xml
@@ -7,7 +7,7 @@
     
         cn.bootx.platform
         bootx-platform-parent
-        1.3.5
+        1.3.6
     
 
     bootx-commons
@@ -59,29 +59,6 @@
             provided
         
     
-    
-        
-            
-            
-                org.springdoc
-                springdoc-openapi-ui
-                ${springdoc.version}
-            
-            
-            
-                org.redisson
-                redisson-spring-boot-starter
-                ${redisson.version}
-            
-            
-            
-                com.xuxueli
-                xxl-job-core
-                ${xxl-job.version}
-            
-
-        
-    
 
     
         
diff --git a/bootx-demo/pom.xml b/bootx-demo/pom.xml
index a0411b05e144675d245e917a1d73e4ae81488008..966e0fab2e80f3339a089e312ddd9c250b1e6f49 100644
--- a/bootx-demo/pom.xml
+++ b/bootx-demo/pom.xml
@@ -5,7 +5,7 @@
     
         cn.bootx.platform
         bootx-platform-parent
-        1.3.5
+        1.3.6
     
     4.0.0
 
diff --git a/bootx-demo/src/main/java/cn/bootx/platform/demo/ws/WebSocketDemo.java b/bootx-demo/src/main/java/cn/bootx/platform/demo/ws/WebSocketDemo.java
deleted file mode 100644
index 56ce57643043ac2ff68b2dfc4e1eb6abd355bf9d..0000000000000000000000000000000000000000
--- a/bootx-demo/src/main/java/cn/bootx/platform/demo/ws/WebSocketDemo.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package cn.bootx.platform.demo.ws;
-
-import cn.bootx.platform.common.websocket.manager.WebSocketSessionManager;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-import javax.websocket.*;
-import javax.websocket.server.PathParam;
-import javax.websocket.server.ServerEndpoint;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * websocket demo
- *
- * @author xxm
- * @since 2022/3/27
- */
-@Slf4j
-@Component
-@ServerEndpoint("/test/ws/{userId}")
-public class WebSocketDemo {
-
-    private final WebSocketSessionManager wsManager = new WebSocketSessionManager();
-
-    /** 记录当前在线连接数 */
-    private static final AtomicInteger onlineCount = new AtomicInteger(0);
-
-    /**
-     * 连接建立成功调用的方法
-     */
-    @OnOpen
-    public void onOpen(@PathParam("userId") Long userId, Session session) {
-        wsManager.addSession(String.valueOf(userId), session);
-        onlineCount.incrementAndGet(); // 在线数加1
-        log.info("有新连接加入:{},当前在线人数为:{}", userId, onlineCount.get());
-    }
-
-    /**
-     * 连接关闭调用的方法
-     */
-    @OnClose
-    public void onClose(Session session) {
-        onlineCount.decrementAndGet(); // 在线数减1
-        String userId = wsManager.getIdBySession(session);
-        wsManager.removeSession(session);
-        log.info("有一连接关闭:{},当前在线人数为:{}", userId, onlineCount.get());
-    }
-
-    /**
-     * 收到客户端消息后调用的方法
-     * @param message 客户端发送过来的消息
-     */
-    @OnMessage
-    public void onMessage(String message, Session session) {
-        Long userId = Long.valueOf(wsManager.getIdBySession(session));
-        log.info("服务端收到客户端[{}]的消息:{}", userId, message);
-        this.sendMessage("响应: " + message, userId);
-    }
-
-    @OnError
-    public void onError(Session session, Throwable error) {
-        log.error("{} 发生错误", session.getId());
-        error.printStackTrace();
-    }
-
-    /**
-     * 服务端发送消息给客户端(单发)
-     */
-    public void sendMessage(String message, Long userId) {
-        try {
-            List sessions = wsManager.getSessionsById(String.valueOf(userId));
-
-            for (Session session : sessions) {
-                session.getBasicRemote().sendText(message);
-            }
-        }
-        catch (Exception e) {
-            log.error("服务端发送消息给客户端失败:", e);
-        }
-    }
-
-    /**
-     * 服务端发送消息给客户端(全发)
-     */
-    public void sendMessage(String message) {
-        try {
-            List sessions = wsManager.getSessions();
-            for (Session session : sessions) {
-                session.getBasicRemote().sendText(message);
-            }
-        }
-        catch (Exception e) {
-            log.error("服务端发送消息给客户端失败:", e);
-        }
-    }
-
-}
diff --git a/bootx-demo/src/main/java/cn/bootx/platform/demo/ws/WebSocketDemoConfig.java b/bootx-demo/src/main/java/cn/bootx/platform/demo/ws/WebSocketDemoConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..65301ee20da67378528c27a7e1e03b1ddcfb7e4f
--- /dev/null
+++ b/bootx-demo/src/main/java/cn/bootx/platform/demo/ws/WebSocketDemoConfig.java
@@ -0,0 +1,29 @@
+package cn.bootx.platform.demo.ws;
+
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
+import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
+
+/**
+ *
+ * @author xxm
+ * @since 2023/11/29
+ */
+@Configuration
+@RequiredArgsConstructor
+public class WebSocketDemoConfig  implements WebSocketConfigurer {
+    private final WebSocketDemoHandler webSocketDemoHandler;
+
+    /**
+     * 拦截器
+     */
+    @Override
+    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
+        registry
+                // WebSocket 连接处理器
+                .addHandler(webSocketDemoHandler, "/test/ws")
+                // 允许跨域
+                .setAllowedOrigins("*");
+    }
+}
diff --git a/bootx-demo/src/main/java/cn/bootx/platform/demo/ws/WebSocketDemoHandler.java b/bootx-demo/src/main/java/cn/bootx/platform/demo/ws/WebSocketDemoHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..60ba07e07aecce92a4daa6078cef42a18cb01927
--- /dev/null
+++ b/bootx-demo/src/main/java/cn/bootx/platform/demo/ws/WebSocketDemoHandler.java
@@ -0,0 +1,89 @@
+package cn.bootx.platform.demo.ws;
+
+import cn.bootx.platform.common.websocket.manager.SpringWebSocketSessionManager;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import lombok.val;
+import org.springframework.stereotype.Service;
+import org.springframework.web.socket.CloseStatus;
+import org.springframework.web.socket.TextMessage;
+import org.springframework.web.socket.WebSocketSession;
+import org.springframework.web.socket.handler.TextWebSocketHandler;
+
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * Websock Spring 演示
+ * @author xxm
+ * @since 2023/11/29
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class WebSocketDemoHandler extends TextWebSocketHandler {
+
+
+    /** websocket连接管理器 */
+    @Getter
+    private static final SpringWebSocketSessionManager wsManager = new SpringWebSocketSessionManager();
+
+    /** 记录当前在线连接数 */
+    private static final AtomicInteger onlineCount = new AtomicInteger(0);
+
+    /**
+     * 连接建立成功调用的方法
+     */
+    @Override
+    public void afterConnectionEstablished(WebSocketSession session) {
+        Map sessionPool = wsManager.getSessionPool();
+        sessionPool.put(session.getId(),session);
+        onlineCount.incrementAndGet(); // 在线数加1
+        this.sendMessage("连接成功",session.getId());
+        log.info("有新连接加入,当前在线人数为:{}", onlineCount.get());
+    }
+
+    /**
+     * 关闭
+     */
+    @Override
+    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) {
+        onlineCount.decrementAndGet(); // 在线数减1
+        String userId = wsManager.getIdBySession(session);
+        wsManager.removeSession(session);
+        log.info("有一连接关闭,当前在线人数为:{}", onlineCount.get());
+    }
+
+    /**
+     * 接收消息
+     */
+    @Override
+    public void handleTextMessage(WebSocketSession session, TextMessage message) {
+        log.info("服务端收到客户端的消息:{}", message);
+        this.sendMessage("响应: " + message, session.getId());
+    }
+
+    /**
+     * 错误
+     */
+    @Override
+    public void handleTransportError(WebSocketSession session, Throwable exception) {
+        log.error("{} 发生错误", session.getId());
+    }
+
+
+    /**
+     * 服务端发送消息给客户端(单发)
+     */
+    public void sendMessage(String message, String sid) {
+        try {
+            val session = wsManager.getSessionPool().get(sid);
+            session.sendMessage(new TextMessage(message));
+        }
+        catch (Exception e) {
+            log.error("服务端发送消息给客户端失败:", e);
+        }
+    }
+
+}
diff --git a/bootx-services/pom.xml b/bootx-services/pom.xml
index a6fa9c76dcd64cc67f96e8db3e97127ad52ee04e..07baad6a5f973599ee65d8cc3f13f1809bcd0c57 100644
--- a/bootx-services/pom.xml
+++ b/bootx-services/pom.xml
@@ -5,7 +5,7 @@
     
         cn.bootx.platform
         bootx-platform-parent
-        1.3.5
+        1.3.6
     
 
     4.0.0
diff --git a/bootx-services/service-baseapi/pom.xml b/bootx-services/service-baseapi/pom.xml
index 0f9c3c49cc444351ccda6b4388b0a2964f6c18ba..e3b22d962ff405a2d36566dbbedce2ed75dcec05 100644
--- a/bootx-services/service-baseapi/pom.xml
+++ b/bootx-services/service-baseapi/pom.xml
@@ -5,7 +5,7 @@
     
         cn.bootx.platform
         bootx-services
-        1.3.5
+        1.3.6
     
     4.0.0
 
diff --git a/bootx-services/service-baseapi/src/main/java/cn/bootx/platform/baseapi/core/parameter/entity/SystemParameter.java b/bootx-services/service-baseapi/src/main/java/cn/bootx/platform/baseapi/core/parameter/entity/SystemParameter.java
index 58676f5fa58eeb96cc42b65b2c228af88534921e..0172bb935e0867010663ec47e6b09ff0193da69a 100644
--- a/bootx-services/service-baseapi/src/main/java/cn/bootx/platform/baseapi/core/parameter/entity/SystemParameter.java
+++ b/bootx-services/service-baseapi/src/main/java/cn/bootx/platform/baseapi/core/parameter/entity/SystemParameter.java
@@ -40,7 +40,7 @@ public class SystemParameter extends MpBaseEntity implements EntityBaseFunction<
     private Boolean enable;
 
     /** 内置参数 */
-    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    @TableField(updateStrategy = FieldStrategy.NEVER)
     private boolean internal;
 
     /** 备注 */
diff --git a/bootx-services/service-baseapi/src/main/java/cn/bootx/platform/baseapi/core/template/entity/GeneralTemplate.java b/bootx-services/service-baseapi/src/main/java/cn/bootx/platform/baseapi/core/template/entity/GeneralTemplate.java
index 7f52407277c022c9c4563a9fde0b45cef656a9c2..029a03c465e0fd4fd334c2850b0c70b7046bf488 100644
--- a/bootx-services/service-baseapi/src/main/java/cn/bootx/platform/baseapi/core/template/entity/GeneralTemplate.java
+++ b/bootx-services/service-baseapi/src/main/java/cn/bootx/platform/baseapi/core/template/entity/GeneralTemplate.java
@@ -1,12 +1,11 @@
 package cn.bootx.platform.baseapi.core.template.entity;
 
-import cn.bootx.table.modify.annotation.DbComment;
-import cn.bootx.table.modify.annotation.DbTable;
 import cn.bootx.platform.baseapi.core.template.convert.GeneralTemplateConvert;
 import cn.bootx.platform.baseapi.dto.template.GeneralTemplateDto;
 import cn.bootx.platform.baseapi.param.template.GeneralTemplateParam;
 import cn.bootx.platform.common.core.function.EntityBaseFunction;
 import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity;
+import cn.bootx.table.modify.annotation.DbComment;
 import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -57,7 +56,7 @@ public class GeneralTemplate extends MpBaseEntity implements EntityBaseFunction<
 
     /** 文件ID */
     @DbComment("文件ID")
-    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    @TableField(updateStrategy = FieldStrategy.NEVER)
     private Long fileId;
 
     /** 备注 */
diff --git a/bootx-services/service-iam/pom.xml b/bootx-services/service-iam/pom.xml
index 0f960c39e24c30cc86f79725e2ee503f112b34c3..b5c4660022d07f6812eefca3e278b6a6789db2d6 100644
--- a/bootx-services/service-iam/pom.xml
+++ b/bootx-services/service-iam/pom.xml
@@ -5,7 +5,7 @@
     
         cn.bootx.platform
         bootx-services
-        1.3.5
+        1.3.6
     
     4.0.0
 
@@ -63,6 +63,10 @@
             cn.bootx.platform
             common-starter-wechat
         
+        
+            org.quartz-scheduler
+            quartz
+        
     
 
 
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/code/IamErrorCode.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/code/IamErrorCode.java
index 43cd6030d0bdbbb25310aca1dd733e9e3246c944..89d1e6c511e350d70feefb9ec00e418f91fc8d88 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/code/IamErrorCode.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/code/IamErrorCode.java
@@ -52,6 +52,9 @@ public interface IamErrorCode {
     /** 角色已经被使用 */
     int ROLE_ALREADY_USED = 21027;
 
+    /** 含有下级角色 */
+    int ROLE_HAS_CHILD = 21028;
+
     /** 权限操作错误 */
     int PERMISSION_DB_ERROR = 21028;
 
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/DataScopeController.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/DataRoleController.java
similarity index 50%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/DataScopeController.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/DataRoleController.java
index 6e0cb7b6e4bf7a83fe000d5107ce5caf1cf4fc6a..ef660ce701e21d3940aa4b4a2279b2568c2b1306 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/DataScopeController.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/DataRoleController.java
@@ -4,13 +4,13 @@ import cn.bootx.platform.common.core.rest.PageResult;
 import cn.bootx.platform.common.core.rest.Res;
 import cn.bootx.platform.common.core.rest.ResResult;
 import cn.bootx.platform.common.core.rest.param.PageParam;
-import cn.bootx.platform.iam.core.scope.service.DataScopeService;
-import cn.bootx.platform.iam.core.scope.service.DataScopeUserService;
-import cn.bootx.platform.iam.dto.scope.DataScopeDto;
-import cn.bootx.platform.iam.dto.scope.DataScopeUserInfoDto;
-import cn.bootx.platform.iam.param.scope.DataScopeDeptParam;
-import cn.bootx.platform.iam.param.scope.DataScopeParam;
-import cn.bootx.platform.iam.param.scope.DataScopeUserParam;
+import cn.bootx.platform.iam.core.scope.service.DataRoleService;
+import cn.bootx.platform.iam.core.scope.service.DataRoleUserService;
+import cn.bootx.platform.iam.dto.scope.DataRoleDto;
+import cn.bootx.platform.iam.dto.scope.DataRoleUserDto;
+import cn.bootx.platform.iam.param.scope.DataRoleParam;
+import cn.bootx.platform.iam.param.scope.DataRoleDeptParam;
+import cn.bootx.platform.iam.param.scope.DataRoleUserParam;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
@@ -23,110 +23,110 @@ import java.util.List;
  * @author xxm
  * @since 2021/12/23
  */
-@Tag(name = "数据范围权限配置")
+@Tag(name = "数据角色配置")
 @RestController
-@RequestMapping("/data/scope")
+@RequestMapping("/data/role")
 @RequiredArgsConstructor
-public class DataScopeController {
+public class DataRoleController {
 
-    private final DataScopeService dataScopeService;
+    private final DataRoleService dataRoleService;
 
-    private final DataScopeUserService dataScopeUserService;
+    private final DataRoleUserService dataRoleUserService;
 
     @Operation(summary = "添加")
     @PostMapping("/add")
-    public ResResult add(@RequestBody DataScopeParam param) {
-        dataScopeService.add(param);
+    public ResResult add(@RequestBody DataRoleParam param) {
+        dataRoleService.add(param);
         return Res.ok();
     }
 
     @Operation(summary = "更新")
     @PostMapping("/update")
-    public ResResult update(@RequestBody DataScopeParam param) {
-        dataScopeService.update(param);
+    public ResResult update(@RequestBody DataRoleParam param) {
+        dataRoleService.update(param);
         return Res.ok();
     }
 
     @Operation(summary = "删除")
     @DeleteMapping("/delete")
     public ResResult delete(Long id) {
-        dataScopeService.delete(id);
+        dataRoleService.delete(id);
         return Res.ok();
     }
 
     @Operation(summary = "保存关联部门")
     @PostMapping("/saveDeptAssign")
-    public ResResult saveDeptAssign(@RequestBody DataScopeDeptParam param) {
-        dataScopeService.saveDeptAssign(param);
+    public ResResult saveDeptAssign(@RequestBody DataRoleDeptParam param) {
+        dataRoleService.saveDeptAssign(param);
         return Res.ok();
     }
 
     @Operation(summary = "获取关联部门id")
     @GetMapping("/getDeptIds")
     public ResResult> getDeptIds(Long id) {
-        return Res.ok(dataScopeService.findDeptIds(id));
+        return Res.ok(dataRoleService.findDeptIds(id));
     }
 
     @Operation(summary = "编码是否被使用")
     @GetMapping("/existsByCode")
     public ResResult existsByCode(String code) {
-        return Res.ok(dataScopeService.existsByCode(code));
+        return Res.ok(dataRoleService.existsByCode(code));
     }
 
     @Operation(summary = "编码是否被使用(不包含自己)")
     @GetMapping("/existsByCodeNotId")
     public ResResult existsByCode(String code, Long id) {
-        return Res.ok(dataScopeService.existsByCode(code, id));
+        return Res.ok(dataRoleService.existsByCode(code, id));
     }
 
     @Operation(summary = "名称是否被使用")
     @GetMapping("/existsByName")
     public ResResult existsByName(String name) {
-        return Res.ok(dataScopeService.existsByName(name));
+        return Res.ok(dataRoleService.existsByName(name));
     }
 
     @Operation(summary = "名称是否被使用(不包含自己)")
     @GetMapping("/existsByNameNotId")
     public ResResult existsByName(String name, Long id) {
-        return Res.ok(dataScopeService.existsByName(name, id));
+        return Res.ok(dataRoleService.existsByName(name, id));
     }
 
     @Operation(summary = "获取")
     @GetMapping("/findById")
-    public ResResult findById(Long id) {
-        return Res.ok(dataScopeService.findById(id));
+    public ResResult findById(Long id) {
+        return Res.ok(dataRoleService.findById(id));
     }
 
     @Operation(summary = "分页")
     @GetMapping("/page")
-    public ResResult> page(@ParameterObject PageParam pageParam,
-                                                    @ParameterObject DataScopeParam param) {
-        return Res.ok(dataScopeService.page(pageParam, param));
+    public ResResult> page(@ParameterObject PageParam pageParam,
+                                                   @ParameterObject DataRoleParam param) {
+        return Res.ok(dataRoleService.page(pageParam, param));
     }
 
     @Operation(summary = "查询全部")
     @GetMapping("/findAll")
-    public ResResult> findAll() {
-        return Res.ok(dataScopeService.findAll());
+    public ResResult> findAll() {
+        return Res.ok(dataRoleService.findAll());
     }
 
     @Operation(summary = "获取关联的用户列表")
-    @GetMapping("/findUsersByDataScopeId")
-    public ResResult> findUsersByDataScopeId(Long id) {
-        return Res.ok(dataScopeUserService.findUsersByDataScopeId(id));
+    @GetMapping("/findUsersByDataRoleId")
+    public ResResult> findUsersByDataRoleId(Long id) {
+        return Res.ok(dataRoleUserService.findUsersByDataRoleId(id));
     }
 
-    @Operation(summary = "保存关联用户权限")
+    @Operation(summary = "保存数据角色关联用户权限")
     @PostMapping("/saveUserAssign")
-    public ResResult saveUserAssign(@RequestBody DataScopeUserParam param) {
-        dataScopeUserService.saveUserAssign(param.getDataScopeId(), param.getUserIds());
+    public ResResult saveUserAssign(@RequestBody DataRoleUserParam param) {
+        dataRoleUserService.saveUserAssign(param.getDataRoleId(), param.getUserIds());
         return Res.ok();
     }
 
-    @Operation(summary = "批量删除关联用户")
+    @Operation(summary = "批量删除数据角色关联用户")
     @DeleteMapping("/deleteUserAssigns")
     public ResResult deleteUserAssigns(@RequestBody List ids) {
-        dataScopeUserService.deleteBatch(ids);
+        dataRoleUserService.deleteBatch(ids);
         return Res.ok();
     }
 
diff --git a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/controller/OnlineUserController.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/OnlineUserController.java
similarity index 47%
rename from bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/controller/OnlineUserController.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/OnlineUserController.java
index d52a3123769dfd8f6413bd772e53026ac7c08430..5097c5a99247c5c4aa8b62d5a9a0aac7dcbcc098 100644
--- a/bootx-common-starters/common-starter-auth/src/main/java/cn/bootx/platform/starter/auth/controller/OnlineUserController.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/OnlineUserController.java
@@ -1,44 +1,54 @@
-package cn.bootx.platform.starter.auth.controller;
+package cn.bootx.platform.iam.controller;
 
 import cn.bootx.platform.common.core.rest.PageResult;
 import cn.bootx.platform.common.core.rest.Res;
 import cn.bootx.platform.common.core.rest.ResResult;
 import cn.bootx.platform.common.core.rest.param.PageParam;
-import cn.bootx.platform.starter.auth.online.OnlineUserDto;
-import cn.bootx.platform.starter.auth.online.OnlineUserService;
+import cn.bootx.platform.iam.core.online.service.OnlineUserService;
+import cn.bootx.platform.iam.dto.online.OnlineUserInfoDto;
+import cn.bootx.platform.iam.dto.online.OnlineUserSessionDto;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
+/**
+ * 在线用户
+ * @author xxm
+ * @since 2023/12/4
+ */
 @Tag(name = "在线用户")
 @RestController
-@RequestMapping("/user/online")
+@RequestMapping("/online/user")
 @RequiredArgsConstructor
 public class OnlineUserController {
-
     private final OnlineUserService onlineUserService;
 
     @Operation(summary = "分页")
     @GetMapping("/page")
-    public ResResult> page(PageParam pageParam) {
+    public ResResult> page(PageParam pageParam){
         return Res.ok(onlineUserService.page(pageParam));
     }
 
-    @Operation(summary = "获取单条")
-    @GetMapping("/findBySessionId")
-    public ResResult findBySessionId(String sessionId) {
-        return Res.ok(onlineUserService.findBySessionId(sessionId));
+    @Operation(summary = "获取用户链接信息")
+    @GetMapping("/getSessionByUserId")
+    public ResResult> getSessionByUserId(String userId){
+        return Res.ok(onlineUserService.getSessionByUserId(userId));
     }
 
-    @Operation(summary = "踢人下线")
-    @PostMapping("/logoutByUserId")
-    public ResResult logoutByUserId(Long userId) {
-        onlineUserService.logoutByUserId(userId);
+    @Operation(summary = "登录用户分页")
+    @GetMapping("/pageByLogin")
+    public ResResult pageByLogin(PageParam pageParam){
         return Res.ok();
     }
 
+    @Operation(summary = "踢出用户")
+    @GetMapping("/kickOut")
+    public ResResult kickOut(String userId){
+        return Res.ok();
+    }
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/PasswordSecurityConfigController.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/PasswordSecurityConfigController.java
index 04b97f6f3ce6686b9b74ee5f5c6faf44afbfabba..391167015d5203754ec47f566ea03cc2ebb3d95f 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/PasswordSecurityConfigController.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/PasswordSecurityConfigController.java
@@ -1,5 +1,6 @@
 package cn.bootx.platform.iam.controller;
 
+import cn.bootx.platform.common.core.annotation.IgnoreAuth;
 import cn.bootx.platform.common.core.rest.Res;
 import cn.bootx.platform.common.core.rest.ResResult;
 import cn.bootx.platform.iam.core.security.password.service.PasswordChangeHistoryService;
@@ -47,10 +48,10 @@ public class PasswordSecurityConfigController {
         return Res.ok(passwordChangeHistoryService.isRecentlyUsed(SecurityUtil.getUserId(),password));
     }
 
+    @IgnoreAuth
     @Operation(summary = "登录后检查密码相关的情况")
-    @GetMapping("/checkPasswordSecurity")
-    public ResResult checkPasswordSecurity(){
-        Long userId = SecurityUtil.getUserId();
-        return Res.ok(passwordSecurityCheckService.checkPasswordSecurity(userId));
+    @GetMapping("/check")
+    public ResResult check(){
+        return Res.ok(passwordSecurityCheckService.check());
     }
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/PermMenuController.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/PermMenuController.java
index f946dc38236ac278fcd86cd427a1f6f5a3c8c822..69e254777d3f5bb3950048f10d5bbef9c62dad1d 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/PermMenuController.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/PermMenuController.java
@@ -14,10 +14,11 @@ import org.springframework.web.bind.annotation.*;
 import java.util.List;
 
 /**
+ * 菜单和权限码
  * @author xxm
  * @since 2020/5/11 9:36
  */
-@Tag(name = "菜单权限资源")
+@Tag(name = "菜单和权限码")
 @RestController
 @RequestMapping("/perm/menu")
 @RequiredArgsConstructor
@@ -45,18 +46,18 @@ public class PermMenuController {
         return Res.ok(rolePermissionService.findMenuTree(clientCode));
     }
 
-    @Operation(summary = "获取全部树")
-    @GetMapping("/allTree")
-    public ResResult> allTree(String clientCode) {
-        return Res.ok(rolePermissionService.findAllTree(clientCode));
-    }
-
     @Operation(summary = "资源(权限码)列表")
     @GetMapping("/resourceList")
     public ResResult> resourceList(Long menuId) {
         return Res.ok(permissionService.findResourceByMenuId(menuId));
     }
 
+    @Operation(summary = "获取菜单和权限码树")
+    @GetMapping("/menuAndPermCodeTree")
+    public ResResult> menuAndPermCodeTree(String clientCode) {
+        return Res.ok(rolePermissionService.findMenuAndPermCodeTree(clientCode));
+    }
+
     @Operation(summary = "根据id查询")
     @GetMapping("/findById")
     public ResResult findById(Long id) {
@@ -81,5 +82,4 @@ public class PermMenuController {
     public ResResult existsByPermCode(String permCode, Long id) {
         return Res.ok(permissionService.existsByPermCode(permCode, id));
     }
-
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/PermPathController.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/PermPathController.java
index 84392123a4e21417cba5a4a941bda84106758316..0ba30b49c6517e68a041dc51cc4cd051d4f40556 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/PermPathController.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/PermPathController.java
@@ -24,7 +24,7 @@ import java.util.List;
  * @since 2020/5/11 9:36
  */
 @Validated
-@Tag(name = "请求权限资源")
+@Tag(name = "请求权限管理")
 @RestController
 @RequestMapping("/perm/path")
 @RequiredArgsConstructor
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/RoleController.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/RoleController.java
index b3b4cee2c8ccc4494e03e05a417b503c3c4e4140..4c967a9beeb1770b9c4169fb1ea6969df40e2965 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/RoleController.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/RoleController.java
@@ -43,6 +43,12 @@ public class RoleController {
         return Res.ok();
     }
 
+    @Operation(summary = "角色树")
+    @GetMapping("/tree")
+    public ResResult> tree(){
+        return Res.ok(roleService.tree());
+    }
+
     @Operation(summary = "修改角色(返回角色对象)")
     @PostMapping(value = "/update")
     public ResResult update(@RequestBody RoleParam roleParam) {
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/RoleMenuController.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/RoleMenuController.java
index 3bb11af7ef6c69449ee21673429d82c8f43eb6d3..9e346ad48b2b2ce48e1f1dfe2469fa7644e6927b 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/RoleMenuController.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/RoleMenuController.java
@@ -5,6 +5,7 @@ import cn.bootx.platform.common.core.rest.Res;
 import cn.bootx.platform.common.core.rest.ResResult;
 import cn.bootx.platform.common.core.util.ValidationUtil;
 import cn.bootx.platform.iam.core.upms.service.RolePermService;
+import cn.bootx.platform.iam.dto.permission.PermMenuDto;
 import cn.bootx.platform.iam.dto.upms.MenuAndResourceDto;
 import cn.bootx.platform.iam.param.upms.RolePermissionParam;
 import io.swagger.v3.oas.annotations.Operation;
@@ -32,7 +33,7 @@ public class RoleMenuController {
     @PostMapping("/save")
     public ResResult save(@RequestBody RolePermissionParam param) {
         ValidationUtil.validateParam(param, RolePermissionParam.PermMenu.class);
-        rolePermService.save(param.getRoleId(), param.getClientCode(), param.getPermissionIds());
+        rolePermService.saveRoleMenu(param.getRoleId(), param.getClientCode(), param.getPermissionIds(),param.isUpdateChildren());
         return Res.ok(true);
     }
 
@@ -42,14 +43,21 @@ public class RoleMenuController {
         return Res.ok(rolePermService.findMenuIds(clientCode));
     }
 
-    @Operation(summary = "根据角色id获取关联权限id集合(包含资源和菜单)")
+    @Operation(summary = "获取当前角色下关联权限id集合(包含权限码和菜单)")
     @GetMapping("/findPermissionIdsByRole")
     public ResResult> findPermissionIdsByRole(Long roleId, String clientCode) {
         return Res.ok(rolePermService.findPermissionIdsByRole(roleId, clientCode));
     }
 
+
+    @Operation(summary = "获取当前角色下可见的菜单和权限码树(分配时用)")
+    @GetMapping("/findTreeByRole")
+    public ResResult> findTreeByRole(Long roleId, String clientCode) {
+        return Res.ok(rolePermService.findTreeByRole(clientCode,roleId));
+    }
+
     @IgnoreAuth
-    @Operation(summary = "获取菜单和资源权限")
+    @Operation(summary = "获取菜单和权限码(根据用户进行筛选)")
     @GetMapping("/getPermissions")
     public ResResult getPermissions(String clientCode) {
         return Res.ok(rolePermService.getPermissions(clientCode));
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/RolePathController.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/RolePathController.java
index f95eb3009761b488a73841b72e65a5404b350b5d..8044ecbc8e4e33363a7f03c6abc0f869b87de308 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/RolePathController.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/RolePathController.java
@@ -29,14 +29,14 @@ public class RolePathController {
     @PostMapping("/save")
     public ResResult save(@RequestBody RolePermissionParam param) {
         ValidationUtil.validateParam(param);
-        rolePathService.addRolePath(param.getRoleId(), param.getPermissionIds());
+        rolePathService.addRolePath(param.getRoleId(), param.getPermissionIds(), param.isUpdateChildren());
         return Res.ok();
     }
 
-    @Operation(summary = "根据用户id获取角色授权(请求权限列表)")
-    @GetMapping("/findPathsByUser")
-    public ResResult> findPathsByUser() {
-        return Res.ok(rolePathService.findPathsByUser());
+    @Operation(summary = "获取当前用户角色下可见的请求权限列表(分配时用)")
+    @GetMapping("/findPathsByRole")
+    public ResResult> findPathsByRole(Long roleId) {
+        return Res.ok(rolePathService.findPathsByRole(roleId));
     }
 
     @Operation(summary = "根据角色id获取关联权限id")
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/UserDataScopeController.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/UserDataRoleController.java
similarity index 45%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/UserDataScopeController.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/UserDataRoleController.java
index 1765bc87813466c74feda9f364d075cf43cf63e3..659b490308c35327095ddb8a4ce99c5206fc36e3 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/UserDataScopeController.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/controller/UserDataRoleController.java
@@ -3,10 +3,10 @@ package cn.bootx.platform.iam.controller;
 import cn.bootx.platform.common.core.rest.Res;
 import cn.bootx.platform.common.core.rest.ResResult;
 import cn.bootx.platform.common.core.util.ValidationUtil;
-import cn.bootx.platform.iam.core.upms.service.UserDataScopeService;
-import cn.bootx.platform.iam.dto.scope.DataScopeDto;
-import cn.bootx.platform.iam.param.upms.UserDataScopeBatchParam;
-import cn.bootx.platform.iam.param.upms.UserDataScopeParam;
+import cn.bootx.platform.iam.core.upms.service.UserDataRoleService;
+import cn.bootx.platform.iam.dto.scope.DataRoleDto;
+import cn.bootx.platform.iam.param.upms.UserDataRoleBatchParam;
+import cn.bootx.platform.iam.param.upms.UserDataRoleParam;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
@@ -16,39 +16,39 @@ import org.springframework.web.bind.annotation.*;
  * @author xxm
  * @since 2022/1/2
  */
-@Tag(name = "用户数据权限配置")
+@Tag(name = "用户数据角色配置")
 @RestController
-@RequestMapping("/user/data/scope")
+@RequestMapping("/user/data/role")
 @RequiredArgsConstructor
-public class UserDataScopeController {
+public class UserDataRoleController {
 
-    private final UserDataScopeService dataScopeService;
+    private final UserDataRoleService dataScopeService;
 
-    @Operation(summary = "给用户分配权限")
+    @Operation(summary = "给用户分配数据角色")
     @PostMapping("/saveAssign")
-    public ResResult saveAssign(@RequestBody UserDataScopeParam param) {
+    public ResResult saveAssign(@RequestBody UserDataRoleParam param) {
         ValidationUtil.validateParam(param);
-        dataScopeService.saveAssign(param.getUserId(), param.getDataScopeId());
+        dataScopeService.saveAssign(param.getUserId(), param.getDataRoleId());
         return Res.ok();
     }
 
     @Operation(summary = "给用户分配权限(批量)")
     @PostMapping("/saveAssignBatch")
-    public ResResult saveAssignBatch(@RequestBody UserDataScopeBatchParam param) {
-        dataScopeService.saveAssignBatch(param.getUserIds(), param.getDataScopeId());
+    public ResResult saveAssignBatch(@RequestBody UserDataRoleBatchParam param) {
+        dataScopeService.saveAssignBatch(param.getUserIds(), param.getDataRoleId());
         return Res.ok();
     }
 
-    @Operation(summary = "根据用户ID获取到数据权限")
-    @GetMapping(value = "/findDataScopeByUser")
-    public ResResult findDataScopeByUser(Long id) {
-        return Res.ok(dataScopeService.findDataScopeByUser(id));
+    @Operation(summary = "根据用户ID获取到数据角色列表")
+    @GetMapping(value = "/findDataRoleByUser")
+    public ResResult findDataRoleByUser(Long id) {
+        return Res.ok(dataScopeService.findDataRoleByUser(id));
     }
 
-    @Operation(summary = "根据用户ID获取到数据权限Id")
-    @GetMapping(value = "/findDataScopeIdByUser")
-    public ResResult findDataScopeIdByUser(Long id) {
-        return Res.ok(dataScopeService.findDataScopeIdByUser(id));
+    @Operation(summary = "根据用户ID获取到数据角色Id")
+    @GetMapping(value = "/findDataRoleIdByUser")
+    public ResResult findDataRoleIdByUser(Long id) {
+        return Res.ok(dataScopeService.findDataRoleIdByUser(id));
     }
 
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/auth/login/PasswordLoginHandler.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/auth/login/PasswordLoginHandler.java
index 7706301b46c0c5cd7e33e7a983a82ee25c7177e9..0d3fcf9f5f89bbfa13990c487b8f7ad539fa5bd7 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/auth/login/PasswordLoginHandler.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/auth/login/PasswordLoginHandler.java
@@ -107,7 +107,7 @@ public class PasswordLoginHandler implements UsernamePasswordAuthentication {
     }
 
     /**
-     * 认证后操作 将验证码设置为失效
+     * 认证后操作
      */
     @Override
     public void authenticationAfter(AuthInfoResult authInfoResult, LoginAuthContext context) {
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/online/service/OnlineUserService.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/online/service/OnlineUserService.java
new file mode 100644
index 0000000000000000000000000000000000000000..065df6c4e3fcd465a64fbaf06dece46ea2ef834d
--- /dev/null
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/online/service/OnlineUserService.java
@@ -0,0 +1,83 @@
+package cn.bootx.platform.iam.core.online.service;
+
+import cn.bootx.platform.common.core.rest.PageResult;
+import cn.bootx.platform.common.core.rest.param.PageParam;
+import cn.bootx.platform.common.core.util.CollUtil;
+import cn.bootx.platform.common.websocket.manager.SpringWebSocketSessionManager;
+import cn.bootx.platform.common.websocket.notice.UserNoticeWebSocketHandler;
+import cn.bootx.platform.iam.core.user.dao.UserInfoManager;
+import cn.bootx.platform.iam.core.user.entity.UserInfo;
+import cn.bootx.platform.iam.dto.online.OnlineUserInfoDto;
+import cn.bootx.platform.iam.dto.online.OnlineUserSessionDto;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.web.socket.WebSocketSession;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * websocket会话管理
+ * @author xxm
+ * @since 2023/10/15
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class OnlineUserService {
+    private final UserInfoManager userInfoManager;
+    /**
+     * 在线用户分页
+     */
+    public PageResult page(PageParam pageParam){
+        SpringWebSocketSessionManager wsManager = UserNoticeWebSocketHandler.getWsManager();
+        // 获取用户ids
+        Map> uid2sid = wsManager.getUid2sid();
+            // 组装用户信息
+        Set idSet = uid2sid.keySet();
+        if (CollUtil.isNotEmpty(idSet)){
+            List ids = CollUtil.sub(idSet, pageParam.start(), pageParam.end())
+                    .stream()
+                    .map(Long::parseLong)
+                    .collect(Collectors.toList());
+            Map userMap = userInfoManager.findAllByIds(ids)
+                    .stream()
+                    .collect(Collectors.toMap(UserInfo::getId, Function.identity()));
+            List onlineUserInfos = ids.stream()
+                    .map(userMap::get)
+                    .filter(Objects::nonNull)
+                    .map(UserInfo::toOnline)
+                    .collect(Collectors.toList());
+            return new PageResult()
+                    .setRecords(onlineUserInfos)
+                    .setSize(pageParam.getSize())
+                    .setTotal(idSet.size())
+                    .setCurrent(pageParam.getCurrent());
+        }
+        return new PageResult<>();
+    }
+
+    /**
+     * 获取用户链接信息
+     */
+    public List getSessionByUserId(String userId){
+        SpringWebSocketSessionManager wsManager = UserNoticeWebSocketHandler.getWsManager();
+        List sessionIds = wsManager.getUid2sid()
+                .get(userId);
+        Map sessionPool = wsManager.getSessionPool();
+        return sessionIds.stream()
+                .map(sessionPool::get)
+                .map(session -> new OnlineUserSessionDto()
+                        .setSessionId(session.getId())
+                        .setIp(session.getRemoteAddress().getAddress().getHostAddress())
+                        .setUri(session.getUri().toString())
+                )
+                .collect(Collectors.toList());
+    }
+
+}
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/permission/entity/PermMenu.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/permission/entity/PermMenu.java
index 0486b8a6a6072fd92d95a76494e8de39e85306ea..4b7b135ec567305816363163ce55a442ed08b10e 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/permission/entity/PermMenu.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/permission/entity/PermMenu.java
@@ -1,19 +1,17 @@
 package cn.bootx.platform.iam.core.permission.entity;
 
 import cn.bootx.platform.common.core.function.EntityBaseFunction;
-import cn.bootx.platform.iam.core.permission.convert.PermConvert;
-import cn.bootx.platform.iam.param.permission.PermMenuParam;
 import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity;
 import cn.bootx.platform.iam.code.PermissionCode;
+import cn.bootx.platform.iam.core.permission.convert.PermConvert;
 import cn.bootx.platform.iam.dto.permission.PermMenuDto;
+import cn.bootx.platform.iam.param.permission.PermMenuParam;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
-import static com.baomidou.mybatisplus.annotation.FieldStrategy.IGNORED;
-
 /**
  * 权限配置
  *
@@ -27,7 +25,7 @@ import static com.baomidou.mybatisplus.annotation.FieldStrategy.IGNORED;
 public class PermMenu extends MpBaseEntity implements EntityBaseFunction {
 
     /** 父id */
-    @TableField(updateStrategy = IGNORED)
+//    @TableField(updateStrategy = NEVER)
     private Long parentId;
 
     /** 关联终端code */
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/permission/service/PermMenuService.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/permission/service/PermMenuService.java
index c933bfd449e85dcc5b6b5a9c5062aab532d8ae2d..142ff45dcebb6defca54555ca9f8d2e4add65b72 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/permission/service/PermMenuService.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/permission/service/PermMenuService.java
@@ -29,7 +29,7 @@ import java.util.stream.Collectors;
 import static cn.bootx.platform.iam.code.CachingCode.USER_PERM_CODE;
 
 /**
- * 权限
+ * 菜单权限
  *
  * @author xxm
  * @since 2021/8/3
@@ -54,6 +54,7 @@ public class PermMenuService {
         if (PermissionCode.MENU_TYPE_TOP.equals(param.getMenuType())) {
             param.setParentId(null);
         }
+        // 增加判断是否循环依赖情况
         PermMenu permission = PermMenu.init(param);
         return permMenuManager.save(permission).toDto();
     }
@@ -72,6 +73,8 @@ public class PermMenuService {
         if (PermissionCode.MENU_TYPE_TOP.equals(permMenu.getMenuType())) {
             permMenu.setParentId(null);
         }
+        // TODO 检查上级菜单是否出现了循环依赖
+
         return permMenuManager.updateById(permMenu).toDto();
     }
 
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/role/dao/RoleManager.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/role/dao/RoleManager.java
index ad89763a1cc44d6b7100da45ca27cab255580da7..482f62a0af29ab1fc69a4169a02a85f92f0759ba 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/role/dao/RoleManager.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/role/dao/RoleManager.java
@@ -64,4 +64,7 @@ public class RoleManager extends BaseManager {
             .page(mpPage);
     }
 
+    public boolean existsByPid(Long roleId) {
+        return lambdaQuery().eq(Role::getPid, roleId).exists();
+    }
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/role/entity/Role.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/role/entity/Role.java
index 7ef021db28fea1e628064b57a03eb474fc2e5e52..23776e0e2d5de5f34a1d7685d8cb1b0a264c4d01 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/role/entity/Role.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/role/entity/Role.java
@@ -31,6 +31,9 @@ public class Role extends MpBaseEntity implements EntityBaseFunction {
     /** 是否系统内置 不能修改 */
     private boolean internal;
 
+    /** 父级Id */
+    private Long pid;
+
     /** 描述 */
     private String remark;
 
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/role/service/RoleService.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/role/service/RoleService.java
index afbc43b15fb4d7a98707aa5ff07172ddbd9c5656..db62c8e4630c5a59e7de7263668c40be010b4c55 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/role/service/RoleService.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/role/service/RoleService.java
@@ -1,25 +1,32 @@
 package cn.bootx.platform.iam.core.role.service;
 
+import cn.bootx.platform.common.core.entity.UserDetail;
 import cn.bootx.platform.common.core.rest.PageResult;
 import cn.bootx.platform.common.core.rest.dto.KeyValue;
 import cn.bootx.platform.common.core.rest.param.PageParam;
 import cn.bootx.platform.common.core.util.ResultConvertUtil;
+import cn.bootx.platform.common.core.util.TreeBuildUtil;
 import cn.bootx.platform.common.mybatisplus.util.MpUtil;
+import cn.bootx.platform.iam.core.role.dao.RoleManager;
+import cn.bootx.platform.iam.core.role.entity.Role;
 import cn.bootx.platform.iam.core.upms.dao.RoleMenuManager;
 import cn.bootx.platform.iam.core.upms.dao.RolePathManager;
 import cn.bootx.platform.iam.core.upms.dao.UserRoleManager;
+import cn.bootx.platform.iam.core.upms.entity.UserRole;
+import cn.bootx.platform.iam.dto.role.RoleDto;
 import cn.bootx.platform.iam.event.role.RoleCreateEvent;
 import cn.bootx.platform.iam.event.role.RoleDeleteEvent;
 import cn.bootx.platform.iam.event.role.RoleUpdateEvent;
 import cn.bootx.platform.iam.exception.role.RoleAlreadyExistedException;
 import cn.bootx.platform.iam.exception.role.RoleAlreadyUsedException;
+import cn.bootx.platform.iam.exception.role.RoleHaschildrenException;
 import cn.bootx.platform.iam.exception.role.RoleNotExistedException;
 import cn.bootx.platform.iam.param.role.RoleParam;
-import cn.bootx.platform.iam.core.role.dao.RoleManager;
-import cn.bootx.platform.iam.core.role.entity.Role;
-import cn.bootx.platform.iam.dto.role.RoleDto;
+import cn.bootx.platform.starter.auth.exception.NotLoginException;
+import cn.bootx.platform.starter.auth.util.SecurityUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.copier.CopyOptions;
+import cn.hutool.core.collection.ListUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.cache.annotation.CacheEvict;
@@ -27,8 +34,11 @@ import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 import static cn.bootx.platform.iam.code.CachingCode.USER_PATH;
 
@@ -58,7 +68,7 @@ public class RoleService {
      */
     @Transactional(rollbackFor = Exception.class)
     public void add(RoleParam roleParam) {
-        // Name唯一性校验(名称code不能相同)
+        // name和code唯一性校验
         if (roleManager.existsByCode(roleParam.getCode())) {
             throw new RoleAlreadyExistedException();
         }
@@ -76,7 +86,8 @@ public class RoleService {
     @Transactional(rollbackFor = Exception.class)
     public void update(RoleParam roleParam) {
         Long id = roleParam.getId();
-
+        // 角色的层级不可以被改变
+        roleParam.setPid(null);
         // name和code唯一性校验
         if (roleManager.existsByCode(roleParam.getCode(), id)) {
             throw new RoleAlreadyExistedException();
@@ -101,6 +112,10 @@ public class RoleService {
         if (Objects.isNull(roleId) || !roleManager.existsById(roleId)) {
             throw new RoleNotExistedException();
         }
+        // 有下级角色不允许删除
+        if (roleManager.existsByPid(roleId)) {
+            throw new RoleHaschildrenException();
+        }
         // 存在当前角色用户的场合不允许删除
         if (userRoleManager.existsByRoleId(roleId)) {
             throw new RoleAlreadyUsedException();
@@ -113,6 +128,46 @@ public class RoleService {
         eventPublisher.publishEvent(new RoleDeleteEvent(this,roleId));
     }
 
+    /**
+     * 角色树
+     */
+    public List tree(){
+        UserDetail userDetail = SecurityUtil.getCurrentUser().orElseThrow(NotLoginException::new);
+        // 查询所有的角色
+        List allRoles = roleManager.findAll();
+        List roleList = allRoles.stream()
+                .map(Role::toDto)
+                .collect(Collectors.toList());
+        // 全部角色的数据树
+        List tree = this.recursiveBuildTree(roleList);
+        // 系统管理员,获取全部的角色
+        if (userDetail.isAdmin()) {
+            return tree;
+        } else {
+            // 普通用户, 查询已经分配的角色和下级角色,然后重新构建树
+            return this.recursiveBuildTree(this.findRoleByUser(userDetail.getId(),tree));
+        }
+    }
+
+    /**
+     * 获取子孙角色
+     */
+    public List findChildren(Long ...ids) {
+        if (Objects.nonNull(ids)){
+            ArrayList roleIds = ListUtil.toList(ids);
+            // 平铺树
+            List tree = this.tree();
+            List roleDtoList = TreeBuildUtil.unfold(tree, RoleDto::getChildren);
+            // 找到对应角色的分支树, 然后通过二次平铺树, 获取所有的子孙角色
+            List collect = roleDtoList.stream()
+                    .filter(roleDto -> roleIds.contains(roleDto.getPid()))
+                    .collect(Collectors.toList());
+            // 二次平铺树
+            return TreeBuildUtil.unfold(collect, RoleDto::getChildren);
+        }
+        return new ArrayList<>();
+    }
+
     /**
      * 角色列表
      */
@@ -169,4 +224,28 @@ public class RoleService {
         return roleManager.existsByName(name, id);
     }
 
+    /**
+     * 获取用户可以管理的角色
+     */
+    private List findRoleByUser(Long userId,List tree){
+        // 查找子级拥有的角色
+        List roleIds = userRoleManager.findAllByUser(userId).stream()
+                .map(UserRole::getRoleId)
+                .collect(Collectors.toList());
+        // 获取关联的角色和子角色
+        List unfold = TreeBuildUtil.unfold(tree, RoleDto::getChildren);
+        return unfold.stream()
+               .filter(role -> roleIds.contains(role.getId()))
+               .collect(Collectors.toList());
+    }
+
+    /**
+     * 递归建树
+     * @return 递归后的树列表
+     */
+    private List recursiveBuildTree(List roles) {
+        return TreeBuildUtil.build(roles, null, RoleDto::getId, RoleDto::getPid,
+                RoleDto::setChildren, Comparator.comparingLong(RoleDto::getId));
+
+    }
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/convert/DataScopeConvert.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/convert/DataScopeConvert.java
index fe9ed00b7184f372c6def5bd664067fec5803a67..e9a5e37c4e979eac07aa2919f3d45706ec8b0fb1 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/convert/DataScopeConvert.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/convert/DataScopeConvert.java
@@ -1,8 +1,8 @@
 package cn.bootx.platform.iam.core.scope.convert;
 
-import cn.bootx.platform.iam.param.scope.DataScopeParam;
-import cn.bootx.platform.iam.core.scope.entity.DataScope;
-import cn.bootx.platform.iam.dto.scope.DataScopeDto;
+import cn.bootx.platform.iam.param.scope.DataRoleParam;
+import cn.bootx.platform.iam.core.scope.entity.DataRole;
+import cn.bootx.platform.iam.dto.scope.DataRoleDto;
 import org.mapstruct.Mapper;
 import org.mapstruct.factory.Mappers;
 
@@ -17,8 +17,8 @@ public interface DataScopeConvert {
 
     DataScopeConvert CONVERT = Mappers.getMapper(DataScopeConvert.class);
 
-    DataScope convert(DataScopeParam in);
+    DataRole convert(DataRoleParam in);
 
-    DataScopeDto convert(DataScope in);
+    DataRoleDto convert(DataRole in);
 
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataScopeDeptManager.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataRoleDeptManager.java
similarity index 48%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataScopeDeptManager.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataRoleDeptManager.java
index 2bb40fb98fbac2d06f505613f0167566775f4367..5fb26791405c2e1555d20d7ef2ba14cf28f4f389 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataScopeDeptManager.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataRoleDeptManager.java
@@ -1,7 +1,7 @@
 package cn.bootx.platform.iam.core.scope.dao;
 
 import cn.bootx.platform.common.mybatisplus.impl.BaseManager;
-import cn.bootx.platform.iam.core.scope.entity.DataScopeDept;
+import cn.bootx.platform.iam.core.scope.entity.DataRoleDept;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Repository;
@@ -15,21 +15,21 @@ import java.util.List;
 @Slf4j
 @Repository
 @RequiredArgsConstructor
-public class DataScopeDeptManager extends BaseManager {
+public class DataRoleDeptManager extends BaseManager {
 
-    public void deleteByDataScopeId(Long dataScopeId) {
-        this.deleteByField(DataScopeDept::getDataScopeId, dataScopeId);
+    public void deleteByDataRoleId(Long dataRoleId) {
+        this.deleteByField(DataRoleDept::getRoleId, dataRoleId);
     }
 
     /**
      * 根据部门进行删除
      */
     public void deleteByDeptIds(List deptIds) {
-        this.deleteByFields(DataScopeDept::getDeptId, deptIds);
+        this.deleteByFields(DataRoleDept::getDeptId, deptIds);
     }
 
-    public List findByDateScopeId(Long dataScopeId) {
-        return this.findAllByField(DataScopeDept::getDataScopeId, dataScopeId);
+    public List findByDateRoleId(Long dataRoleId) {
+        return this.findAllByField(DataRoleDept::getRoleId, dataRoleId);
     }
 
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataScopeDeptMapper.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataRoleDeptMapper.java
similarity index 60%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataScopeDeptMapper.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataRoleDeptMapper.java
index b5cec7f8bf7ff882e119af9bd3a20915088f760c..389ab9c8029ad43d35528126ef18c658622c284a 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataScopeDeptMapper.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataRoleDeptMapper.java
@@ -1,6 +1,6 @@
 package cn.bootx.platform.iam.core.scope.dao;
 
-import cn.bootx.platform.iam.core.scope.entity.DataScopeDept;
+import cn.bootx.platform.iam.core.scope.entity.DataRoleDept;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -9,6 +9,6 @@ import org.apache.ibatis.annotations.Mapper;
  * @since 2021/12/23
  */
 @Mapper
-public interface DataScopeDeptMapper extends BaseMapper {
+public interface DataRoleDeptMapper extends BaseMapper {
 
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataScopeManager.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataRoleManager.java
similarity index 58%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataScopeManager.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataRoleManager.java
index 3b8e416587e74412de3ef3ffd54a6c8c53f27870..8633579520e5d19fd38367d05d3bc12f796d3f2e 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataScopeManager.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataRoleManager.java
@@ -1,7 +1,7 @@
 package cn.bootx.platform.iam.core.scope.dao;
 
 import cn.bootx.platform.common.mybatisplus.impl.BaseManager;
-import cn.bootx.platform.iam.core.scope.entity.DataScope;
+import cn.bootx.platform.iam.core.scope.entity.DataRole;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Repository;
@@ -13,22 +13,22 @@ import org.springframework.stereotype.Repository;
 @Slf4j
 @Repository
 @RequiredArgsConstructor
-public class DataScopeManager extends BaseManager {
+public class DataRoleManager extends BaseManager {
 
     public boolean existsByCode(String code) {
-        return this.existedByField(DataScope::getCode, code);
+        return this.existedByField(DataRole::getCode, code);
     }
 
     public boolean existsByCode(String code, Long id) {
-        return this.existedByField(DataScope::getCode, code, id);
+        return this.existedByField(DataRole::getCode, code, id);
     }
 
     public boolean existsByName(String name) {
-        return this.existedByField(DataScope::getName, name);
+        return this.existedByField(DataRole::getName, name);
     }
 
     public boolean existsByName(String name, Long id) {
-        return this.existedByField(DataScope::getName, name, id);
+        return this.existedByField(DataRole::getName, name, id);
     }
 
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataScopeMapper.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataRoleMapper.java
similarity index 62%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataScopeMapper.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataRoleMapper.java
index ab11b70db14a1a3db97d75cd7c5ddb7a9b17ca52..c5a3b18d039ba1653febbc805b2b04832038404b 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataScopeMapper.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataRoleMapper.java
@@ -1,6 +1,6 @@
 package cn.bootx.platform.iam.core.scope.dao;
 
-import cn.bootx.platform.iam.core.scope.entity.DataScope;
+import cn.bootx.platform.iam.core.scope.entity.DataRole;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -9,6 +9,6 @@ import org.apache.ibatis.annotations.Mapper;
  * @since 2021/12/23
  */
 @Mapper
-public interface DataScopeMapper extends BaseMapper {
+public interface DataRoleMapper extends BaseMapper {
 
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataScopeUserManager.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataRoleUserManager.java
similarity index 45%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataScopeUserManager.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataRoleUserManager.java
index 5547226afb501ac450f2224d54236cc8a7287eb1..3b0ef82626f09c7c44ac3ddb1a788c73b1e38acd 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataScopeUserManager.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataRoleUserManager.java
@@ -1,7 +1,7 @@
 package cn.bootx.platform.iam.core.scope.dao;
 
 import cn.bootx.platform.common.mybatisplus.impl.BaseManager;
-import cn.bootx.platform.iam.core.scope.entity.DataScopeUser;
+import cn.bootx.platform.iam.core.scope.entity.DataRoleUser;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Repository;
@@ -15,14 +15,14 @@ import java.util.List;
 @Slf4j
 @Repository
 @RequiredArgsConstructor
-public class DataScopeUserManager extends BaseManager {
+public class DataRoleUserManager extends BaseManager {
 
-    public void deleteByDataScopeId(Long dataScopeId) {
-        this.deleteByField(DataScopeUser::getDataScopeId, dataScopeId);
+    public void deleteByDataRoleId(Long dataRoleId) {
+        this.deleteByField(DataRoleUser::getRoleId, dataRoleId);
     }
 
-    public List findByDateScopeId(Long dataScopeId) {
-        return this.findAllByField(DataScopeUser::getDataScopeId, dataScopeId);
+    public List findByDateRoleId(Long dataRoleId) {
+        return this.findAllByField(DataRoleUser::getRoleId, dataRoleId);
     }
 
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataScopeUserMapper.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataRoleUserMapper.java
similarity index 60%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataScopeUserMapper.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataRoleUserMapper.java
index d0b4b0b29f051626d32ca2a044abef13b53f466e..5fc28f4d27e1b8b5c162130dd159417762283170 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataScopeUserMapper.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/dao/DataRoleUserMapper.java
@@ -1,6 +1,6 @@
 package cn.bootx.platform.iam.core.scope.dao;
 
-import cn.bootx.platform.iam.core.scope.entity.DataScopeUser;
+import cn.bootx.platform.iam.core.scope.entity.DataRoleUser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -9,6 +9,6 @@ import org.apache.ibatis.annotations.Mapper;
  * @since 2021/12/23
  */
 @Mapper
-public interface DataScopeUserMapper extends BaseMapper {
+public interface DataRoleUserMapper extends BaseMapper {
 
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/entity/DataScope.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/entity/DataRole.java
similarity index 71%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/entity/DataScope.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/entity/DataRole.java
index caa5314a9857866671a1588fe3450121e55f025c..2c3fbafd8212b0d3ea308ab681dcaba78894a2ec 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/entity/DataScope.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/entity/DataRole.java
@@ -2,17 +2,17 @@ package cn.bootx.platform.iam.core.scope.entity;
 
 import cn.bootx.platform.common.core.function.EntityBaseFunction;
 import cn.bootx.platform.iam.core.scope.convert.DataScopeConvert;
-import cn.bootx.platform.iam.param.scope.DataScopeParam;
+import cn.bootx.platform.iam.dto.scope.DataRoleDto;
+import cn.bootx.platform.iam.param.scope.DataRoleParam;
 import cn.bootx.platform.starter.data.perm.code.DataScopeEnum;
 import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity;
-import cn.bootx.platform.iam.dto.scope.DataScopeDto;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
 /**
- * 数据范围配置
+ * 数据角色
  *
  * @author xxm
  * @since 2021/12/23
@@ -20,8 +20,8 @@ import lombok.experimental.Accessors;
 @EqualsAndHashCode(callSuper = true)
 @Data
 @Accessors(chain = true)
-@TableName("iam_data_scope")
-public class DataScope extends MpBaseEntity implements EntityBaseFunction {
+@TableName("iam_data_role")
+public class DataRole extends MpBaseEntity implements EntityBaseFunction {
 
     /** 编码 */
     private String code;
@@ -33,17 +33,17 @@ public class DataScope extends MpBaseEntity implements EntityBaseFunction new BizException("数据不存在"));
-        BeanUtil.copyProperties(param, dataScope, CopyOptions.create().ignoreNullValue());
-        dataScope.setType(null);
-        dataScopeManager.updateById(dataScope);
+    public void update(DataRoleParam param) {
+        DataRole dataRole = dataRoleManager.findById(param.getId()).orElseThrow(() -> new BizException("数据不存在"));
+        BeanUtil.copyProperties(param, dataRole, CopyOptions.create().ignoreNullValue());
+        dataRoleManager.updateById(dataRole);
     }
 
     /**
@@ -78,15 +77,15 @@ public class DataScopeService {
      */
     @Transactional(rollbackFor = Exception.class)
     public void delete(Long id) {
-        if (!dataScopeManager.existedById(id)) {
+        if (!dataRoleManager.existedById(id)) {
             throw new BizException("数据不存在");
         }
-        if (userDataScopeManager.existsByDataScopeId(id)) {
+        if (userDataRoleManager.existsByDataRoleId(id)) {
             throw new BizException("该权限已经有用户在使用,无法删除");
         }
-        dataScopeManager.deleteById(id);
-        dataScopeUserManager.deleteByDataScopeId(id);
-        dataScopeDeptManager.deleteByDataScopeId(id);
+        dataRoleManager.deleteById(id);
+        dataRoleUserManager.deleteByDataRoleId(id);
+        dataRoleDeptManager.deleteByDataRoleId(id);
     }
 
     /**
@@ -94,31 +93,31 @@ public class DataScopeService {
      */
     @Transactional(rollbackFor = Exception.class)
     @CacheEvict(value = { USER_DATA_SCOPE }, allEntries = true)
-    public void saveDeptAssign(DataScopeDeptParam param) {
-        DataScope dataScope = dataScopeManager.findById(param.getDataScopeId()).orElseThrow(DataNotExistException::new);
+    public void saveDeptAssign(DataRoleDeptParam param) {
+        DataRole dataRole = dataRoleManager.findById(param.getDataRoleId()).orElseThrow(DataNotExistException::new);
         val scope = CollUtil.newArrayList(DataScopeEnum.DEPT_SCOPE.getCode(),
                 DataScopeEnum.DEPT_AND_USER_SCOPE.getCode());
-        if (!scope.contains(dataScope.getType())) {
+        if (!scope.contains(dataRole.getType())) {
             throw new BizException("非法操作");
         }
 
         // 先删后增
-        List dateScopedDeptList = dataScopeDeptManager.findByDateScopeId(param.getDataScopeId());
-        List deptIdsByDb = dateScopedDeptList.stream().map(DataScopeDept::getDeptId).collect(Collectors.toList());
+        List dateScopedDeptList = dataRoleDeptManager.findByDateRoleId(param.getDataRoleId());
+        List deptIdsByDb = dateScopedDeptList.stream().map(DataRoleDept::getDeptId).collect(Collectors.toList());
 
         // 要删除的
         List deptIds = param.getDeptIds();
         List deleteIds = dateScopedDeptList.stream()
-            .filter(dataScopeDept -> !deptIds.contains(dataScopeDept.getDeptId()))
+            .filter(dataRoleDept -> !deptIds.contains(dataRoleDept.getDeptId()))
             .map(MpIdEntity::getId)
             .collect(Collectors.toList());
         // 要增加的
-        List dataScopeDepths = deptIds.stream()
+        List dataRoleDepths = deptIds.stream()
             .filter(id -> !deptIdsByDb.contains(id))
-            .map(deptId -> new DataScopeDept(param.getDataScopeId(), deptId))
+            .map(deptId -> new DataRoleDept(param.getDataRoleId(), deptId))
             .collect(Collectors.toList());
-        dataScopeDeptManager.deleteByIds(deleteIds);
-        dataScopeDeptManager.saveAll(dataScopeDepths);
+        dataRoleDeptManager.deleteByIds(deleteIds);
+        dataRoleDeptManager.saveAll(dataRoleDepths);
     }
 
     /**
@@ -126,16 +125,16 @@ public class DataScopeService {
      */
     @EventListener
     public void DeptDeleteEventListener(DeptDeleteEvent event) {
-        dataScopeDeptManager.deleteByDeptIds(event.getDeptIds());
+        dataRoleDeptManager.deleteByDeptIds(event.getDeptIds());
     }
 
     /**
      * 获取关联的部门id集合
      */
     public List findDeptIds(Long id) {
-        return dataScopeDeptManager.findByDateScopeId(id)
+        return dataRoleDeptManager.findByDateRoleId(id)
             .stream()
-            .map(DataScopeDept::getDeptId)
+            .map(DataRoleDept::getDeptId)
             .collect(Collectors.toList());
     }
 
@@ -143,49 +142,49 @@ public class DataScopeService {
      * 判断权限编码是否存在
      */
     public boolean existsByCode(String code) {
-        return dataScopeManager.existsByCode(code);
+        return dataRoleManager.existsByCode(code);
     }
 
     /**
      * 判断权限编码是否存在
      */
     public boolean existsByCode(String code, Long id) {
-        return dataScopeManager.existsByCode(code, id);
+        return dataRoleManager.existsByCode(code, id);
     }
 
     /**
      * name是否存在
      */
     public boolean existsByName(String name) {
-        return dataScopeManager.existsByName(name);
+        return dataRoleManager.existsByName(name);
     }
 
     /**
      * name是否存在
      */
     public boolean existsByName(String name, Long id) {
-        return dataScopeManager.existsByName(name, id);
+        return dataRoleManager.existsByName(name, id);
     }
 
     /**
      * 获取单条
      */
-    public DataScopeDto findById(Long id) {
-        return dataScopeManager.findById(id).map(DataScope::toDto).orElseThrow(() -> new BizException("数据不存在"));
+    public DataRoleDto findById(Long id) {
+        return dataRoleManager.findById(id).map(DataRole::toDto).orElseThrow(() -> new BizException("数据不存在"));
     }
 
     /**
      * 分页
      */
-    public PageResult page(PageParam pageParam, DataScopeParam param) {
-        return MpUtil.convert2DtoPageResult(dataScopeManager.page(MpUtil.getMpPage(pageParam, DataScope.class)));
+    public PageResult page(PageParam pageParam, DataRoleParam param) {
+        return MpUtil.convert2DtoPageResult(dataRoleManager.page(MpUtil.getMpPage(pageParam, DataRole.class)));
     }
 
     /**
      * 列表查询
      */
-    public List findAll() {
-        return ResultConvertUtil.dtoListConvert(dataScopeManager.findAll());
+    public List findAll() {
+        return ResultConvertUtil.dtoListConvert(dataRoleManager.findAll());
     }
 
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/service/DataScopeUserService.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/service/DataRoleUserService.java
similarity index 52%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/service/DataScopeUserService.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/service/DataRoleUserService.java
index 97f1954e77245990c0d2895c5db9959c3201d2ae..39f97a9a0a29260e47b444992999871741958416 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/service/DataScopeUserService.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/scope/service/DataRoleUserService.java
@@ -2,27 +2,29 @@ package cn.bootx.platform.iam.core.scope.service;
 
 import cn.bootx.platform.common.core.exception.BizException;
 import cn.bootx.platform.common.core.function.CollectorsFunction;
-import cn.bootx.platform.starter.data.perm.code.DataScopeEnum;
-import cn.bootx.platform.iam.core.scope.dao.DataScopeManager;
-import cn.bootx.platform.iam.core.scope.dao.DataScopeUserManager;
-import cn.bootx.platform.iam.core.scope.entity.DataScope;
-import cn.bootx.platform.iam.core.scope.entity.DataScopeUser;
+import cn.bootx.platform.common.core.util.CollUtil;
+import cn.bootx.platform.iam.core.scope.dao.DataRoleManager;
+import cn.bootx.platform.iam.core.scope.dao.DataRoleUserManager;
+import cn.bootx.platform.iam.core.scope.entity.DataRole;
+import cn.bootx.platform.iam.core.scope.entity.DataRoleUser;
 import cn.bootx.platform.iam.core.user.dao.UserInfoManager;
 import cn.bootx.platform.iam.core.user.entity.UserInfo;
-import cn.bootx.platform.iam.dto.scope.DataScopeUserInfoDto;
+import cn.bootx.platform.iam.dto.scope.DataRoleUserDto;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import lombok.val;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import static cn.bootx.platform.iam.code.CachingCode.USER_DATA_SCOPE;
+import static cn.bootx.platform.starter.data.perm.code.DataScopeEnum.DEPT_AND_USER_SCOPE;
+import static cn.bootx.platform.starter.data.perm.code.DataScopeEnum.USER_SCOPE;
 
 /**
  * 数据范围权限限定用户级别
@@ -33,31 +35,31 @@ import static cn.bootx.platform.iam.code.CachingCode.USER_DATA_SCOPE;
 @Slf4j
 @Service
 @RequiredArgsConstructor
-public class DataScopeUserService {
+public class DataRoleUserService {
 
-    private final DataScopeManager dataScopeManager;
+    private final DataRoleManager dataRoleManager;
 
-    private final DataScopeUserManager dataScopeUserManager;
+    private final DataRoleUserManager dataRoleUserManager;
 
     private final UserInfoManager userInfoManager;
 
     /**
      * 关联用户列表
      */
-    public List findUsersByDataScopeId(Long dataScopeId) {
-        Map dataScopeUserMap = dataScopeUserManager.findByDateScopeId(dataScopeId)
+    public List findUsersByDataRoleId(Long dataRoleId) {
+        Map dataScopeUserMap = dataRoleUserManager.findByDateRoleId(dataRoleId)
             .stream()
-            .collect(Collectors.toMap(DataScopeUser::getUserId, Function.identity(), CollectorsFunction::retainLatest));
+            .collect(Collectors.toMap(DataRoleUser::getUserId, Function.identity(), CollectorsFunction::retainLatest));
         // 查询出用户id
         List userIds = dataScopeUserMap.values()
             .stream()
-            .map(DataScopeUser::getUserId)
+            .map(DataRoleUser::getUserId)
             .collect(Collectors.toList());
         // 查询出用户
         List userInfos = userInfoManager.findAllByIds(userIds);
 
         return userInfos.stream()
-            .map(userInfo -> new DataScopeUserInfoDto().setId(dataScopeUserMap.get(userInfo.getId()).getId())
+            .map(userInfo -> new DataRoleUserDto().setId(dataScopeUserMap.get(userInfo.getId()).getId())
                 .setUserId(userInfo.getId())
                 .setUsername(userInfo.getUsername())
                 .setName(userInfo.getName()))
@@ -69,22 +71,24 @@ public class DataScopeUserService {
      */
     @Transactional(rollbackFor = Exception.class)
     @CacheEvict(value = { USER_DATA_SCOPE }, allEntries = true)
-    public void saveUserAssign(Long dataScopeId, List userIds) {
-        DataScope dataScope = dataScopeManager.findById(dataScopeId).orElseThrow(() -> new BizException("数据不存在"));
-        if (!Objects.equals(dataScope.getType(), DataScopeEnum.USER_SCOPE.getCode())
-                && Objects.equals(dataScope.getType(), DataScopeEnum.DEPT_AND_USER_SCOPE.getCode())) {
+    public void saveUserAssign(Long dataRoleId, List userIds) {
+        DataRole dataRole = dataRoleManager.findById(dataRoleId).orElseThrow(() -> new BizException("数据不存在"));
+
+        val scope = CollUtil.newArrayList(USER_SCOPE.getCode(),
+                DEPT_AND_USER_SCOPE.getCode());
+        if (!scope.contains(dataRole.getType())) {
             throw new BizException("非法操作");
         }
-        List dataScopeUserIds = dataScopeUserManager.findByDateScopeId(dataScopeId)
+        List dataScopeUserIds = dataRoleUserManager.findByDateRoleId(dataRoleId)
             .stream()
-            .map(DataScopeUser::getUserId)
+            .map(DataRoleUser::getUserId)
             .collect(Collectors.toList());
 
-        List dataScopeUsers = userIds.stream()
+        List dataScopeUsers = userIds.stream()
             .filter(userId -> !dataScopeUserIds.contains(userId))
-            .map(userId -> new DataScopeUser(dataScopeId, userId))
+            .map(userId -> new DataRoleUser(dataRoleId, userId))
             .collect(Collectors.toList());
-        dataScopeUserManager.saveAll(dataScopeUsers);
+        dataRoleUserManager.saveAll(dataScopeUsers);
     }
 
     /**
@@ -92,7 +96,7 @@ public class DataScopeUserService {
      */
     @CacheEvict(value = { USER_DATA_SCOPE }, allEntries = true)
     public void deleteBatch(List ids) {
-        dataScopeUserManager.deleteByIds(ids);
+        dataRoleUserManager.deleteByIds(ids);
     }
 
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/security/password/dao/PasswordChangeHistoryManager.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/security/password/dao/PasswordChangeHistoryManager.java
index eb0ddb526a3ab803d4a375701e31aa033f8c8164..c03679aaf054ebf286bf181799fdca206462a464 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/security/password/dao/PasswordChangeHistoryManager.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/security/password/dao/PasswordChangeHistoryManager.java
@@ -25,6 +25,7 @@ public class PasswordChangeHistoryManager extends BaseManager userIds){
         passwordLoginFailRecordManager.clearBatchFailCount(userIds);
     }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/security/password/service/PasswordSecurityCheckService.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/security/password/service/PasswordSecurityCheckService.java
index 73776faaddcdf076a025eeb7231d2b9619b2a3eb..d16395f820671114e3189bf4a1611ebb44a44115 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/security/password/service/PasswordSecurityCheckService.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/security/password/service/PasswordSecurityCheckService.java
@@ -1,14 +1,18 @@
 package cn.bootx.platform.iam.core.security.password.service;
 
+import cn.bootx.platform.common.core.entity.UserDetail;
 import cn.bootx.platform.common.core.util.CollUtil;
 import cn.bootx.platform.common.core.util.LocalDateTimeUtil;
 import cn.bootx.platform.iam.core.security.password.dao.PasswordChangeHistoryManager;
 import cn.bootx.platform.iam.core.security.password.entity.PasswordChangeHistory;
 import cn.bootx.platform.iam.core.user.dao.UserExpandInfoManager;
 import cn.bootx.platform.iam.core.user.entity.UserExpandInfo;
+import cn.bootx.platform.iam.core.user.service.UserExpandInfoService;
 import cn.bootx.platform.iam.dto.security.PasswordSecurityConfigDto;
 import cn.bootx.platform.iam.dto.security.passwordSecurityCheckResult;
 import cn.bootx.platform.iam.exception.user.UserInfoNotExistsException;
+import cn.bootx.platform.starter.auth.exception.NotLoginException;
+import cn.bootx.platform.starter.auth.util.SecurityUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -33,19 +37,28 @@ public class PasswordSecurityCheckService {
 
     private final UserExpandInfoManager userExpandInfoManager;
 
+    private final UserExpandInfoService userExpandInfoService;
 
     /**
      * 登录后检查密码相关的情况
      */
-    public passwordSecurityCheckResult checkPasswordSecurity(Long userId){
+    public passwordSecurityCheckResult check(){
         passwordSecurityCheckResult result = new passwordSecurityCheckResult();
+        UserDetail userDetail = SecurityUtil.getCurrentUser()
+                .orElseThrow(NotLoginException::new);
+        if (userDetail.isAdmin()){
+            return result;
+        }
+        Long userId = userDetail.getId();
+        UserExpandInfo userExpandInfo = userExpandInfoManager.findById(userId).orElseThrow(UserInfoNotExistsException::new);
+
         PasswordSecurityConfigDto securityConfig = configService.getDefault();
         // 检查是否是默认密码未进行修改
-        if (this.isDefaultPassword(userId,securityConfig)){
+        if (this.isDefaultPassword(userExpandInfo,securityConfig)){
             return result.setDefaultPwd(true);
         }
-        int state = this.verifyPasswordExpire(userId, securityConfig);
-        // 检查密码是否已经过期
+        int state = this.verifyPasswordExpire(userExpandInfo, securityConfig);
+        // 检查密码是否已经过期, 如果过期更新用户过期状态
         if (state == 0){
             return result.setExpirePwd(true);
         }
@@ -61,10 +74,8 @@ public class PasswordSecurityCheckService {
     /**
      * 判断用户初始化密码是否需要修改
      */
-    public boolean isDefaultPassword(Long userId, PasswordSecurityConfigDto securityConfig){
-        UserExpandInfo userInfo = userExpandInfoManager.findById(userId)
-                .orElseThrow(UserInfoNotExistsException::new);
-        return userInfo.isInitialPassword() && securityConfig.isRequireChangePwd();
+    public boolean isDefaultPassword(UserExpandInfo userExpandInfo, PasswordSecurityConfigDto securityConfig){
+        return userExpandInfo.isInitialPassword() && securityConfig.isRequireChangePwd();
     }
 
 
@@ -74,26 +85,37 @@ public class PasswordSecurityCheckService {
      * 0. 密码已经过期
      * -N. 密码还有几天过期, 需要进行提醒
      */
-    public int verifyPasswordExpire(Long userId,PasswordSecurityConfigDto securityConfig){
+    public int verifyPasswordExpire(UserExpandInfo userExpandInfo,PasswordSecurityConfigDto securityConfig){
+        // 已经是密码过期状态
+        if (userExpandInfo.isExpirePassword()){
+            return 0;
+        }
 
         // 判断用户密码是否需要强制进行更改
-        List changeHistoryList = historyManager.findAllByUserAndCount(userId, 1);
+        List changeHistoryList = historyManager.findAllByUserAndCount(userExpandInfo.getId(), 1);
         if (CollUtil.isNotEmpty(changeHistoryList)){
             PasswordChangeHistory passwordChangeHistory = changeHistoryList.get(0);
             LocalDateTime createTime = passwordChangeHistory.getCreateTime();
-            // 判断距今的时间是否超过密码过期时间是多少
+            // 判断上次更改密码的时间距今是多少
             int keepPwdDay = (int) LocalDateTimeUtil.between(createTime, LocalDateTime.now(), ChronoUnit.DAYS);
+
             int dealDay = securityConfig.getUpdateFrequency() - keepPwdDay;
-            // 判断密码是否已经过期
-            if( dealDay >= 0 ){
-               return 1;
+            // 密码过期
+            if (dealDay < 0){
+                // 更新过期状态
+                userExpandInfoService.userExpirePwd(userExpandInfo.getId());
+                return 0;
             }
             // 判断是否满足密码修改的倒计时提醒
             if (dealDay < securityConfig.getExpireRemind()){
                 return -dealDay;
             }
+            // 密码未过期
+            return 1;
+
         }
-        return 0;
+        return 1;
     }
 
+
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/RoleMenuManager.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/RoleMenuManager.java
index 89bd27686d01700c24bd0b749b8e7b94fe1b8563..6f3ae89e47cf4c5e8014381ec70e719d809323fe 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/RoleMenuManager.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/RoleMenuManager.java
@@ -32,12 +32,28 @@ public class RoleMenuManager extends BaseManager {
     public List findAllByRoles(List roleIds) {
         return findAllByFields(RoleMenu::getRoleId, roleIds);
     }
+    public List findAllByRole(Long roleId) {
+        return findAllByField(RoleMenu::getRoleId, roleId);
+    }
+
 
     public List findAllByRoleAndClientCode(Long roleId, String clientCode) {
         return lambdaQuery().eq(RoleMenu::getRoleId, roleId).eq(RoleMenu::getClientCode, clientCode).list();
 
     }
 
+    /**
+     * 根据角色id、客户端code、权限id进行删除
+     */
+    public void deleteByPermIds(Long roleId, String clientCode,List permissionIds) {
+        lambdaUpdate()
+                .eq(RoleMenu::getRoleId, roleId)
+                .eq(RoleMenu::getClientCode,clientCode)
+                .in(RoleMenu::getPermissionId,permissionIds)
+                .remove();
+    }
+
+
     @Override
     public List saveAll(List list) {
         list.forEach(roleMenu -> roleMenu.setId(IdUtil.getSnowflakeNextId()));
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/RolePathManager.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/RolePathManager.java
index 11745f41d99d7a33d64391ce0100ca9eb01b4c38..33cbf40f10245867ef4a2e05fba852b2bedf2a25 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/RolePathManager.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/RolePathManager.java
@@ -51,4 +51,13 @@ public class RolePathManager extends BaseManager {
         return rolePaths;
     }
 
+    /**
+     * 根据角色id 权限ids 删除关联关系
+     */
+    public void deleteByPermIds(Long roleId, List permissionIds) {
+        lambdaUpdate()
+                .eq(RolePath::getRoleId, roleId)
+                .in(RolePath::getPermissionId,permissionIds)
+                .remove();
+    }
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/UserDataScopeManager.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/UserDataRoleManager.java
similarity index 52%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/UserDataScopeManager.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/UserDataRoleManager.java
index 3e397a0b16247310aa6084b97b11763769f2b40f..2807eb804e91c0e9459c719b7a94291734bece2a 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/UserDataScopeManager.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/UserDataRoleManager.java
@@ -2,7 +2,7 @@ package cn.bootx.platform.iam.core.upms.dao;
 
 import cn.bootx.platform.common.mybatisplus.impl.BaseManager;
 import cn.bootx.platform.common.mybatisplus.util.MpUtil;
-import cn.bootx.platform.iam.core.upms.entity.UserDataScope;
+import cn.bootx.platform.iam.core.upms.entity.UserDataRole;
 import cn.bootx.platform.starter.auth.util.SecurityUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -18,30 +18,30 @@ import java.util.Optional;
 @Slf4j
 @Repository
 @RequiredArgsConstructor
-public class UserDataScopeManager extends BaseManager {
+public class UserDataRoleManager extends BaseManager {
 
-    public boolean existsByDataScopeId(Long dataScopeId) {
-        return this.existedByField(UserDataScope::getDataScopeId, dataScopeId);
+    public boolean existsByDataRoleId(Long dataRoleId) {
+        return this.existedByField(UserDataRole::getRoleId, dataRoleId);
     }
 
     public void deleteByUser(Long userId) {
-        this.deleteByField(UserDataScope::getUserId, userId);
+        this.deleteByField(UserDataRole::getUserId, userId);
     }
 
     public void deleteByUsers(List userIds) {
-        this.deleteByFields(UserDataScope::getUserId, userIds);
+        this.deleteByFields(UserDataRole::getUserId, userIds);
     }
 
-    public List findAllByUserId(Long userId) {
-        return this.findAllByField(UserDataScope::getUserId, userId);
+    public List findAllByUserId(Long userId) {
+        return this.findAllByField(UserDataRole::getUserId, userId);
     }
 
-    public Optional findByUserId(Long userId) {
-        return this.findByField(UserDataScope::getUserId, userId);
+    public Optional findByUserId(Long userId) {
+        return this.findByField(UserDataRole::getUserId, userId);
     }
 
     @Override
-    public List saveAll(List dataScopes) {
+    public List saveAll(List dataScopes) {
         MpUtil.initEntityList(dataScopes, SecurityUtil.getUserIdOrDefaultId());
         MpUtil.executeBatch(dataScopes, baseMapper::saveAll, this.DEFAULT_BATCH_SIZE);
         return dataScopes;
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/UserDataScopeMapper.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/UserDataRoleMapper.java
similarity index 53%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/UserDataScopeMapper.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/UserDataRoleMapper.java
index 9627e8de8a8e1c07020067c9db6cc3c2569ded5a..e8f8eda65d10ec6d34593c2c0dc01a69b20a8f49 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/UserDataScopeMapper.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/dao/UserDataRoleMapper.java
@@ -1,6 +1,6 @@
 package cn.bootx.platform.iam.core.upms.dao;
 
-import cn.bootx.platform.iam.core.upms.entity.UserDataScope;
+import cn.bootx.platform.iam.core.upms.entity.UserDataRole;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -8,12 +8,13 @@ import org.apache.ibatis.annotations.Param;
 import java.util.List;
 
 /**
+ * 用户数据权限角色关系
  * @author xxm
  * @since 2021/12/23
  */
 @Mapper
-public interface UserDataScopeMapper extends BaseMapper {
+public interface UserDataRoleMapper extends BaseMapper {
 
-    void saveAll(@Param("userDataScopes") List userDataScopes);
+    void saveAll(@Param("userDataRoles") List userDataRoles);
 
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/entity/RoleMenu.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/entity/RoleMenu.java
index 90eba2873b292597d979522f35f4797ec1cc505f..99a96e7da5d4e11941c19cab101907bb5b3fb87f 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/entity/RoleMenu.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/entity/RoleMenu.java
@@ -8,7 +8,7 @@ import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
 
 /**
- * 角色权限关联关系
+ * 角色菜单(包含权限码)关联关系
  *
  * @author xxm
  * @since 2021/8/3
@@ -31,7 +31,7 @@ public class RoleMenu extends MpIdEntity {
     private String clientCode;
 
     /**
-     * 菜单权限id
+     * 菜单或权限码id
      */
     private Long permissionId;
 
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/entity/UserDataScope.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/entity/UserDataRole.java
similarity index 83%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/entity/UserDataScope.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/entity/UserDataRole.java
index 065169a06e4648008ef11693d6662520c9d02a6c..802b8252dc5cfaebbc52acb874c05d4db90270b0 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/entity/UserDataScope.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/entity/UserDataRole.java
@@ -19,13 +19,13 @@ import lombok.experimental.Accessors;
 @Accessors(chain = true)
 @AllArgsConstructor
 @NoArgsConstructor
-@TableName("iam_user_data_scope")
-public class UserDataScope extends MpIdEntity {
+@TableName("iam_user_data_role")
+public class UserDataRole extends MpIdEntity {
 
     /** 用户id */
     private Long userId;
 
     /** 数据权限id */
-    private Long dataScopeId;
+    private Long roleId;
 
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/service/RolePathService.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/service/RolePathService.java
index 48d984b02204a271e53ad3cdd714cc8ecec25602..a9b9c63c253e846353f32bbbb72eb72ce5eddc07 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/service/RolePathService.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/service/RolePathService.java
@@ -1,15 +1,20 @@
 package cn.bootx.platform.iam.core.upms.service;
 
 import cn.bootx.platform.common.core.annotation.CountTime;
+import cn.bootx.platform.common.core.rest.dto.BaseDto;
 import cn.bootx.platform.iam.core.permission.service.PermPathService;
+import cn.bootx.platform.iam.core.role.dao.RoleManager;
+import cn.bootx.platform.iam.core.role.entity.Role;
+import cn.bootx.platform.iam.core.role.service.RoleService;
+import cn.bootx.platform.iam.core.upms.dao.RolePathManager;
+import cn.bootx.platform.iam.core.upms.entity.RolePath;
 import cn.bootx.platform.iam.core.user.dao.UserInfoManager;
 import cn.bootx.platform.iam.core.user.entity.UserInfo;
+import cn.bootx.platform.iam.dto.permission.PermPathDto;
+import cn.bootx.platform.iam.dto.role.RoleDto;
+import cn.bootx.platform.iam.exception.role.RoleNotExistedException;
 import cn.bootx.platform.iam.exception.user.UserInfoNotExistsException;
 import cn.bootx.platform.starter.auth.util.SecurityUtil;
-import cn.bootx.platform.common.mybatisplus.base.MpIdEntity;
-import cn.bootx.platform.iam.core.upms.dao.RolePathManager;
-import cn.bootx.platform.iam.core.upms.entity.RolePath;
-import cn.bootx.platform.iam.dto.permission.PermPathDto;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import lombok.RequiredArgsConstructor;
@@ -41,6 +46,10 @@ public class RolePathService {
 
     private final PermPathService pathService;
 
+    private final RoleService roleService;
+
+    private final RoleManager roleManager;
+
     private final UserInfoManager userInfoManager;
 
     private final UserRoleService userRoleService;
@@ -51,22 +60,79 @@ public class RolePathService {
     @Transactional(rollbackFor = Exception.class)
     @CacheEvict(value = { USER_PATH }, allEntries = true)
     @CountTime
-    public void addRolePath(Long roleId, List permissionIds) {
+    public void addRolePath(Long roleId, List permissionIds,boolean updateAddChildren) {
         // 先删后增
         List rolePaths = rolePathManager.findAllByRole(roleId);
         List rolePathIds = rolePaths.stream().map(RolePath::getPermissionId).collect(Collectors.toList());
-        // 需要删除的
-        List deleteIds = rolePaths.stream()
-            .filter(rolePath -> !permissionIds.contains(rolePath.getPermissionId()))
-            .map(MpIdEntity::getId)
-            .collect(Collectors.toList());
-
-        List rolePermissions = permissionIds.stream()
-            .filter(id -> !rolePathIds.contains(id))
-            .map(permissionId -> new RolePath(roleId, permissionId))
-            .collect(Collectors.toList());
+        // 需要删除的请求权限
+        List deleteRolePaths = rolePaths.stream()
+                .filter(rolePath -> !permissionIds.contains(rolePath.getPermissionId()))
+                .collect(Collectors.toList());
+        // 需要删除的关联ID
+        List deleteIds = deleteRolePaths.stream().map(RolePath::getId).collect(Collectors.toList());
         rolePathManager.deleteByIds(deleteIds);
-        rolePathManager.saveAll(rolePermissions);
+
+        // 需要新增的权限关系
+        List addRolePath = permissionIds.stream()
+                .filter(id -> !rolePathIds.contains(id))
+                .map(permissionId -> new RolePath(roleId, permissionId))
+                .collect(Collectors.toList());
+        // 新增时验证是否超过了父级角色所拥有的权限
+        Role role = roleManager.findById(roleId).orElseThrow(RoleNotExistedException::new);
+        if (Objects.nonNull(role.getPid())){
+            List collect = rolePathManager.findAllByRole(role.getPid())
+                    .stream()
+                    .map(RolePath::getPermissionId)
+                    .collect(Collectors.toList());
+            addRolePath = addRolePath.stream()
+                    .filter(o->collect.contains(o.getPermissionId()))
+                    .collect(Collectors.toList());
+        }
+        rolePathManager.saveAll(addRolePath);
+
+        // 级联更新子孙角色
+        List deletePermIds = deleteRolePaths.stream().map(RolePath::getPermissionId).collect(Collectors.toList());
+        if (updateAddChildren) {
+            // 新增的进行追加
+            List addPermIds = addRolePath.stream()
+                    .map(RolePath::getPermissionId)
+                    .collect(Collectors.toList());
+            this.updateChildren(roleId, addPermIds, deletePermIds);
+        } else {
+            // 新增的不进行追加
+            this.updateChildren(roleId, null, deletePermIds);
+        }
+    }
+
+    /**
+     * 更新子孙角色关联关系
+     */
+    private void updateChildren(Long roleId, List addPermIds, List deletePermIds) {
+        if (CollUtil.isNotEmpty(addPermIds) && CollUtil.isNotEmpty(deletePermIds)){
+            return;
+        }
+        // 当前角色的子孙角色
+        List children = roleService.findChildren(roleId);
+        // 新增
+        if (CollUtil.isNotEmpty(addPermIds) && CollUtil.isNotEmpty(children)){
+            List addRolePaths = new ArrayList<>();
+            for (Long addPermId : addPermIds) {
+                for (RoleDto childrenRole : children) {
+                    addRolePaths.add(new RolePath(childrenRole.getId(), addPermId));
+                }
+            }
+            rolePathManager.saveAll(addRolePaths);
+        }
+        // 删除
+        if (CollUtil.isNotEmpty(deletePermIds) && CollUtil.isNotEmpty(children)) {
+            // 子孙角色
+            List childrenIds = children.stream()
+                    .map(BaseDto::getId)
+                    .collect(Collectors.toList());
+            for (Long childrenId : childrenIds) {
+                rolePathManager.deleteByPermIds(childrenId,deletePermIds);
+            }
+        }
     }
 
     /**
@@ -91,11 +157,11 @@ public class RolePathService {
     @Cacheable(value = USER_PATH, key = "#method+':'+#userId")
     public List findSimplePathsByUser(String method, Long userId) {
         return SpringUtil.getBean(this.getClass())
-            .findPathsByUser(userId)
-            .stream()
-            .filter(permPathDto -> Objects.equals(method, permPathDto.getRequestType()))
-            .map(PermPathDto::getPath)
-            .collect(Collectors.toList());
+                .findPathsByUser(userId)
+                .stream()
+                .filter(permPathDto -> Objects.equals(method, permPathDto.getRequestType()))
+                .map(PermPathDto::getPath)
+                .collect(Collectors.toList());
     }
 
     /**
@@ -103,7 +169,6 @@ public class RolePathService {
      */
     public List findPathsByUser(Long userId) {
         UserInfo userInfo = userInfoManager.findById(userId).orElseThrow(UserInfoNotExistsException::new);
-
         List paths;
         if (userInfo.isAdministrator()) {
             paths = pathService.findAll();
@@ -126,13 +191,34 @@ public class RolePathService {
         }
         List rolePaths = rolePathManager.findAllByRoles(roleIds);
         List permissionIds = rolePaths.stream()
-            .map(RolePath::getPermissionId)
-            .distinct()
-            .collect(Collectors.toList());
+                .map(RolePath::getPermissionId)
+                .distinct()
+                .collect(Collectors.toList());
         if (CollUtil.isNotEmpty(permissionIds)) {
             permissions = pathService.findByIds(permissionIds);
         }
         return permissions;
     }
 
+    /**
+     * 获取当前用户角色下可见的请求权限
+     * 如果是顶级角色, 查询到的是当前角色拥有的权限
+     * 如果是子角色, 查询到父级角色分配的权限,范围不会超过父级角色拥有的权限
+     */
+    public List findPathsByRole(Long roleId) {
+        List permPaths = pathService.findAll();
+        Role role = roleManager.findById(roleId)
+                .orElseThrow(RoleNotExistedException::new);
+        // 如果有有父级角色, 进行过滤筛选, 防止越权
+        if (Objects.nonNull(role.getPid())){
+            List permissionIds = rolePathManager.findAllByRole(role.getPid())
+                    .stream()
+                    .map(RolePath::getPermissionId)
+                    .collect(Collectors.toList());
+            permPaths = permPaths.stream()
+                    .filter(o->permissionIds.contains(o.getId()))
+                    .collect(Collectors.toList());
+        }
+        return permPaths;
+    }
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/service/RolePermService.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/service/RolePermService.java
index b1df9935fd89c6257ded2be2c352ee83f80e9ce1..4213989410c0d00318bf99fcf268a6a0ac7a0a39 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/service/RolePermService.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/service/RolePermService.java
@@ -4,16 +4,23 @@ import cn.bootx.platform.common.core.annotation.NestedPermission;
 import cn.bootx.platform.common.core.entity.UserDetail;
 import cn.bootx.platform.common.core.rest.dto.BaseDto;
 import cn.bootx.platform.common.core.util.TreeBuildUtil;
-import cn.bootx.platform.iam.core.permission.service.PermMenuService;
-import cn.bootx.platform.starter.auth.exception.NotLoginException;
-import cn.bootx.platform.starter.auth.util.SecurityUtil;
-import cn.bootx.platform.common.mybatisplus.base.MpIdEntity;
 import cn.bootx.platform.iam.code.PermissionCode;
+import cn.bootx.platform.iam.core.permission.service.PermMenuService;
+import cn.bootx.platform.iam.core.role.dao.RoleManager;
+import cn.bootx.platform.iam.core.role.entity.Role;
+import cn.bootx.platform.iam.core.role.service.RoleService;
 import cn.bootx.platform.iam.core.upms.dao.RoleMenuManager;
 import cn.bootx.platform.iam.core.upms.entity.RoleMenu;
 import cn.bootx.platform.iam.dto.permission.PermMenuDto;
+import cn.bootx.platform.iam.dto.role.RoleDto;
 import cn.bootx.platform.iam.dto.upms.MenuAndResourceDto;
+import cn.bootx.platform.iam.exception.role.RoleNotExistedException;
+import cn.bootx.platform.starter.auth.entity.UserStatus;
+import cn.bootx.platform.starter.auth.exception.NotLoginException;
+import cn.bootx.platform.starter.auth.service.UserStatusService;
+import cn.bootx.platform.starter.auth.util.SecurityUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.cache.annotation.CacheEvict;
@@ -22,7 +29,6 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
-import java.util.Comparator;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
@@ -40,6 +46,12 @@ import static cn.bootx.platform.iam.code.CachingCode.USER_PERM_CODE;
 @RequiredArgsConstructor
 public class RolePermService {
 
+    private final UserStatusService userStatusService;
+
+    private final RoleService roleService;
+
+    private final RoleManager roleManager;
+
     private final RoleMenuManager roleMenuManager;
 
     private final UserRoleService userRoleService;
@@ -47,30 +59,89 @@ public class RolePermService {
     private final PermMenuService permMenuService;
 
     /**
-     * 保存角色菜单授权
+     * 保存角色菜单(权限码)授权
+     * 如果删除角色关门的权限关系, 将会级联删除子孙角色的权限关系
+     * 新增角色权限关系, 会根据 updateAddChildren状态 来决定是否级联新增子孙角色的权限关系
      */
     @CacheEvict(value = { USER_PERM_CODE }, allEntries = true)
     @Transactional(rollbackFor = Exception.class)
-    public void save(Long roleId, String clientCode, List permissionIds) {
-        // 先删后增
+    public void saveRoleMenu(Long roleId, String clientCode, List permissionIds, boolean updateAddChildren) {
         List RoleMenus = roleMenuManager.findAllByRoleAndClientCode(roleId, clientCode);
         List roleMenuIds = RoleMenus.stream().map(RoleMenu::getPermissionId).collect(Collectors.toList());
-        // 需要删除的
-        List deleteIds = RoleMenus.stream()
-            .filter(rolePath -> !permissionIds.contains(rolePath.getPermissionId()))
-            .map(MpIdEntity::getId)
-            .collect(Collectors.toList());
-
-        List roleMenus = permissionIds.stream()
-            .filter(id -> !roleMenuIds.contains(id))
-            .map(permissionId -> new RoleMenu(roleId, clientCode, permissionId))
-            .collect(Collectors.toList());
-        roleMenuManager.deleteByIds(deleteIds);
-        roleMenuManager.saveAll(roleMenus);
+        // 需要删除的菜单
+        List deleteRoleMenus = RoleMenus.stream()
+                .filter(rolePath -> !permissionIds.contains(rolePath.getPermissionId()))
+                .collect(Collectors.toList());
+        // 需要删除的关联ID
+        List deleteRoleMenuIds = deleteRoleMenus.stream().map(RoleMenu::getId).collect(Collectors.toList());
+        roleMenuManager.deleteByIds(deleteRoleMenuIds);
+
+        // 需要新增的角色权限关系
+        List addRoleMenus = permissionIds.stream()
+                .filter(id -> !roleMenuIds.contains(id))
+                .map(permissionId -> new RoleMenu(roleId, clientCode, permissionId))
+                .collect(Collectors.toList());
+        // 新增时验证是否超过了父级角色所拥有的权限
+        Role role = roleManager.findById(roleId)
+                .orElseThrow(RoleNotExistedException::new);
+        if (Objects.nonNull(role.getPid())){
+            List collect = roleMenuManager.findAllByRoleAndClientCode(role.getPid(), clientCode)
+                    .stream()
+                    .map(RoleMenu::getPermissionId)
+                    .collect(Collectors.toList());
+            addRoleMenus = addRoleMenus.stream()
+                    .filter(o->collect.contains(o.getPermissionId()))
+                    .collect(Collectors.toList());
+        }
+        roleMenuManager.saveAll(addRoleMenus);
+
+        // 级联更新子孙角色
+        List deletePermIds = deleteRoleMenus.stream().map(RoleMenu::getPermissionId).collect(Collectors.toList());
+        if (updateAddChildren) {
+            // 新增的进行追加
+            List addPermIds = addRoleMenus.stream()
+                    .map(RoleMenu::getPermissionId)
+                    .collect(Collectors.toList());
+            this.updateChildren(roleId, clientCode, addPermIds, deletePermIds);
+        } else {
+            // 新增的不进行追加
+            this.updateChildren(roleId, clientCode, null, deletePermIds);
+        }
     }
 
     /**
-     * 根据角色查询对应的权限id
+     * 级联更新子孙角色关联关系
+     */
+    private void updateChildren(Long roleId, String clientCode, List addPermIds, List deletePermIds){
+        if (CollUtil.isNotEmpty(addPermIds) && CollUtil.isNotEmpty(deletePermIds)){
+            return;
+        }
+        // 当前角色的子孙角色
+        List children = roleService.findChildren(roleId);
+        // 新增
+        if (CollUtil.isNotEmpty(addPermIds) && CollUtil.isNotEmpty(children)){
+            List addRoleMenus = new ArrayList<>();
+            for (Long addPermId : addPermIds) {
+                for (RoleDto childrenRole : children) {
+                    addRoleMenus.add(new RoleMenu(childrenRole.getId(), clientCode, addPermId));
+                }
+            }
+            roleMenuManager.saveAll(addRoleMenus);
+        }
+        // 删除
+        if (CollUtil.isNotEmpty(deletePermIds) && CollUtil.isNotEmpty(children)) {
+            // 子孙角色
+            List childrenIds = children.stream()
+                    .map(BaseDto::getId)
+                    .collect(Collectors.toList());
+            for (Long childrenId : childrenIds) {
+                roleMenuManager.deleteByPermIds(childrenId,clientCode,deletePermIds);
+            }
+        }
+    }
+
+    /**
+     * 查询当前角色已经选择的权限id
      */
     public List findPermissionIdsByRole(Long roleId, String clientCode) {
         List rolePermissions = roleMenuManager.findAllByRoleAndClientCode(roleId, clientCode);
@@ -79,20 +150,47 @@ public class RolePermService {
 
     /**
      * 获取菜单权限树, 不包含资源权限(权限码)
+     * 1. 用户为管理员, 返回所有菜单
+     * 2. 如果用户为非管理员, 则返回当前用户角色下可见的菜单
      */
     public List findMenuTree(String clientCode) {
         List permissions = this.findPermissions(clientCode);
         List permissionsByNotButton = permissions.stream()
-            .filter(o -> !Objects.equals(PermissionCode.MENU_TYPE_RESOURCE, o.getMenuType()))
-            .collect(Collectors.toList());
+                .filter(o -> !Objects.equals(PermissionCode.MENU_TYPE_RESOURCE, o.getMenuType()))
+                .collect(Collectors.toList());
         return this.recursiveBuildTree(permissionsByNotButton);
     }
 
     /**
-     * 获取权限树, 包含菜单和资源权限(权限码)
+     * 获取菜单和权限码树
+     * 1. 用户为管理员, 返回所有菜单和资源权限(权限码)
+     * 2. 如果用户为非管理员, 则返回当前用户角色下可见的菜单和资源权限(权限码)
+     */
+    public List findMenuAndPermCodeTree(String clientCode){
+        List permissions = this.findPermissions(clientCode);
+        return this.recursiveBuildTree(permissions);
+    }
+
+    /**
+     * 获取当前用户角色下可见的菜单树, 包含菜单和资源权限(权限码)
+     * 如果是顶级角色, 查询到的是当前角色拥有的权限
+     * 如果是子角色, 查询到父级角色分配的权限,范围不会超过父级角色拥有的权限
      */
-    public List findAllTree(String clientCode) {
-        return this.recursiveBuildTree(this.findPermissions(clientCode));
+    public List findTreeByRole(String clientCode, Long roleId) {
+        List permissions = this.findPermissions(clientCode);
+        Role role = roleManager.findById(roleId)
+                .orElseThrow(RoleNotExistedException::new);
+        // 如果有有父级角色, 进行过滤筛选, 防止越权
+        if (Objects.nonNull(role.getPid())){
+            List permissionIds = roleMenuManager.findAllByRole(role.getPid())
+                    .stream()
+                    .map(RoleMenu::getPermissionId)
+                    .collect(Collectors.toList());
+            permissions = permissions.stream()
+                    .filter(o->permissionIds.contains(o.getId()))
+                    .collect(Collectors.toList());
+        }
+        return this.recursiveBuildTree(permissions);
     }
 
     /**
@@ -101,44 +199,43 @@ public class RolePermService {
     public List findMenuIds(String clientCode) {
         List permissions = this.findPermissions(clientCode);
         return permissions.stream()
-            .filter(o -> !Objects.equals(PermissionCode.MENU_TYPE_RESOURCE, o.getMenuType()))
-            .map(PermMenuDto::getId)
-            .collect(Collectors.toList());
+                .filter(o -> !Objects.equals(PermissionCode.MENU_TYPE_RESOURCE, o.getMenuType()))
+                .map(PermMenuDto::getId)
+                .collect(Collectors.toList());
     }
 
     /**
-     * 获取菜单和资源权限(权限码)
+     * 获取菜单和资源权限(权限码) 根据用户进行筛选
      */
     public MenuAndResourceDto getPermissions(String clientCode) {
         List permissions = this.findPermissions(clientCode);
         List resourcePerms = permissions.stream()
-            .filter(o -> Objects.equals(PermissionCode.MENU_TYPE_RESOURCE, o.getMenuType()))
-            .filter(PermMenuDto::isEffect)
-            .map(PermMenuDto::getPermCode)
-            .collect(Collectors.toList());
+                .filter(o -> Objects.equals(PermissionCode.MENU_TYPE_RESOURCE, o.getMenuType()))
+                .filter(PermMenuDto::isEffect)
+                .map(PermMenuDto::getPermCode)
+                .collect(Collectors.toList());
         List menus = permissions.stream()
-            .filter(o -> !Objects.equals(PermissionCode.MENU_TYPE_RESOURCE, o.getMenuType()))
-            .collect(Collectors.toList());
+                .filter(o -> !Objects.equals(PermissionCode.MENU_TYPE_RESOURCE, o.getMenuType()))
+                .collect(Collectors.toList());
         return new MenuAndResourceDto().setResourcePerms(resourcePerms).setMenus(this.recursiveBuildTree(menus));
     }
 
     /**
      * 获取权限信息列表
      */
-    private List findPermissions(String clientCode) {
+    private List  findPermissions(String clientCode) {
         UserDetail userDetail = SecurityUtil.getCurrentUser().orElseThrow(NotLoginException::new);
         List permissions;
 
         // 系统管理员,获取全部的权限
         if (userDetail.isAdmin()) {
             permissions = permMenuService.findAllByClientCode(clientCode);
-        }
-        else {
+        } else {
             // 非管理员获取自身拥有的权限
             permissions = this.findPermissionsByUser(userDetail.getId())
-                .stream()
-                .filter(o -> Objects.equals(clientCode, o.getClientCode()))
-                .collect(Collectors.toList());
+                    .stream()
+                    .filter(o -> Objects.equals(clientCode, o.getClientCode()))
+                    .collect(Collectors.toList());
         }
         return permissions;
     }
@@ -152,27 +249,33 @@ public class RolePermService {
         // 获取关联的的权限码
         List permissions = this.findPermissionsByUser(userId);
         return permissions.stream()
-            .filter(o -> Objects.equals(o.getMenuType(), PermissionCode.MENU_TYPE_RESOURCE))
-            .filter(PermMenuDto::isEffect)
-            .map(PermMenuDto::getPermCode)
-            .collect(Collectors.toList());
+                .filter(o -> Objects.equals(o.getMenuType(), PermissionCode.MENU_TYPE_RESOURCE))
+                .filter(PermMenuDto::isEffect)
+                .map(PermMenuDto::getPermCode)
+                .collect(Collectors.toList());
     }
 
     /**
-     * 查询用户查询拥有的权限信息(直接获取所有终端的权限码)
+     * 查询用户查询拥有的权限信息(直接获取所有终端的权限码),
+     * 如果当前用户密码是否过期, 过期或者未修改密码, 返回权限为空
      */
     private List findPermissionsByUser(Long userId) {
-        List permissions = new ArrayList<>(0);
+        // 判断当前用户密码是否过期, 过期或者未修改密码, 返回权限为空
+        UserStatus userStatus = userStatusService.getUserStatus();
+        if (userStatus.isExpirePassword() || userStatus.isInitialPassword()){
+            return new ArrayList<>(0);
+        }
 
+        List permissions = new ArrayList<>(0);
         List roleIds = userRoleService.findRoleIdsByUser(userId);
         if (CollUtil.isEmpty(roleIds)) {
             return permissions;
         }
         List roleMenus = roleMenuManager.findAllByRoles(roleIds);
         List permissionIds = roleMenus.stream()
-            .map(RoleMenu::getPermissionId)
-            .distinct()
-            .collect(Collectors.toList());
+                .map(RoleMenu::getPermissionId)
+                .distinct()
+                .collect(Collectors.toList());
         if (CollUtil.isNotEmpty(permissionIds)) {
             permissions = permMenuService.findByIds(permissionIds);
         }
@@ -186,8 +289,17 @@ public class RolePermService {
      */
     private List recursiveBuildTree(List permissions) {
         return TreeBuildUtil.build(permissions, null, BaseDto::getId, PermMenuDto::getParentId,
-                PermMenuDto::setChildren, Comparator.comparingDouble(PermMenuDto::getSortNo));
+                PermMenuDto::setChildren, (o1, o2) -> {
+                    // 先比较排序码
+                    if (ObjectUtil.isAllNotEmpty(o1.getSortNo(),o2.getSortNo())) {
+                        int compare = o1.getSortNo().compareTo(o2.getSortNo());
+                        if (compare != 0) {
+                            return compare;
+                        }
+                    }
+                    // 后比较主键id
+                    return o1.getId().compareTo(o2.getId());
+                });
 
     }
-
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/service/UserDataScopeService.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/service/UserDataRoleService.java
similarity index 49%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/service/UserDataScopeService.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/service/UserDataRoleService.java
index 8a057d40de234539e6a30829a533fc2d21febfaf..40cd1c586d498a4a821c3f35a71fe1d6179b786b 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/service/UserDataScopeService.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/upms/service/UserDataRoleService.java
@@ -4,22 +4,22 @@ import cn.bootx.platform.common.core.annotation.CountTime;
 import cn.bootx.platform.common.core.annotation.NestedPermission;
 import cn.bootx.platform.common.core.exception.BizException;
 import cn.bootx.platform.common.core.exception.DataNotExistException;
-import cn.bootx.platform.iam.core.scope.dao.DataScopeDeptManager;
-import cn.bootx.platform.iam.core.scope.dao.DataScopeManager;
-import cn.bootx.platform.iam.core.scope.dao.DataScopeUserManager;
-import cn.bootx.platform.iam.core.scope.entity.DataScope;
-import cn.bootx.platform.iam.core.scope.entity.DataScopeDept;
-import cn.bootx.platform.iam.core.scope.entity.DataScopeUser;
+import cn.bootx.platform.iam.core.scope.dao.DataRoleDeptManager;
+import cn.bootx.platform.iam.core.scope.dao.DataRoleManager;
+import cn.bootx.platform.iam.core.scope.dao.DataRoleUserManager;
+import cn.bootx.platform.iam.core.scope.entity.DataRole;
+import cn.bootx.platform.iam.core.scope.entity.DataRoleDept;
+import cn.bootx.platform.iam.core.scope.entity.DataRoleUser;
+import cn.bootx.platform.iam.core.upms.entity.UserDataRole;
 import cn.bootx.platform.iam.core.user.dao.UserDeptManager;
 import cn.bootx.platform.iam.core.user.entity.UserDept;
+import cn.bootx.platform.iam.dto.scope.DataRoleDto;
 import cn.bootx.platform.starter.data.perm.code.DataScopeEnum;
 import cn.bootx.platform.starter.data.perm.scope.DataPermScope;
 import cn.bootx.platform.common.mybatisplus.base.MpIdEntity;
 import cn.bootx.platform.iam.core.dept.dao.DeptManager;
 import cn.bootx.platform.iam.core.dept.entity.Dept;
-import cn.bootx.platform.iam.core.upms.dao.UserDataScopeManager;
-import cn.bootx.platform.iam.core.upms.entity.UserDataScope;
-import cn.bootx.platform.iam.dto.scope.DataScopeDto;
+import cn.bootx.platform.iam.core.upms.dao.UserDataRoleManager;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import lombok.RequiredArgsConstructor;
@@ -47,17 +47,17 @@ import static cn.bootx.platform.iam.code.CachingCode.USER_DATA_SCOPE;
 @Slf4j
 @Service
 @RequiredArgsConstructor
-public class UserDataScopeService {
+public class UserDataRoleService {
 
-    private final UserDataScopeManager userDataScopeManager;
+    private final UserDataRoleManager userDataRoleManager;
 
     private final UserDeptManager userDeptManager;
 
-    private final DataScopeManager dataScopeManager;
+    private final DataRoleManager dataRoleManager;
 
-    private final DataScopeUserManager dataScopeUserManager;
+    private final DataRoleUserManager dataRoleUserManager;
 
-    private final DataScopeDeptManager dataScopeDeptManager;
+    private final DataRoleDeptManager dataRoleDeptManager;
 
     private final DeptManager deptManager;
 
@@ -66,45 +66,45 @@ public class UserDataScopeService {
      */
     @Transactional(rollbackFor = Exception.class)
     @CacheEvict(value = { USER_DATA_SCOPE }, key = "#userId")
-    public void saveAssign(Long userId, Long dataScopeId) {
+    public void saveAssign(Long userId, Long roleId) {
         // 先删除用户拥有的数据权限
-        userDataScopeManager.deleteByUser(userId);
-        if (Objects.nonNull(dataScopeId)) {
-            userDataScopeManager.save(new UserDataScope(userId, dataScopeId));
+        userDataRoleManager.deleteByUser(userId);
+        if (Objects.nonNull(roleId)) {
+            userDataRoleManager.save(new UserDataRole(userId, roleId));
         }
     }
 
     /**
-     * 给用户数据权限关联关系
+     * 给用户数据角色关联关系
      */
     @Transactional(rollbackFor = Exception.class)
     @CacheEvict(value = { USER_DATA_SCOPE }, key = "#userIds")
-    public void saveAssignBatch(List userIds, Long dataScopeId) {
+    public void saveAssignBatch(List userIds, Long roleId) {
         // 先删除用户拥有的数据权限
-        userDataScopeManager.deleteByUsers(userIds);
-        List userDataScopes = userIds.stream()
-            .map(userId -> new UserDataScope(userId, dataScopeId))
+        userDataRoleManager.deleteByUsers(userIds);
+        List userDataRoles = userIds.stream()
+            .map(userId -> new UserDataRole(userId, roleId))
             .collect(Collectors.toList());
-        userDataScopeManager.saveAll(userDataScopes);
+        userDataRoleManager.saveAll(userDataRoles);
     }
 
     /**
-     * 查询用户所对应的数据权限信息
+     * 查询用户所对应的数据角色信息
      */
-    public DataScopeDto findDataScopeByUser(Long userId) {
-        if (Objects.isNull(this.findDataScopeIdByUser(userId))) {
-            return new DataScopeDto();
+    public DataRoleDto findDataRoleByUser(Long userId) {
+        if (Objects.isNull(this.findDataRoleIdByUser(userId))) {
+            return new DataRoleDto();
         }
-        return dataScopeManager.findById(this.findDataScopeIdByUser(userId))
-            .map(DataScope::toDto)
+        return dataRoleManager.findById(this.findDataRoleIdByUser(userId))
+            .map(DataRole::toDto)
             .orElseThrow(DataNotExistException::new);
     }
 
     /**
-     * 查询用户所对应的数据权限id
+     * 查询用户所对应的数据角色id
      */
-    public Long findDataScopeIdByUser(Long userId) {
-        return userDataScopeManager.findByUserId(userId).map(UserDataScope::getDataScopeId).orElse(null);
+    public Long findDataRoleIdByUser(Long userId) {
+        return userDataRoleManager.findByUserId(userId).map(UserDataRole::getRoleId).orElse(null);
 
     }
 
@@ -116,46 +116,54 @@ public class UserDataScopeService {
     @Cacheable(value = USER_DATA_SCOPE, key = "#userId")
     public DataPermScope getDataPermScopeByUser(Long userId) {
         DataPermScope dataPermScope = new DataPermScope();
-        List userDataScopes = userDataScopeManager.findAllByUserId(userId);
+        List userDataRoles = userDataRoleManager.findAllByUserId(userId);
 
-        if (CollUtil.isEmpty(userDataScopes)) {
+        if (CollUtil.isEmpty(userDataRoles)) {
             return dataPermScope.setScopeType(DataScopeEnum.SELF);
         }
-        UserDataScope userDataScope = userDataScopes.get(0);
-        DataScope dataScope = dataScopeManager.findById(userDataScope.getDataScopeId())
-            .orElseThrow(() -> new BizException("数据权限[配置不存在"));
+        UserDataRole userDataRole = userDataRoles.get(0);
+        DataRole dataRole = dataRoleManager.findById(userDataRole.getRoleId())
+            .orElseThrow(() -> new BizException("数据角色不存在"));
 
-        dataPermScope.setScopeType(DataScopeEnum.findByCode(dataScope.getType()));
+        dataPermScope.setScopeType(DataScopeEnum.findByCode(dataRole.getType()));
         // 用户
-        if (Objects.equals(dataScope.getType(), DataScopeEnum.USER_SCOPE.getCode())) {
-            Set collect = dataScopeUserManager.findByDateScopeId(dataScope.getId())
+        if (Objects.equals(dataRole.getType(), DataScopeEnum.USER_SCOPE.getCode())) {
+            Set userIds = dataRoleUserManager.findByDateRoleId(dataRole.getId())
                 .stream()
-                .map(DataScopeUser::getUserId)
+                .map(DataRoleUser::getUserId)
                 .collect(Collectors.toSet());
-            return dataPermScope.setUserScopeIds(collect);
+            return dataPermScope.setUserScopeIds(userIds);
         }
         // 部门
-        else if (Objects.equals(dataScope.getType(), DataScopeEnum.DEPT_SCOPE.getCode())) {
-            Set collect = dataScopeDeptManager.findByDateScopeId(dataScope.getId())
+        else if (Objects.equals(dataRole.getType(), DataScopeEnum.DEPT_SCOPE.getCode())) {
+            Set deptIds = dataRoleDeptManager.findByDateRoleId(dataRole.getId())
                 .stream()
-                .map(DataScopeDept::getDeptId)
+                .map(DataRoleDept::getDeptId)
                 .collect(Collectors.toSet());
-            return dataPermScope.setDeptScopeIds(collect);
+            return dataPermScope.setDeptScopeIds(deptIds);
+        }
+        // 部门+下属部门
+        else if (Objects.equals(dataRole.getType(), DataScopeEnum.SELF_DEPT_AND_SUB.getCode())) {
+            Set deptIds = dataRoleDeptManager.findByDateRoleId(dataRole.getId())
+                    .stream()
+                    .map(DataRoleDept::getDeptId)
+                    .collect(Collectors.toSet());
+            return dataPermScope.setDeptScopeIds(this.findDeptAndSub(deptIds));
         }
         // 用户和部门
-        else if (Objects.equals(dataScope.getType(), DataScopeEnum.DEPT_AND_USER_SCOPE.getCode())) {
-            Set userIds = dataScopeUserManager.findByDateScopeId(dataScope.getId())
+        else if (Objects.equals(dataRole.getType(), DataScopeEnum.DEPT_AND_USER_SCOPE.getCode())) {
+            Set userIds = dataRoleUserManager.findByDateRoleId(dataRole.getId())
                 .stream()
-                .map(DataScopeUser::getUserId)
+                .map(DataRoleUser::getUserId)
                 .collect(Collectors.toSet());
-            Set deptIds = dataScopeDeptManager.findByDateScopeId(dataScope.getId())
+            Set deptIds = dataRoleDeptManager.findByDateRoleId(dataRole.getId())
                 .stream()
-                .map(DataScopeDept::getDeptId)
+                .map(DataRoleDept::getDeptId)
                 .collect(Collectors.toSet());
             return dataPermScope.setDeptScopeIds(deptIds).setUserScopeIds(userIds);
         }
         // 自己所属的部门
-        else if (Objects.equals(dataScope.getType(), DataScopeEnum.BELONG_DEPT.getCode())) {
+        else if (Objects.equals(dataRole.getType(), DataScopeEnum.SELF_DEPT.getCode())) {
             Set deptIds = userDeptManager.findDeptIdsByUser(userId)
                 .stream()
                 .map(UserDept::getDeptId)
@@ -163,8 +171,8 @@ public class UserDataScopeService {
             return dataPermScope.setDeptScopeIds(deptIds);
         }
         // 自己所属的部门和下级部门
-        else if (Objects.equals(dataScope.getType(), DataScopeEnum.BELONG_DEPT_AND_SUB.getCode())) {
-            Set deptIds = this.findSubDeptList(userId);
+        else if (Objects.equals(dataRole.getType(), DataScopeEnum.SELF_DEPT_AND_SUB.getCode())) {
+            Set deptIds = this.findSelfDeptAndSub(userId);
             return dataPermScope.setDeptScopeIds(deptIds);
         }
         else {
@@ -176,7 +184,7 @@ public class UserDataScopeService {
     /**
      * 查找自己及子级部门
      */
-    private Set findSubDeptList(Long userId) {
+    private Set findSelfDeptAndSub(Long userId) {
         Set deptIds = userDeptManager.findDeptIdsByUser(userId)
             .stream()
             .map(UserDept::getDeptId)
@@ -192,6 +200,25 @@ public class UserDataScopeService {
                 .collect(Collectors.toSet());
     }
 
+
+    /**
+     * 查找部门及子级部门
+     */
+    private Set findDeptAndSub(Set deptIds) {
+        Map deptMap = deptManager.findAll()
+                .stream()
+                .collect(Collectors.toMap(MpIdEntity::getId, Function.identity()));
+        Set deptOrgCodes = deptIds.stream()
+                .map(deptMap::get)
+                .map(Dept::getOrgCode)
+                .collect(Collectors.toSet());
+        return deptMap.values()
+                .stream()
+                .filter(dept -> this.judgeSubDept(dept.getOrgCode(), deptOrgCodes))
+                .map(MpIdEntity::getId)
+                .collect(Collectors.toSet());
+    }
+
     /**
      * 判断是否是子部门
      */
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/user/convert/UserConvert.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/user/convert/UserConvert.java
index 06368e77b4cab0bacdfa09763446136682bbf54f..38fd47f46fc74b1b76543fb381c43d99e1515087 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/user/convert/UserConvert.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/user/convert/UserConvert.java
@@ -1,5 +1,6 @@
 package cn.bootx.platform.iam.core.user.convert;
 
+import cn.bootx.platform.iam.dto.online.OnlineUserInfoDto;
 import cn.bootx.platform.iam.param.user.UserInfoParam;
 import cn.bootx.platform.iam.core.user.entity.UserExpandInfo;
 import cn.bootx.platform.iam.core.user.entity.UserInfo;
@@ -19,4 +20,6 @@ public interface UserConvert {
 
     UserExpandInfoDto convert(UserExpandInfo in);
 
+    OnlineUserInfoDto toOnline(UserInfo in);
+
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/user/entity/UserExpandInfo.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/user/entity/UserExpandInfo.java
index 66ca18af83334919dbcecc0fb0a41dde94ab6496..6b2a9b04162d68afec433a841e515131ee3e4a3e 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/user/entity/UserExpandInfo.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/user/entity/UserExpandInfo.java
@@ -1,10 +1,9 @@
 package cn.bootx.platform.iam.core.user.entity;
 
 import cn.bootx.platform.common.core.function.EntityBaseFunction;
-import cn.bootx.platform.iam.core.user.convert.UserConvert;
 import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity;
+import cn.bootx.platform.iam.core.user.convert.UserConvert;
 import cn.bootx.platform.iam.dto.user.UserExpandInfoDto;
-import cn.bootx.table.modify.annotation.DbColumn;
 import cn.bootx.table.modify.annotation.DbTable;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
@@ -22,7 +21,7 @@ import java.time.LocalDateTime;
  */
 @EqualsAndHashCode(callSuper = true)
 @Data
-//@DbTable(isAppend = true)
+@DbTable(isAppend = true)
 @Accessors(chain = true)
 @TableName("iam_user_expand_info")
 public class UserExpandInfo extends MpBaseEntity implements EntityBaseFunction {
@@ -40,7 +39,6 @@ public class UserExpandInfo extends MpBaseEntity implements EntityBaseFunction userExpandInfos = userExpandInfoManager.findAllByIds(event.getUserIds());
+        userExpandInfos.forEach(userExpandInfo -> userExpandInfo.setExpirePassword(false).setInitialPassword(false));
+        userExpandInfoManager.updateAllById(userExpandInfos);
+    }
+
+    /**
+     * 密码重置
+     */
+    @EventListener(UserRestartPasswordEvent.class)
+    public void restartPassword(UserRestartPasswordEvent event){
+        List userExpandInfos = userExpandInfoManager.findAllByIds(event.getUserIds());
+        userExpandInfos.forEach(userExpandInfo -> userExpandInfo.setExpirePassword(false).setInitialPassword(false));
+        userExpandInfoManager.updateAllById(userExpandInfos);
+    }
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/user/service/UserInfoService.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/user/service/UserInfoService.java
index c589e7bedc993edb8ee417aca5951f95b5f69784..a77a3051f20dfbd6e4a5925ccb46e329f1a5028e 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/user/service/UserInfoService.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/core/user/service/UserInfoService.java
@@ -10,6 +10,7 @@ import cn.bootx.platform.iam.dto.user.LoginAfterUserInfo;
 import cn.bootx.platform.iam.dto.user.UserBaseInfoDto;
 import cn.bootx.platform.iam.dto.user.UserInfoDto;
 import cn.bootx.platform.iam.event.user.UserChangePasswordEvent;
+import cn.bootx.platform.iam.event.user.UserRestartPasswordEvent;
 import cn.bootx.platform.iam.event.user.UserUpdateEvent;
 import cn.bootx.platform.iam.exception.user.UserInfoNotExistsException;
 import cn.bootx.platform.iam.param.user.UserBaseInfoParam;
@@ -22,8 +23,6 @@ import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.time.LocalDateTime;
-
 /**
  * 用户
  *
@@ -112,8 +111,6 @@ public class UserInfoService {
     public void updatePassword(String password, String newPassword) {
         UserInfo userInfo = userInfoManager.findById(SecurityUtil.getUserId())
             .orElseThrow(UserInfoNotExistsException::new);
-        UserExpandInfo userExpandInfo = userExpandInfoManager.findById(SecurityUtil.getUserId())
-            .orElseThrow(UserInfoNotExistsException::new);
 
         // 新密码进行加密
         newPassword = passwordEncoder.encode(newPassword);
@@ -129,9 +126,7 @@ public class UserInfoService {
 
         userInfo.setPassword(newPassword);
         userInfoManager.updateById(userInfo);
-        userExpandInfo.setLastChangePasswordTime(LocalDateTime.now());
         passwordChangeHistoryService.saveChangeHistory(userInfo.getId(), userInfo.getPassword());
-        userExpandInfoManager.updateById(userExpandInfo);
         eventPublisher.publishEvent(new UserChangePasswordEvent(this,userInfo.getId()));
     }
 
@@ -199,19 +194,15 @@ public class UserInfoService {
             throw new BizException("短信验证码不正确");
         }
         UserInfo userInfo = userInfoManager.findByPhone(phone).orElseThrow(UserInfoNotExistsException::new);
-        UserExpandInfo userExpandInfo = userExpandInfoManager.findById(userInfo.getId())
-            .orElseThrow(UserInfoNotExistsException::new);
         userInfo.setPassword(passwordEncoder.encode(password));
         // 判断新密码是否在最近几次使用过
         if (passwordChangeHistoryService.isRecentlyUsed(userInfo.getId(), userInfo.getPassword())){
             throw new BizException("新密码不能与最近使用过的密码相同");
         }
-        userExpandInfo.setLastChangePasswordTime(LocalDateTime.now()).setInitialPassword(false);
         userInfoManager.updateById(userInfo);
-        userExpandInfoManager.updateById(userExpandInfo);
         passwordChangeHistoryService.saveChangeHistory(userInfo.getId(), userInfo.getPassword());
         userAssistService.deletePhoneForgetCaptcha(phone);
-        eventPublisher.publishEvent(new UserUpdateEvent(this, userInfo.toDto()));
+        eventPublisher.publishEvent(new UserRestartPasswordEvent(this, userInfo.getId()));
     }
 
     /**
@@ -222,19 +213,15 @@ public class UserInfoService {
             throw new BizException("短信验证码不正确");
         }
         UserInfo userInfo = userInfoManager.findByEmail(email).orElseThrow(UserInfoNotExistsException::new);
-        UserExpandInfo userExpandInfo = userExpandInfoManager.findById(userInfo.getId())
-            .orElseThrow(UserInfoNotExistsException::new);
         userInfo.setPassword(passwordEncoder.encode(password));
         // 判断新密码是否在最近几次使用过
         if (passwordChangeHistoryService.isRecentlyUsed(userInfo.getId(), userInfo.getPassword())){
             throw new BizException("新密码不能与最近使用过的密码相同");
         }
-        userExpandInfo.setLastChangePasswordTime(LocalDateTime.now()).setInitialPassword(false);
         userInfoManager.updateById(userInfo);
-        userExpandInfoManager.updateById(userExpandInfo);
         passwordChangeHistoryService.saveChangeHistory(userInfo.getId(), userInfo.getPassword());
         userAssistService.deleteEmailForgetCaptcha(email);
-        eventPublisher.publishEvent(new UserUpdateEvent(this, userInfo.toDto()));
+        eventPublisher.publishEvent(new UserRestartPasswordEvent(this, userInfo.getId()));
     }
 
     /**
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/online/OnlineUserInfoDto.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/online/OnlineUserInfoDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..7a50ad00c2544bdba988f47a7011b336973f745f
--- /dev/null
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/online/OnlineUserInfoDto.java
@@ -0,0 +1,37 @@
+package cn.bootx.platform.iam.dto.online;
+
+import cn.bootx.platform.common.core.rest.dto.BaseDto;
+import cn.bootx.platform.starter.data.perm.sensitive.SensitiveInfo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * 在线用户信息
+ * @author xxm
+ * @since 2023/12/4
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@Accessors(chain = true)
+@Schema(title = "在线用户信息")
+public class OnlineUserInfoDto extends BaseDto {
+
+    @Schema(description = "名称")
+    private String name;
+
+    @Schema(description = "账号")
+    private String username;
+
+    @Schema(description = "手机号")
+    @SensitiveInfo(SensitiveInfo.SensitiveType.MOBILE_PHONE)
+    private String phone;
+
+    @Schema(description = "邮箱")
+    @SensitiveInfo(SensitiveInfo.SensitiveType.EMAIL)
+    private String email;
+
+    @Schema(description = "状态")
+    private String status;
+}
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/online/OnlineUserSessionDto.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/online/OnlineUserSessionDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..0604c64a7757e915f81db57d2dfd2ee1b5feb0d2
--- /dev/null
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/online/OnlineUserSessionDto.java
@@ -0,0 +1,27 @@
+package cn.bootx.platform.iam.dto.online;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 在线用户会话信息
+ * @author xxm
+ * @since 2023/12/4
+ */
+@Data
+@Accessors(chain = true)
+@Schema(title = "在线用户会话信息")
+public class OnlineUserSessionDto {
+
+    @Schema(description = "会话id")
+    private String sessionId;
+
+    @Schema(description = "ip")
+    private String ip;
+
+    @Schema(description = "uri")
+    private String uri;
+
+
+}
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/role/RoleDto.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/role/RoleDto.java
index fcf9bf0c0a7f6585298e3186fb81d9edc674b9ba..01e5962ff4385976bb8aecbefb1e9cce2b0033e3 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/role/RoleDto.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/role/RoleDto.java
@@ -7,6 +7,7 @@ import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * @author xxm
@@ -25,10 +26,16 @@ public class RoleDto extends BaseDto implements Serializable {
     @Schema(description = "角色名称")
     private String name;
 
-    @Schema(description = "是否系统内置 Y 内置 N 不是  内置 不能修改")
+    @Schema(description = "是否系统内置")
     private boolean internal;
 
+    @Schema(description = "父级Id")
+    private Long pid;
+
     @Schema(description = "描述")
     private String remark;
 
+    @Schema(description = "子节点")
+    private List children;
+
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/scope/DataScopeDto.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/scope/DataRoleDto.java
similarity index 84%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/scope/DataScopeDto.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/scope/DataRoleDto.java
index 90f6d01f706956c061d157952307b40b6ddf9959..9d216ea40fe51d72f04fc7d727033163a5c7afa6 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/scope/DataScopeDto.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/scope/DataRoleDto.java
@@ -13,8 +13,8 @@ import lombok.experimental.Accessors;
 @EqualsAndHashCode(callSuper = true)
 @Data
 @Accessors(chain = true)
-@Schema(title = "数据范围权限")
-public class DataScopeDto extends BaseDto {
+@Schema(title = "数据角色")
+public class DataRoleDto extends BaseDto {
 
     @Schema(description = "编码")
     private String code;
@@ -23,7 +23,7 @@ public class DataScopeDto extends BaseDto {
     private String name;
 
     @Schema(description = "类型")
-    private Integer type;
+    private String type;
 
     @Schema(description = "备注")
     private String remark;
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/scope/DataScopeUserInfoDto.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/scope/DataRoleUserDto.java
similarity index 94%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/scope/DataScopeUserInfoDto.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/scope/DataRoleUserDto.java
index d16322a2b273fbc64380147bd54a026d5c2c65dc..4641551528aa0f4da3be18a463f2a91c32a68267 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/scope/DataScopeUserInfoDto.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/scope/DataRoleUserDto.java
@@ -13,7 +13,7 @@ import lombok.experimental.Accessors;
 @Data
 @Accessors(chain = true)
 @Schema(title = "用户数据范围权限详细信息")
-public class DataScopeUserInfoDto {
+public class DataRoleUserDto {
 
     @Schema(description = "权限关联id")
     private Long id;
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/user/UserExpandInfoDto.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/user/UserExpandInfoDto.java
index 4c72d4025d0e702fc66e24552cb29f179f7bb21d..a3592f9471a3c8d32c36888ddca19c386e8f0c4e 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/user/UserExpandInfoDto.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/user/UserExpandInfoDto.java
@@ -37,6 +37,9 @@ public class UserExpandInfoDto extends BaseDto {
     @Schema(description = "是否初始密码")
     private boolean initialPassword;
 
+    @Schema(description = "密码是否过期")
+    private boolean expirePassword;
+
     @Schema(description = "上次修改密码时间")
     private LocalDateTime lastChangePasswordTime;
 
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/user/UserInfoDto.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/user/UserInfoDto.java
index 96c36bc867d22afcf2198a7137c5cff090b69aa0..c05a78e2f662ae48b15036597b5be47c364cc24c 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/user/UserInfoDto.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/dto/user/UserInfoDto.java
@@ -10,7 +10,6 @@ import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
-import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -25,9 +24,6 @@ public class UserInfoDto extends BaseDto implements Serializable {
 
     private static final long serialVersionUID = 5881350477107722635L;
 
-    @Schema(description = "用户id")
-    private Long id;
-
     @Schema(description = "名称")
     private String name;
 
@@ -58,8 +54,6 @@ public class UserInfoDto extends BaseDto implements Serializable {
     @Schema(description = "账号状态")
     private String status;
 
-    @Schema(description = "注册时间")
-    private LocalDateTime registerTime;
 
     public UserDetail toUserDetail() {
         return new UserDetail().setId(this.getId())
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/exception/role/RoleHaschildrenException.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/exception/role/RoleHaschildrenException.java
new file mode 100644
index 0000000000000000000000000000000000000000..d17139d5a453956ebd5a7511b0583e4d7392a162
--- /dev/null
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/exception/role/RoleHaschildrenException.java
@@ -0,0 +1,17 @@
+package cn.bootx.platform.iam.exception.role;
+
+import cn.bootx.platform.common.core.exception.BizException;
+
+import static cn.bootx.platform.iam.code.IamErrorCode.ROLE_HAS_CHILD;
+
+/**
+ * 含有下级角色异常
+ * @author xxm
+ * @since 2023/12/5
+ */
+public class RoleHaschildrenException extends BizException {
+
+    public RoleHaschildrenException() {
+        super(ROLE_HAS_CHILD, "该角色下分配了用户,您无法将其删除.");
+    }
+}
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/handler/DataPermScopeHandlerImpl.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/handler/DataPermScopeHandlerImpl.java
index b76bcb6e203c5f395b2105b2327c282d6532d983..41855c67889b6220678254fc7cc5163e143fc5ee 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/handler/DataPermScopeHandlerImpl.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/handler/DataPermScopeHandlerImpl.java
@@ -1,11 +1,11 @@
 package cn.bootx.platform.iam.handler;
 
 import cn.bootx.platform.common.core.entity.UserDetail;
+import cn.bootx.platform.iam.core.upms.service.UserDataRoleService;
 import cn.bootx.platform.starter.data.perm.exception.NotLoginPermException;
 import cn.bootx.platform.starter.data.perm.local.DataPermContextHolder;
 import cn.bootx.platform.starter.data.perm.scope.DataPermScope;
 import cn.bootx.platform.starter.data.perm.scope.DataPermScopeHandler;
-import cn.bootx.platform.iam.core.upms.service.UserDataScopeService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Lazy;
@@ -26,7 +26,7 @@ public class DataPermScopeHandlerImpl implements DataPermScopeHandler {
      * 需要进行懒加载方式的注入, 因为 DataPermScopeHandler bean创建时机比UserDataScopeService早
      */
     @Lazy
-    private final UserDataScopeService userDataScopeService;
+    private final UserDataRoleService userDataRoleService;
 
     /**
      * 获取数据权限范围配置
@@ -36,7 +36,7 @@ public class DataPermScopeHandlerImpl implements DataPermScopeHandler {
         Long userId = DataPermContextHolder.getUserDetail()
             .map(UserDetail::getId)
             .orElseThrow(NotLoginPermException::new);
-        return userDataScopeService.getDataPermScopeByUser(userId);
+        return userDataRoleService.getDataPermScopeByUser(userId);
     }
 
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/handler/IgnorePathRouterCheck.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/handler/IgnorePathRouterCheck.java
index 3cdd3bc7c81a76d9e8ce311aa560ed713956c80b..4aa3d002c8ff6f0314f408e460e9c4778731af8d 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/handler/IgnorePathRouterCheck.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/handler/IgnorePathRouterCheck.java
@@ -1,6 +1,6 @@
 package cn.bootx.platform.iam.handler;
 
-import cn.bootx.platform.starter.auth.authentication.RouterCheck;
+import cn.bootx.platform.starter.auth.service.RouterCheck;
 import cn.bootx.platform.common.spring.util.WebServletUtil;
 import cn.bootx.platform.iam.core.permission.service.PermPathService;
 import lombok.RequiredArgsConstructor;
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/handler/PermCodeRouterCheck.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/handler/PermCodeRouterCheck.java
index 2b5f7b7d07d6f71c7f3eef7aa298eb40d3d91362..b9b35a129b48fc570abd06214dea8a96fbc0ac6a 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/handler/PermCodeRouterCheck.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/handler/PermCodeRouterCheck.java
@@ -3,7 +3,9 @@ package cn.bootx.platform.iam.handler;
 import cn.bootx.platform.common.core.annotation.PermCode;
 import cn.bootx.platform.common.core.entity.UserDetail;
 import cn.bootx.platform.common.core.util.CollUtil;
-import cn.bootx.platform.starter.auth.authentication.RouterCheck;
+import cn.bootx.platform.starter.auth.service.RouterCheck;
+import cn.bootx.platform.starter.auth.entity.UserStatus;
+import cn.bootx.platform.starter.auth.service.UserStatusService;
 import cn.bootx.platform.starter.auth.util.SecurityUtil;
 import cn.bootx.platform.iam.core.upms.service.RolePermService;
 import lombok.RequiredArgsConstructor;
@@ -28,6 +30,8 @@ public class PermCodeRouterCheck implements RouterCheck {
 
     private final RolePermService rolePermService;
 
+    private final UserStatusService userStatusService;
+
     /**
      * 路由检查
      */
@@ -57,6 +61,7 @@ public class PermCodeRouterCheck implements RouterCheck {
      * 权限码鉴权注解处理
      */
     private boolean ignoreAuth(PermCode permCode) {
+        // 没有权限码
         if (Objects.isNull(permCode)) {
             return false;
         }
@@ -64,10 +69,16 @@ public class PermCodeRouterCheck implements RouterCheck {
         if (CollUtil.isEmpty(permCodes)) {
             return false;
         }
+        // 未登录
         Optional UserDetailOpt = SecurityUtil.getCurrentUser();
         if (!UserDetailOpt.isPresent()) {
             return false;
         }
+        // 初始密码或者密码过期
+        UserStatus userStatus = userStatusService.getUserStatus();
+        if (userStatus.isExpirePassword()||userStatus.isInitialPassword()){
+            return false;
+        }
         List userPermCodes = rolePermService.findEffectPermCodesByUserId(UserDetailOpt.get().getId());
         return userPermCodes.stream().anyMatch(permCodes::contains);
     }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/handler/UserPathRouterCheck.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/handler/UserPathRouterCheck.java
index a371e427abbf7b9032ae90dea172cae5accd1943..ce9cddcd4011f0f446d43e55ea3215004ec2f868 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/handler/UserPathRouterCheck.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/handler/UserPathRouterCheck.java
@@ -1,9 +1,11 @@
 package cn.bootx.platform.iam.handler;
 
 import cn.bootx.platform.common.core.entity.UserDetail;
-import cn.bootx.platform.starter.auth.authentication.RouterCheck;
 import cn.bootx.platform.common.spring.util.WebServletUtil;
 import cn.bootx.platform.iam.core.upms.service.RolePathService;
+import cn.bootx.platform.starter.auth.entity.UserStatus;
+import cn.bootx.platform.starter.auth.service.RouterCheck;
+import cn.bootx.platform.starter.auth.service.UserStatusService;
 import cn.bootx.platform.starter.auth.util.SecurityUtil;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Component;
@@ -24,6 +26,8 @@ public class UserPathRouterCheck implements RouterCheck {
 
     private final RolePathService rolePathService;
 
+    private final UserStatusService userStatusService;
+
     private final AntPathMatcher matcher = new AntPathMatcher();
 
     @Override
@@ -40,6 +44,11 @@ public class UserPathRouterCheck implements RouterCheck {
         if (!UserDetailOpt.isPresent()) {
             return false;
         }
+        // 初始密码或者密码过期
+        UserStatus userStatus = userStatusService.getUserStatus();
+        if (userStatus.isExpirePassword()||userStatus.isInitialPassword()){
+            return false;
+        }
         UserDetail userDetail = UserDetailOpt.get();
         List paths = rolePathService.findSimplePathsByUser(method, userDetail.getId());
         return paths.stream().anyMatch(pattern -> matcher.match(pattern, path));
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/handler/UserStatusServiceImpl.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/handler/UserStatusServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..065068ad8d6e9eb9af9821b7899d0b7bfec4c3ed
--- /dev/null
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/handler/UserStatusServiceImpl.java
@@ -0,0 +1,38 @@
+package cn.bootx.platform.iam.handler;
+
+import cn.bootx.platform.iam.core.user.dao.UserExpandInfoManager;
+import cn.bootx.platform.iam.core.user.entity.UserExpandInfo;
+import cn.bootx.platform.iam.exception.user.UserInfoNotExistsException;
+import cn.bootx.platform.starter.auth.cache.SessionCacheLocal;
+import cn.bootx.platform.starter.auth.entity.UserStatus;
+import cn.bootx.platform.starter.auth.service.UserStatusService;
+import cn.bootx.platform.starter.auth.util.SecurityUtil;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.Objects;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class UserStatusServiceImpl implements UserStatusService {
+
+    private final UserExpandInfoManager userExpandInfoManager;
+
+    /**
+     * 获取用户状态
+     */
+    @Override
+    public UserStatus getUserStatus(){
+        UserStatus userStatus = SessionCacheLocal.getUserStatusContext();
+        if (Objects.isNull(userStatus)){
+            UserExpandInfo userExpandInfo = userExpandInfoManager.findById(SecurityUtil.getUserId()).orElseThrow(UserInfoNotExistsException::new);
+            userStatus = new UserStatus()
+                    .setExpirePassword(userExpandInfo.isExpirePassword())
+                    .setInitialPassword(userExpandInfo.isInitialPassword());
+            SessionCacheLocal.putUserStatus(userStatus);
+        }
+        return userStatus;
+    }
+}
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/role/RoleParam.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/role/RoleParam.java
index f3343d8f30d109a65442c2caa2bc19c9ab603023..2de329db03e0ea1dfdd9cccb36a3f61fae052900 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/role/RoleParam.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/role/RoleParam.java
@@ -22,6 +22,9 @@ public class RoleParam {
     @Schema(description = "角色名称")
     private String name;
 
+    @Schema(description = "父级Id")
+    private Long pid;
+
     @Schema(description = "描述")
     private String remark;
 
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/scope/DataScopeDeptParam.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/scope/DataRoleDeptParam.java
similarity index 77%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/scope/DataScopeDeptParam.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/scope/DataRoleDeptParam.java
index 6479128cffeed18630b50d32b68ba16a3207f350..27a65c697dab2d3f71d8f966e52b10fa3eaf9c81 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/scope/DataScopeDeptParam.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/scope/DataRoleDeptParam.java
@@ -13,10 +13,10 @@ import java.util.List;
 @Data
 @Accessors(chain = true)
 @Schema(title = "部门范围")
-public class DataScopeDeptParam {
+public class DataRoleDeptParam {
 
-    @Schema(description = "数据权限id")
-    private Long dataScopeId;
+    @Schema(description = "数据角色id")
+    private Long dataRoleId;
 
     @Schema(description = "部门id集合")
     private List deptIds;
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/scope/DataScopeParam.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/scope/DataRoleParam.java
similarity index 84%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/scope/DataScopeParam.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/scope/DataRoleParam.java
index 22117080d7cb42151fea66a475d58ddcddad5fb6..a434c62f3e7bddcf982028f4ec1ae0f481782298 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/scope/DataScopeParam.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/scope/DataRoleParam.java
@@ -10,8 +10,8 @@ import lombok.experimental.Accessors;
  */
 @Data
 @Accessors(chain = true)
-@Schema(title = "数据范围权限")
-public class DataScopeParam {
+@Schema(title = "数据角色")
+public class DataRoleParam {
 
     @Schema(description = "主键")
     private Long id;
@@ -23,7 +23,7 @@ public class DataScopeParam {
     private String name;
 
     @Schema(description = "类型")
-    private Integer type;
+    private String type;
 
     @Schema(description = "备注")
     private String remark;
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/scope/DataScopeUserParam.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/scope/DataRoleUserParam.java
similarity index 76%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/scope/DataScopeUserParam.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/scope/DataRoleUserParam.java
index 86dbce98c65c98fd427a8ef83d64267d70b4adcf..0d43e1b13b0b68601f69961174ae2519acf18b77 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/scope/DataScopeUserParam.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/scope/DataRoleUserParam.java
@@ -13,10 +13,10 @@ import java.util.List;
 @Data
 @Accessors(chain = true)
 @Schema(title = "部门范围")
-public class DataScopeUserParam {
+public class DataRoleUserParam {
 
-    @Schema(description = "数据权限id")
-    private Long dataScopeId;
+    @Schema(description = "数据角色id")
+    private Long dataRoleId;
 
     @Schema(description = "用户id")
     private List userIds;
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/upms/RolePermissionParam.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/upms/RolePermissionParam.java
index cb24437bdc1403924e67b2bbf79579981d399d4f..f9a0ca97302d81bbff8b466daa896ba214ed1a47 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/upms/RolePermissionParam.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/upms/RolePermissionParam.java
@@ -15,7 +15,7 @@ import java.util.List;
  */
 @Data
 @Accessors(chain = true)
-@Schema(title = "角色权限(菜单/)")
+@Schema(title = "角色权限(菜单/权限码/请求)")
 public class RolePermissionParam implements Serializable {
 
     private static final long serialVersionUID = 4344723093613370279L;
@@ -25,14 +25,18 @@ public class RolePermissionParam implements Serializable {
     private Long roleId;
 
     @Schema(description = "终端code")
-    @NotBlank(message = "终端不可为空", groups = { PermMenu.class })
+    @NotBlank(message = "终端不可为空", groups = {PermMenu.class})
     private String clientCode;
 
     @Schema(description = "权限id")
     private List permissionIds;
 
-    public interface PermMenu {
+    @Schema(description = "新增时是否更新子节点")
+    private boolean updateChildren;
 
-    }
+    /**
+     * 菜单权限需要终端, 请求权限不需要
+     */
+    public interface PermMenu {}
 
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/upms/UserDataScopeBatchParam.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/upms/UserDataRoleBatchParam.java
similarity index 57%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/upms/UserDataScopeBatchParam.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/upms/UserDataRoleBatchParam.java
index e533c1b293573274b795f1041adc3e3584b8cb8f..1dec8937d474e7304eda63647a912b11581a34a9 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/upms/UserDataScopeBatchParam.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/upms/UserDataRoleBatchParam.java
@@ -6,19 +6,21 @@ import lombok.Data;
 import javax.validation.constraints.NotEmpty;
 import java.util.List;
 
+import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.REQUIRED;
+
 /**
  * @author xxm
  * @since 2022/6/7
  */
 @Data
 @Schema(title = "用户数据权限批量设置参数")
-public class UserDataScopeBatchParam {
+public class UserDataRoleBatchParam {
 
-    @Schema(description = "用户的ID", required = true)
+    @Schema(description = "用户的ID", requiredMode = REQUIRED)
     @NotEmpty(message = "用户集合不能为空")
     private List userIds;
 
-    @Schema(description = "数据权限的ID集合", required = true)
-    private Long dataScopeId;
+    @Schema(description = "数据角色ID", requiredMode = REQUIRED)
+    private Long dataRoleId;
 
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/upms/UserDataScopeParam.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/upms/UserDataRoleParam.java
similarity index 46%
rename from bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/upms/UserDataScopeParam.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/upms/UserDataRoleParam.java
index 644b0318802392328d3ac64ca043230809253055..67a6258bd7928dff16a55ba630fbcfa0a9ec9d0b 100644
--- a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/upms/UserDataScopeParam.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/param/upms/UserDataRoleParam.java
@@ -5,19 +5,21 @@ import lombok.Data;
 
 import javax.validation.constraints.NotNull;
 
+import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.REQUIRED;
+
 /**
  * @author xxm
  * @since 2022/1/2
  */
 @Data
 @Schema(title = "用户数据权限参数")
-public class UserDataScopeParam {
+public class UserDataRoleParam {
 
-    @Schema(description = "用户的ID", required = true)
-    @NotNull(message = "用户 ID 不能为空")
+    @Schema(description = "用户的ID", requiredMode = REQUIRED)
+    @NotNull(message = "用户ID不能为空")
     private Long userId;
 
-    @Schema(description = "数据权限的ID集合", required = true)
-    private Long dataScopeId;
+    @Schema(description = "数据角色ID", requiredMode = REQUIRED)
+    private Long dataRoleId;
 
 }
diff --git a/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/task/CheckPasswordExpireTask.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/task/CheckPasswordExpireTask.java
new file mode 100644
index 0000000000000000000000000000000000000000..25f02931b69be88350312b7f346748d1d41793dc
--- /dev/null
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/task/CheckPasswordExpireTask.java
@@ -0,0 +1,26 @@
+package cn.bootx.platform.iam.task;
+
+import cn.bootx.platform.iam.core.user.service.UserInfoService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.stereotype.Service;
+
+/**
+ * 密码过期检查任务
+ * @author xxm
+ * @since 2023/11/25
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class CheckPasswordExpireTask implements Job {
+    private final UserInfoService userInfoService;
+
+    @Override
+    public void execute(JobExecutionContext context) throws JobExecutionException {
+
+    }
+}
diff --git a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/impl/OssUploadService.java b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/task/UserUnlockTask.java
similarity index 35%
rename from bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/impl/OssUploadService.java
rename to bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/task/UserUnlockTask.java
index 7d2c752ee4c9880fb455ceb8dd67a57bd33d3085..a500f08a2161f8765a275d4ea5401fd7f2e6f766 100644
--- a/bootx-common-starters/common-starter-file/src/main/java/cn/bootx/platform/starter/file/service/impl/OssUploadService.java
+++ b/bootx-services/service-iam/src/main/java/cn/bootx/platform/iam/task/UserUnlockTask.java
@@ -1,18 +1,23 @@
-package cn.bootx.platform.starter.file.service.impl;
+package cn.bootx.platform.iam.task;
 
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
 import org.springframework.stereotype.Service;
 
 /**
- * 阿里云OSS上传文件
- *
+ * 用户解除锁定任务
  * @author xxm
- * @since 2022/1/12
+ * @since 2023/11/25
  */
 @Slf4j
 @Service
 @RequiredArgsConstructor
-public class OssUploadService {
+public class UserUnlockTask implements Job {
+    @Override
+    public void execute(JobExecutionContext context) throws JobExecutionException {
 
+    }
 }
diff --git a/bootx-services/service-iam/src/main/resources/mapper/UserDataScopeMapper.xml b/bootx-services/service-iam/src/main/resources/mapper/UserDataRoleMapper.xml
similarity index 53%
rename from bootx-services/service-iam/src/main/resources/mapper/UserDataScopeMapper.xml
rename to bootx-services/service-iam/src/main/resources/mapper/UserDataRoleMapper.xml
index a97704024bbf33f7d385693736e05bb051580e5d..4e7fbb13486f87ae72ffe0b3d927744f8d7a1499 100644
--- a/bootx-services/service-iam/src/main/resources/mapper/UserDataScopeMapper.xml
+++ b/bootx-services/service-iam/src/main/resources/mapper/UserDataRoleMapper.xml
@@ -1,16 +1,16 @@
 
 
-
+
 
     
-        INSERT INTO  iam_user_data_scope
-        (id, user_id, data_scope_id)
+        INSERT INTO  iam_user_data_role
+        (id, user_id, data_role_id)
         values
-        
+        
             (
             #{o.id},
             #{o.userId},
-            #{o.dataScopeId}
+            #{o.dataRoleId}
             )
         
     
diff --git a/bootx-services/service-miniapp/pom.xml b/bootx-services/service-miniapp/pom.xml
index 1c2f40e93fb1e42122a068d5d99e90d8d8e84017..82acf580d5cdf5b1b916d0f8c75d9ff943c31c1e 100644
--- a/bootx-services/service-miniapp/pom.xml
+++ b/bootx-services/service-miniapp/pom.xml
@@ -6,7 +6,7 @@
     
         cn.bootx.platform
         bootx-services
-        1.3.5
+        1.3.6
     
 
     service-miniapp
diff --git a/bootx-services/service-notice/pom.xml b/bootx-services/service-notice/pom.xml
index 8093bc07106731f10bc287a05ffd8432796725ca..186e5715b97c86cdaabf0820cf9d88c6f86484b1 100644
--- a/bootx-services/service-notice/pom.xml
+++ b/bootx-services/service-notice/pom.xml
@@ -5,7 +5,7 @@
     
         bootx-services
         cn.bootx.platform
-        1.3.5
+        1.3.6
     
     4.0.0
 
diff --git a/bootx-services/service-notice/src/main/java/cn/bootx/platform/notice/controller/SiteMessageController.java b/bootx-services/service-notice/src/main/java/cn/bootx/platform/notice/controller/SiteMessageController.java
index 8be46dca42b8fcdfff0b7bf0cd44c76436ded004..0c173b26151d08a04b2966884dcfb60eb168e0a0 100644
--- a/bootx-services/service-notice/src/main/java/cn/bootx/platform/notice/controller/SiteMessageController.java
+++ b/bootx-services/service-notice/src/main/java/cn/bootx/platform/notice/controller/SiteMessageController.java
@@ -1,5 +1,6 @@
 package cn.bootx.platform.notice.controller;
 
+import cn.bootx.platform.common.core.annotation.IgnoreAuth;
 import cn.bootx.platform.common.core.rest.PageResult;
 import cn.bootx.platform.common.core.rest.Res;
 import cn.bootx.platform.common.core.rest.ResResult;
@@ -47,12 +48,14 @@ public class SiteMessageController {
         return Res.ok(siteMessageService.findById(id));
     }
 
+    @IgnoreAuth
     @Operation(summary = "获取未读的接收消息条数")
     @GetMapping("/countByReceiveNotRead")
     public ResResult countByReceiveNotRead(SiteMessageInfo query) {
         return Res.ok(siteMessageService.countByReceiveNotRead(query));
     }
 
+    @IgnoreAuth
     @Operation(summary = "接收消息分页")
     @GetMapping("/pageByReceive")
     public ResResult> pageByReceive(PageParam pageParam, SiteMessageInfo query) {
@@ -79,12 +82,15 @@ public class SiteMessageController {
         return Res.ok();
     }
 
+    @IgnoreAuth
     @Operation(summary = "标为已读")
     @PostMapping("/read")
     public ResResult read(Long id) {
         siteMessageService.read(id);
         return Res.ok();
     }
+
+    @IgnoreAuth
     @Operation(summary = "小程序获取未读的接收消息标题列表")
     @GetMapping("/listByReceiveNotRead")
     public ResResult> listByReceiveNotRead(SiteMessageInfo query) {
diff --git a/bootx-services/service-notice/src/main/java/cn/bootx/platform/notice/core/site/service/SiteMessageService.java b/bootx-services/service-notice/src/main/java/cn/bootx/platform/notice/core/site/service/SiteMessageService.java
index 320060828a3858b42ed2e13052cdaada301c4665..d8312a70aa27cc40078b435c872421900f961276 100644
--- a/bootx-services/service-notice/src/main/java/cn/bootx/platform/notice/core/site/service/SiteMessageService.java
+++ b/bootx-services/service-notice/src/main/java/cn/bootx/platform/notice/core/site/service/SiteMessageService.java
@@ -222,7 +222,6 @@ public class SiteMessageService {
      */
     public void read(Long messageId) {
         Long userId = SecurityUtil.getUserId();
-        // Long userId = 0L;
         SiteMessageUser siteMessageUser = siteMessageUserManager.findByMessageId(messageId)
                 .orElse(new SiteMessageUser().setReceiveId(userId).setMessageId(messageId));
         siteMessageUser.setHaveRead(true).setReadTime(LocalDateTime.now());
diff --git a/bootx-services/service-notice/src/main/java/cn/bootx/platform/notice/core/sms/entity/SmsChannelConfig.java b/bootx-services/service-notice/src/main/java/cn/bootx/platform/notice/core/sms/entity/SmsChannelConfig.java
index ebc10ac6bd95e105b90ee97210b4efc69dae3d2b..bea4b69589431c26c155991c9ce4553791c8de4e 100644
--- a/bootx-services/service-notice/src/main/java/cn/bootx/platform/notice/core/sms/entity/SmsChannelConfig.java
+++ b/bootx-services/service-notice/src/main/java/cn/bootx/platform/notice/core/sms/entity/SmsChannelConfig.java
@@ -8,7 +8,6 @@ import cn.bootx.platform.notice.param.sms.SmsChannelConfigParam;
 import cn.bootx.table.modify.annotation.DbColumn;
 import cn.bootx.table.modify.mysql.annotation.DbMySqlFieldType;
 import cn.bootx.table.modify.mysql.constants.MySqlFieldTypeEnum;
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
@@ -16,7 +15,8 @@ import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.dromara.sms4j.provider.enumerate.SupplierType;
 
-import static com.baomidou.mybatisplus.annotation.FieldStrategy.IGNORED;
+import static com.baomidou.mybatisplus.annotation.FieldStrategy.ALWAYS;
+import static com.baomidou.mybatisplus.annotation.FieldStrategy.NEVER;
 
 /**
  * 短信渠道配置
@@ -34,7 +34,7 @@ public class SmsChannelConfig extends MpBaseEntity implements EntityBaseFunction
      * @see SupplierType#name()
      */
     @DbColumn(comment = "渠道类型编码")
-    @TableField(updateStrategy = FieldStrategy.NEVER)
+    @TableField(updateStrategy = NEVER)
     private String code;
 
     /**
@@ -62,11 +62,11 @@ public class SmsChannelConfig extends MpBaseEntity implements EntityBaseFunction
     /** 配置字符串 */
     @DbMySqlFieldType(MySqlFieldTypeEnum.TEXT)
     @DbColumn(comment = "配置字符串")
-    @TableField(updateStrategy = IGNORED)
+    @TableField(updateStrategy = ALWAYS)
     private String config;
 
     /** 图片 */
-    @TableField(updateStrategy = IGNORED)
+    @TableField(updateStrategy = ALWAYS)
     @DbColumn(comment = "图片")
     private Long image;
 
diff --git a/bootx-services/service-visualization/pom.xml b/bootx-services/service-visualization/pom.xml
index da23b5f42a2b7c5faa347741760af0ac2f1f16ab..9715ac037bff545c8c3549f41805bb14b674b5d3 100644
--- a/bootx-services/service-visualization/pom.xml
+++ b/bootx-services/service-visualization/pom.xml
@@ -5,7 +5,7 @@
     
         cn.bootx.platform
         bootx-services
-        1.3.5
+        1.3.6
     
 
     4.0.0
diff --git a/bootx-services/service-visualization/src/main/java/cn/bootx/platform/visualization/controller/GoViewController.java b/bootx-services/service-visualization/src/main/java/cn/bootx/platform/visualization/controller/GoViewController.java
index 5970b51242b836d177953a4a5f1a13583d367322..046d2b9a278d342e93a099e0e933fe7c97cb8cb8 100644
--- a/bootx-services/service-visualization/src/main/java/cn/bootx/platform/visualization/controller/GoViewController.java
+++ b/bootx-services/service-visualization/src/main/java/cn/bootx/platform/visualization/controller/GoViewController.java
@@ -5,7 +5,6 @@ import cn.bootx.platform.common.core.rest.Res;
 import cn.bootx.platform.common.core.rest.ResResult;
 import cn.bootx.platform.visualization.core.service.ProjectInfoService;
 import cn.bootx.platform.visualization.dto.GoVIewPageResult;
-import cn.bootx.platform.visualization.dto.OssInfo;
 import cn.bootx.platform.visualization.dto.ProjectInfoResult;
 import cn.bootx.platform.visualization.param.ProjectInfoSave;
 import io.swagger.v3.oas.annotations.Operation;
@@ -30,13 +29,13 @@ import java.util.List;
 public class GoViewController {
 
     private final ProjectInfoService projectInfoService;
-
-    @IgnoreAuth
-    @Operation(summary = "获取文件oss存储信息")
-    @GetMapping("/getOssInfo")
-    public ResResult getOssInfo() {
-        return Res.ok(projectInfoService.getOssInfo());
-    }
+//
+//    @IgnoreAuth
+//    @Operation(summary = "获取文件oss存储信息")
+//    @GetMapping("/getOssInfo")
+//    public ResResult getOssInfo() {
+//        return Res.ok(projectInfoService.getOssInfo());
+//    }
 
     @Operation(summary = "获取项目列表分页 ")
     @GetMapping("/page")
diff --git a/bootx-services/service-visualization/src/main/java/cn/bootx/platform/visualization/core/service/ProjectInfoService.java b/bootx-services/service-visualization/src/main/java/cn/bootx/platform/visualization/core/service/ProjectInfoService.java
index 85b7e9408d67faa225efadb726397129a32fc65a..7130bedf9a305dd3622a4a64d34de9df0521633b 100644
--- a/bootx-services/service-visualization/src/main/java/cn/bootx/platform/visualization/core/service/ProjectInfoService.java
+++ b/bootx-services/service-visualization/src/main/java/cn/bootx/platform/visualization/core/service/ProjectInfoService.java
@@ -14,7 +14,6 @@ import cn.bootx.platform.visualization.core.dao.ProjectInfoPublishManager;
 import cn.bootx.platform.visualization.core.entity.ProjectInfo;
 import cn.bootx.platform.visualization.core.entity.ProjectInfoPublish;
 import cn.bootx.platform.visualization.dto.GoVIewPageResult;
-import cn.bootx.platform.visualization.dto.OssInfo;
 import cn.bootx.platform.visualization.dto.ProjectInfoDto;
 import cn.bootx.platform.visualization.dto.ProjectInfoResult;
 import cn.bootx.platform.visualization.param.CreateParam;
@@ -54,13 +53,13 @@ public class ProjectInfoService {
 
     private final ParamService paramService;
 
-    /**
-     * 获取文件上传oss信息
-     */
-    public OssInfo getOssInfo() {
-        String filePreviewUrlPrefix = fileUploadService.getFilePreviewUrlPrefix();
-        return new OssInfo().setBucketURL(filePreviewUrlPrefix);
-    }
+//    /**
+//     * 获取文件上传oss信息
+//     */
+//    public OssInfo getOssInfo() {
+//        String filePreviewUrlPrefix = fileUploadService.getFilePreviewUrlPrefix();
+//        return new OssInfo().setBucketURL(filePreviewUrlPrefix);
+//    }
 
     /**
      * 创建项目
@@ -257,7 +256,8 @@ public class ProjectInfoService {
                 .setContent(projectInfo.getContent())
                 .setRemarks(projectInfo.getRemark());
         // 转换访问地址
-        String filePreviewUrlPrefix = fileUploadService.getFilePreviewUrlPrefix();
+//        String filePreviewUrlPrefix = fileUploadService.getFilePreviewUrlPrefix();
+        String filePreviewUrlPrefix = "fileUploadService.getFilePreviewUrlPrefix()";
         if (Objects.nonNull(projectInfo.getIndexImage())) {
             projectInfoResult.setIndexImage(filePreviewUrlPrefix + projectInfo.getIndexImage());
         }
diff --git a/bootx-start/pom.xml b/bootx-start/pom.xml
index a59ec9d5c5668e59041e502827b8fea23ebe47dd..deb8083d416e78dc20cfae7b5ca5236287c8f7f4 100644
--- a/bootx-start/pom.xml
+++ b/bootx-start/pom.xml
@@ -5,7 +5,7 @@
     
         cn.bootx.platform
         bootx-platform-parent
-        1.3.5
+        1.3.6
     
     4.0.0
     bootx-start
diff --git a/bootx-start/src/main/resources/application-dev.yml b/bootx-start/src/main/resources/application-dev.yml
index e0d38154d1b80f9f4a5d95265bb3bb46feea1cc4..52ccbfb7e43c7ba3cb45f1abf5aac98265b76ad7 100644
--- a/bootx-start/src/main/resources/application-dev.yml
+++ b/bootx-start/src/main/resources/application-dev.yml
@@ -85,6 +85,20 @@ table-modify:
   update-type: update
   scan-package: cn.bootx.platform
   database-type: mysql
+dromara:
+  #文件存储配置,
+  x-file-storage:
+    #默认使用的存储平台
+    default-platform: local
+    #缩略图后缀,例如【.min.jpg】【.png】
+    thumbnail-suffix: ".min.jpg"
+    local-plus:
+      # 不启用自带的访问映射, 使用自定义的访问实现
+      # 存储平台标识
+      - platform: local
+        enableStorage: true
+        # 文件存储路径
+        storage-path: D:/data/files/
 # Swagger 增强版
 knife4j:
   enable: true
@@ -95,7 +109,7 @@ bootx:
     swagger:
       enabled: true
       author: bootx
-      version: 1.3.5
+      version: 1.3.6
       title: bootx开发平台单体版
       description: bootx-platform开发平台单体版
       # basic认证
@@ -116,11 +130,12 @@ bootx:
         "[认证与权限]":
           - cn.bootx.platform.starter.auth
           - cn.bootx.platform.starter.data.perm
-        "[其他starter组件]":
+        "[其他组件]":
           - cn.bootx.platform.starter.audit.log
           - cn.bootx.platform.starter.file
           - cn.bootx.platform.starter.quartz
           - cn.bootx.platform.starter.monitor
+          - cn.bootx.platform.common.websocket
     # 缓存
     cache:
       # 默认超时时间 30分钟
@@ -182,7 +197,6 @@ bootx:
         - '/css/**'
         - '/error'
         - '/favicon.ico'
-        - '/**'
       # 第三方登录
       third-login:
         ding-talk:
@@ -211,33 +225,7 @@ bootx:
         search-type: cache
     # 文件上传
     file-upload:
-      upload-type: jdbc
-      server-url: http://127.0.0.1:8080
-      local:
-        local-path: /data/file
-      mongo:
-        # 储存桶
-        bucket: fs
-      minio:
-        # 地址
-        endpoint: http://127.0.0.1:9000
-        # 账号
-        access-key: root
-        # 密码
-        access-secret: password
-        # 存储桶 需要至少三位
-        bucket: bootx
-      tencent-oss:
-          # 标识
-          secret-id: ''
-          # 密钥
-          secret-key: ''
-          # 地域
-          region: ''
-          # 会话token
-          session-token:
-           # 存储桶名称
-          bucket: bootx
+      server-url: http://127.0.0.1:9999
     # 数据权限
     data-perm:
       field-decrypt-key: "UCrtxSCwYZNCIlav"
diff --git a/bootx-start/src/main/resources/application-prod.yml b/bootx-start/src/main/resources/application-prod.yml
index 18585e07b3329af7c5f267127c486167bf3ad92f..3e55a2a77ead36872975bc7c440179687d0c7928 100644
--- a/bootx-start/src/main/resources/application-prod.yml
+++ b/bootx-start/src/main/resources/application-prod.yml
@@ -59,6 +59,9 @@ spring:
             threadCount: 10
             threadPriority: 5
             threadsInheritContextClassLoaderOfInitializingThread: true
+knife4j:
+  enable: true
+  production: true
 # 项目配置
 bootx:
   common:
diff --git a/bootx-start/src/main/resources/db/migration/V1.3.5_231021__release.sql b/bootx-start/src/main/resources/db/migration/V1.3.6_240131__release.sql
similarity index 91%
rename from bootx-start/src/main/resources/db/migration/V1.3.5_231021__release.sql
rename to bootx-start/src/main/resources/db/migration/V1.3.6_240131__release.sql
index 8100f51270e09d74ce25e141972599d575998050..a14d59668c6a9fdb84c11f35a0c5e4c305b4cd7e 100644
--- a/bootx-start/src/main/resources/db/migration/V1.3.5_231021__release.sql
+++ b/bootx-start/src/main/resources/db/migration/V1.3.6_240131__release.sql
@@ -6,7 +6,7 @@
  Target Server Type    : MySQL
  File Encoding         : 65001
 
- Date: 21/10/2023 18:53:38
+ Date: 31/01/2024 10:42:54
 */
 
 SET NAMES utf8mb4;
@@ -3012,6 +3012,29 @@ INSERT INTO `base_area` VALUES ('659009', '昆玉市', '6590');
 INSERT INTO `base_area` VALUES ('659010', '胡杨河市', '6590');
 INSERT INTO `base_area` VALUES ('659011', '新星市', '6590');
 
+-- ----------------------------
+-- Table structure for base_china_word
+-- ----------------------------
+DROP TABLE IF EXISTS `base_china_word`;
+CREATE TABLE `base_china_word`  (
+  `id` bigint(20) NOT NULL COMMENT '主键',
+  `word` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '敏感词',
+  `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '分类',
+  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '描述',
+  `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '乐观锁',
+  `white` bit(1) NULL DEFAULT NULL,
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '敏感词' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of base_china_word
+-- ----------------------------
+
 -- ----------------------------
 -- Table structure for base_city
 -- ----------------------------
@@ -3370,181 +3393,71 @@ INSERT INTO `base_city` VALUES ('6543', '阿勒泰地区', '65');
 INSERT INTO `base_city` VALUES ('6590', '自治区直辖县级行政区划', '65');
 
 -- ----------------------------
--- Table structure for iam_perm_menu
+-- Table structure for base_data_result_sql
 -- ----------------------------
-DROP TABLE IF EXISTS `iam_perm_menu`;
-CREATE TABLE `iam_perm_menu`  (
+DROP TABLE IF EXISTS `base_data_result_sql`;
+CREATE TABLE `base_data_result_sql`  (
+  `id` bigint(20) NOT NULL COMMENT '主键',
+  `database_id` bigint(20) NULL DEFAULT NULL,
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
+  `is_list` bit(1) NULL DEFAULT NULL,
+  `sql` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
+  `params` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL,
+  `fields` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL,
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '乐观锁',
+  `deleted` bit(1) NOT NULL COMMENT '删除标志',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '数据集SQL语句' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of base_data_result_sql
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for base_dict
+-- ----------------------------
+DROP TABLE IF EXISTS `base_dict`;
+CREATE TABLE `base_dict`  (
   `id` bigint(20) NOT NULL,
-  `client_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '终端code',
-  `parent_id` bigint(20) NULL DEFAULT NULL COMMENT '父id',
-  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜单名称',
-  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路由名称',
-  `perm_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单权限编码',
-  `effect` bit(1) NULL DEFAULT NULL COMMENT '是否有效',
-  `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单图标',
-  `hidden` bit(1) NOT NULL COMMENT '是否隐藏',
-  `hide_children_in_menu` bit(1) NOT NULL COMMENT '是否隐藏子菜单',
-  `component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件',
-  `component_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件名字',
-  `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路径',
-  `redirect` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单跳转地址(重定向)',
-  `sort_no` double NOT NULL COMMENT '菜单排序',
-  `menu_type` int(5) NOT NULL COMMENT '类型(0:一级菜单;1:子菜单 ;2:按钮权限)',
-  `leaf` bit(1) NULL DEFAULT NULL COMMENT '是否叶子节点',
-  `keep_alive` bit(1) NULL DEFAULT NULL COMMENT '是否缓存页面',
-  `target_outside` bit(1) NULL DEFAULT NULL COMMENT '是否外部打开方式',
-  `hidden_header_content` bit(1) NULL DEFAULT NULL COMMENT '隐藏的标题内容',
-  `admin` bit(1) NOT NULL COMMENT '系统菜单',
-  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述',
+  `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '编码',
+  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名称',
+  `enable` bit(1) NOT NULL DEFAULT b'1' COMMENT '启用状态',
+  `group_tag` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '分类标签',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '版本',
-  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
+  `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
+  `version` int(8) NULL DEFAULT NULL COMMENT '版本',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '权限_菜单' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of iam_perm_menu
+-- Records of base_dict
 -- ----------------------------
-INSERT INTO `iam_perm_menu` VALUES (1414596052497092608, 'admin', NULL, '系统管理', 'system', '', NULL, 'desktop', b'0', b'0', 'RouteView', '', '/system', '/system/user', -99999, 0, b'0', b'1', b'0', b'0', b'1', NULL, 1399985191002447872, '2021-08-27 10:32:53', 1399985191002447872, '2021-08-27 10:02:16', 2, 0);
-INSERT INTO `iam_perm_menu` VALUES (1414596647509446656, 'admin', 1452569691537256448, '用户管理', 'User', '', NULL, '', b'0', b'0', 'system/user/UserList', '', '/system/userAuth/user', '', 0, 1, b'0', b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-08-27 10:32:53', 1399985191002447872, '2021-08-27 10:17:40', 4, 0);
-INSERT INTO `iam_perm_menu` VALUES (1414596773275652096, 'admin', 1414596052497092608, '菜单管理', 'Menu', '', NULL, '', b'0', b'0', 'system/menu/MenuList', '', '/system/permission/menu', '', 0, 1, b'0', b'1', b'0', b'0', b'1', NULL, 1399985191002447872, '2021-08-27 10:32:53', 1399985191002447872, '2021-08-26 23:56:16', 2, 0);
-INSERT INTO `iam_perm_menu` VALUES (1414596805538238464, 'admin', 1452569339987472384, '角色管理', 'Role', '', NULL, '', b'0', b'0', 'system/role/RoleList', '', '/system/permission/role', '', 0, 1, b'1', b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-08-27 10:32:53', 1399985191002447872, '2021-08-26 23:56:04', 4, 0);
-INSERT INTO `iam_perm_menu` VALUES (1414596842322284544, 'admin', 1452569691537256448, '部门管理', 'Dept', '', NULL, '', b'0', b'0', 'system/dept/DeptList', '', '/system/userAuth/dept', '', 0, 1, b'1', b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-08-27 10:32:53', 1399985191002447872, '2021-08-26 23:56:31', 7, 0);
-INSERT INTO `iam_perm_menu` VALUES (1414596877617352704, 'admin', 1452571269199540224, '数据字典', 'Dict', '', b'0', '', b'0', b'0', 'system/dict/DictList', '', '/system/config/dict', '', 0, 1, b'1', b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-08-27 10:32:53', 1399985191002447872, '2022-05-19 09:04:55', 11, 0);
-INSERT INTO `iam_perm_menu` VALUES (1431082258161434624, 'admin', 1452569691537256448, '在线用户管理', 'OnlineUser', '', NULL, '', b'0', b'0', 'system/online/OnlineUserList', NULL, '/system/userAuth/online', '', 0, 1, b'1', b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-08-27 10:32:53', 1399985191002447872, '2021-08-27 10:32:53', 6, 0);
-INSERT INTO `iam_perm_menu` VALUES (1431083330909208576, 'admin', 1541427353886859264, '登录方式', 'LoginType', '', b'0', '', b'0', b'0', 'system/client/LoginTypeList', NULL, '/system/config/loginType', '', 9, 1, b'1', b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-08-27 10:37:09', 1399985191002447872, '2022-07-05 21:18:12', 11, 0);
-INSERT INTO `iam_perm_menu` VALUES (1431089129232498688, 'admin', 1452569339987472384, '请求权限管理', 'Path', '', NULL, '', b'0', b'0', 'system/path/PathList', NULL, '/system/permission/path', '', 0, 1, b'1', b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-08-27 11:00:11', 1399985191002447872, '2021-08-27 11:00:11', 2, 0);
-INSERT INTO `iam_perm_menu` VALUES (1431152689832525824, 'admin', NULL, '系统监控', 'monitor', '', b'0', 'radar-chart', b'0', b'0', 'RouteView', NULL, '/monitor', '', 0, 0, b'1', b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2021-08-27 15:12:45', 1399985191002447872, '2022-06-17 17:57:30', 21, 0);
-INSERT INTO `iam_perm_menu` VALUES (1431153358157348864, 'admin', 1431152689832525824, '接口文档', 'ApiSwagger', '', b'0', '', b'0', b'0', '', NULL, 'http://127.0.0.1:9999/doc.html', '', 0, 1, b'1', b'1', b'1', b'0', b'0', NULL, 1399985191002447872, '2021-08-27 15:15:25', 1399985191002447872, '2022-10-14 17:47:12', 18, 0);
-INSERT INTO `iam_perm_menu` VALUES (1435143678721236992, 'admin', 1452567897717321728, '登录日志', 'LoginLog', '', b'0', '', b'0', b'0', 'starter/log/LoginLogList', NULL, '/monitor/log/loginLog', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-09-07 15:31:31', 1399985191002447872, '2022-10-20 20:38:06', 6, 0);
-INSERT INTO `iam_perm_menu` VALUES (1435476255797624832, 'admin', 1452567897717321728, '操作日志', 'OperateLog', '', b'0', '', b'0', b'0', 'starter/log/OperateLogList', NULL, '/monitor/log/OperateLog', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-09-08 13:33:04', 1399985191002447872, '2022-10-20 20:38:12', 8, 0);
-INSERT INTO `iam_perm_menu` VALUES (1438061887002759168, 'admin', NULL, '通知管理', 'notice', '', NULL, 'message', b'0', b'0', 'RouteView', NULL, '/notice', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-09-15 16:47:26', 1399985191002447872, '2021-09-15 16:47:26', 3, 0);
-INSERT INTO `iam_perm_menu` VALUES (1438072357281542144, 'admin', 1438061887002759168, '邮件配置', 'MailConfig', '', NULL, '', b'0', b'0', 'notice/mail/MailConfigList', NULL, '/notice/mailConfig', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-09-15 17:29:03', 1399985191002447872, '2021-09-15 17:29:03', 3, 0);
-INSERT INTO `iam_perm_menu` VALUES (1439196893514031104, 'admin', 1438061887002759168, '消息模板', 'MessageTemplate', '', NULL, '', b'0', b'0', 'notice/template/TemplateList', NULL, '/notice/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-09-18 19:57:33', 1399985191002447872, '2021-09-18 19:57:33', 3, 0);
-INSERT INTO `iam_perm_menu` VALUES (1440216178722050048, 'admin', 1438061887002759168, '钉钉', 'DingTalk', '', NULL, '', b'0', b'0', 'RouteView', NULL, '/notice/dingTalk', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-09-21 15:27:50', 1399985191002447872, '2021-09-21 15:27:50', 0, 1);
-INSERT INTO `iam_perm_menu` VALUES (1440216612211757056, 'admin', 1450822511087271936, '钉钉机器人', 'DingTalkRobot', '', b'0', '', b'0', b'0', 'third/dingtalk/robot/DingRobotConfigList', NULL, '/third/dingTalk/robot', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-09-21 15:29:33', 1399985191002447872, '2022-07-26 13:34:35', 5, 0);
-INSERT INTO `iam_perm_menu` VALUES (1450473063320526848, 'admin', 1452569691537256448, '第三方登录', 'Social', '', b'0', '', b'1', b'0', 'system/social/SocialList', NULL, '/system/userAuth/social', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-19 22:45:01', 1399985191002447872, '2022-07-26 13:35:47', 5, 0);
-INSERT INTO `iam_perm_menu` VALUES (1450803906215886848, 'admin', 1452571269199540224, '定时任务', 'QuartzJobList', '', NULL, '', b'0', b'0', 'starter/quartz/QuartzJobList', NULL, '/system/config/quartz', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-20 20:39:41', 1399985191002447872, '2021-10-20 20:39:41', 5, 0);
-INSERT INTO `iam_perm_menu` VALUES (1450819607680991232, 'admin', NULL, '第三方对接', 'third', '', b'0', 'branches', b'0', b'0', 'RouteView', NULL, '/third', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-20 21:42:04', 1399985191002447872, '2022-07-26 13:34:02', 4, 0);
-INSERT INTO `iam_perm_menu` VALUES (1450821723027881984, 'admin', 1450819607680991232, '微信', 'WeChat', '', b'0', '', b'0', b'0', 'RouteView', NULL, '/third/wechat', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-20 21:50:28', 1399985191002447872, '2022-08-03 23:23:10', 3, 0);
-INSERT INTO `iam_perm_menu` VALUES (1450821877831254016, 'admin', 1450819607680991232, '企业微信', 'WeCom', '', b'0', '', b'0', b'0', 'RouteView', NULL, '/third/wecom', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-20 21:51:05', 1399985191002447872, '2022-08-03 23:22:58', 4, 0);
-INSERT INTO `iam_perm_menu` VALUES (1450822511087271936, 'admin', 1450819607680991232, '钉钉', 'DingTalk', '', b'0', '', b'0', b'0', 'RouteView', NULL, '/third/dingtalk', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-20 21:53:36', 1399985191002447872, '2022-08-03 23:23:29', 3, 0);
-INSERT INTO `iam_perm_menu` VALUES (1450827660459458560, 'admin', 1438061887002759168, '微信', 'NoticeWeChat', '', b'0', '', b'0', b'0', 'Dev', NULL, '/notice/wechat', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-20 22:14:04', 1399985191002447872, '2022-06-21 20:53:04', 1, 1);
-INSERT INTO `iam_perm_menu` VALUES (1452567897717321728, 'admin', 1431152689832525824, '审计日志', 'auditLog', '', b'0', '', b'0', b'0', 'RouteView', NULL, '/monitor/log', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-25 17:29:09', 1399985191002447872, '2022-10-20 20:37:46', 2, 0);
-INSERT INTO `iam_perm_menu` VALUES (1452569339987472384, 'admin', 1414596052497092608, '权限管理', 'permission', '', NULL, '', b'0', b'0', 'RouteView', NULL, '/system/permission', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-25 17:34:53', 1399985191002447872, '2021-10-25 17:34:53', 2, 0);
-INSERT INTO `iam_perm_menu` VALUES (1452569691537256448, 'admin', 1414596052497092608, '用户信息', 'userAuth', '', NULL, '', b'0', b'0', 'RouteView', NULL, '/system/userAuth', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-25 17:36:17', 1399985191002447872, '2021-10-25 17:36:17', 2, 0);
-INSERT INTO `iam_perm_menu` VALUES (1452571269199540224, 'admin', 1414596052497092608, '系统配置', 'systemConfig', '', NULL, '', b'0', b'0', 'RouteView', NULL, '/system/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-25 17:42:33', 1399985191002447872, '2021-10-25 17:42:33', 2, 0);
-INSERT INTO `iam_perm_menu` VALUES (1452638905302966272, 'admin', 1452571269199540224, '系统参数', 'SystemParam', '', NULL, '', b'0', b'0', 'system/param/SystemParamList', NULL, '/system/config/param', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-10-25 22:11:18', 1399985191002447872, '2021-10-25 22:11:18', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1474694545336676352, 'admin', 1452569339987472384, '数据范围权限', 'DataScope', '', NULL, '', b'0', b'0', 'system/scope/DataScopeList', NULL, '/system/permission/data', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-12-25 18:52:33', 1399985191002447872, '2021-12-25 18:52:33', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1480839877352476672, 'admin', 1452567897717321728, '数据版本日志', 'DataVersionLog', NULL, b'0', '', b'0', b'0', 'starter/log/DataVersionLogList', NULL, '/monitor/log/DataVersionLog', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-01-11 17:51:54', 1399985191002447872, '2022-10-20 20:38:18', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1490984296616263680, 'admin', 1552207982510706688, '文件管理', 'FIleUpLoad', NULL, b'0', '', b'0', b'0', 'develop/file/FileUploadList', NULL, '/develop/file', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-02-08 17:42:12', 1399985191002447872, '2022-07-28 09:16:56', 2, 0);
-INSERT INTO `iam_perm_menu` VALUES (1495013564652429312, 'admin', 1552207982510706688, '代码生成', 'CodeGen', NULL, b'0', '', b'0', b'0', 'develop/codegen/CodeGenList', NULL, '/develop/codegen', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-02-19 20:33:04', 1399985191002447872, '2022-07-27 16:25:05', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1495968302034210816, 'admin', NULL, '功能演示', 'Demo', NULL, b'0', 'block', b'0', b'0', 'RouteView', NULL, '/demo', '', 99, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-02-22 11:46:52', 1399985191002447872, '2022-05-10 11:02:05', 3, 0);
-INSERT INTO `iam_perm_menu` VALUES (1495969099987963904, 'admin', 1495968302034210816, '数据相关', 'DemoData', NULL, b'0', '', b'0', b'0', 'RouteView', NULL, '/demo/data', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-02-22 11:50:02', 1399985191002447872, '2022-03-24 16:27:46', 4, 0);
-INSERT INTO `iam_perm_menu` VALUES (1496020308992143360, 'admin', 1495968302034210816, '超级查询', 'SuperQueryDemo', NULL, b'0', '', b'0', b'0', 'demo/query/SuperQueryDemoList', NULL, '/demo/query/super', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-02-22 15:13:31', 1399985191002447872, '2022-05-27 17:34:41', 2, 0);
-INSERT INTO `iam_perm_menu` VALUES (1506910599819165696, 'admin', 1495969099987963904, '数据权限', 'DataPermDemoList', NULL, b'0', '', b'0', b'0', 'demo/data/perm/DataPermDemoList', NULL, '/demo/data/perm', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-03-24 16:27:39', 1399985191002447872, '2022-03-24 16:28:56', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1506910885463851008, 'admin', 1495969099987963904, '加密解密', 'DataEncryptDemo', NULL, b'0', '', b'0', b'0', 'demo/data/encrypt/DataEncryptDemoList', NULL, '/demo/data/encrypt', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-03-24 16:28:47', 1399985191002447872, '2022-03-24 16:28:47', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1506911113394913280, 'admin', 1495969099987963904, '数据脱敏', 'DataSensitiveDemo', NULL, b'0', '', b'0', b'0', 'demo/data/sensitive/DataSensitiveDemoList', NULL, '/demo/data/sensitive', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-03-24 16:29:41', 1399985191002447872, '2022-03-24 17:16:03', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1507998458886197248, 'admin', 1495968302034210816, 'WS演示', 'WebsocketDemo', NULL, b'0', '', b'0', b'0', 'demo/ws/WebsocketDemo', NULL, '/demo/ws', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-03-27 16:30:25', 1399985191002447872, '2022-03-27 16:30:25', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1509488473583562752, 'admin', 1495968302034210816, '幂等请求演示', 'IdempotentDemo', NULL, b'0', '', b'0', b'0', 'demo/idempotent/Idempotent', NULL, '/demo/idempotent', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-03-31 19:11:12', 1399985191002447872, '2022-05-27 17:35:00', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1511266086400524288, 'admin', 1450822511087271936, '钉钉配置', 'DingTalkConfig', NULL, b'0', '', b'1', b'0', 'third/dingtalk/config/DingTalkConfigList', NULL, '/third/dingtalk/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-04-05 16:54:48', 1399985191002447872, '2022-07-26 13:34:44', 3, 0);
-INSERT INTO `iam_perm_menu` VALUES (1530120084482084864, 'admin', 1495968302034210816, '消息中间件演示', 'MQDemo', NULL, b'0', '', b'0', b'0', 'demo/mq/MqDemo', NULL, '/demo/mq', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-05-27 17:33:51', 1399985191002447872, '2022-05-31 15:12:15', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1530120684645044224, 'admin', 1530120084482084864, 'MQTT消息', 'MqttDemo', NULL, b'0', '', b'0', b'0', '', NULL, '/demo/mq/mqtt', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-05-27 17:36:14', 1399985191002447872, '2022-05-27 17:36:14', 0, 1);
-INSERT INTO `iam_perm_menu` VALUES (1530120821144473600, 'admin', 1530120084482084864, 'RabbitMQ', 'RabbitDemo', NULL, b'0', '', b'0', b'0', '', NULL, '/demo/mq/rabbit', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-05-27 17:36:47', 1399985191002447872, '2022-05-27 17:36:47', 0, 1);
-INSERT INTO `iam_perm_menu` VALUES (1534000136370204672, 'admin', 1431152689832525824, 'ELK日志', 'ELK', '', b'0', '', b'1', b'0', '', NULL, 'http://elk.dev.bootx.cn:5601/app/discover', '', 0, 1, NULL, b'1', b'1', b'0', b'0', NULL, 1399985191002447872, '2022-06-07 10:31:48', 1399985191002447872, '2022-06-07 10:31:48', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1534008203006652416, 'admin', 1431152689832525824, 'PlumeLog日志', 'PlumeLog', '', b'0', '', b'0', b'0', '', NULL, 'http://127.0.0.1:9999/plumelog/#/', '', 0, 1, NULL, b'1', b'1', b'0', b'0', NULL, 1399985191002447872, '2022-06-07 11:03:51', 1399985191002447872, '2022-06-07 11:06:13', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1535451167008436224, 'admin', 1431152689832525824, '系统信息', 'SysInfo', NULL, b'0', '', b'0', b'0', 'starter/monitor/SystemInfoMonitor', NULL, '/monitor/sysinfo', '', 0, 1, NULL, b'0', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-06-11 10:37:40', 1399985191002447872, '2022-06-13 13:07:46', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1535965936371085312, 'admin', 1431152689832525824, 'Redis监控', 'RedisInfoMonitor', NULL, b'0', '', b'0', b'0', 'starter/monitor/RedisInfoMonitor', NULL, '/monitor/redis', '', 0, 1, NULL, b'0', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-06-12 20:43:11', 1399985191002447872, '2022-06-13 13:07:38', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1537730140522348544, 'admin', 1438061887002759168, '站内信', 'SiteMessageSender', '', b'0', '', b'0', b'0', 'notice/site/sender/SiteMessageList', NULL, '/notice/siteMessage', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-06-17 17:33:30', 1399985191002447872, '2022-08-20 21:12:30', 2, 0);
-INSERT INTO `iam_perm_menu` VALUES (1538160478872625152, 'admin', 1495968302034210816, '富文本编辑', 'WangEditorDemo', NULL, b'0', '', b'0', b'0', 'demo/wangeditor/WangEditorDemo', NULL, '/demo/wangEditor', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-06-18 22:03:30', 1399985191002447872, '2022-06-18 22:03:31', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1541355214204030976, 'admin', 1541427353886859264, '认证终端', 'Client', '', b'0', '', b'0', b'0', 'system/client/ClientList', NULL, '/system/config/client', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2021-08-27 10:37:08', 1399985191002447872, '2022-07-05 21:17:45', 3, 0);
-INSERT INTO `iam_perm_menu` VALUES (1541427353886859264, 'admin', 1414596052497092608, '认证管理', 'Auth', '', b'0', '', b'0', b'0', 'RouteView', NULL, '/system/auth', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-06-27 22:24:54', 1399985191002447872, '2022-06-27 22:24:54', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1551803592828932096, 'admin', 1450821877831254016, '企微机器人', 'WeComRobot', '', b'0', '', b'0', b'0', 'third/wecom/robot/WeComRobotConfigList', NULL, '/third/wecom/robot', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-07-26 13:36:22', 1399985191002447872, '2022-10-24 11:07:27', 3, 0);
-INSERT INTO `iam_perm_menu` VALUES (1552207982510706688, 'admin', NULL, '开发管理', 'develop', NULL, b'0', 'gold', b'0', b'0', 'RouteView', NULL, '/develop', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-07-27 16:23:16', 1399985191002447872, '2022-07-27 16:39:09', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1552208167664062464, 'admin', 1552207982510706688, '动态表单', 'DynamicForm', NULL, b'0', '', b'0', b'0', 'develop/dynamicform/DynamicFormList', NULL, '/develop/form', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-07-27 16:24:00', 1399985191002447872, '2022-07-27 16:38:05', 2, 0);
-INSERT INTO `iam_perm_menu` VALUES (1554720980865380352, 'admin', 1495968302034210816, '消息通知', 'NoticeDemo', NULL, b'0', '', b'0', b'0', 'RouteView', NULL, '/demo/notice', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-08-03 14:49:02', 1399985191002447872, '2022-08-03 14:49:02', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1554721654336385024, 'admin', 1554720980865380352, '邮件发送', 'EmailDemo', NULL, b'0', '', b'0', b'0', 'demo/notice/email/EmailSender', NULL, '/demo/notice/email', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-08-03 14:51:42', 1399985191002447872, '2022-08-03 14:51:42', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1554850179754975232, 'admin', 1450821723027881984, '消息模板', 'WeChatTemplate', NULL, b'0', '', b'0', b'0', 'third/wechat/template/WeChatTemplateList', NULL, '/third/wechat/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-08-03 23:22:25', 1399985191002447872, '2022-08-03 23:23:18', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1555835229426368512, 'admin', 1450821723027881984, '自定义菜单', 'WeChatMenu', NULL, b'0', '', b'0', b'0', 'third/wechat/menu/WeChatMenuList', NULL, '/third/wechat/menu', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-08-06 16:36:39', 1399985191002447872, '2022-08-08 12:14:14', 2, 0);
-INSERT INTO `iam_perm_menu` VALUES (1556997405528805376, 'admin', 1450821723027881984, '素材管理', 'WeChatMedia', NULL, b'0', '', b'0', b'0', 'third/wechat/media/WeChatMediaList', NULL, '/third/wechat/media', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-08-09 21:34:44', 1399985191002447872, '2022-08-09 21:34:44', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1573669546890297344, 'admin', 1552207982510706688, '动态数据源', 'DynamicSource', NULL, b'0', '', b'0', b'0', 'develop/dynamicsource/DynamicDataSourceList', NULL, '/develop/source', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-09-24 21:43:52', 1399985191002447872, '2022-09-24 21:43:52', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1580740450633101312, 'adminv3', NULL, '系统管理', 'System', NULL, b'0', 'ant-design:setting-outlined', b'0', b'0', 'Layout', NULL, '/system', '/system1/client', -99999, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 10:01:07', 1414143554414059520, '2022-10-18 15:32:09', 4, 0);
-INSERT INTO `iam_perm_menu` VALUES (1580740637841666048, 'adminv3', 1582253306356649984, '终端管理', 'ClientList', NULL, b'0', '', b'0', b'0', '/modules/system/client/ClientList.vue', NULL, '/system/client', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 10:01:51', 1414143554414059520, '2022-10-18 14:13:27', 5, 0);
-INSERT INTO `iam_perm_menu` VALUES (1580740758629232640, 'adminv3', 1582253306356649984, '登录方式', 'LoginTypeList', NULL, b'0', '', b'0', b'0', '/modules/system/loginType/LoginTypeList.vue', NULL, '/system/loginType', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 10:02:20', 1414143554414059520, '2022-10-18 14:13:40', 5, 0);
-INSERT INTO `iam_perm_menu` VALUES (1580858583654051840, 'adminv3', 1580740450633101312, '测试Iframe', 'Iframe', NULL, b'0', '', b'0', b'0', 'Iframe', NULL, '/system/Iframe', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 17:50:32', 1414143554414059520, '2022-10-17 17:46:19', 5, 1);
-INSERT INTO `iam_perm_menu` VALUES (1580917438227075072, 'adminv3', 1580740450633101312, '三极目录', 'hello', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system1/a', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 21:44:24', 1399985191002447872, '2022-10-14 23:38:16', 2, 1);
-INSERT INTO `iam_perm_menu` VALUES (1580917571069071360, 'adminv3', 1580917438227075072, '百度', 'baidu', NULL, b'0', '', b'0', b'0', '', NULL, 'https://www.baidu.com/', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 21:44:56', 1399985191002447872, '2022-10-14 23:37:44', 3, 1);
-INSERT INTO `iam_perm_menu` VALUES (1580928436300337152, 'adminv3', 1580740450633101312, '菜单管理', 'MenuList', NULL, b'0', '', b'0', b'0', '/modules/system/menu/MenuList.vue', NULL, '/system/menu', '', -99, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 22:28:06', 1399985191002447872, '2022-10-14 22:28:32', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582249924602580992, 'adminv3', 1580740450633101312, '权限管理', 'Permission', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/permission', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 13:59:13', 1414143554414059520, '2022-10-18 13:59:13', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582253011803262976, 'adminv3', 1580740450633101312, '用户信息', 'UserAuth', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/user', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 14:11:30', 1414143554414059520, '2022-10-18 14:11:30', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582253152903843840, 'adminv3', 1580740450633101312, '系统配置', 'SystemConfig', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 14:12:03', 1414143554414059520, '2022-10-18 14:12:03', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582253306356649984, 'adminv3', 1580740450633101312, '认证管理', 'Auth', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/auth', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 14:12:40', 1414143554414059520, '2022-10-18 14:13:13', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582275875424129024, 'adminv3', NULL, '系统监控', 'Monitor', NULL, b'0', 'ant-design:monitor-outlined', b'0', b'0', 'Layout', NULL, '/monitor', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:42:21', 1414143554414059520, '2022-10-19 17:29:29', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582275984849326080, 'adminv3', NULL, '通知管理', 'Notice', NULL, b'0', 'ant-design:message-outlined', b'0', b'0', 'Layout', NULL, '/notice', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:42:47', 1414143554414059520, '2022-10-19 17:30:06', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582276092038959104, 'adminv3', NULL, '第三方对接', 'Third', NULL, b'0', 'ant-design:api-twotone', b'0', b'0', 'Layout', NULL, '/third', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:43:12', 1414143554414059520, '2022-10-19 17:32:04', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582276341792985088, 'adminv3', NULL, '开发管理', 'Develop', NULL, b'0', 'ant-design:apartment-outlined', b'0', b'0', 'Layout', NULL, '/develop', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:44:12', 1414143554414059520, '2022-10-19 15:24:22', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582276516905177088, 'adminv3', NULL, '功能演示', 'Demo', NULL, b'0', 'ant-design:appstore-twotone', b'0', b'0', 'Layout', NULL, '/demo', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:44:54', 1414143554414059520, '2022-10-19 17:34:26', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582277076421136384, 'adminv3', 1582249924602580992, '角色管理', 'RoleList', NULL, b'0', '', b'0', b'0', '/modules/system/role/RoleList.vue', NULL, '/system/permission/role', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:47:07', 1414143554414059520, '2022-10-18 15:59:37', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582301940364308480, 'adminv3', 1582249924602580992, '请求权限管理', 'PermPathList', NULL, b'0', '', b'0', b'0', '/modules/system/path/PermPathList.vue', NULL, '/system/permission/path', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:25:55', 1414143554414059520, '2022-10-18 20:41:22', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582302180999917568, 'adminv3', 1582249924602580992, '数据范围权限', 'DataScopeList', NULL, b'0', '', b'0', b'0', '/modules/system/scope/DataScopeList.vue', NULL, '/system/permission/scope', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:26:52', 1414143554414059520, '2022-10-18 17:26:52', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582302542955769856, 'adminv3', 1582253011803262976, '用户管理', 'UserList', NULL, b'0', '', b'0', b'0', '/modules/system/user/UserList.vue', NULL, '/system/user/info', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:28:19', 1414143554414059520, '2022-10-18 17:28:19', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582302764129808384, 'adminv3', 1582253011803262976, '部门管理', 'DeptList', NULL, b'0', '', b'0', b'0', '/modules/system/dept/DeptList.vue', NULL, '/system/user/dept', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:29:11', 1414143554414059520, '2022-10-18 17:32:26', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582303143110340608, 'adminv3', 1582253152903843840, '数据字典', 'DictList', NULL, b'0', '', b'0', b'0', '/modules/system/dict/DictList.vue', NULL, '/system/config/dict', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:30:42', 1414143554414059520, '2022-10-18 17:30:42', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582303290070364160, 'adminv3', 1582253152903843840, '定时任务', 'QuartzJobList', NULL, b'0', '', b'0', b'0', '/modules/baseapi/quartz/QuartzJobList.vue', NULL, '/system/config/quartz', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:31:17', 1414143554414059520, '2023-08-09 15:50:46', 2, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582303447428067328, 'adminv3', 1582253152903843840, '系统参数', 'SystemParamList', NULL, b'0', '', b'0', b'0', '/modules/system/param/SystemParamList.vue', NULL, '/system/config/param', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:31:54', 1414143554414059520, '2022-10-19 23:14:16', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582632873244172288, 'adminv3', 1582276341792985088, '文件管理', 'FileUploadList', NULL, b'0', '', b'0', b'0', '/modules/develop/file/FileUploadList.vue', NULL, '/develop/file', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:20:56', 1414143554414059520, '2022-10-19 15:20:56', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582633196587261952, 'adminv3', 1582276341792985088, '代码生成', 'CodeGenList', NULL, b'0', '', b'0', b'0', '/modules/develop/codegen/CodeGenList.vue', NULL, '/develop/codegen', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:22:13', 1414143554414059520, '2022-10-19 15:23:17', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582633307786649600, 'adminv3', 1582276341792985088, '动态表单', 'DynamicFormList', NULL, b'0', '', b'0', b'0', '/modules/develop/dynamicform/DynamicFormList.vue', NULL, '/develop/form', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:22:39', 1414143554414059520, '2022-10-19 15:22:39', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1582633620321017856, 'adminv3', 1582276341792985088, '动态数据源', 'DynamicDataSourceList', NULL, b'0', '', b'0', b'0', '/modules/develop/dynamicsource/DynamicDataSourceList.vue', NULL, '/develop/source', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:23:54', 1414143554414059520, '2022-10-19 15:23:54', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1583074308040925184, 'adminv3', 1582275875424129024, '接口文档', 'ApiSwagger', NULL, b'0', '', b'0', b'0', '', NULL, 'http://127.0.0.1:9999/doc.html', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:35:02', 1414143554414059520, '2022-11-23 13:59:09', 2, 0);
-INSERT INTO `iam_perm_menu` VALUES (1583075229563068416, 'adminv3', 1582275875424129024, '审计日志', 'AuditLog', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/monitor/log', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:38:42', 1414143554414059520, '2022-10-20 20:41:38', 2, 0);
-INSERT INTO `iam_perm_menu` VALUES (1583076217481043968, 'adminv3', 1583075229563068416, '登录日志', 'LoginLogList', NULL, b'0', '', b'0', b'0', '/modules/monitor/login/LoginLogList.vue', NULL, '/monitor/log/login', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:42:37', 1414143554414059520, '2022-10-20 20:43:36', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1583076424935514112, 'adminv3', 1583075229563068416, '操作日志', 'OperateLogList', NULL, b'0', '', b'0', b'0', '/modules/monitor/operate/OperateLogList.vue', NULL, '/monitor/log/operate', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:43:26', 1414143554414059520, '2022-10-20 20:43:26', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1583076670881112064, 'adminv3', 1583075229563068416, '数据版本日志', 'DataVersionLogList', NULL, b'0', '', b'0', b'0', '/modules/monitor/data/DataVersionLogList.vue', NULL, '/monitor/log/data', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:44:25', 1414143554414059520, '2022-10-20 20:44:25', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1583076878956339200, 'adminv3', 1582275875424129024, 'ELK日志', 'ELK', NULL, b'0', '', b'1', b'0', '', NULL, 'http://elk.dev.bootx.cn:5601/app/discover', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:45:15', 1414143554414059520, '2023-08-12 19:26:12', 3, 0);
-INSERT INTO `iam_perm_menu` VALUES (1583077015434797056, 'adminv3', 1582275875424129024, 'PlumeLog日志', 'PlumeLog', NULL, b'0', '', b'0', b'0', '', NULL, 'http://127.0.0.1:9999/plumelog/#/', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:45:47', 1414143554414059520, '2022-10-20 20:45:47', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1583077198772019200, 'adminv3', 1582275875424129024, '系统信息', 'SystemInfoMonitor', NULL, b'0', '', b'0', b'0', '/modules/monitor/system/SystemInfoMonitor.vue', NULL, '/monitor/sysinfo', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:46:31', 1414143554414059520, '2022-10-20 20:46:31', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1583077360827342848, 'adminv3', 1582275875424129024, 'Redis监控', 'RedisInfoMonitor', NULL, b'0', '', b'0', b'0', '/modules/monitor/redis/RedisInfoMonitor.vue', NULL, '/monitor/redis', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:47:10', 1414143554414059520, '2022-10-20 20:47:10', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1584378294652051456, 'adminv3', 1582275984849326080, '邮件配置', 'MailConfigList', NULL, b'0', '', b'0', b'0', '/modules/notice/mail/MailConfigList.vue', NULL, '/notice/notice', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 10:56:36', 1414143554414059520, '2022-10-24 16:14:34', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1584378497824137216, 'adminv3', 1582275984849326080, '消息模板', 'MessageTemplateList', NULL, b'0', '', b'0', b'0', '/modules/notice/template/MessageTemplateList.vue', NULL, '/notice/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 10:57:25', 1414143554414059520, '2022-10-25 22:14:14', 2, 0);
-INSERT INTO `iam_perm_menu` VALUES (1584378671266996224, 'adminv3', 1582275984849326080, '站内信', 'SiteMessageList', NULL, b'0', '', b'0', b'0', '/modules/notice/site/sender/SiteMessageList.vue', NULL, '/notice/siteMessage', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 10:58:06', 1414143554414059520, '2022-10-24 10:58:06', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1584379602188574720, 'adminv3', 1582276092038959104, '微信', 'WeChat', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/third/wechat', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:01:48', 1414143554414059520, '2022-10-24 11:01:48', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1584379704122744832, 'adminv3', 1582276092038959104, '企业微信', 'WeCom', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/third/wecom', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:02:12', 1414143554414059520, '2022-10-24 11:02:12', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1584380087805091840, 'adminv3', 1582276092038959104, '钉钉', 'DingTalk', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/third/dingtalk', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:03:44', 1414143554414059520, '2022-10-24 11:03:44', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1584380527829524480, 'adminv3', 1584379602188574720, '消息模板', 'WechatTemplateList', NULL, b'0', '', b'0', b'0', '/modules/third/wechat/template/WechatTemplateList.vue', NULL, '/third/wechat/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:05:29', 1414143554414059520, '2022-10-26 15:58:56', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1584380679478779904, 'adminv3', 1584379602188574720, '自定义菜单', 'WechatMenuList', NULL, b'0', '', b'0', b'0', '/modules/third/wechat/menu/WechatMenuList.vue', NULL, '/third/wechat/menu', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:06:05', 1414143554414059520, '2022-10-27 10:15:24', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1584380824308097024, 'adminv3', 1584379602188574720, '素材管理', 'WechatMediaList', NULL, b'0', '', b'0', b'0', '/modules/third/wechat/media/WechatMediaList.vue', NULL, '/third/wechat/media', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:06:40', 1414143554414059520, '2022-10-27 16:38:47', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1584381134950834176, 'adminv3', 1584379704122744832, '企微机器人', 'WeComRobotConfigList', NULL, b'0', '', b'0', b'0', '/modules/third/wecom/robot/WecomRobotConfigList.vue', NULL, '/third/wecom/robot', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:07:54', 1414143554414059520, '2022-11-12 20:58:25', 3, 0);
-INSERT INTO `iam_perm_menu` VALUES (1584381322184564736, 'adminv3', 1584380087805091840, '钉钉机器人', 'DingRobotConfigList', NULL, b'0', '', b'0', b'0', '/modules/third/dingtalk/robot/DingRobotConfigList.vue', NULL, '/third/dingTalk/robot', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:08:38', 1414143554414059520, '2022-11-12 20:58:37', 6, 0);
-INSERT INTO `iam_perm_menu` VALUES (1584381477986181120, 'adminv3', 1584380087805091840, '钉钉配置', 'DingRobotConfigList', NULL, b'0', '', b'1', b'0', '/modules/third/dingtalk/config/DingTalkConfigList.vue', NULL, '/third/dingtalk/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:09:15', 1414143554414059520, '2022-11-11 16:04:47', 1, 1);
-INSERT INTO `iam_perm_menu` VALUES (1597044371008516096, 'adminv3', NULL, '功能演示', 'Demo', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/demo', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-11-28 09:47:04', 1414143554414059520, '2022-11-28 09:47:04', 0, 1);
-INSERT INTO `iam_perm_menu` VALUES (1597102799370317824, 'adminv3', 1582276516905177088, '数据相关', 'DemoData', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/demo/data', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-11-28 13:39:15', 1414143554414059520, '2022-11-28 13:39:15', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1597210969883275264, 'adminv3', 1582276516905177088, '超级查询', 'SuperQueryDemoList', NULL, b'0', '', b'0', b'0', '/modules/demo/query/SuperQueryDemoList.vue', NULL, '/demo/query/super', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-11-28 20:49:05', 1414143554414059520, '2022-11-28 21:00:14', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1599337250200440832, 'adminv3', NULL, '关于', '', NULL, b'0', 'simple-icons:about-dot-me', b'0', b'0', '', NULL, '/about/index', '', 99, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 17:38:09', 1414143554414059520, '2022-12-04 17:43:32', 3, 0);
-INSERT INTO `iam_perm_menu` VALUES (1599378494880436224, 'adminv3', 1582276516905177088, 'WS演示', 'WebsocketDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/ws/WebsocketDemo', NULL, '/demo/ws', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 20:22:03', 1414143554414059520, '2023-02-08 12:17:58', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1599378579513102336, 'adminv3', 1582276516905177088, '幂等请求演示', 'IdempotentDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/idempotent/IdempotentDemo', NULL, '/demo/idempotent', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 20:22:23', 1414143554414059520, '2023-02-08 11:46:00', 3, 0);
-INSERT INTO `iam_perm_menu` VALUES (1599378728490586112, 'adminv3', 1582276516905177088, '消息中间件演示', 'MqDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/mq/MqDemo', NULL, '/demo/mq', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 20:22:59', 1414143554414059520, '2023-02-08 22:09:04', 2, 0);
-INSERT INTO `iam_perm_menu` VALUES (1599378838519762944, 'adminv3', 1582276516905177088, '富文本编辑', 'WangEditorDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/wangeditor/WangEditorDemo.vue', NULL, '/demo/wangEditor', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 20:23:25', 1414143554414059520, '2023-02-10 09:05:16', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1617847577158324224, 'adminv3', 1597102799370317824, '数据权限', 'DataPermDemoList', NULL, b'0', '', b'0', b'0', '/modules/demo/data/perm/DataPermDemoList.vue', NULL, '/demo/data/perm', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-01-24 19:31:35', 1414143554414059520, '2023-01-24 20:06:04', 2, 0);
-INSERT INTO `iam_perm_menu` VALUES (1617847653746315264, 'adminv3', 1597102799370317824, '加密解密', 'DataEncryptDemoList', NULL, b'0', '', b'0', b'0', '/modules/demo/data/encrypt/DataEncryptDemoList.vue', NULL, '/demo/data/encrypt', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-01-24 19:31:53', 1414143554414059520, '2023-01-24 20:05:45', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1617847747375763456, 'adminv3', 1597102799370317824, '数据脱敏', 'DataSensitiveDemoList', NULL, b'0', '', b'0', b'0', '/modules/demo/data/sensitive/DataSensitiveDemoList.vue', NULL, '/demo/data/sensitive', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-01-24 19:32:16', 1414143554414059520, '2023-01-24 20:06:58', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1621150743447965696, 'admin', 1495968302034210816, '省市区联动', 'ChinaRegionDemo', NULL, b'0', '', b'0', b'0', 'demo/chinaregion/ChinaRegionDemo', NULL, '/demo/chinaregion', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-02-02 22:17:11', 1399985191002447872, '2023-02-08 09:43:39', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1623156857846034432, 'adminv3', 1582276516905177088, '省市区联动', 'ChinaRegionDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/chinaregion/ChinaRegionDemo', NULL, '/demo/chinaregion', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-02-08 11:08:46', 1414143554414059520, '2023-02-08 11:08:46', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1623325795944439808, 'adminv3', 1599378992811429888, '邮件通知', 'EmailSenderDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/notice/email/EmailSenderDemo.vue', NULL, '/demo/notice/email', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-02-08 22:20:04', 1414143554414059520, '2023-02-20 10:38:55', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1623494586215579648, 'admin', 1552207982510706688, '行政区划', 'ChinaRegion', NULL, b'0', '', b'1', b'0', 'develop/region/ChinaRegionList', NULL, '/develop/region', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-02-09 09:30:47', 1399985191002447872, '2023-02-09 17:50:05', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1629039360928075776, 'adminv3', 1582276341792985088, '可视化大屏', 'ProjectInfoList', NULL, b'0', '', b'0', b'0', '/modules/develop/report/ProjectInfoList', NULL, '/develop/report', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-02-24 16:43:44', 1414143554414059520, '2023-02-24 16:44:17', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1631946120891707392, 'admin', 1552207982510706688, '可视化大屏', 'ProjectInfoList', NULL, b'0', '', b'0', b'0', 'develop/report/ProjectInfoList', NULL, '/develop/report', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-03-04 17:14:10', 1399985191002447872, '2023-03-04 17:14:10', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1635274568758435840, 'adminv3', 1582276341792985088, '数据集管理', 'DataResultSqlList', NULL, b'0', '', b'0', b'0', '/modules/develop/dataresult/DataResultSqlList', NULL, '/develop/dataresult', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-03-13 21:40:14', 1414143554414059520, '2023-09-18 14:26:51', 3, 0);
-INSERT INTO `iam_perm_menu` VALUES (1687369862646558720, 'adminv3', 1582275984849326080, '短信管理', 'Sms', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/notice/sms', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-04 15:48:20', 1414143554414059520, '2023-08-04 15:48:32', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1687370142234669056, 'adminv3', 1687369862646558720, '短信配置', 'SmsChannelConfigList', NULL, b'0', '', b'0', b'0', '/modules/notice/sms/config/SmsChannelConfigList', NULL, '/notice/sms/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-04 15:49:26', 1414143554414059520, '2023-08-04 15:49:26', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1687370277496778752, 'adminv3', 1687369862646558720, '短信模板', 'SmsTemplateList', NULL, b'0', '', b'0', b'0', '/modules/notice/sms/template/SmsTemplateList', NULL, '/notice/sms/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-04 15:49:59', 1414143554414059520, '2023-08-04 15:50:38', 1, 0);
-INSERT INTO `iam_perm_menu` VALUES (1689181991598997504, 'adminv3', 1582253152903843840, '敏感词管理', 'ChinaWord', NULL, b'0', '', b'0', b'0', '/modules/baseapi/chianword/ChinaWordList.vue', NULL, '/system/config/chinaword', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-09 15:49:05', 1414143554414059520, '2023-08-09 15:49:05', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1690324070514782208, 'adminv3', 1582276341792985088, '通用模板', 'GeneralTemplateList', NULL, b'0', '', b'0', b'0', '/modules/develop/template/GeneralTemplateList', NULL, '/develop/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-12 19:27:18', 1414143554414059520, '2023-08-12 19:31:26', 3, 0);
-INSERT INTO `iam_perm_menu` VALUES (1703665090038800384, 'adminv3', 1582276341792985088, '在线SQL', 'SqlQueryInfo', NULL, b'0', '', b'0', b'0', '/modules/develop/query/SqlQueryInfo', NULL, '/develop/sqlquery', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-09-18 14:59:45', 1414143554414059520, '2023-09-18 14:59:45', 0, 0);
-INSERT INTO `iam_perm_menu` VALUES (1713931084759293952, 'adminv3', 1582253306356649984, '密码安全', 'PassowrdSecurity', NULL, b'0', '', b'0', b'0', '/modules/system/security/password/PasswordSecurityConfig.vue', NULL, '/system/config/passowrd', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-10-16 22:53:09', 1399985191002447872, '2023-10-16 22:58:59', 2, 0);
+INSERT INTO `base_dict` VALUES (1422929378374828033, 'Sex', '性别', b'1', '基础属性', '性别', 0, '2021-08-04 22:36:15', 1399985191002447872, '2022-05-11 19:48:40', 0, 6);
+INSERT INTO `base_dict` VALUES (1425744045414772737, 'MenuType', '菜单类型', b'1', '系统属性', '菜单类型', 0, '2021-08-12 17:00:44', 1399985191002447872, '2022-05-11 19:48:44', 0, 4);
+INSERT INTO `base_dict` VALUES (1430063572491411456, 'loginType', '字典类型', b'1', '基础属性', '字典类型', 1399985191002447872, '2021-08-24 15:05:00', 1399985191002447872, '2021-08-24 15:05:00', 1, 2);
+INSERT INTO `base_dict` VALUES (1435829999592759296, 'UserStatusCode', '用户状态码', b'1', '系统属性', '用户状态码', 1399985191002447872, '2021-09-09 12:58:43', 1399985191002447872, '2022-05-11 19:48:56', 0, 2);
+INSERT INTO `base_dict` VALUES (1435838066191458304, 'LogBusinessType', '业务操作类型', b'1', '系统属性', '操作日志记录的业务操作类型', 1399985191002447872, '2021-09-09 13:30:46', 1399985191002447872, '2022-05-11 19:49:00', 0, 2);
+INSERT INTO `base_dict` VALUES (1438078864509317120, 'MailSecurityCode', '邮箱安全方式编码', b'1', '消息服务', '邮箱安全方式编码', 1399985191002447872, '2021-09-15 17:54:54', 1399985191002447872, '2022-05-11 19:49:06', 0, 2);
+INSERT INTO `base_dict` VALUES (1439961232651034624, 'MessageTemplateCode', '消息模板类型', b'1', '消息服务', '消息模板类型', 1399985191002447872, '2021-09-20 22:34:46', 1399985191002447872, '2022-05-11 19:48:34', 0, 1);
+INSERT INTO `base_dict` VALUES (1452836604783845376, 'SocialType', '三方系统类型', b'1', '系统属性', '三方系统类型', 1399985191002447872, '2021-10-26 11:16:54', 1399985191002447872, '2022-05-11 19:48:28', 0, 3);
+INSERT INTO `base_dict` VALUES (1452843488735621120, 'ParamType', '参数类型', b'1', '系统属性', '参数类型', 1399985191002447872, '2021-10-26 11:44:15', 1399985191002447872, '2022-05-11 19:48:21', 0, 2);
+INSERT INTO `base_dict` VALUES (1496024933900169216, 'Political', '政治面貌', b'1', '基础数据', '政治面貌', 1399985191002447872, '2022-02-22 15:31:54', 1399985191002447872, '2022-05-11 19:48:04', 0, 1);
+INSERT INTO `base_dict` VALUES (1556996322223968256, 'WeChatMediaType', '微信媒体类型', b'1', '微信', '微信媒体类型', 1399985191002447872, '2022-08-09 21:30:25', 1399985191002447872, '2022-08-09 21:30:26', 0, 0);
+INSERT INTO `base_dict` VALUES (1561003021674987520, 'SiteMessageReceive', '消息接收类型', b'1', '站内信', '站内信接收类型', 1399985191002447872, '2022-08-20 22:51:37', 1399985191002447872, '2022-08-20 22:51:37', 0, 0);
+INSERT INTO `base_dict` VALUES (1561003189111603200, 'SiteMessageState', '消息发布状态', b'1', '站内信', '站内信消息发布状态', 1399985191002447872, '2022-08-20 22:52:17', 1399985191002447872, '2022-08-20 22:52:17', 0, 0);
+INSERT INTO `base_dict` VALUES (1589527951317389312, 'DataScopePerm', '数据权限类型', b'1', '系统属性', '数据权限类型', 1414143554414059520, '2022-11-07 15:59:30', 1399985191002447872, '2023-11-28 23:14:24', 0, 4);
+INSERT INTO `base_dict` VALUES (1633393287952257024, 'DatabaseType', '数据库类型', b'1', '开发', '数据库类型', 1414143554414059520, '2023-03-08 17:04:41', 1414143554414059520, '2023-03-08 17:04:41', 0, 0);
+INSERT INTO `base_dict` VALUES (1688742690398617600, 'SmsChannel', '短信渠道商', b'1', '消息服务', '短信渠道商', 1414143554414059520, '2023-08-08 10:43:27', 1414143554414059520, '2023-08-12 20:24:03', 0, 1);
+INSERT INTO `base_dict` VALUES (1690338321769918464, 'GeneralTemplateUseType', '通用模板类型', b'1', '系统属性', '通用模板类型', 1414143554414059520, '2023-08-12 20:23:56', 1414143554414059520, '2023-08-12 20:24:22', 0, 1);
+INSERT INTO `base_dict` VALUES (1690338545284378624, 'GeneralTemplateState', '通用模板状态', b'1', '系统属性', '通用模板状态', 1414143554414059520, '2023-08-12 20:24:49', 1414143554414059520, '2023-08-12 20:24:49', 0, 0);
 
 -- ----------------------------
 -- Table structure for base_dict_item
@@ -3560,9 +3473,9 @@ CREATE TABLE `base_dict_item`  (
   `sort_no` double(8, 2) NOT NULL COMMENT '排序',
   `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
   `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
   `version` int(8) NOT NULL COMMENT '版本',
   PRIMARY KEY (`id`) USING BTREE,
@@ -3578,9 +3491,9 @@ INSERT INTO `base_dict_item` VALUES (1425744258544136194, 1425744045414772737, '
 INSERT INTO `base_dict_item` VALUES (1425744436592340993, 1425744045414772737, 'MenuType', '1', '子菜单', b'1', 0.00, '子菜单', 0, '2021-08-12 17:02:17', 0, '2021-08-12 17:02:17', 0, 0);
 INSERT INTO `base_dict_item` VALUES (1425744470582980610, 1425744045414772737, 'MenuType', '2', '按钮权限', b'1', 0.00, '按钮权限', 0, '2021-08-12 17:02:26', 0, '2021-08-12 17:02:26', 0, 0);
 INSERT INTO `base_dict_item` VALUES (1430094707250413568, 1422929378374828033, 'Sex', '0', '未知', b'1', 0.00, '不确定性别', 1399985191002447872, '2021-08-24 17:08:43', 1399985191002447872, '2021-08-24 17:08:43', 0, 0);
-INSERT INTO `base_dict_item` VALUES (1435830086406463488, 1435829999592759296, 'UserStatusCode', '1', '正常', b'1', 0.00, 'NORMAL', 1399985191002447872, '2021-09-09 12:59:04', 1399985191002447872, '2021-09-09 12:59:04', 0, 0);
-INSERT INTO `base_dict_item` VALUES (1435830141855162368, 1435829999592759296, 'UserStatusCode', '2', '锁定', b'1', 0.00, 'LOCK, 多次登录失败被锁定', 1399985191002447872, '2021-09-09 12:59:17', 1399985191002447872, '2021-09-09 12:59:17', 0, 1);
-INSERT INTO `base_dict_item` VALUES (1435830260503633920, 1435829999592759296, 'UserStatusCode', '3', '封禁', b'1', 0.00, 'BAN', 1399985191002447872, '2021-09-09 12:59:45', 1399985191002447872, '2021-09-09 12:59:45', 0, 0);
+INSERT INTO `base_dict_item` VALUES (1435830086406463488, 1435829999592759296, 'UserStatusCode', 'normal', '正常', b'1', 0.00, 'NORMAL', 1399985191002447872, '2021-09-09 12:59:04', 1399985191002447872, '2023-11-25 15:32:04', 0, 1);
+INSERT INTO `base_dict_item` VALUES (1435830141855162368, 1435829999592759296, 'UserStatusCode', 'lock', '锁定', b'1', 0.00, 'LOCK, 多次登录失败被锁定', 1399985191002447872, '2021-09-09 12:59:17', 1399985191002447872, '2023-11-25 15:32:14', 0, 2);
+INSERT INTO `base_dict_item` VALUES (1435830260503633920, 1435829999592759296, 'UserStatusCode', 'ban', '封禁', b'1', 0.00, 'BAN', 1399985191002447872, '2021-09-09 12:59:45', 1399985191002447872, '2023-11-25 15:32:20', 0, 1);
 INSERT INTO `base_dict_item` VALUES (1435838374749626368, 1435838066191458304, 'LogBusinessType', 'other', '其它', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:32:00', 1399985191002447872, '2021-09-09 13:32:00', 0, 0);
 INSERT INTO `base_dict_item` VALUES (1435838414436130816, 1435838066191458304, 'LogBusinessType', 'insert', '新增', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:32:09', 1399985191002447872, '2021-09-09 13:32:09', 0, 0);
 INSERT INTO `base_dict_item` VALUES (1435838467624099840, 1435838066191458304, 'LogBusinessType', 'update', '修改', b'1', 0.00, '', 1399985191002447872, '2021-09-09 13:32:22', 1399985191002447872, '2021-09-09 13:32:22', 0, 0);
@@ -3622,13 +3535,13 @@ INSERT INTO `base_dict_item` VALUES (1561003539772194816, 1561003189111603200, '
 INSERT INTO `base_dict_item` VALUES (1561003575608328192, 1561003189111603200, 'SiteMessageState', 'cancel', '撤销', b'1', 0.00, '', 1399985191002447872, '2022-08-20 22:53:49', 1399985191002447872, '2022-08-20 22:53:49', 0, 0);
 INSERT INTO `base_dict_item` VALUES (1561245469535080448, 1561003189111603200, 'SiteMessageState', 'draft', '草稿', b'1', 0.00, '', 1399985191002447872, '2022-08-21 14:55:01', 1399985191002447872, '2022-08-21 14:55:01', 0, 0);
 INSERT INTO `base_dict_item` VALUES (1573665422392098816, 1439961232651034624, 'MessageTemplateCode', '0', '站内信', b'1', -11.00, 'SITE', 1399985191002447872, '2022-09-24 21:27:29', 1399985191002447872, '2022-09-24 21:27:39', 0, 1);
-INSERT INTO `base_dict_item` VALUES (1589528254477488128, 1589527951317389312, 'DataScopePerm', '7', '所在及下级部门', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:00:43', 1414143554414059520, '2022-11-07 16:00:43', 0, 0);
-INSERT INTO `base_dict_item` VALUES (1589528283539820544, 1589527951317389312, 'DataScopePerm', '6', '所在部门', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:00:49', 1414143554414059520, '2022-11-07 16:00:49', 0, 0);
-INSERT INTO `base_dict_item` VALUES (1589528315672383488, 1589527951317389312, 'DataScopePerm', '5', '全部数据', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:00:57', 1414143554414059520, '2022-11-07 16:00:57', 0, 0);
-INSERT INTO `base_dict_item` VALUES (1589528340267782144, 1589527951317389312, 'DataScopePerm', '4', '部门和用户范围', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:03', 1414143554414059520, '2022-11-07 16:01:03', 0, 0);
-INSERT INTO `base_dict_item` VALUES (1589528367228768256, 1589527951317389312, 'DataScopePerm', '3', '部门范围', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:09', 1414143554414059520, '2022-11-07 16:01:09', 0, 0);
-INSERT INTO `base_dict_item` VALUES (1589528393292173312, 1589527951317389312, 'DataScopePerm', '2', '用户范围', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:16', 1414143554414059520, '2022-11-07 16:01:16', 0, 0);
-INSERT INTO `base_dict_item` VALUES (1589528423956729856, 1589527951317389312, 'DataScopePerm', '1', '自身数据', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:23', 1414143554414059520, '2022-11-07 16:01:23', 0, 0);
+INSERT INTO `base_dict_item` VALUES (1589528254477488128, 1589527951317389312, 'DataScopePerm', 'self_dept_sub', '所在及下级部门', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:00:43', 1399985191002447872, '2023-11-28 23:16:02', 0, 2);
+INSERT INTO `base_dict_item` VALUES (1589528283539820544, 1589527951317389312, 'DataScopePerm', 'self_dept', '所在部门', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:00:49', 1399985191002447872, '2023-11-28 23:15:52', 0, 2);
+INSERT INTO `base_dict_item` VALUES (1589528315672383488, 1589527951317389312, 'DataScopePerm', 'all', '全部数据', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:00:57', 1399985191002447872, '2023-11-25 22:51:28', 0, 1);
+INSERT INTO `base_dict_item` VALUES (1589528340267782144, 1589527951317389312, 'DataScopePerm', 'dept_and_user', '自定义部门和用户', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:03', 1399985191002447872, '2023-11-29 15:25:01', 0, 3);
+INSERT INTO `base_dict_item` VALUES (1589528367228768256, 1589527951317389312, 'DataScopePerm', 'dept', '自定义部门', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:09', 1399985191002447872, '2023-11-29 15:24:47', 0, 2);
+INSERT INTO `base_dict_item` VALUES (1589528393292173312, 1589527951317389312, 'DataScopePerm', 'user', '指定用户', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:16', 1399985191002447872, '2023-11-29 15:25:16', 0, 2);
+INSERT INTO `base_dict_item` VALUES (1589528423956729856, 1589527951317389312, 'DataScopePerm', 'self', '自身数据', b'1', 0.00, '', 1414143554414059520, '2022-11-07 16:01:23', 1399985191002447872, '2023-11-25 22:50:41', 0, 1);
 INSERT INTO `base_dict_item` VALUES (1633403429028536320, 1633393287952257024, 'DatabaseType', 'mysql', 'MySQL', b'1', 1.00, '', 1414143554414059520, '2023-03-08 17:44:59', 1414143554414059520, '2023-03-08 17:44:59', 0, 0);
 INSERT INTO `base_dict_item` VALUES (1633403459470794752, 1633393287952257024, 'DatabaseType', 'oracle', 'Oracle', b'1', 2.00, '', 1414143554414059520, '2023-03-08 17:45:07', 1414143554414059520, '2023-03-08 17:45:07', 0, 0);
 INSERT INTO `base_dict_item` VALUES (1633403498695925760, 1633393287952257024, 'DatabaseType', 'mssql', 'SQLServer', b'1', 3.00, '', 1414143554414059520, '2023-03-08 17:45:16', 1414143554414059520, '2023-03-08 17:45:16', 0, 0);
@@ -3646,248 +3559,109 @@ INSERT INTO `base_dict_item` VALUES (1690338619024437248, 1690338321769918464, '
 INSERT INTO `base_dict_item` VALUES (1690338653442895872, 1690338321769918464, 'GeneralTemplateUseType', 'export', '导出', b'1', 0.00, '', 1414143554414059520, '2023-08-12 20:25:15', 1414143554414059520, '2023-08-12 20:25:15', 0, 0);
 INSERT INTO `base_dict_item` VALUES (1690338707129987072, 1690338545284378624, 'GeneralTemplateState', 'enable', '启用', b'1', 0.00, '', 1414143554414059520, '2023-08-12 20:25:27', 1414143554414059520, '2023-08-12 20:25:27', 0, 0);
 INSERT INTO `base_dict_item` VALUES (1690338748032839680, 1690338545284378624, 'GeneralTemplateState', 'disable', '停用', b'1', 0.00, '', 1414143554414059520, '2023-08-12 20:25:37', 1414143554414059520, '2023-08-12 20:25:37', 0, 0);
+INSERT INTO `base_dict_item` VALUES (1729519341702086656, 1589527951317389312, 'DataScopePerm', 'dept_sub', '指定部门及下级部门', b'1', 0.00, '', 1399985191002447872, '2023-11-28 23:15:19', 1399985191002447872, '2023-11-28 23:15:19', 0, 0);
 
 -- ----------------------------
--- Table structure for base_province
+-- Table structure for base_dynamic_data_source
 -- ----------------------------
-DROP TABLE IF EXISTS `base_province`;
-CREATE TABLE `base_province`  (
-  `code` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '省份编码',
-  `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '省份名称',
-  PRIMARY KEY (`code`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '省份表' ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `base_dynamic_data_source`;
+CREATE TABLE `base_dynamic_data_source`  (
+  `id` bigint(20) NOT NULL,
+  `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据源编码',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据源名称',
+  `database_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据库类型',
+  `auto_load` bit(1) NULL DEFAULT NULL COMMENT '是否启动自动加载',
+  `db_driver` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驱动类',
+  `db_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据库地址',
+  `db_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据库名称',
+  `db_username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户名',
+  `db_password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '密码',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '版本',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '动态数据源管理' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of base_province
+-- Records of base_dynamic_data_source
 -- ----------------------------
-INSERT INTO `base_province` VALUES ('11', '北京市');
-INSERT INTO `base_province` VALUES ('12', '天津市');
-INSERT INTO `base_province` VALUES ('13', '河北省');
-INSERT INTO `base_province` VALUES ('14', '山西省');
-INSERT INTO `base_province` VALUES ('15', '内蒙古自治区');
-INSERT INTO `base_province` VALUES ('21', '辽宁省');
-INSERT INTO `base_province` VALUES ('22', '吉林省');
-INSERT INTO `base_province` VALUES ('23', '黑龙江省');
-INSERT INTO `base_province` VALUES ('31', '上海市');
-INSERT INTO `base_province` VALUES ('32', '江苏省');
-INSERT INTO `base_province` VALUES ('33', '浙江省');
-INSERT INTO `base_province` VALUES ('34', '安徽省');
-INSERT INTO `base_province` VALUES ('35', '福建省');
-INSERT INTO `base_province` VALUES ('36', '江西省');
-INSERT INTO `base_province` VALUES ('37', '山东省');
-INSERT INTO `base_province` VALUES ('41', '河南省');
-INSERT INTO `base_province` VALUES ('42', '湖北省');
-INSERT INTO `base_province` VALUES ('43', '湖南省');
-INSERT INTO `base_province` VALUES ('44', '广东省');
-INSERT INTO `base_province` VALUES ('45', '广西壮族自治区');
-INSERT INTO `base_province` VALUES ('46', '海南省');
-INSERT INTO `base_province` VALUES ('50', '重庆市');
-INSERT INTO `base_province` VALUES ('51', '四川省');
-INSERT INTO `base_province` VALUES ('52', '贵州省');
-INSERT INTO `base_province` VALUES ('53', '云南省');
-INSERT INTO `base_province` VALUES ('54', '西藏自治区');
-INSERT INTO `base_province` VALUES ('61', '陕西省');
-INSERT INTO `base_province` VALUES ('62', '甘肃省');
-INSERT INTO `base_province` VALUES ('63', '青海省');
-INSERT INTO `base_province` VALUES ('64', '宁夏回族自治区');
-INSERT INTO `base_province` VALUES ('65', '新疆维吾尔自治区');
 
 -- ----------------------------
--- Table structure for base_dict
+-- Table structure for base_dynamic_form
 -- ----------------------------
-DROP TABLE IF EXISTS `base_dict`;
-CREATE TABLE `base_dict`  (
+DROP TABLE IF EXISTS `base_dynamic_form`;
+CREATE TABLE `base_dynamic_form`  (
   `id` bigint(20) NOT NULL,
-  `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '编码',
-  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名称',
-  `enable` bit(1) NOT NULL DEFAULT b'1' COMMENT '启用状态',
-  `group_tag` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '分类标签',
-  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注',
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单名称',
+  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单键名',
+  `value` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '表单内容',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
-  `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
-  `version` int(8) NULL DEFAULT NULL COMMENT '版本',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
+  `version` int(8) NOT NULL COMMENT '版本',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '动态表单' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of base_dict
--- ----------------------------
-INSERT INTO `base_dict` VALUES (1422929378374828033, 'Sex', '性别', b'1', '基础属性', '性别', 0, '2021-08-04 22:36:15', 1399985191002447872, '2022-05-11 19:48:40', 0, 6);
-INSERT INTO `base_dict` VALUES (1425744045414772737, 'MenuType', '菜单类型', b'1', '系统属性', '菜单类型', 0, '2021-08-12 17:00:44', 1399985191002447872, '2022-05-11 19:48:44', 0, 4);
-INSERT INTO `base_dict` VALUES (1430063572491411456, 'loginType', '字典类型', b'1', '基础属性', '字典类型', 1399985191002447872, '2021-08-24 15:05:00', 1399985191002447872, '2021-08-24 15:05:00', 1, 2);
-INSERT INTO `base_dict` VALUES (1435829999592759296, 'UserStatusCode', '用户状态码', b'1', '系统属性', '用户状态码', 1399985191002447872, '2021-09-09 12:58:43', 1399985191002447872, '2022-05-11 19:48:56', 0, 2);
-INSERT INTO `base_dict` VALUES (1435838066191458304, 'LogBusinessType', '业务操作类型', b'1', '系统属性', '操作日志记录的业务操作类型', 1399985191002447872, '2021-09-09 13:30:46', 1399985191002447872, '2022-05-11 19:49:00', 0, 2);
-INSERT INTO `base_dict` VALUES (1438078864509317120, 'MailSecurityCode', '邮箱安全方式编码', b'1', '消息服务', '邮箱安全方式编码', 1399985191002447872, '2021-09-15 17:54:54', 1399985191002447872, '2022-05-11 19:49:06', 0, 2);
-INSERT INTO `base_dict` VALUES (1439961232651034624, 'MessageTemplateCode', '消息模板类型', b'1', '消息服务', '消息模板类型', 1399985191002447872, '2021-09-20 22:34:46', 1399985191002447872, '2022-05-11 19:48:34', 0, 1);
-INSERT INTO `base_dict` VALUES (1452836604783845376, 'SocialType', '三方系统类型', b'1', '系统属性', '三方系统类型', 1399985191002447872, '2021-10-26 11:16:54', 1399985191002447872, '2022-05-11 19:48:28', 0, 3);
-INSERT INTO `base_dict` VALUES (1452843488735621120, 'ParamType', '参数类型', b'1', '系统属性', '参数类型', 1399985191002447872, '2021-10-26 11:44:15', 1399985191002447872, '2022-05-11 19:48:21', 0, 2);
-INSERT INTO `base_dict` VALUES (1496024933900169216, 'Political', '政治面貌', b'1', '基础数据', '政治面貌', 1399985191002447872, '2022-02-22 15:31:54', 1399985191002447872, '2022-05-11 19:48:04', 0, 1);
-INSERT INTO `base_dict` VALUES (1556996322223968256, 'WeChatMediaType', '微信媒体类型', b'1', '微信', '微信媒体类型', 1399985191002447872, '2022-08-09 21:30:25', 1399985191002447872, '2022-08-09 21:30:26', 0, 0);
-INSERT INTO `base_dict` VALUES (1561003021674987520, 'SiteMessageReceive', '消息接收类型', b'1', '站内信', '站内信接收类型', 1399985191002447872, '2022-08-20 22:51:37', 1399985191002447872, '2022-08-20 22:51:37', 0, 0);
-INSERT INTO `base_dict` VALUES (1561003189111603200, 'SiteMessageState', '消息发布状态', b'1', '站内信', '站内信消息发布状态', 1399985191002447872, '2022-08-20 22:52:17', 1399985191002447872, '2022-08-20 22:52:17', 0, 0);
-INSERT INTO `base_dict` VALUES (1589527951317389312, 'DataScopePerm', '数据范围权限', b'1', '系统属性', '数据范围权限', 1414143554414059520, '2022-11-07 15:59:30', 1399985191002447872, '2022-12-09 22:09:25', 0, 3);
-INSERT INTO `base_dict` VALUES (1633393287952257024, 'DatabaseType', '数据库类型', b'1', '开发', '数据库类型', 1414143554414059520, '2023-03-08 17:04:41', 1414143554414059520, '2023-03-08 17:04:41', 0, 0);
-INSERT INTO `base_dict` VALUES (1688742690398617600, 'SmsChannel', '短信渠道商', b'1', '消息服务', '短信渠道商', 1414143554414059520, '2023-08-08 10:43:27', 1414143554414059520, '2023-08-12 20:24:03', 0, 1);
-INSERT INTO `base_dict` VALUES (1690338321769918464, 'GeneralTemplateUseType', '通用模板类型', b'1', '系统属性', '通用模板类型', 1414143554414059520, '2023-08-12 20:23:56', 1414143554414059520, '2023-08-12 20:24:22', 0, 1);
-INSERT INTO `base_dict` VALUES (1690338545284378624, 'GeneralTemplateState', '通用模板状态', b'1', '系统属性', '通用模板状态', 1414143554414059520, '2023-08-12 20:24:49', 1414143554414059520, '2023-08-12 20:24:49', 0, 0);
-
--- ----------------------------
--- Table structure for iam_dept
--- ----------------------------
-DROP TABLE IF EXISTS `iam_dept`;
-CREATE TABLE `iam_dept`  (
-  `id` bigint(20) NOT NULL COMMENT 'ID',
-  `parent_id` bigint(20) NULL DEFAULT NULL COMMENT '父机构ID',
-  `dept_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '机构/部门名称',
-  `sort_no` int(11) NOT NULL DEFAULT 0 COMMENT '排序',
-  `org_category` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '1' COMMENT '机构类别 1公司 2部门 3岗位',
-  `org_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '机构编码',
-  `mobile` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手机号',
-  `fax` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '传真',
-  `address` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地址',
-  `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '版本',
-  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门组织机构表' ROW_FORMAT = DYNAMIC;
-
--- ----------------------------
--- Records of iam_dept
--- ----------------------------
-INSERT INTO `iam_dept` VALUES (1259382878857957377, NULL, 'Bootx Platform总公司', 0, '1', '1', '', NULL, '济南市高新区齐鲁软件园', NULL, -1, '2020-05-10 15:20:51', -1, '2020-05-10 17:52:15', 4, 0);
-INSERT INTO `iam_dept` VALUES (1477976804995026944, NULL, 'Bootx Cloud公司', 0, '1', '1', '', NULL, '济南市高新区汉峪金谷', '', 1399985191002447872, '2022-01-03 20:15:04', 1399985191002447872, '2022-01-03 20:15:05', 0, 1);
-INSERT INTO `iam_dept` VALUES (1477977184768282624, NULL, 'Bootx Cloud公司', 0, '1', '1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:16:35', 1399985191002447872, '2022-01-03 20:16:35', 0, 1);
-INSERT INTO `iam_dept` VALUES (1477977301365739520, NULL, 'Bootx Cloud总公司', 0, '1', '2', '', NULL, '济南市高新区汉峪金谷', '', 1399985191002447872, '2022-01-03 20:17:03', 1399985191002447872, '2022-01-03 20:17:03', 1, 0);
-INSERT INTO `iam_dept` VALUES (1477977592291053568, 1259382878857957377, 'bp济南分公司', 0, '1', '1_1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:18:12', 1399985191002447872, '2022-01-03 20:18:12', 1, 0);
-INSERT INTO `iam_dept` VALUES (1477977690928500736, 1259382878857957377, '历城分公司', 0, '1', '1_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:18:36', 1399985191002447872, '2022-01-03 20:18:36', 0, 1);
-INSERT INTO `iam_dept` VALUES (1477977827897692160, 1259382878857957377, 'bp潍坊分公司', 0, '1', '1_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:19:08', 1399985191002447872, '2022-01-03 20:19:08', 0, 0);
-INSERT INTO `iam_dept` VALUES (1477977880947249152, 1477977301365739520, 'bc菏泽分公司', 0, '1', '2_1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:19:21', 1399985191002447872, '2022-01-03 20:19:21', 0, 0);
-INSERT INTO `iam_dept` VALUES (1477977930175795200, 1477977301365739520, 'bc日照分公司', 0, '1', '2_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:19:33', 1399985191002447872, '2022-01-03 20:19:33', 0, 0);
-INSERT INTO `iam_dept` VALUES (1477978464559484928, 1477977592291053568, '历城办事部', 0, '2', '1_1_1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:21:40', 1399985191002447872, '2022-01-03 20:21:40', 1, 0);
-INSERT INTO `iam_dept` VALUES (1477978512177418240, 1477977592291053568, '历下办事部', 0, '2', '1_1_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:21:51', 1399985191002447872, '2022-01-03 20:21:52', 0, 0);
-INSERT INTO `iam_dept` VALUES (1477978610865197056, 1477977592291053568, '高新办事部', 0, '2', '1_1_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:22:15', 1399985191002447872, '2022-01-03 20:22:15', 0, 0);
-INSERT INTO `iam_dept` VALUES (1477978810526650368, 1477977827897692160, '奎文办事部', 0, '2', '1_2_1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:23:03', 1399985191002447872, '2022-01-03 20:23:03', 0, 0);
-INSERT INTO `iam_dept` VALUES (1477978883247493120, 1477977827897692160, '潍城办事部', 0, '2', '1_2_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:23:20', 1399985191002447872, '2022-01-03 20:23:20', 0, 0);
-
--- ----------------------------
--- Table structure for iam_data_scope
--- ----------------------------
-DROP TABLE IF EXISTS `iam_data_scope`;
-CREATE TABLE `iam_data_scope`  (
-  `id` bigint(20) NOT NULL COMMENT '角色ID',
-  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '编码',
-  `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称',
-  `type` int(4) NOT NULL COMMENT '类型',
-  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '说明',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '版本',
-  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据范围权限' ROW_FORMAT = DYNAMIC;
-
--- ----------------------------
--- Records of iam_data_scope
--- ----------------------------
-INSERT INTO `iam_data_scope` VALUES (1474706893178871808, 'self', '自身数据', 1, '只能查看自身范围的数据', 1399985191002447872, '2021-12-25 19:41:37', 1399985191002447872, '2021-12-25 19:41:37', 1, 0);
-INSERT INTO `iam_data_scope` VALUES (1474717084985270272, 'user', '用户数据权限', 2, '用户数据权限', 1399985191002447872, '2021-12-25 20:22:07', 1399985191002447872, '2021-12-25 20:22:07', 0, 0);
-INSERT INTO `iam_data_scope` VALUES (1474717160671485952, 'dept', '部门权限', 3, '', 1399985191002447872, '2021-12-25 20:22:25', 1399985191002447872, '2021-12-25 20:22:25', 0, 0);
-INSERT INTO `iam_data_scope` VALUES (1474717276908232704, 'userAndDept', '用户和部门权限', 4, '', 1399985191002447872, '2021-12-25 20:22:52', 1399985191002447872, '2021-12-25 20:22:52', 0, 0);
-INSERT INTO `iam_data_scope` VALUES (1474717344562356224, 'all', '全部数据', 5, '', 1399985191002447872, '2021-12-25 20:23:09', 1399985191002447872, '2021-12-25 20:23:09', 0, 0);
-INSERT INTO `iam_data_scope` VALUES (1477990268903804928, 'belong_dept', '所在部门', 6, '', 1399985191002447872, '2022-01-03 21:08:34', 1399985191002447872, '2022-01-03 21:08:35', 0, 0);
-INSERT INTO `iam_data_scope` VALUES (1477990290521247744, 'belong_dept', '所在部门', 6, '', 1399985191002447872, '2022-01-03 21:08:40', 1399985191002447872, '2022-01-03 21:08:40', 0, 1);
-INSERT INTO `iam_data_scope` VALUES (1477990439800721408, 'belong_dept_and_sub', '所在及下级部门', 7, '', 1399985191002447872, '2022-01-03 21:09:15', 1399985191002447872, '2022-01-03 21:09:15', 0, 0);
-
--- ----------------------------
--- Table structure for iam_user_dept
--- ----------------------------
-DROP TABLE IF EXISTS `iam_user_dept`;
-CREATE TABLE `iam_user_dept`  (
-  `id` bigint(20) NOT NULL,
-  `user_id` bigint(20) NOT NULL COMMENT '用户id',
-  `dept_id` bigint(20) NOT NULL COMMENT '部门id',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户部门关联表' ROW_FORMAT = DYNAMIC;
-
--- ----------------------------
--- Records of iam_user_dept
+-- Records of base_dynamic_form
 -- ----------------------------
+INSERT INTO `base_dynamic_form` VALUES (1552656018381422592, '测试表单', 'test', '{\"list\":[{\"type\":\"input\",\"label\":\"输入框\",\"options\":{\"type\":\"text\",\"width\":\"100%\",\"defaultValue\":\"\",\"placeholder\":\"请输入\",\"clearable\":true,\"maxLength\":null,\"addonBefore\":\"\",\"addonAfter\":\"\",\"hidden\":false,\"disabled\":false},\"model\":\"aa\",\"key\":\"input_1659059676533\",\"help\":\"测试\",\"rules\":[{\"required\":true,\"message\":\"必填项\"}]},{\"type\":\"textarea\",\"label\":\"文本框\",\"options\":{\"width\":\"100%\",\"minRows\":4,\"maxRows\":6,\"maxLength\":null,\"defaultValue\":\"\",\"clearable\":true,\"hidden\":false,\"disabled\":false,\"placeholder\":\"请输入\"},\"model\":\"bb\",\"key\":\"textarea_1659020414125\",\"help\":\"\",\"rules\":[{\"required\":true,\"message\":\"必填项\"}]},{\"type\":\"slider\",\"label\":\"滑动输入条\",\"options\":{\"width\":\"100%\",\"defaultValue\":34,\"disabled\":false,\"hidden\":false,\"min\":0,\"max\":100,\"step\":1,\"showInput\":false},\"model\":\"cc\",\"key\":\"slider_1659020433092\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]}],\"config\":{\"layout\":\"horizontal\",\"labelCol\":{\"xs\":4,\"sm\":4,\"md\":4,\"lg\":4,\"xl\":4,\"xxl\":4},\"labelWidth\":100,\"labelLayout\":\"flex\",\"wrapperCol\":{\"xs\":18,\"sm\":18,\"md\":18,\"lg\":18,\"xl\":18,\"xxl\":18},\"hideRequiredMark\":false,\"customStyle\":\"\"}}', '测试动态表单', 1399985191002447872, '2022-07-28 22:03:36', 1399985191002447872, '2022-07-29 09:55:22', 0, 7);
+INSERT INTO `base_dynamic_form` VALUES (1552656018381422593, '测试表单1', 'test1', '{\"list\":[{\"type\":\"input\",\"label\":\"申请人\",\"options\":{\"type\":\"text\",\"width\":\"100%\",\"defaultValue\":\"\",\"placeholder\":\"请输入\",\"clearable\":true,\"maxLength\":null,\"addonBefore\":\"\",\"addonAfter\":\"\",\"hidden\":false,\"disabled\":false},\"model\":\"apply_by\",\"key\":\"input_1659059676533\",\"help\":\"测试\",\"rules\":[{\"required\":true,\"message\":\"必填项\"}]},{\"type\":\"input\",\"label\":\"请假天数\",\"options\":{\"type\":\"text\",\"width\":\"100%\",\"defaultValue\":\"\",\"placeholder\":\"请输入\",\"clearable\":false,\"maxLength\":null,\"addonBefore\":\"\",\"addonAfter\":\"\",\"hidden\":false,\"disabled\":false},\"model\":\"leave_days\",\"key\":\"input_1662106166142\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]},{\"type\":\"textarea\",\"label\":\"备注\",\"options\":{\"width\":\"100%\",\"minRows\":4,\"maxRows\":6,\"maxLength\":null,\"defaultValue\":\"\",\"clearable\":true,\"hidden\":false,\"disabled\":false,\"placeholder\":\"请输入\"},\"model\":\"remark\",\"key\":\"textarea_1659020414125\",\"help\":\"\",\"rules\":[{\"required\":true,\"message\":\"必填项\"}]},{\"type\":\"switch\",\"label\":\"开关\",\"options\":{\"defaultValue\":false,\"hidden\":false,\"disabled\":false},\"model\":\"switch_1662108221389\",\"key\":\"switch_1662108221389\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]},{\"type\":\"slider\",\"label\":\"滑动输入条\",\"options\":{\"width\":\"100%\",\"defaultValue\":34,\"disabled\":false,\"hidden\":false,\"min\":0,\"max\":100,\"step\":1,\"showInput\":false},\"model\":\"cc\",\"key\":\"slider_1659020433092\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]},{\"type\":\"table\",\"label\":\"表格布局\",\"trs\":[{\"tds\":[{\"colspan\":1,\"rowspan\":1,\"list\":[]},{\"colspan\":1,\"rowspan\":1,\"list\":[]}]},{\"tds\":[{\"colspan\":1,\"rowspan\":1,\"list\":[{\"type\":\"editor\",\"label\":\"富文本\",\"icon\":\"icon-LC_icon_edit_line_1\",\"list\":[],\"options\":{\"height\":300,\"placeholder\":\"请输入\",\"defaultValue\":\"\",\"chinesization\":true,\"hidden\":false,\"disabled\":false,\"showLabel\":false,\"width\":\"100%\"},\"model\":\"editor_1662106288134\",\"key\":\"editor_1662106288134\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]}]},{\"colspan\":1,\"rowspan\":1,\"list\":[]}]}],\"options\":{\"width\":\"100%\",\"bordered\":true,\"bright\":false,\"small\":true,\"customStyle\":\"\"},\"key\":\"table_1662106283652\"}],\"config\":{\"layout\":\"vertical\",\"labelCol\":{\"xs\":6,\"sm\":6,\"md\":6,\"lg\":6,\"xl\":6,\"xxl\":6},\"labelWidth\":100,\"labelLayout\":\"Grid\",\"wrapperCol\":{\"xs\":18,\"sm\":18,\"md\":18,\"lg\":18,\"xl\":18,\"xxl\":18},\"hideRequiredMark\":false,\"customStyle\":\"\"}}', '测试动态表单', 1399985191002447872, '2022-07-28 22:03:36', 1414143554414059520, '2022-09-02 16:44:01', 0, 12);
 
 -- ----------------------------
--- Table structure for iam_login_type
+-- Table structure for base_general_template
 -- ----------------------------
-DROP TABLE IF EXISTS `iam_login_type`;
-CREATE TABLE `iam_login_type`  (
+DROP TABLE IF EXISTS `base_general_template`;
+CREATE TABLE `base_general_template`  (
   `id` bigint(20) NOT NULL COMMENT '主键',
-  `code` varchar(21) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码',
-  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
-  `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '类型',
-  `internal` bit(1) NOT NULL COMMENT '是否系统内置',
-  `timeout` bigint(11) NULL DEFAULT NULL COMMENT '在线时长(秒)',
-  `captcha_type` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '验证码类型',
-  `captcha` bit(1) NOT NULL COMMENT '启用验证码',
-  `enable` bit(1) NOT NULL COMMENT '是否可用',
-  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板名称',
+  `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板代码',
+  `use_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '使用类型(导入/导出)',
+  `file_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板类型',
+  `file_suffix` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板后缀名',
+  `state` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '状态',
+  `file_id` bigint(20) NULL DEFAULT NULL COMMENT '文件ID',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
   `version` int(11) NOT NULL COMMENT '乐观锁',
-  `deleted` bit(1) NOT NULL DEFAULT 0 COMMENT '删除标志',
+  `deleted` bit(1) NOT NULL COMMENT '删除标志',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '登录方式' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '通用模板管理' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of iam_login_type
+-- Records of base_general_template
 -- ----------------------------
-INSERT INTO `iam_login_type` VALUES (1430430071299207168, 'password', '账号密码登陆', 'password', b'1', 3600, '-1', b'0', b'1', NULL, 1399985191002447872, '2021-08-25 15:21:20', 1399985191002447872, '2022-11-03 22:24:53', 20, b'0');
-INSERT INTO `iam_login_type` VALUES (1430478946919653376, 'miniApp', '微信小程序', 'openId', b'0', 99999, '0', b'0', b'1', NULL, 1399985191002447872, '2021-08-25 18:35:33', 1399985191002447872, '2022-07-16 12:32:26', 3, b'0');
-INSERT INTO `iam_login_type` VALUES (1435138582839009280, 'phone', '手机短信登录', 'openId', b'0', 3600, '0', b'0', b'1', NULL, 1399985191002447872, '2021-09-07 15:11:16', 1399985191002447872, '2022-07-16 12:32:19', 5, b'0');
-INSERT INTO `iam_login_type` VALUES (1542091599907115008, 'dingTalk', '钉钉', 'openId', b'0', 5, '-1', b'0', b'1', '', 1399985191002447872, '2022-06-29 18:24:23', 1399985191002447872, '2022-07-02 14:55:01', 5, b'0');
-INSERT INTO `iam_login_type` VALUES (1542804450312122368, 'weCom', '企业微信', 'openId', b'0', 5, '-1', b'0', b'1', '', 1399985191002447872, '2022-07-01 17:37:00', 1399985191002447872, '2022-07-01 17:37:00', 0, b'0');
-INSERT INTO `iam_login_type` VALUES (1543126042909016064, 'weChat', '微信登录', 'openId', b'0', 5, '-1', b'0', b'1', '', 1399985191002447872, '2022-07-02 14:54:53', 0, '2022-10-12 22:15:05', 2, b'0');
-INSERT INTO `iam_login_type` VALUES (1626845524617203712, 'passwordGoView', '可视化平台登录', 'password', b'0', 3600, '-1', b'0', b'1', '', 1414143554414059520, '2023-02-18 15:26:13', 1414143554414059520, '2023-02-18 15:26:13', 0, b'0');
 
 -- ----------------------------
--- Table structure for demo_super_query
+-- Table structure for base_key_value
 -- ----------------------------
-DROP TABLE IF EXISTS `demo_super_query`;
-CREATE TABLE `demo_super_query`  (
-  `id` bigint(20) NOT NULL COMMENT '角色ID',
-  `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称',
-  `age` int(5) NULL DEFAULT NULL COMMENT '年龄',
-  `vip` bit(1) NULL DEFAULT NULL COMMENT '是否vip',
-  `birthday` date NULL DEFAULT NULL COMMENT '生日',
-  `work_time` time(0) NULL DEFAULT NULL COMMENT '上班时间',
-  `registration_time` datetime(0) NULL DEFAULT NULL COMMENT '注册时间',
-  `political` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '政治面貌',
-  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
+DROP TABLE IF EXISTS `base_key_value`;
+CREATE TABLE `base_key_value`  (
+  `id` bigint(20) NOT NULL,
+  `key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '参数键名',
+  `value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '参数值',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '版本',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
   `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
+  `version` int(8) NOT NULL COMMENT '版本',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '超级查询演示' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'kv存储' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of demo_super_query
+-- Records of base_key_value
 -- ----------------------------
-INSERT INTO `demo_super_query` VALUES (1496046463434567680, '小小明', 18, b'1', '1998-01-23', '08:30:00', '2022-02-22 16:57:27', '13', '这是备注', 1399985191002447872, '2022-02-22 16:57:27', 1399985191002447872, '2022-02-22 17:03:34', 1, 0);
-INSERT INTO `demo_super_query` VALUES (1496372341213433856, '关羽', 52, b'1', '2000-02-23', '14:31:36', '2022-02-23 14:32:22', '1', '', 1399985191002447872, '2022-02-23 14:32:22', 1399985191002447872, '2022-02-23 14:32:22', 0, 0);
-INSERT INTO `demo_super_query` VALUES (1496372489909899264, '张飞', 54, b'0', '1996-02-11', '08:00:00', '2022-02-23 14:32:58', '7', '备注', 1399985191002447872, '2022-02-23 14:32:58', 1399985191002447872, '2022-02-23 14:32:58', 0, 0);
-INSERT INTO `demo_super_query` VALUES (1496372766427779072, '梁冀', 38, b'1', '1958-02-08', '08:30:00', '2022-02-23 14:34:03', '1', '', 1399985191002447872, '2022-02-23 14:34:03', 1399985191002447872, '2022-02-23 14:34:03', 0, 0);
-INSERT INTO `demo_super_query` VALUES (1496373512871284736, '刘备', 108, b'0', '1993-11-12', '09:30:10', '2022-02-23 14:37:01', '2', '刘羽禅的粑粑', 1399985191002447872, '2022-02-23 14:37:01', 1399985191002447872, '2022-02-23 14:37:01', 0, 0);
 
 -- ----------------------------
 -- Table structure for base_param
@@ -3903,9 +3677,9 @@ CREATE TABLE `base_param`  (
   `internal` bit(1) NOT NULL COMMENT '内置参数',
   `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
   `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
   `version` int(8) NOT NULL COMMENT '版本',
   PRIMARY KEY (`id`) USING BTREE
@@ -3916,158 +3690,182 @@ CREATE TABLE `base_param`  (
 -- ----------------------------
 INSERT INTO `base_param` VALUES (1452842684284891136, '测试', 'test.v1', '123', 1, b'1', b'0', NULL, 1399985191002447872, '2021-10-26 11:41:03', 1399985191002447872, '2021-10-26 11:41:03', 0, 0);
 INSERT INTO `base_param` VALUES (1520668030248361984, '文件服务器地址', 'FileServerUrl', 'http://127.0.0.1:9999', 1, b'1', b'1', '', 1399985191002447872, '2022-05-01 15:34:46', 1399985191002447872, '2022-05-19 12:53:21', 0, 5);
-INSERT INTO `base_param` VALUES (1529281530059161600, 'websocket服务器地址', 'WebsocketServerUrl', 'ws://127.0.0.1:9999', 1, b'1', b'1', '', 1399985191002447872, '2022-05-25 10:01:44', 1399985191002447872, '2022-05-25 10:01:44', 0, 0);
+INSERT INTO `base_param` VALUES (1529281530059161600, 'websocket服务器地址', 'WebsocketServerUrl', 'ws://127.0.0.1:9999', 1, b'1', b'1', '', 1399985191002447872, '2022-05-25 10:01:44', 1399985191002447872, '2023-10-21 22:31:38', 0, 2);
 INSERT INTO `base_param` VALUES (1545765299880448000, '服务器地址', 'ServerUrl', 'http://127.0.0.1:9999', 1, b'1', b'1', '优先级高于配置文件内进行的配置', 1399985191002447872, '2022-07-09 21:42:21', 1414143554414059520, '2023-08-05 16:40:05', 0, 1);
 INSERT INTO `base_param` VALUES (1547511252795912192, '微信jsapi支付回调服务地址', 'JsapiRedirectUrl', 'http://127.0.0.1/api/', 1, b'1', b'1', '用于微信扫码登录使用', 1414143554414059520, '2022-07-14 17:20:09', 1414143554414059520, '2023-08-18 15:49:21', 0, 1);
 
 -- ----------------------------
--- Table structure for iam_role
+-- Table structure for base_province
 -- ----------------------------
-DROP TABLE IF EXISTS `iam_role`;
-CREATE TABLE `iam_role`  (
-  `id` bigint(20) NOT NULL COMMENT '角色ID',
-  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '编码',
-  `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称',
-  `internal` bit(1) NOT NULL COMMENT '是否系统内置',
-  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '说明',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '版本',
-  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '角色' ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `base_province`;
+CREATE TABLE `base_province`  (
+  `code` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '省份编码',
+  `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '省份名称',
+  PRIMARY KEY (`code`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '省份表' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of iam_role
+-- Records of base_province
 -- ----------------------------
-INSERT INTO `iam_role` VALUES (1405414804771971072, 'admin', '管理员', b'1', '管理员', 1, '2021-06-17 14:39:35', 1399985191002447872, '2021-07-18 22:31:02', 6, 0);
-INSERT INTO `iam_role` VALUES (1416730722714144768, 'test', '测试', b'0', '测试角色', 1399985191002447872, '2021-07-18 20:05:01', 1399985191002447872, '2021-07-18 20:16:15', 1, 0);
-INSERT INTO `iam_role` VALUES (1422832797731778562, 'user', '用户', b'0', '用户角色', 0, '2021-08-04 16:12:29', 1399985191002447872, '2021-08-04 16:15:03', 7, 1);
-INSERT INTO `iam_role` VALUES (1428891259564445696, 'manager', '管理者', b'0', 'manager管理者', 1399985191002447872, '2021-08-21 09:26:38', 1399985191002447872, '2021-08-21 09:26:39', 0, 1);
+INSERT INTO `base_province` VALUES ('11', '北京市');
+INSERT INTO `base_province` VALUES ('12', '天津市');
+INSERT INTO `base_province` VALUES ('13', '河北省');
+INSERT INTO `base_province` VALUES ('14', '山西省');
+INSERT INTO `base_province` VALUES ('15', '内蒙古自治区');
+INSERT INTO `base_province` VALUES ('21', '辽宁省');
+INSERT INTO `base_province` VALUES ('22', '吉林省');
+INSERT INTO `base_province` VALUES ('23', '黑龙江省');
+INSERT INTO `base_province` VALUES ('31', '上海市');
+INSERT INTO `base_province` VALUES ('32', '江苏省');
+INSERT INTO `base_province` VALUES ('33', '浙江省');
+INSERT INTO `base_province` VALUES ('34', '安徽省');
+INSERT INTO `base_province` VALUES ('35', '福建省');
+INSERT INTO `base_province` VALUES ('36', '江西省');
+INSERT INTO `base_province` VALUES ('37', '山东省');
+INSERT INTO `base_province` VALUES ('41', '河南省');
+INSERT INTO `base_province` VALUES ('42', '湖北省');
+INSERT INTO `base_province` VALUES ('43', '湖南省');
+INSERT INTO `base_province` VALUES ('44', '广东省');
+INSERT INTO `base_province` VALUES ('45', '广西壮族自治区');
+INSERT INTO `base_province` VALUES ('46', '海南省');
+INSERT INTO `base_province` VALUES ('50', '重庆市');
+INSERT INTO `base_province` VALUES ('51', '四川省');
+INSERT INTO `base_province` VALUES ('52', '贵州省');
+INSERT INTO `base_province` VALUES ('53', '云南省');
+INSERT INTO `base_province` VALUES ('54', '西藏自治区');
+INSERT INTO `base_province` VALUES ('61', '陕西省');
+INSERT INTO `base_province` VALUES ('62', '甘肃省');
+INSERT INTO `base_province` VALUES ('63', '青海省');
+INSERT INTO `base_province` VALUES ('64', '宁夏回族自治区');
+INSERT INTO `base_province` VALUES ('65', '新疆维吾尔自治区');
 
 -- ----------------------------
--- Table structure for iam_client
+-- Table structure for base_query_sql
 -- ----------------------------
-DROP TABLE IF EXISTS `iam_client`;
-CREATE TABLE `iam_client`  (
+DROP TABLE IF EXISTS `base_query_sql`;
+CREATE TABLE `base_query_sql`  (
   `id` bigint(20) NOT NULL COMMENT '主键',
-  `code` varchar(21) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码',
-  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
-  `internal` bit(1) NOT NULL COMMENT '是否系统内置',
-  `enable` bit(1) NOT NULL COMMENT '是否可用',
-  `default_endow` bit(1) NULL DEFAULT NULL COMMENT '新注册的用户是否默认赋予该终端',
-  `login_type_ids` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '关联登录方式\r\n',
-  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述',
+  `database_id` bigint(20) NULL DEFAULT NULL COMMENT '数据源ID',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '名称',
+  `is_list` bit(1) NULL DEFAULT NULL COMMENT '是否集合',
+  `sql` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT 'sql语句',
+  `params` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'SQL查询参数',
+  `fields` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'SQL查询结果字段',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
   `version` int(11) NOT NULL COMMENT '乐观锁',
   `deleted` bit(1) NOT NULL COMMENT '删除标志',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '认证终端' ROW_FORMAT = DYNAMIC;
-
--- ----------------------------
--- Records of iam_client
--- ----------------------------
-INSERT INTO `iam_client` VALUES (1430430071299207168, 'admin', 'pc管理端', b'1', b'1', b'1', '1430430071299207168,1435138582839009280,1430478946919653376,1542091599907115008,1542804450312122368,1543126042909016064', 'pc浏览器', 1399985191002447872, '2021-08-25 15:21:20', 1399985191002447872, '2023-10-19 19:58:31', 5, b'0');
-INSERT INTO `iam_client` VALUES (1430430071299207169, 'h5', 'h5端', b'1', b'1', b'1', '1430430071299207168,1435138582839009280', '手机wap', 1399985191002447872, '2021-08-25 15:21:20', 1399985191002447872, '2023-10-19 19:58:27', 2, b'0');
-INSERT INTO `iam_client` VALUES (1580487061605175296, 'adminv3', 'pc管理端(vue3版)', b'0', b'1', b'1', '1430430071299207168,1430478946919653376,1435138582839009280,1542091599907115008,1542804450312122368,1543126042909016064', 'vue3版本', 1399985191002447872, '2022-10-13 17:14:14', 1399985191002447872, '2023-10-19 19:58:21', 3, b'0');
-INSERT INTO `iam_client` VALUES (1626840094767714304, 'GoView', '可视化平台', b'0', b'1', b'1', '1430430071299207168', '', 1414143554414059520, '2023-02-18 15:04:38', 1399985191002447872, '2023-10-19 19:58:34', 1, b'0');
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'SQL查询语句' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Table structure for demo_data_perm
+-- Records of base_query_sql
 -- ----------------------------
-DROP TABLE IF EXISTS `demo_data_perm`;
-CREATE TABLE `demo_data_perm`  (
-  `id` bigint(20) NOT NULL COMMENT '角色ID',
-  `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称',
-  `creator_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者名称',
-  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '说明',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '版本',
-  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据权限演示' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of demo_data_perm
+-- Table structure for base_street
 -- ----------------------------
-INSERT INTO `demo_data_perm` VALUES (1495969849707220992, '33', 'xxm', '444', 1399985191002447872, '2022-02-22 11:53:01', 1399985191002447872, '2022-02-22 11:53:01', 0, 0);
-INSERT INTO `demo_data_perm` VALUES (1506921683460521984, '测试', '小小明', NULL, 1399985191002447872, '2022-03-24 17:11:41', 1399985191002447872, '2022-03-24 17:11:41', 0, 0);
-INSERT INTO `demo_data_perm` VALUES (1531547191561072640, '测试', '测试', '123', 1435967884114194432, '2022-05-31 16:04:40', 1435967884114194432, '2022-05-31 16:04:40', 0, 0);
+DROP TABLE IF EXISTS `base_street`;
+CREATE TABLE `base_street`  (
+  `code` char(9) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '编码',
+  `name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '街道名称',
+  `area_code` char(6) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '县区编码',
+  PRIMARY KEY (`code`) USING BTREE,
+  INDEX `inx_area_code`(`area_code`) USING BTREE COMMENT '县区'
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '街道表' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Table structure for starter_quartz_job
+-- Records of base_street
 -- ----------------------------
-DROP TABLE IF EXISTS `starter_quartz_job`;
-CREATE TABLE `starter_quartz_job`  (
+
+-- ----------------------------
+-- Table structure for base_village
+-- ----------------------------
+DROP TABLE IF EXISTS `base_village`;
+CREATE TABLE `base_village`  (
+  `code` char(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '编码',
+  `name` varchar(55) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '名称',
+  `street_code` char(9) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '社区/乡镇编码',
+  PRIMARY KEY (`code`) USING BTREE,
+  INDEX `inx_street_code`(`street_code`) USING BTREE COMMENT '所属街道索引'
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '村庄/社区' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of base_village
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for common_sequence_range
+-- ----------------------------
+DROP TABLE IF EXISTS `common_sequence_range`;
+CREATE TABLE `common_sequence_range`  (
   `id` bigint(20) NOT NULL COMMENT '主键',
-  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务名称',
-  `job_class_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务类名',
-  `cron` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'cron表达式',
-  `parameter` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '参数',
-  `state` int(4) NULL DEFAULT NULL COMMENT '状态',
-  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
+  `range_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '区间key',
+  `range_value` bigint(20) NOT NULL COMMENT '区间开始值',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
   `version` int(11) NOT NULL COMMENT '版本',
   `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '定时任务' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '序列生成器队列区间管理' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of starter_quartz_job
+-- Records of common_sequence_range
 -- ----------------------------
-INSERT INTO `starter_quartz_job` VALUES (1456579473573867520, '测试任务', 'cn.bootx.starter.quartz.task.TestTask', '50 0 * * * ? *', '{\"aaa\":\"5255\"}', 0, '测试任务', 1399985191002447872, '2021-11-05 19:09:43', 1399985191002447872, '2022-06-22 00:37:48', 25, 0);
-INSERT INTO `starter_quartz_job` VALUES (1546857070483939328, '支付单超时检测', 'cn.bootx.payment.task.PayExpiredTimeTask', '0/5 * * * * ? *', NULL, 1, '检测超时的支付单, 超时后发送超时事件', 1399985191002447872, '2022-07-12 22:00:39', 1399985191002447872, '2022-07-12 22:00:45', 1, 0);
+INSERT INTO `common_sequence_range` VALUES (1470679520373862400, 'Sequence:cs', 2006, 0, '2021-12-14 16:58:16', 0, '2021-12-14 16:58:16', 6, 0);
+INSERT INTO `common_sequence_range` VALUES (1470679955230908416, 'cs', 2020, 0, '2021-12-14 17:00:00', 0, '2021-12-14 17:00:00', 13, 0);
 
 -- ----------------------------
--- Table structure for starter_audit_data_version
+-- Table structure for demo_data_encrypt
 -- ----------------------------
-DROP TABLE IF EXISTS `starter_audit_data_version`;
-CREATE TABLE `starter_audit_data_version`  (
+DROP TABLE IF EXISTS `demo_data_encrypt`;
+CREATE TABLE `demo_data_encrypt`  (
   `id` bigint(20) NOT NULL,
-  `table_name` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据表名称',
-  `data_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '数据名称',
-  `data_id` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据主键',
-  `data_content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '数据内容',
-  `change_content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '数据更新内容',
-  `version` int(10) NOT NULL COMMENT '版本',
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
+  `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '内容',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '版本',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据版本日志' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据加密解密演示' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of starter_audit_data_version
+-- Records of demo_data_encrypt
 -- ----------------------------
-INSERT INTO `starter_audit_data_version` VALUES (1480550993828446208, '', 'client', '1', '{\"dataName\":\"client\",\"dataId\":\"1\",\"dataContent\":{\"id\":\"1\",\"creator\":null,\"createTime\":\"2022-01-10 22:43:58\",\"lastModifier\":null,\"lastModifiedTime\":null,\"deleted\":false,\"version\":0,\"code\":null,\"name\":null,\"timeout\":null,\"captcha\":false,\"enable\":false,\"description\":null}}', NULL, 1, 0, '2022-01-10 22:43:59');
-INSERT INTO `starter_audit_data_version` VALUES (1480551021779288064, '', 'client', '1', '{\"dataName\":\"client\",\"dataId\":\"1\",\"dataContent\":{\"id\":\"1\",\"creator\":null,\"createTime\":\"2022-01-10 22:44:05\",\"lastModifier\":null,\"lastModifiedTime\":null,\"deleted\":false,\"version\":0,\"code\":null,\"name\":null,\"timeout\":null,\"captcha\":false,\"enable\":false,\"description\":null}}', NULL, 2, 0, '2022-01-10 22:44:06');
+INSERT INTO `demo_data_encrypt` VALUES (1506922411881103360, '测试加密效果', 'eI2RIrRLG+QUna3jMK+kejyJTTKdPFhaYWP4EhktJ2lkGTEsIxZesetNTzcqUA934ZN/OUdw4aj4t5Q+u1sH7A==', 1399985191002447872, '2022-03-24 17:14:35', 1399985191002447872, '2022-03-24 17:23:41', 1, 0);
+INSERT INTO `demo_data_encrypt` VALUES (1506943412354408448, '测试下', 'Dgv5OSNiXuknceoZzeOUOQ==', 1399985191002447872, '2022-03-24 17:14:35', 1399985191002447872, '2022-03-24 17:23:41', 1, 0);
 
 -- ----------------------------
--- Table structure for iam_data_scope_dept
+-- Table structure for demo_data_perm
 -- ----------------------------
-DROP TABLE IF EXISTS `iam_data_scope_dept`;
-CREATE TABLE `iam_data_scope_dept`  (
-  `id` bigint(20) NOT NULL,
-  `data_scope_id` bigint(20) NOT NULL COMMENT '数据范围id',
-  `dept_id` bigint(20) NOT NULL COMMENT '部门id',
+DROP TABLE IF EXISTS `demo_data_perm`;
+CREATE TABLE `demo_data_perm`  (
+  `id` bigint(20) NOT NULL COMMENT '角色ID',
+  `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称',
+  `creator_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者名称',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '说明',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '版本',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数据范围部门关联配置' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据权限演示' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of iam_data_scope_dept
+-- Records of demo_data_perm
 -- ----------------------------
-INSERT INTO `iam_data_scope_dept` VALUES (1478742690014101504, 1474717160671485952, 1477978464559484928);
-INSERT INTO `iam_data_scope_dept` VALUES (1478742920071675904, 1474717160671485952, 1477977592291053568);
+INSERT INTO `demo_data_perm` VALUES (1495969849707220992, '33', 'xxm', '444', 1399985191002447872, '2022-02-22 11:53:01', 1399985191002447872, '2022-02-22 11:53:01', 0, 0);
+INSERT INTO `demo_data_perm` VALUES (1506921683460521984, '测试', '小小明', NULL, 1399985191002447872, '2022-03-24 17:11:41', 1399985191002447872, '2022-03-24 17:11:41', 0, 0);
+INSERT INTO `demo_data_perm` VALUES (1531547191561072640, '测试', '测试', '123', 1435967884114194432, '2022-05-31 16:04:40', 1435967884114194432, '2022-05-31 16:04:40', 0, 0);
 
 -- ----------------------------
 -- Table structure for demo_data_sensitive
@@ -4083,9 +3881,9 @@ CREATE TABLE `demo_data_sensitive`  (
   `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '电子邮件',
   `other` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '其他',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
   `version` int(11) NOT NULL COMMENT '版本',
   `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
   PRIMARY KEY (`id`) USING BTREE
@@ -4098,737 +3896,822 @@ INSERT INTO `demo_data_sensitive` VALUES (1506942377435037696, '刘向东', '123
 INSERT INTO `demo_data_sensitive` VALUES (1506943326094352384, '成是非', '99885511', '101278112512107721', '18855446622', '汉S123456', 'chengshifei@foxmail.com', '这个就是就是就是就是就是就是这样的', 1399985191002447872, '2022-03-24 18:33:55', 1399985191002447872, '2022-03-24 18:35:00', 1, 0);
 
 -- ----------------------------
--- Table structure for demo_data_encrypt
+-- Table structure for demo_super_query
 -- ----------------------------
-DROP TABLE IF EXISTS `demo_data_encrypt`;
-CREATE TABLE `demo_data_encrypt`  (
-  `id` bigint(20) NOT NULL,
-  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
-  `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '内容',
+DROP TABLE IF EXISTS `demo_super_query`;
+CREATE TABLE `demo_super_query`  (
+  `id` bigint(20) NOT NULL COMMENT '角色ID',
+  `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称',
+  `age` int(5) NULL DEFAULT NULL COMMENT '年龄',
+  `vip` bit(1) NULL DEFAULT NULL COMMENT '是否vip',
+  `birthday` date NULL DEFAULT NULL COMMENT '生日',
+  `work_time` time NULL DEFAULT NULL COMMENT '上班时间',
+  `registration_time` datetime NULL DEFAULT NULL COMMENT '注册时间',
+  `political` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '政治面貌',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
   `version` int(11) NOT NULL COMMENT '版本',
   `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据加密解密演示' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '超级查询演示' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of demo_data_encrypt
+-- Records of demo_super_query
 -- ----------------------------
-INSERT INTO `demo_data_encrypt` VALUES (1506922411881103360, '测试加密效果', 'eI2RIrRLG+QUna3jMK+kejyJTTKdPFhaYWP4EhktJ2lkGTEsIxZesetNTzcqUA934ZN/OUdw4aj4t5Q+u1sH7A==', 1399985191002447872, '2022-03-24 17:14:35', 1399985191002447872, '2022-03-24 17:23:41', 1, 0);
-INSERT INTO `demo_data_encrypt` VALUES (1506943412354408448, '测试下', 'Dgv5OSNiXuknceoZzeOUOQ==', 1399985191002447872, '2022-03-24 17:14:35', 1399985191002447872, '2022-03-24 17:23:41', 1, 0);
+INSERT INTO `demo_super_query` VALUES (1496046463434567680, '小小明', 18, b'1', '1998-01-23', '08:30:00', '2022-02-22 16:57:27', '13', '这是备注', 1399985191002447872, '2022-02-22 16:57:27', 1399985191002447872, '2022-02-22 17:03:34', 1, 0);
+INSERT INTO `demo_super_query` VALUES (1496372341213433856, '关羽', 52, b'1', '2000-02-23', '14:31:36', '2022-02-23 14:32:22', '1', '', 1399985191002447872, '2022-02-23 14:32:22', 1399985191002447872, '2022-02-23 14:32:22', 0, 0);
+INSERT INTO `demo_super_query` VALUES (1496372489909899264, '张飞', 54, b'0', '1996-02-11', '08:00:00', '2022-02-23 14:32:58', '7', '备注', 1399985191002447872, '2022-02-23 14:32:58', 1399985191002447872, '2022-02-23 14:32:58', 0, 0);
+INSERT INTO `demo_super_query` VALUES (1496372766427779072, '梁冀', 38, b'1', '1958-02-08', '08:30:00', '2022-02-23 14:34:03', '1', '', 1399985191002447872, '2022-02-23 14:34:03', 1399985191002447872, '2022-02-23 14:34:03', 0, 0);
+INSERT INTO `demo_super_query` VALUES (1496373512871284736, '刘备', 108, b'0', '1993-11-12', '09:30:10', '2022-02-23 14:37:01', '2', '刘羽禅的粑粑', 1399985191002447872, '2022-02-23 14:37:01', 1399985191002447872, '2022-02-23 14:37:01', 0, 0);
 
 -- ----------------------------
--- Table structure for common_sequence_range
+-- Table structure for iam_client
 -- ----------------------------
-DROP TABLE IF EXISTS `common_sequence_range`;
-CREATE TABLE `common_sequence_range`  (
+DROP TABLE IF EXISTS `iam_client`;
+CREATE TABLE `iam_client`  (
   `id` bigint(20) NOT NULL COMMENT '主键',
-  `range_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '区间key',
-  `range_value` bigint(20) NOT NULL COMMENT '区间开始值',
+  `code` varchar(21) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码',
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
+  `internal` bit(1) NOT NULL COMMENT '是否系统内置',
+  `enable` bit(1) NOT NULL COMMENT '是否可用',
+  `default_endow` bit(1) NULL DEFAULT NULL COMMENT '新注册的用户是否默认赋予该终端',
+  `login_type_ids` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '关联登录方式\r\n',
+  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '乐观锁',
+  `deleted` bit(1) NOT NULL COMMENT '删除标志',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '认证终端' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of iam_client
+-- ----------------------------
+INSERT INTO `iam_client` VALUES (1430430071299207168, 'admin', 'pc管理端', b'1', b'1', b'1', '1430430071299207168,1435138582839009280,1430478946919653376,1542091599907115008,1542804450312122368,1543126042909016064', 'pc浏览器', 1399985191002447872, '2021-08-25 15:21:20', 1399985191002447872, '2023-10-19 19:58:31', 5, b'0');
+INSERT INTO `iam_client` VALUES (1430430071299207169, 'h5', 'h5端', b'1', b'1', b'1', '1430430071299207168,1435138582839009280', '手机wap', 1399985191002447872, '2021-08-25 15:21:20', 1399985191002447872, '2023-10-19 19:58:27', 2, b'0');
+INSERT INTO `iam_client` VALUES (1580487061605175296, 'adminv3', 'pc管理端(vue3版)', b'0', b'1', b'1', '1430430071299207168,1430478946919653376,1435138582839009280,1542091599907115008,1542804450312122368,1543126042909016064', 'vue3版本', 1399985191002447872, '2022-10-13 17:14:14', 1399985191002447872, '2023-10-19 19:58:21', 3, b'0');
+INSERT INTO `iam_client` VALUES (1626840094767714304, 'GoView', '可视化平台', b'0', b'1', b'1', '1430430071299207168', '', 1414143554414059520, '2023-02-18 15:04:38', 1399985191002447872, '2023-10-19 19:58:34', 1, b'0');
+
+-- ----------------------------
+-- Table structure for iam_data_role
+-- ----------------------------
+DROP TABLE IF EXISTS `iam_data_role`;
+CREATE TABLE `iam_data_role`  (
+  `id` bigint(20) NOT NULL COMMENT '角色ID',
+  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '编码',
+  `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称',
+  `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '类型',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '说明',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
   `version` int(11) NOT NULL COMMENT '版本',
   `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '序列生成器队列区间管理' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据范围权限' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of common_sequence_range
+-- Records of iam_data_role
 -- ----------------------------
-INSERT INTO `common_sequence_range` VALUES (1470679520373862400, 'Sequence:cs', 2006, 0, '2021-12-14 16:58:16', 0, '2021-12-14 16:58:16', 6, 0);
-INSERT INTO `common_sequence_range` VALUES (1470679955230908416, 'cs', 2020, 0, '2021-12-14 17:00:00', 0, '2021-12-14 17:00:00', 13, 0);
+INSERT INTO `iam_data_role` VALUES (1474706893178871808, 'self', '自身数据', 'self', '只能查看自身范围的数据', 1399985191002447872, '2021-12-25 19:41:37', 1399985191002447872, '2021-12-25 19:41:37', 0, 0);
+INSERT INTO `iam_data_role` VALUES (1474717084985270272, 'user', '用户(测试)', 'user', '用户数据权限', 1399985191002447872, '2021-12-25 20:22:07', 1399985191002447872, '2023-11-29 10:34:24', 1, 0);
+INSERT INTO `iam_data_role` VALUES (1474717160671485952, 'dept', '部门(测试)', 'dept', '', 1399985191002447872, '2021-12-25 20:22:25', 1399985191002447872, '2023-11-29 10:34:04', 1, 0);
+INSERT INTO `iam_data_role` VALUES (1474717276908232704, 'userAndDept', '用户和部门(测试)', 'dept_and_user', '', 1399985191002447872, '2021-12-25 20:22:52', 1399985191002447872, '2023-11-29 10:34:13', 1, 0);
+INSERT INTO `iam_data_role` VALUES (1474717344562356224, 'all', '全部数据', 'all', '', 1399985191002447872, '2021-12-25 20:23:09', 1399985191002447872, '2023-11-29 10:28:40', 1, 0);
+INSERT INTO `iam_data_role` VALUES (1477990268903804928, 'self_dept', '所在部门', 'self_dept', '', 1399985191002447872, '2022-01-03 21:08:34', 1399985191002447872, '2023-11-29 10:33:38', 5, 0);
+INSERT INTO `iam_data_role` VALUES (1477990439800721408, 'self_dept_and_sub', '当前加下级部门', 'self_dept_sub', '', 1399985191002447872, '2022-01-03 21:09:15', 1399985191002447872, '2023-11-29 13:55:12', 9, 0);
 
 -- ----------------------------
--- Table structure for base_dynamic_form
+-- Table structure for iam_data_role_dept
 -- ----------------------------
-DROP TABLE IF EXISTS `base_dynamic_form`;
-CREATE TABLE `base_dynamic_form`  (
+DROP TABLE IF EXISTS `iam_data_role_dept`;
+CREATE TABLE `iam_data_role_dept`  (
   `id` bigint(20) NOT NULL,
-  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单名称',
-  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表单键名',
-  `value` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '表单内容',
-  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
-  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
-  `version` int(8) NOT NULL COMMENT '版本',
+  `role_id` bigint(20) NOT NULL COMMENT '数据角色id',
+  `dept_id` bigint(20) NOT NULL COMMENT '部门id',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '动态表单' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数据范围部门关联配置' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of base_dynamic_form
+-- Records of iam_data_role_dept
 -- ----------------------------
-INSERT INTO `base_dynamic_form` VALUES (1552656018381422592, '测试表单', 'test', '{\"list\":[{\"type\":\"input\",\"label\":\"输入框\",\"options\":{\"type\":\"text\",\"width\":\"100%\",\"defaultValue\":\"\",\"placeholder\":\"请输入\",\"clearable\":true,\"maxLength\":null,\"addonBefore\":\"\",\"addonAfter\":\"\",\"hidden\":false,\"disabled\":false},\"model\":\"aa\",\"key\":\"input_1659059676533\",\"help\":\"测试\",\"rules\":[{\"required\":true,\"message\":\"必填项\"}]},{\"type\":\"textarea\",\"label\":\"文本框\",\"options\":{\"width\":\"100%\",\"minRows\":4,\"maxRows\":6,\"maxLength\":null,\"defaultValue\":\"\",\"clearable\":true,\"hidden\":false,\"disabled\":false,\"placeholder\":\"请输入\"},\"model\":\"bb\",\"key\":\"textarea_1659020414125\",\"help\":\"\",\"rules\":[{\"required\":true,\"message\":\"必填项\"}]},{\"type\":\"slider\",\"label\":\"滑动输入条\",\"options\":{\"width\":\"100%\",\"defaultValue\":34,\"disabled\":false,\"hidden\":false,\"min\":0,\"max\":100,\"step\":1,\"showInput\":false},\"model\":\"cc\",\"key\":\"slider_1659020433092\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]}],\"config\":{\"layout\":\"horizontal\",\"labelCol\":{\"xs\":4,\"sm\":4,\"md\":4,\"lg\":4,\"xl\":4,\"xxl\":4},\"labelWidth\":100,\"labelLayout\":\"flex\",\"wrapperCol\":{\"xs\":18,\"sm\":18,\"md\":18,\"lg\":18,\"xl\":18,\"xxl\":18},\"hideRequiredMark\":false,\"customStyle\":\"\"}}', '测试动态表单', 1399985191002447872, '2022-07-28 22:03:36', 1399985191002447872, '2022-07-29 09:55:22', 0, 7);
-INSERT INTO `base_dynamic_form` VALUES (1552656018381422593, '测试表单1', 'test1', '{\"list\":[{\"type\":\"input\",\"label\":\"申请人\",\"options\":{\"type\":\"text\",\"width\":\"100%\",\"defaultValue\":\"\",\"placeholder\":\"请输入\",\"clearable\":true,\"maxLength\":null,\"addonBefore\":\"\",\"addonAfter\":\"\",\"hidden\":false,\"disabled\":false},\"model\":\"apply_by\",\"key\":\"input_1659059676533\",\"help\":\"测试\",\"rules\":[{\"required\":true,\"message\":\"必填项\"}]},{\"type\":\"input\",\"label\":\"请假天数\",\"options\":{\"type\":\"text\",\"width\":\"100%\",\"defaultValue\":\"\",\"placeholder\":\"请输入\",\"clearable\":false,\"maxLength\":null,\"addonBefore\":\"\",\"addonAfter\":\"\",\"hidden\":false,\"disabled\":false},\"model\":\"leave_days\",\"key\":\"input_1662106166142\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]},{\"type\":\"textarea\",\"label\":\"备注\",\"options\":{\"width\":\"100%\",\"minRows\":4,\"maxRows\":6,\"maxLength\":null,\"defaultValue\":\"\",\"clearable\":true,\"hidden\":false,\"disabled\":false,\"placeholder\":\"请输入\"},\"model\":\"remark\",\"key\":\"textarea_1659020414125\",\"help\":\"\",\"rules\":[{\"required\":true,\"message\":\"必填项\"}]},{\"type\":\"switch\",\"label\":\"开关\",\"options\":{\"defaultValue\":false,\"hidden\":false,\"disabled\":false},\"model\":\"switch_1662108221389\",\"key\":\"switch_1662108221389\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]},{\"type\":\"slider\",\"label\":\"滑动输入条\",\"options\":{\"width\":\"100%\",\"defaultValue\":34,\"disabled\":false,\"hidden\":false,\"min\":0,\"max\":100,\"step\":1,\"showInput\":false},\"model\":\"cc\",\"key\":\"slider_1659020433092\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]},{\"type\":\"table\",\"label\":\"表格布局\",\"trs\":[{\"tds\":[{\"colspan\":1,\"rowspan\":1,\"list\":[]},{\"colspan\":1,\"rowspan\":1,\"list\":[]}]},{\"tds\":[{\"colspan\":1,\"rowspan\":1,\"list\":[{\"type\":\"editor\",\"label\":\"富文本\",\"icon\":\"icon-LC_icon_edit_line_1\",\"list\":[],\"options\":{\"height\":300,\"placeholder\":\"请输入\",\"defaultValue\":\"\",\"chinesization\":true,\"hidden\":false,\"disabled\":false,\"showLabel\":false,\"width\":\"100%\"},\"model\":\"editor_1662106288134\",\"key\":\"editor_1662106288134\",\"help\":\"\",\"rules\":[{\"required\":false,\"message\":\"必填项\"}]}]},{\"colspan\":1,\"rowspan\":1,\"list\":[]}]}],\"options\":{\"width\":\"100%\",\"bordered\":true,\"bright\":false,\"small\":true,\"customStyle\":\"\"},\"key\":\"table_1662106283652\"}],\"config\":{\"layout\":\"vertical\",\"labelCol\":{\"xs\":6,\"sm\":6,\"md\":6,\"lg\":6,\"xl\":6,\"xxl\":6},\"labelWidth\":100,\"labelLayout\":\"Grid\",\"wrapperCol\":{\"xs\":18,\"sm\":18,\"md\":18,\"lg\":18,\"xl\":18,\"xxl\":18},\"hideRequiredMark\":false,\"customStyle\":\"\"}}', '测试动态表单', 1399985191002447872, '2022-07-28 22:03:36', 1414143554414059520, '2022-09-02 16:44:01', 0, 12);
 
 -- ----------------------------
--- Table structure for notice_message_template
+-- Table structure for iam_data_role_user
 -- ----------------------------
-DROP TABLE IF EXISTS `notice_message_template`;
-CREATE TABLE `notice_message_template`  (
+DROP TABLE IF EXISTS `iam_data_role_user`;
+CREATE TABLE `iam_data_role_user`  (
   `id` bigint(20) NOT NULL,
-  `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码',
-  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
-  `data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '模板数据',
-  `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板类型',
-  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '版本',
-  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
+  `role_id` bigint(20) NOT NULL COMMENT '数据角色id',
+  `user_id` bigint(20) NOT NULL COMMENT '用户id',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '消息模板' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数据范围用户关联配置' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of notice_message_template
+-- Records of iam_data_role_user
 -- ----------------------------
-INSERT INTO `notice_message_template` VALUES (1424936204932169730, 'cs', '测试', 'hello ${msg}6666666666666666666666666666', '1', '测试模板', 0, '2021-08-10 11:30:40', 0, '2021-08-10 11:30:40', 0, 0);
 
 -- ----------------------------
--- Table structure for iam_user_info
+-- Table structure for iam_dept
 -- ----------------------------
-DROP TABLE IF EXISTS `iam_user_info`;
-CREATE TABLE `iam_user_info`  (
-  `id` bigint(20) NOT NULL,
-  `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名称',
-  `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '账号',
-  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码',
-  `phone` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '手机号',
-  `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱',
-  `client_ids` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '关联终端ds',
-  `administrator` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否超级管理员',
-  `status` varchar(55) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '账号状态',
+DROP TABLE IF EXISTS `iam_dept`;
+CREATE TABLE `iam_dept`  (
+  `id` bigint(20) NOT NULL COMMENT 'ID',
+  `parent_id` bigint(20) NULL DEFAULT NULL COMMENT '父机构ID',
+  `dept_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '机构/部门名称',
+  `sort_no` int(11) NOT NULL DEFAULT 0 COMMENT '排序',
+  `org_category` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '1' COMMENT '机构类别 1公司 2部门 3岗位',
+  `org_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '机构编码',
+  `mobile` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手机号',
+  `fax` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '传真',
+  `address` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地址',
+  `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
   `version` int(11) NOT NULL COMMENT '版本',
   `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户信息' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门组织机构表' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of iam_user_info
+-- Records of iam_dept
 -- ----------------------------
-INSERT INTO `iam_user_info` VALUES (1399985191002447872, 'Bootx', 'bootx', 'f52020dca765fd3943ed40a615dc2c5c', '13333333333', 'bootx@bootx.com', '1430430071299207168,1430430071299207169,1626840094767714304,1580487061605175296', b'1', 'norm', 1, '2021-06-02 15:04:15', 1399985191002447872, '2023-10-19 14:14:46', 58, 0);
+INSERT INTO `iam_dept` VALUES (1259382878857957377, NULL, 'Bootx Platform总公司', 0, '1', '1', '', NULL, '济南市高新区齐鲁软件园', NULL, -1, '2020-05-10 15:20:51', -1, '2020-05-10 17:52:15', 4, 0);
+INSERT INTO `iam_dept` VALUES (1477976804995026944, NULL, 'Bootx Cloud公司', 0, '1', '1', '', NULL, '济南市高新区汉峪金谷', '', 1399985191002447872, '2022-01-03 20:15:04', 1399985191002447872, '2022-01-03 20:15:05', 0, 1);
+INSERT INTO `iam_dept` VALUES (1477977184768282624, NULL, 'Bootx Cloud公司', 0, '1', '1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:16:35', 1399985191002447872, '2022-01-03 20:16:35', 0, 1);
+INSERT INTO `iam_dept` VALUES (1477977301365739520, NULL, 'Bootx Cloud总公司', 0, '1', '2', '', NULL, '济南市高新区汉峪金谷', '', 1399985191002447872, '2022-01-03 20:17:03', 1399985191002447872, '2022-01-03 20:17:03', 1, 0);
+INSERT INTO `iam_dept` VALUES (1477977592291053568, 1259382878857957377, 'bp济南分公司', 0, '1', '1_1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:18:12', 1399985191002447872, '2022-01-03 20:18:12', 1, 0);
+INSERT INTO `iam_dept` VALUES (1477977690928500736, 1259382878857957377, '历城分公司', 0, '1', '1_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:18:36', 1399985191002447872, '2022-01-03 20:18:36', 0, 1);
+INSERT INTO `iam_dept` VALUES (1477977827897692160, 1259382878857957377, 'bp潍坊分公司', 0, '1', '1_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:19:08', 1399985191002447872, '2022-01-03 20:19:08', 0, 0);
+INSERT INTO `iam_dept` VALUES (1477977880947249152, 1477977301365739520, 'bc菏泽分公司', 0, '1', '2_1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:19:21', 1399985191002447872, '2022-01-03 20:19:21', 0, 0);
+INSERT INTO `iam_dept` VALUES (1477977930175795200, 1477977301365739520, 'bc日照分公司', 0, '1', '2_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:19:33', 1399985191002447872, '2022-01-03 20:19:33', 0, 0);
+INSERT INTO `iam_dept` VALUES (1477978464559484928, 1477977592291053568, '历城办事部', 0, '2', '1_1_1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:21:40', 1399985191002447872, '2022-01-03 20:21:40', 1, 0);
+INSERT INTO `iam_dept` VALUES (1477978512177418240, 1477977592291053568, '历下办事部', 0, '2', '1_1_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:21:51', 1399985191002447872, '2022-01-03 20:21:52', 0, 0);
+INSERT INTO `iam_dept` VALUES (1477978610865197056, 1477977592291053568, '高新办事部', 0, '2', '1_1_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:22:15', 1399985191002447872, '2022-01-03 20:22:15', 0, 0);
+INSERT INTO `iam_dept` VALUES (1477978810526650368, 1477977827897692160, '奎文办事部', 0, '2', '1_2_1', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:23:03', 1399985191002447872, '2022-01-03 20:23:03', 0, 0);
+INSERT INTO `iam_dept` VALUES (1477978883247493120, 1477977827897692160, '潍城办事部', 0, '2', '1_2_2', '', NULL, '', '', 1399985191002447872, '2022-01-03 20:23:20', 1399985191002447872, '2022-01-03 20:23:20', 0, 0);
 
 -- ----------------------------
--- Table structure for iam_user_expand_info
+-- Table structure for iam_login_security_config
 -- ----------------------------
-DROP TABLE IF EXISTS `iam_user_expand_info`;
-CREATE TABLE `iam_user_expand_info`  (
+DROP TABLE IF EXISTS `iam_login_security_config`;
+CREATE TABLE `iam_login_security_config`  (
   `id` bigint(20) NOT NULL COMMENT '主键',
-  `sex` int(4) NULL DEFAULT NULL COMMENT '性别',
-  `birthday` date NULL DEFAULT NULL COMMENT '生日',
-  `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '头像',
-  `last_login_time` datetime(0) NULL DEFAULT NULL COMMENT '上次登录时间',
-  `current_login_time` datetime(0) NULL DEFAULT NULL COMMENT '本次登录时间',
-  `initial_password` bit(1) NOT NULL COMMENT '是否初始密码',
-  `last_change_password_time` datetime(0) NULL DEFAULT NULL COMMENT '上次修改密码时间',
-  `register_time` datetime(0) NOT NULL COMMENT '注册时间',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '乐观锁',
-  `deleted` bit(1) NOT NULL DEFAULT 0 COMMENT '删除标志',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户扩展信息' ROW_FORMAT = DYNAMIC;
-
--- ----------------------------
--- Records of iam_user_expand_info
--- ----------------------------
-INSERT INTO `iam_user_expand_info` VALUES (1399985191002447872, 1, '1996-12-01', NULL, '2023-10-19 19:21:46', '2023-10-20 09:31:26', b'0', '2023-10-19 14:14:08', '2021-08-01 18:52:37', 1, '2021-06-02 15:04:15', 1, '2023-10-20 09:31:26', 382, b'0');
-
--- ----------------------------
--- Table structure for iam_password_security_config
--- ----------------------------
-DROP TABLE IF EXISTS `iam_password_security_config`;
-CREATE TABLE `iam_password_security_config`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `max_pwd_error_count` int(11) NULL DEFAULT NULL COMMENT '最大密码错误数',
-  `error_lock_time` int(11) NULL DEFAULT NULL COMMENT '密码错误锁定时间(分钟)',
-  `require_change_pwd` bit(1) NULL DEFAULT NULL COMMENT '强制修改初始密码',
-  `update_frequency` int(11) NULL DEFAULT NULL COMMENT '更新频率',
-  `expire_remind` int(11) NULL DEFAULT NULL COMMENT '到期提醒(天数)',
-  `same_as_login_name` bit(1) NULL DEFAULT NULL COMMENT '与登录名相同',
-  `recent_password` int(11) NULL DEFAULT NULL COMMENT '不能与近期多少次密码相同',
+  `client_id` bigint(20) NULL DEFAULT NULL COMMENT '关联终端ID',
+  `require_login_change_pwd` bit(1) NULL DEFAULT NULL COMMENT '修改密码是否需要重新登录',
+  `captcha_enable` bit(1) NULL DEFAULT NULL COMMENT '默认启用验证码',
+  `max_captcha_error_count` int(11) NULL DEFAULT NULL COMMENT '出现验证码的错误次数',
+  `allow_multi_login` bit(1) NULL DEFAULT NULL COMMENT '同端是否允许同时登录',
+  `allow_multi_terminal_login` bit(1) NULL DEFAULT NULL COMMENT '多终端是否允许同时登录',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
   `version` int(11) NOT NULL COMMENT '乐观锁',
   `deleted` bit(1) NOT NULL COMMENT '删除标志',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '密码安全策略' ROW_FORMAT = DYNAMIC;
-
--- ----------------------------
--- Records of iam_password_security_config
--- ----------------------------
-INSERT INTO `iam_password_security_config` VALUES (1714844168393515008, 5, 10, b'1', 90, 14, b'0', 5, 1399985191002447872, '2023-10-19 11:21:25', 1399985191002447872, '2023-10-19 11:21:25', 0, b'0');
-
--- ----------------------------
--- Table structure for starter_wx_template
--- ----------------------------
-DROP TABLE IF EXISTS `starter_wx_template`;
-CREATE TABLE `starter_wx_template`  (
-  `id` bigint(20) NOT NULL,
-  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
-  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '编码',
-  `enable` bit(1) NOT NULL COMMENT '是否启用',
-  `template_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '模板ID',
-  `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板标题',
-  `primary_industry` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板所属行业的一级行业',
-  `deputy_industry` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板所属行业的二级行业',
-  `content` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板内容',
-  `example` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '示例',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '版本',
-  PRIMARY KEY (`id`) USING BTREE,
-  UNIQUE INDEX `inx_`(`template_id`) USING BTREE COMMENT '模板id'
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信消息模板' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '登录安全策略' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of starter_wx_template
+-- Records of iam_login_security_config
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for starter_wx_menu
+-- Table structure for iam_login_type
 -- ----------------------------
-DROP TABLE IF EXISTS `starter_wx_menu`;
-CREATE TABLE `starter_wx_menu`  (
+DROP TABLE IF EXISTS `iam_login_type`;
+CREATE TABLE `iam_login_type`  (
   `id` bigint(20) NOT NULL COMMENT '主键',
-  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '名称',
-  `menu_info` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '菜单信息',
-  `remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
-  `publish` bit(1) NOT NULL COMMENT '是否发布',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
-  `version` int(11) NOT NULL COMMENT '版本',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '微信自定义菜单' ROW_FORMAT = DYNAMIC;
-
--- ----------------------------
--- Records of starter_wx_menu
--- ----------------------------
-
--- ----------------------------
--- Table structure for starter_wx_fans
--- ----------------------------
-DROP TABLE IF EXISTS `starter_wx_fans`;
-CREATE TABLE `starter_wx_fans`  (
-  `id` bigint(20) NOT NULL,
-  `openid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '关联OpenId',
-  `subscribe_status` bit(1) NULL DEFAULT NULL COMMENT '订阅状态',
-  `subscribe_time` datetime(0) NULL DEFAULT NULL COMMENT '订阅时间',
-  `nickname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称',
-  `sex` varchar(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '性别',
-  `language` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '语言',
-  `country` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '国家',
-  `province` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '省份',
-  `city` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '城市',
-  `avatar_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像地址',
-  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信公众号粉丝' ROW_FORMAT = DYNAMIC;
-
--- ----------------------------
--- Records of starter_wx_fans
--- ----------------------------
-
--- ----------------------------
--- Table structure for starter_wecom_robot_config
--- ----------------------------
-DROP TABLE IF EXISTS `starter_wecom_robot_config`;
-CREATE TABLE `starter_wecom_robot_config`  (
-  `id` bigint(20) NOT NULL,
-  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
-  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编号',
-  `webhook_key` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'webhook地址的key值',
-  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(6) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '版本',
-  `deleted` bit(1) NOT NULL COMMENT '0:未删除。1:已删除',
+  `code` varchar(21) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码',
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
+  `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '类型',
+  `internal` bit(1) NOT NULL COMMENT '是否系统内置',
+  `timeout` bigint(11) NULL DEFAULT NULL COMMENT '在线时长(秒)',
+  `captcha_type` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '验证码类型',
+  `captcha` bit(1) NOT NULL COMMENT '启用验证码',
+  `enable` bit(1) NOT NULL COMMENT '是否可用',
+  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '乐观锁',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '删除标志',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '企业微信机器人配置' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '登录方式' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of starter_wecom_robot_config
+-- Records of iam_login_type
 -- ----------------------------
+INSERT INTO `iam_login_type` VALUES (1430430071299207168, 'password', '账号密码登陆', 'password', b'1', 3600, '-1', b'0', b'1', NULL, 1399985191002447872, '2021-08-25 15:21:20', 1399985191002447872, '2022-11-03 22:24:53', 20, b'0');
+INSERT INTO `iam_login_type` VALUES (1430478946919653376, 'miniApp', '微信小程序', 'openId', b'0', 99999, '0', b'0', b'1', NULL, 1399985191002447872, '2021-08-25 18:35:33', 1399985191002447872, '2022-07-16 12:32:26', 3, b'0');
+INSERT INTO `iam_login_type` VALUES (1435138582839009280, 'phone', '手机短信登录', 'openId', b'0', 3600, '0', b'0', b'1', NULL, 1399985191002447872, '2021-09-07 15:11:16', 1399985191002447872, '2022-07-16 12:32:19', 5, b'0');
+INSERT INTO `iam_login_type` VALUES (1542091599907115008, 'dingTalk', '钉钉', 'openId', b'0', 5, '-1', b'0', b'1', '', 1399985191002447872, '2022-06-29 18:24:23', 1399985191002447872, '2022-07-02 14:55:01', 5, b'0');
+INSERT INTO `iam_login_type` VALUES (1542804450312122368, 'weCom', '企业微信', 'openId', b'0', 5, '-1', b'0', b'1', '', 1399985191002447872, '2022-07-01 17:37:00', 1399985191002447872, '2022-07-01 17:37:00', 0, b'0');
+INSERT INTO `iam_login_type` VALUES (1543126042909016064, 'weChat', '微信登录', 'openId', b'0', 5, '-1', b'0', b'1', '', 1399985191002447872, '2022-07-02 14:54:53', 0, '2022-10-12 22:15:05', 2, b'0');
+INSERT INTO `iam_login_type` VALUES (1626845524617203712, 'passwordGoView', '可视化平台登录', 'password', b'0', 3600, '-1', b'0', b'1', '', 1414143554414059520, '2023-02-18 15:26:13', 1414143554414059520, '2023-02-18 15:26:13', 0, b'0');
 
 -- ----------------------------
--- Table structure for starter_quartz_job_log
+-- Table structure for iam_password_change_history
 -- ----------------------------
-DROP TABLE IF EXISTS `starter_quartz_job_log`;
-CREATE TABLE `starter_quartz_job_log`  (
+DROP TABLE IF EXISTS `iam_password_change_history`;
+CREATE TABLE `iam_password_change_history`  (
   `id` bigint(20) NOT NULL COMMENT '主键',
-  `handler_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '处理器名称',
-  `class_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '处理器全限定名',
-  `success` bit(1) NOT NULL COMMENT '是否执行成功',
-  `error_message` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误信息',
-  `start_time` datetime(0) NULL DEFAULT NULL COMMENT '开始时间',
-  `end_time` datetime(0) NULL DEFAULT NULL COMMENT '结束时间',
-  `duration` bigint(255) NULL DEFAULT NULL COMMENT '执行时长',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+  `user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户Id',
+  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '密码',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '任务执行日志' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '密码更改历史' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of starter_quartz_job_log
+-- Records of iam_password_change_history
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for starter_file_upload_info
+-- Table structure for iam_password_login_fail_record
 -- ----------------------------
-DROP TABLE IF EXISTS `starter_file_upload_info`;
-CREATE TABLE `starter_file_upload_info`  (
+DROP TABLE IF EXISTS `iam_password_login_fail_record`;
+CREATE TABLE `iam_password_login_fail_record`  (
   `id` bigint(20) NOT NULL COMMENT '主键',
-  `file_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '存储位置',
-  `file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文件名称',
-  `file_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文件类型',
-  `file_suffix` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文件后缀',
-  `file_size` bigint(20) NULL DEFAULT NULL COMMENT '文件大小',
-  `external_storage_id` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '外部关联id',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+  `user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户id',
+  `fail_count` int(11) NULL DEFAULT NULL COMMENT '登录失败次数',
+  `fail_time` datetime NULL DEFAULT NULL COMMENT '登录失败时间',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '乐观锁',
+  `deleted` bit(1) NOT NULL COMMENT '删除标志',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '上传文件信息' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '密码登录失败记录' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of starter_file_upload_info
+-- Records of iam_password_login_fail_record
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for starter_file_data
+-- Table structure for iam_password_security_config
 -- ----------------------------
-DROP TABLE IF EXISTS `starter_file_data`;
-CREATE TABLE `starter_file_data`  (
+DROP TABLE IF EXISTS `iam_password_security_config`;
+CREATE TABLE `iam_password_security_config`  (
   `id` bigint(20) NOT NULL COMMENT '主键',
-  `base64` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT 'base64方式存储',
-  `data` longblob NULL COMMENT '数据方式存储',
+  `max_pwd_error_count` int(11) NULL DEFAULT NULL COMMENT '最大密码错误数',
+  `error_lock_time` int(11) NULL DEFAULT NULL COMMENT '密码错误锁定时间(分钟)',
+  `require_change_pwd` bit(1) NULL DEFAULT NULL COMMENT '强制修改初始密码',
+  `update_frequency` int(11) NULL DEFAULT NULL COMMENT '更新频率',
+  `expire_remind` int(11) NULL DEFAULT NULL COMMENT '到期提醒(天数)',
+  `same_as_login_name` bit(1) NULL DEFAULT NULL COMMENT '与登录名相同',
+  `recent_password` int(11) NULL DEFAULT NULL COMMENT '不能与近期多少次密码相同',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '乐观锁',
+  `deleted` bit(1) NOT NULL COMMENT '删除标志',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '上传文件数据' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '密码安全策略' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of starter_file_data
+-- Records of iam_password_security_config
 -- ----------------------------
+INSERT INTO `iam_password_security_config` VALUES (1714844168393515008, 5, 10, b'1', 90, 14, b'0', 5, 1399985191002447872, '2023-10-19 11:21:25', 1399985191002447872, '2023-10-19 11:21:25', 0, b'0');
 
 -- ----------------------------
--- Table structure for starter_ding_robot_config
+-- Table structure for iam_perm_menu
 -- ----------------------------
-DROP TABLE IF EXISTS `starter_ding_robot_config`;
-CREATE TABLE `starter_ding_robot_config`  (
+DROP TABLE IF EXISTS `iam_perm_menu`;
+CREATE TABLE `iam_perm_menu`  (
   `id` bigint(20) NOT NULL,
-  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
-  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编号',
-  `access_token` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钉钉机器人访问token',
-  `enable_signature_check` bit(1) NOT NULL COMMENT '是否开启验签',
-  `sign_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钉钉机器人私钥',
-  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
+  `client_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '终端code',
+  `parent_id` bigint(20) NULL DEFAULT NULL COMMENT '父id',
+  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜单名称',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路由名称',
+  `perm_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单权限编码',
+  `effect` bit(1) NULL DEFAULT NULL COMMENT '是否有效',
+  `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单图标',
+  `hidden` bit(1) NOT NULL COMMENT '是否隐藏',
+  `hide_children_in_menu` bit(1) NOT NULL COMMENT '是否隐藏子菜单',
+  `component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件',
+  `component_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件名字',
+  `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路径',
+  `redirect` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单跳转地址(重定向)',
+  `sort_no` double NOT NULL COMMENT '菜单排序',
+  `menu_type` int(5) NOT NULL COMMENT '类型(0:一级菜单;1:子菜单 ;2:按钮权限)',
+  `leaf` bit(1) NULL DEFAULT NULL COMMENT '是否叶子节点',
+  `keep_alive` bit(1) NULL DEFAULT NULL COMMENT '是否缓存页面',
+  `target_outside` bit(1) NULL DEFAULT NULL COMMENT '是否外部打开方式',
+  `hidden_header_content` bit(1) NULL DEFAULT NULL COMMENT '隐藏的标题内容',
+  `admin` bit(1) NOT NULL COMMENT '系统菜单',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(6) NULL DEFAULT NULL COMMENT '最后修改时间',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
   `version` int(11) NOT NULL COMMENT '版本',
-  `deleted` bit(1) NOT NULL COMMENT '0:未删除。1:已删除',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '钉钉机器人配置' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '权限_菜单' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of starter_ding_robot_config
+-- Records of iam_perm_menu
 -- ----------------------------
+INSERT INTO `iam_perm_menu` VALUES (1580740450633101312, 'adminv3', NULL, '系统管理', 'System', NULL, b'0', 'ant-design:setting-outlined', b'0', b'0', 'Layout', NULL, '/system', '/system1/client', -99999, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 10:01:07', 1414143554414059520, '2022-10-18 15:32:09', 4, 0);
+INSERT INTO `iam_perm_menu` VALUES (1580740637841666048, 'adminv3', 1582253306356649984, '终端管理', 'ClientList', NULL, b'0', '', b'0', b'0', '/modules/system/client/ClientList.vue', NULL, '/system/client', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 10:01:51', 1414143554414059520, '2022-10-18 14:13:27', 5, 0);
+INSERT INTO `iam_perm_menu` VALUES (1580740758629232640, 'adminv3', 1582253306356649984, '登录方式', 'LoginTypeList', NULL, b'0', '', b'0', b'0', '/modules/system/loginType/LoginTypeList.vue', NULL, '/system/loginType', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 10:02:20', 1414143554414059520, '2022-10-18 14:13:40', 5, 0);
+INSERT INTO `iam_perm_menu` VALUES (1580858583654051840, 'adminv3', 1580740450633101312, '测试Iframe', 'Iframe', NULL, b'0', '', b'0', b'0', 'Iframe', NULL, '/system/Iframe', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 17:50:32', 1414143554414059520, '2022-10-17 17:46:19', 5, 1);
+INSERT INTO `iam_perm_menu` VALUES (1580917438227075072, 'adminv3', 1580740450633101312, '三极目录', 'hello', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system1/a', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 21:44:24', 1399985191002447872, '2022-10-14 23:38:16', 2, 1);
+INSERT INTO `iam_perm_menu` VALUES (1580917571069071360, 'adminv3', 1580917438227075072, '百度', 'baidu', NULL, b'0', '', b'0', b'0', '', NULL, 'https://www.baidu.com/', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 21:44:56', 1399985191002447872, '2022-10-14 23:37:44', 3, 1);
+INSERT INTO `iam_perm_menu` VALUES (1580928436300337152, 'adminv3', 1580740450633101312, '菜单管理', 'MenuList', NULL, b'0', '', b'0', b'0', '/modules/system/menu/MenuList.vue', NULL, '/system/menu', '', -99, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2022-10-14 22:28:06', 1399985191002447872, '2022-10-14 22:28:32', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582249924602580992, 'adminv3', 1580740450633101312, '权限管理', 'Permission', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/permission', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 13:59:13', 1414143554414059520, '2022-10-18 13:59:13', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582253011803262976, 'adminv3', 1580740450633101312, '用户信息', 'UserAuth', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/user', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 14:11:30', 1414143554414059520, '2022-10-18 14:11:30', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582253152903843840, 'adminv3', 1580740450633101312, '系统配置', 'SystemConfig', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 14:12:03', 1414143554414059520, '2022-10-18 14:12:03', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582253306356649984, 'adminv3', 1580740450633101312, '认证管理', 'Auth', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/system/auth', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 14:12:40', 1414143554414059520, '2022-10-18 14:13:13', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582275875424129024, 'adminv3', NULL, '系统监控', 'Monitor', NULL, b'0', 'ant-design:monitor-outlined', b'0', b'0', 'Layout', NULL, '/monitor', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:42:21', 1414143554414059520, '2022-10-19 17:29:29', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582275984849326080, 'adminv3', NULL, '通知管理', 'Notice', NULL, b'0', 'ant-design:message-outlined', b'0', b'0', 'Layout', NULL, '/notice', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:42:47', 1414143554414059520, '2022-10-19 17:30:06', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582276092038959104, 'adminv3', NULL, '第三方对接', 'Third', NULL, b'0', 'ant-design:api-twotone', b'0', b'0', 'Layout', NULL, '/third', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:43:12', 1414143554414059520, '2022-10-19 17:32:04', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582276341792985088, 'adminv3', NULL, '开发管理', 'Develop', NULL, b'0', 'ant-design:apartment-outlined', b'0', b'0', 'Layout', NULL, '/develop', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:44:12', 1414143554414059520, '2022-10-19 15:24:22', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582276516905177088, 'adminv3', NULL, '功能演示', 'Demo', NULL, b'0', 'ant-design:appstore-twotone', b'0', b'0', 'Layout', NULL, '/demo', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:44:54', 1414143554414059520, '2022-10-19 17:34:26', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582277076421136384, 'adminv3', 1582249924602580992, '角色管理', 'RoleList', NULL, b'0', '', b'0', b'0', '/modules/system/role/RoleList.vue', NULL, '/system/permission/role', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 15:47:07', 1414143554414059520, '2022-10-18 15:59:37', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582301940364308480, 'adminv3', 1582249924602580992, '请求权限', 'PermPathList', NULL, b'0', '', b'0', b'0', '/modules/system/path/PermPathList.vue', NULL, '/system/permission/path', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:25:55', 1399985191002447872, '2023-11-29 13:57:56', 2, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582302180999917568, 'adminv3', 1582249924602580992, '数据角色', 'DataRoleList', NULL, b'0', '', b'0', b'0', '/modules/system/scope/DataRoleList.vue', NULL, '/system/permission/data', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:26:52', 1399985191002447872, '2023-11-28 21:02:57', 2, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582302542955769856, 'adminv3', 1582253011803262976, '用户管理', 'UserList', NULL, b'0', '', b'0', b'0', '/modules/system/user/UserList.vue', NULL, '/system/user/info', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:28:19', 1414143554414059520, '2022-10-18 17:28:19', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582302764129808384, 'adminv3', 1582253011803262976, '部门管理', 'DeptList', NULL, b'0', '', b'0', b'0', '/modules/system/dept/DeptList.vue', NULL, '/system/user/dept', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:29:11', 1414143554414059520, '2022-10-18 17:32:26', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582303143110340608, 'adminv3', 1582253152903843840, '数据字典', 'DictList', NULL, b'0', '', b'0', b'0', '/modules/system/dict/DictList.vue', NULL, '/system/config/dict', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:30:42', 1414143554414059520, '2022-10-18 17:30:42', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582303290070364160, 'adminv3', 1582253152903843840, '定时任务', 'QuartzJobList', NULL, b'0', '', b'0', b'0', '/modules/baseapi/quartz/QuartzJobList.vue', NULL, '/system/config/quartz', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:31:17', 1414143554414059520, '2023-08-09 15:50:46', 2, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582303447428067328, 'adminv3', 1582253152903843840, '系统参数', 'SystemParamList', NULL, b'0', '', b'0', b'0', '/modules/system/param/SystemParamList.vue', NULL, '/system/config/param', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-18 17:31:54', 1414143554414059520, '2022-10-19 23:14:16', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582632873244172288, 'adminv3', 1582276341792985088, '文件管理', 'FileUploadList', NULL, b'0', '', b'0', b'0', '/modules/develop/file/FileUploadList.vue', NULL, '/develop/file', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:20:56', 1414143554414059520, '2022-10-19 15:20:56', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582633196587261952, 'adminv3', 1582276341792985088, '代码生成', 'CodeGenList', NULL, b'0', '', b'0', b'0', '/modules/develop/codegen/CodeGenList.vue', NULL, '/develop/codegen', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:22:13', 1414143554414059520, '2022-10-19 15:23:17', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582633307786649600, 'adminv3', 1582276341792985088, '动态表单', 'DynamicFormList', NULL, b'0', '', b'0', b'0', '/modules/develop/dynamicform/DynamicFormList.vue', NULL, '/develop/form', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:22:39', 1414143554414059520, '2022-10-19 15:22:39', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1582633620321017856, 'adminv3', 1582276341792985088, '动态数据源', 'DynamicDataSourceList', NULL, b'0', '', b'0', b'0', '/modules/develop/dynamicsource/DynamicDataSourceList.vue', NULL, '/develop/source', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-19 15:23:54', 1414143554414059520, '2022-10-19 15:23:54', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1583074308040925184, 'adminv3', 1582275875424129024, '接口文档', 'ApiSwagger', NULL, b'0', '', b'0', b'0', '', NULL, 'http://127.0.0.1:9999/doc.html', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:35:02', 1414143554414059520, '2022-11-23 13:59:09', 2, 0);
+INSERT INTO `iam_perm_menu` VALUES (1583075229563068416, 'adminv3', 1582275875424129024, '审计日志', 'AuditLog', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/monitor/log', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:38:42', 1414143554414059520, '2022-10-20 20:41:38', 2, 0);
+INSERT INTO `iam_perm_menu` VALUES (1583076217481043968, 'adminv3', 1583075229563068416, '登录日志', 'LoginLogList', NULL, b'0', '', b'0', b'0', '/modules/monitor/login/LoginLogList.vue', NULL, '/monitor/log/login', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:42:37', 1414143554414059520, '2022-10-20 20:43:36', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1583076424935514112, 'adminv3', 1583075229563068416, '操作日志', 'OperateLogList', NULL, b'0', '', b'0', b'0', '/modules/monitor/operate/OperateLogList.vue', NULL, '/monitor/log/operate', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:43:26', 1414143554414059520, '2022-10-20 20:43:26', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1583076670881112064, 'adminv3', 1583075229563068416, '数据版本日志', 'DataVersionLogList', NULL, b'0', '', b'0', b'0', '/modules/monitor/data/DataVersionLogList.vue', NULL, '/monitor/log/data', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:44:25', 1414143554414059520, '2022-10-20 20:44:25', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1583076878956339200, 'adminv3', 1582275875424129024, 'ELK日志', 'ELK', NULL, b'0', '', b'1', b'0', '', NULL, 'http://elk.dev.bootx.cn:5601/app/discover', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:45:15', 1414143554414059520, '2023-08-12 19:26:12', 3, 0);
+INSERT INTO `iam_perm_menu` VALUES (1583077015434797056, 'adminv3', 1582275875424129024, 'PlumeLog日志', 'PlumeLog', NULL, b'0', '', b'0', b'0', '', NULL, 'http://127.0.0.1:9999/plumelog/#/', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:45:47', 1414143554414059520, '2022-10-20 20:45:47', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1583077198772019200, 'adminv3', 1582275875424129024, '系统信息', 'SystemInfoMonitor', NULL, b'0', '', b'0', b'0', '/modules/monitor/system/SystemInfoMonitor.vue', NULL, '/monitor/sysinfo', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:46:31', 1414143554414059520, '2022-10-20 20:46:31', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1583077360827342848, 'adminv3', 1582275875424129024, 'Redis监控', 'RedisInfoMonitor', NULL, b'0', '', b'0', b'0', '/modules/monitor/redis/RedisInfoMonitor.vue', NULL, '/monitor/redis', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-20 20:47:10', 1414143554414059520, '2022-10-20 20:47:10', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1584378294652051456, 'adminv3', 1582275984849326080, '邮件配置', 'MailConfigList', NULL, b'0', '', b'0', b'0', '/modules/notice/mail/MailConfigList.vue', NULL, '/notice/notice', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 10:56:36', 1414143554414059520, '2022-10-24 16:14:34', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1584378497824137216, 'adminv3', 1582275984849326080, '消息模板', 'MessageTemplateList', NULL, b'0', '', b'0', b'0', '/modules/notice/template/MessageTemplateList.vue', NULL, '/notice/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 10:57:25', 1414143554414059520, '2022-10-25 22:14:14', 2, 0);
+INSERT INTO `iam_perm_menu` VALUES (1584378671266996224, 'adminv3', 1582275984849326080, '站内信', 'SiteMessageList', NULL, b'0', '', b'0', b'0', '/modules/notice/site/sender/SiteMessageList.vue', NULL, '/notice/siteMessage', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 10:58:06', 1414143554414059520, '2022-10-24 10:58:06', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1584379602188574720, 'adminv3', 1582276092038959104, '微信', 'WeChat', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/third/wechat', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:01:48', 1414143554414059520, '2022-10-24 11:01:48', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1584379704122744832, 'adminv3', 1582276092038959104, '企业微信', 'WeCom', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/third/wecom', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:02:12', 1414143554414059520, '2022-10-24 11:02:12', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1584380087805091840, 'adminv3', 1582276092038959104, '钉钉', 'DingTalk', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/third/dingtalk', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:03:44', 1414143554414059520, '2022-10-24 11:03:44', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1584380527829524480, 'adminv3', 1584379602188574720, '消息模板', 'WechatTemplateList', NULL, b'0', '', b'0', b'0', '/modules/third/wechat/template/WechatTemplateList.vue', NULL, '/third/wechat/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:05:29', 1414143554414059520, '2022-10-26 15:58:56', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1584380679478779904, 'adminv3', 1584379602188574720, '自定义菜单', 'WechatMenuList', NULL, b'0', '', b'0', b'0', '/modules/third/wechat/menu/WechatMenuList.vue', NULL, '/third/wechat/menu', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:06:05', 1414143554414059520, '2022-10-27 10:15:24', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1584380824308097024, 'adminv3', 1584379602188574720, '素材管理', 'WechatMediaList', NULL, b'0', '', b'0', b'0', '/modules/third/wechat/media/WechatMediaList.vue', NULL, '/third/wechat/media', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:06:40', 1414143554414059520, '2022-10-27 16:38:47', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1584381134950834176, 'adminv3', 1584379704122744832, '企微机器人', 'WeComRobotConfigList', NULL, b'0', '', b'0', b'0', '/modules/third/wecom/robot/WecomRobotConfigList.vue', NULL, '/third/wecom/robot', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:07:54', 1414143554414059520, '2022-11-12 20:58:25', 3, 0);
+INSERT INTO `iam_perm_menu` VALUES (1584381322184564736, 'adminv3', 1584380087805091840, '钉钉机器人', 'DingRobotConfigList', NULL, b'0', '', b'0', b'0', '/modules/third/dingtalk/robot/DingRobotConfigList.vue', NULL, '/third/dingTalk/robot', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:08:38', 1414143554414059520, '2022-11-12 20:58:37', 6, 0);
+INSERT INTO `iam_perm_menu` VALUES (1584381477986181120, 'adminv3', 1584380087805091840, '钉钉配置', 'DingRobotConfigList', NULL, b'0', '', b'1', b'0', '/modules/third/dingtalk/config/DingTalkConfigList.vue', NULL, '/third/dingtalk/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-10-24 11:09:15', 1414143554414059520, '2022-11-11 16:04:47', 1, 1);
+INSERT INTO `iam_perm_menu` VALUES (1597044371008516096, 'adminv3', NULL, '功能演示', 'Demo', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/demo', '', 0, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-11-28 09:47:04', 1414143554414059520, '2022-11-28 09:47:04', 0, 1);
+INSERT INTO `iam_perm_menu` VALUES (1597102799370317824, 'adminv3', 1582276516905177088, '数据相关', 'DemoData', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/demo/data', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-11-28 13:39:15', 1414143554414059520, '2022-11-28 13:39:15', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1597210969883275264, 'adminv3', 1582276516905177088, '超级查询', 'SuperQueryDemoList', NULL, b'0', '', b'0', b'0', '/modules/demo/query/SuperQueryDemoList.vue', NULL, '/demo/query/super', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-11-28 20:49:05', 1414143554414059520, '2022-11-28 21:00:14', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1599337250200440832, 'adminv3', NULL, '关于', '', NULL, b'0', 'simple-icons:about-dot-me', b'0', b'0', '', NULL, '/about/index', '', 99, 0, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 17:38:09', 1414143554414059520, '2022-12-04 17:43:32', 3, 0);
+INSERT INTO `iam_perm_menu` VALUES (1599378494880436224, 'adminv3', 1582276516905177088, 'WS演示', 'WebsocketDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/ws/WebsocketDemo', NULL, '/demo/ws', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 20:22:03', 1414143554414059520, '2023-02-08 12:17:58', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1599378579513102336, 'adminv3', 1582276516905177088, '幂等请求演示', 'IdempotentDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/idempotent/IdempotentDemo', NULL, '/demo/idempotent', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 20:22:23', 1414143554414059520, '2023-02-08 11:46:00', 3, 0);
+INSERT INTO `iam_perm_menu` VALUES (1599378728490586112, 'adminv3', 1582276516905177088, '消息中间件演示', 'MqDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/mq/MqDemo', NULL, '/demo/mq', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 20:22:59', 1414143554414059520, '2023-02-08 22:09:04', 2, 0);
+INSERT INTO `iam_perm_menu` VALUES (1599378838519762944, 'adminv3', 1582276516905177088, '富文本编辑', 'WangEditorDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/wangeditor/WangEditorDemo.vue', NULL, '/demo/wangEditor', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2022-12-04 20:23:25', 1414143554414059520, '2023-02-10 09:05:16', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1617847577158324224, 'adminv3', 1597102799370317824, '数据权限', 'DataPermDemoList', NULL, b'0', '', b'0', b'0', '/modules/demo/data/perm/DataPermDemoList.vue', NULL, '/demo/data/perm', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-01-24 19:31:35', 1414143554414059520, '2023-01-24 20:06:04', 2, 0);
+INSERT INTO `iam_perm_menu` VALUES (1617847653746315264, 'adminv3', 1597102799370317824, '加密解密', 'DataEncryptDemoList', NULL, b'0', '', b'0', b'0', '/modules/demo/data/encrypt/DataEncryptDemoList.vue', NULL, '/demo/data/encrypt', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-01-24 19:31:53', 1414143554414059520, '2023-01-24 20:05:45', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1617847747375763456, 'adminv3', 1597102799370317824, '数据脱敏', 'DataSensitiveDemoList', NULL, b'0', '', b'0', b'0', '/modules/demo/data/sensitive/DataSensitiveDemoList.vue', NULL, '/demo/data/sensitive', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-01-24 19:32:16', 1414143554414059520, '2023-01-24 20:06:58', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1621150743447965696, 'admin', 1495968302034210816, '省市区联动', 'ChinaRegionDemo', NULL, b'0', '', b'0', b'0', 'demo/chinaregion/ChinaRegionDemo', NULL, '/demo/chinaregion', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-02-02 22:17:11', 1399985191002447872, '2023-02-08 09:43:39', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1623156857846034432, 'adminv3', 1582276516905177088, '省市区联动', 'ChinaRegionDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/chinaregion/ChinaRegionDemo', NULL, '/demo/chinaregion', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-02-08 11:08:46', 1414143554414059520, '2023-02-08 11:08:46', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1623325795944439808, 'adminv3', 1599378992811429888, '邮件通知', 'EmailSenderDemo', NULL, b'0', '', b'0', b'0', '/modules/demo/notice/email/EmailSenderDemo.vue', NULL, '/demo/notice/email', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-02-08 22:20:04', 1414143554414059520, '2023-02-20 10:38:55', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1623494586215579648, 'admin', 1552207982510706688, '行政区划', 'ChinaRegion', NULL, b'0', '', b'1', b'0', 'develop/region/ChinaRegionList', NULL, '/develop/region', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-02-09 09:30:47', 1399985191002447872, '2023-02-09 17:50:05', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1629039360928075776, 'adminv3', 1582276341792985088, '可视化大屏', 'ProjectInfoList', NULL, b'0', '', b'0', b'0', '/modules/develop/report/ProjectInfoList', NULL, '/develop/report', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-02-24 16:43:44', 1414143554414059520, '2023-02-24 16:44:17', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1631946120891707392, 'admin', 1552207982510706688, '可视化大屏', 'ProjectInfoList', NULL, b'0', '', b'0', b'0', 'develop/report/ProjectInfoList', NULL, '/develop/report', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-03-04 17:14:10', 1399985191002447872, '2023-03-04 17:14:10', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1635274568758435840, 'adminv3', 1582276341792985088, '数据集管理', 'DataResultSqlList', NULL, b'0', '', b'0', b'0', '/modules/develop/dataresult/DataResultSqlList', NULL, '/develop/dataresult', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-03-13 21:40:14', 1414143554414059520, '2023-09-18 14:26:51', 3, 0);
+INSERT INTO `iam_perm_menu` VALUES (1687369862646558720, 'adminv3', 1582275984849326080, '短信管理', 'Sms', NULL, b'0', '', b'0', b'0', 'Layout', NULL, '/notice/sms', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-04 15:48:20', 1414143554414059520, '2023-08-04 15:48:32', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1687370142234669056, 'adminv3', 1687369862646558720, '短信配置', 'SmsChannelConfigList', NULL, b'0', '', b'0', b'0', '/modules/notice/sms/config/SmsChannelConfigList', NULL, '/notice/sms/config', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-04 15:49:26', 1414143554414059520, '2023-08-04 15:49:26', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1687370277496778752, 'adminv3', 1687369862646558720, '短信模板', 'SmsTemplateList', NULL, b'0', '', b'0', b'0', '/modules/notice/sms/template/SmsTemplateList', NULL, '/notice/sms/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-04 15:49:59', 1414143554414059520, '2023-08-04 15:50:38', 1, 0);
+INSERT INTO `iam_perm_menu` VALUES (1689181991598997504, 'adminv3', 1582253152903843840, '敏感词管理', 'ChinaWord', NULL, b'0', '', b'0', b'0', '/modules/baseapi/chianword/ChinaWordList.vue', NULL, '/system/config/chinaword', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-09 15:49:05', 1414143554414059520, '2023-08-09 15:49:05', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1690324070514782208, 'adminv3', 1582276341792985088, '通用模板', 'GeneralTemplateList', NULL, b'0', '', b'0', b'0', '/modules/develop/template/GeneralTemplateList', NULL, '/develop/template', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-08-12 19:27:18', 1414143554414059520, '2023-08-12 19:31:26', 3, 0);
+INSERT INTO `iam_perm_menu` VALUES (1703665090038800384, 'adminv3', 1582276341792985088, '在线SQL', 'SqlQueryInfo', NULL, b'0', '', b'0', b'0', '/modules/develop/query/SqlQueryInfo', NULL, '/develop/sqlquery', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1414143554414059520, '2023-09-18 14:59:45', 1414143554414059520, '2023-09-18 14:59:45', 0, 0);
+INSERT INTO `iam_perm_menu` VALUES (1713931084759293952, 'adminv3', 1582253306356649984, '密码安全', 'PassowrdSecurity', NULL, b'0', '', b'0', b'0', '/modules/system/security/password/PasswordSecurityConfig.vue', NULL, '/system/config/passowrd', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-10-16 22:53:09', 1399985191002447872, '2023-10-16 22:58:59', 2, 0);
+INSERT INTO `iam_perm_menu` VALUES (1719311626751950848, 'adminv3', 1582276516905177088, '大屏', '', NULL, b'0', '', b'0', b'0', 'Iframe', NULL, '/demo/big', 'http://localhost:8112/#/index', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-10-31 19:13:30', 1399985191002447872, '2023-11-15 11:11:26', 0, 1);
+INSERT INTO `iam_perm_menu` VALUES (1733829906427682816, 'adminv3', 1582275875424129024, '在线用户', 'OnlineUserList', NULL, b'0', '', b'0', b'0', '/modules/monitor/user/online/OnlineUserList', NULL, '/monitor/user/online', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2023-12-10 20:43:57', 1399985191002447872, '2023-12-10 20:43:57', 0, 0);
 
 -- ----------------------------
--- Table structure for starter_ding_media_md5
+-- Table structure for iam_perm_path
 -- ----------------------------
-DROP TABLE IF EXISTS `starter_ding_media_md5`;
-CREATE TABLE `starter_ding_media_md5`  (
+DROP TABLE IF EXISTS `iam_perm_path`;
+CREATE TABLE `iam_perm_path`  (
   `id` bigint(20) NOT NULL,
-  `media_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '媒体id',
-  `md5` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'md5值',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间',
+  `code` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '权限标识',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限名称',
+  `request_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '请求类型',
+  `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '请求路径',
+  `group_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分组名称',
+  `enable` bit(1) NOT NULL COMMENT '启用状态',
+  `generate` bit(1) NOT NULL COMMENT '是否通过系统生成的权限',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述',
+  `creator` bigint(20) NULL DEFAULT NULL,
+  `create_time` datetime(6) NULL DEFAULT NULL,
+  `last_modifier` bigint(20) NULL DEFAULT NULL,
+  `last_modified_time` datetime(6) NULL DEFAULT NULL,
+  `deleted` bit(1) NOT NULL,
+  `version` int(11) NOT NULL,
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '钉钉媒体文件MD5值关联关系' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '权限_请求' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of starter_ding_media_md5
+-- Records of iam_perm_path
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for starter_audit_operate_log
+-- Table structure for iam_role
 -- ----------------------------
-DROP TABLE IF EXISTS `starter_audit_operate_log`;
-CREATE TABLE `starter_audit_operate_log`  (
-  `id` bigint(20) NOT NULL,
-  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作模块',
-  `operate_id` bigint(20) NULL DEFAULT NULL COMMENT '操作人员id',
-  `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作人员账号',
-  `business_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型',
-  `method` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求方法',
-  `request_method` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求方式',
-  `operate_url` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求url',
-  `operate_ip` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作ip',
-  `operate_location` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作地点',
-  `operate_param` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求参数',
-  `operate_return` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '返回参数',
-  `success` bit(1) NULL DEFAULT NULL COMMENT '是否成功',
-  `error_msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '错误提示',
-  `operate_time` datetime(0) NULL DEFAULT NULL COMMENT '操作时间',
+DROP TABLE IF EXISTS `iam_role`;
+CREATE TABLE `iam_role`  (
+  `id` bigint(20) NOT NULL COMMENT '角色ID',
+  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '编码',
+  `pid` bigint(20) NULL DEFAULT NULL COMMENT '父ID',
+  `name` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称',
+  `internal` bit(1) NOT NULL COMMENT '是否系统内置',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '说明',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '版本',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '操作日志' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '角色' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of starter_audit_operate_log
+-- Records of iam_role
 -- ----------------------------
+INSERT INTO `iam_role` VALUES (1405414804771971072, 'admin', NULL, '管理员', b'1', '管理员', 1, '2021-06-17 14:39:35', 1399985191002447872, '2021-07-18 22:31:02', 6, 0);
+INSERT INTO `iam_role` VALUES (1416730722714144768, 'test', NULL, '测试', b'0', '测试角色', 1399985191002447872, '2021-07-18 20:05:01', 1399985191002447872, '2021-07-18 20:16:15', 1, 0);
+INSERT INTO `iam_role` VALUES (1422832797731778562, 'user', NULL, '用户', b'0', '用户角色', 0, '2021-08-04 16:12:29', 1399985191002447872, '2021-08-04 16:15:03', 7, 0);
+INSERT INTO `iam_role` VALUES (1428891259564445696, 'manager', NULL, '管理者', b'0', 'manager管理者', 1399985191002447872, '2021-08-21 09:26:38', 1399985191002447872, '2021-08-21 09:26:39', 0, 0);
 
 -- ----------------------------
--- Table structure for starter_audit_login_log
+-- Table structure for iam_role_menu
 -- ----------------------------
-DROP TABLE IF EXISTS `starter_audit_login_log`;
-CREATE TABLE `starter_audit_login_log`  (
+DROP TABLE IF EXISTS `iam_role_menu`;
+CREATE TABLE `iam_role_menu`  (
   `id` bigint(20) NOT NULL,
-  `user_id` bigint(11) NULL DEFAULT NULL COMMENT '用户id',
-  `account` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户名称',
-  `login` bit(1) NULL DEFAULT NULL COMMENT '登录成功状态',
-  `client` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '终端',
-  `login_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录方式',
-  `ip` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录IP地址',
-  `login_location` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录地点',
-  `os` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作系统',
-  `browser` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '浏览器类型',
-  `msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '提示消息',
-  `login_time` datetime(0) NULL DEFAULT NULL COMMENT '访问时间',
+  `role_id` bigint(20) NOT NULL COMMENT '角色id',
+  `client_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '终端code',
+  `permission_id` bigint(20) NOT NULL COMMENT '菜单权限id',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '登陆日志' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色菜单权限表' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of starter_audit_login_log
+-- Records of iam_role_menu
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for report_project_info_publish
+-- Table structure for iam_role_path
 -- ----------------------------
-DROP TABLE IF EXISTS `report_project_info_publish`;
-CREATE TABLE `report_project_info_publish`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '报表内容',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '乐观锁',
-  `deleted` bit(1) NOT NULL COMMENT '删除标志',
+DROP TABLE IF EXISTS `iam_role_path`;
+CREATE TABLE `iam_role_path`  (
+  `id` bigint(20) NOT NULL,
+  `role_id` bigint(20) NOT NULL COMMENT '角色id',
+  `permission_id` bigint(20) NOT NULL COMMENT '请求权限id',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '自定义大屏发布信息' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色请求权限表' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of report_project_info_publish
+-- Records of iam_role_path
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for report_project_info
+-- Table structure for iam_user_data_role
 -- ----------------------------
-DROP TABLE IF EXISTS `report_project_info`;
-CREATE TABLE `report_project_info`  (
+DROP TABLE IF EXISTS `iam_user_data_role`;
+CREATE TABLE `iam_user_data_role`  (
   `id` bigint(20) NOT NULL COMMENT '主键',
-  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目名称',
-  `state` int(11) NULL DEFAULT NULL COMMENT '发布状态',
-  `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '报表内容',
-  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '乐观锁',
-  `deleted` bit(1) NOT NULL COMMENT '删除标志',
-  `index_image` bigint(20) NULL DEFAULT NULL COMMENT '预览图片id',
-  `edit` bit(1) NULL DEFAULT NULL COMMENT '是否在编辑中',
+  `user_id` bigint(20) NOT NULL COMMENT '用户ID',
+  `role_id` bigint(20) NOT NULL COMMENT '数据角色ID',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '自定义大屏信息' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户数据范围关系\r\n' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of report_project_info
+-- Records of iam_user_data_role
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for qrtz_triggers
+-- Table structure for iam_user_dept
 -- ----------------------------
-DROP TABLE IF EXISTS `qrtz_triggers`;
-CREATE TABLE `qrtz_triggers`  (
-  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
-  `NEXT_FIRE_TIME` bigint(13) NULL DEFAULT NULL,
-  `PREV_FIRE_TIME` bigint(13) NULL DEFAULT NULL,
-  `PRIORITY` int(11) NULL DEFAULT NULL,
-  `TRIGGER_STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `TRIGGER_TYPE` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `START_TIME` bigint(13) NOT NULL,
-  `END_TIME` bigint(13) NULL DEFAULT NULL,
-  `CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
-  `MISFIRE_INSTR` smallint(2) NULL DEFAULT NULL,
-  `JOB_DATA` blob NULL,
-  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
-  INDEX `IDX_QRTZ_T_NFT_ST`(`SCHED_NAME`, `TRIGGER_STATE`, `NEXT_FIRE_TIME`) USING BTREE,
-  INDEX `IDX_QRTZ_T_N_STATE`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE,
-  INDEX `IDX_QRTZ_T_NEXT_FIRE_TIME`(`SCHED_NAME`, `NEXT_FIRE_TIME`) USING BTREE,
-  INDEX `IDX_QRTZ_T_C`(`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE,
-  INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_STATE`) USING BTREE,
-  INDEX `IDX_QRTZ_T_G`(`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE,
-  INDEX `IDX_QRTZ_T_J`(`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE,
-  INDEX `IDX_QRTZ_T_JG`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE,
-  INDEX `IDX_QRTZ_T_N_G_STATE`(`SCHED_NAME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE,
-  INDEX `IDX_QRTZ_T_NFT_MISFIRE`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`) USING BTREE,
-  INDEX `IDX_QRTZ_T_STATE`(`SCHED_NAME`, `TRIGGER_STATE`) USING BTREE,
-  INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE_GRP`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE,
-  CONSTRAINT `qrtz_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) REFERENCES `qrtz_job_details` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `iam_user_dept`;
+CREATE TABLE `iam_user_dept`  (
+  `id` bigint(20) NOT NULL,
+  `user_id` bigint(20) NOT NULL COMMENT '用户id',
+  `dept_id` bigint(20) NOT NULL COMMENT '部门id',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户部门关联表' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of qrtz_triggers
+-- Records of iam_user_dept
 -- ----------------------------
 
--- ----------------------------
--- Table structure for qrtz_simprop_triggers
--- ----------------------------
-DROP TABLE IF EXISTS `qrtz_simprop_triggers`;
-CREATE TABLE `qrtz_simprop_triggers`  (
-  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `STR_PROP_1` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
-  `STR_PROP_2` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
-  `STR_PROP_3` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
-  `INT_PROP_1` int(11) NULL DEFAULT NULL,
-  `INT_PROP_2` int(11) NULL DEFAULT NULL,
-  `LONG_PROP_1` bigint(20) NULL DEFAULT NULL,
-  `LONG_PROP_2` bigint(20) NULL DEFAULT NULL,
-  `DEC_PROP_1` decimal(13, 4) NULL DEFAULT NULL,
-  `DEC_PROP_2` decimal(13, 4) NULL DEFAULT NULL,
-  `BOOL_PROP_1` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
-  `BOOL_PROP_2` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
-  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
-  CONSTRAINT `qrtz_simprop_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
+-- ----------------------------
+-- Table structure for iam_user_expand_info
+-- ----------------------------
+DROP TABLE IF EXISTS `iam_user_expand_info`;
+CREATE TABLE `iam_user_expand_info`  (
+  `id` bigint(20) NOT NULL COMMENT '主键',
+  `sex` int(4) NULL DEFAULT NULL COMMENT '性别',
+  `birthday` date NULL DEFAULT NULL COMMENT '生日',
+  `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '头像',
+  `last_login_time` datetime NULL DEFAULT NULL COMMENT '上次登录时间',
+  `current_login_time` datetime NULL DEFAULT NULL COMMENT '本次登录时间',
+  `initial_password` bit(1) NOT NULL COMMENT '是否初始密码',
+  `expire_password` bit(1) NOT NULL COMMENT '密码是否过期',
+  `last_change_password_time` datetime NULL DEFAULT NULL COMMENT '上次修改密码时间',
+  `register_time` datetime NOT NULL COMMENT '注册时间',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '乐观锁',
+  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '删除标志',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户扩展信息' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of qrtz_simprop_triggers
+-- Records of iam_user_expand_info
 -- ----------------------------
+INSERT INTO `iam_user_expand_info` VALUES (1399985191002447872, 1, '1996-12-01', NULL, '2023-10-19 19:21:46', '2023-10-20 09:31:26', b'0', b'0', '2023-10-19 14:14:08', '2021-08-01 18:52:37', 1, '2021-06-02 15:04:15', 1, '2023-10-20 09:31:26', 382, b'0');
 
 -- ----------------------------
--- Table structure for qrtz_simple_triggers
+-- Table structure for iam_user_info
 -- ----------------------------
-DROP TABLE IF EXISTS `qrtz_simple_triggers`;
-CREATE TABLE `qrtz_simple_triggers`  (
-  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `REPEAT_COUNT` bigint(7) NOT NULL,
-  `REPEAT_INTERVAL` bigint(12) NOT NULL,
-  `TIMES_TRIGGERED` bigint(10) NOT NULL,
-  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
-  CONSTRAINT `qrtz_simple_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `iam_user_info`;
+CREATE TABLE `iam_user_info`  (
+  `id` bigint(20) NOT NULL,
+  `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '名称',
+  `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '账号',
+  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码',
+  `phone` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '手机号',
+  `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱',
+  `client_ids` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '关联终端ds',
+  `administrator` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否超级管理员',
+  `status` varchar(55) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '账号状态',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '版本',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户信息' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of qrtz_simple_triggers
+-- Records of iam_user_info
 -- ----------------------------
+INSERT INTO `iam_user_info` VALUES (1399985191002447872, 'Bootx', 'bootx', 'f52020dca765fd3943ed40a615dc2c5c', '13333333333', 'bootx@bootx.com', '1430430071299207168,1430430071299207169,1626840094767714304,1580487061605175296', b'1', 'norm', 1, '2021-06-02 15:04:15', 1399985191002447872, '2023-10-19 14:14:46', 58, 0);
 
 -- ----------------------------
--- Table structure for qrtz_scheduler_state
+-- Table structure for iam_user_role
 -- ----------------------------
-DROP TABLE IF EXISTS `qrtz_scheduler_state`;
-CREATE TABLE `qrtz_scheduler_state`  (
-  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `LAST_CHECKIN_TIME` bigint(13) NOT NULL,
-  `CHECKIN_INTERVAL` bigint(13) NOT NULL,
-  PRIMARY KEY (`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `iam_user_role`;
+CREATE TABLE `iam_user_role`  (
+  `id` bigint(20) NOT NULL COMMENT '主键',
+  `user_id` bigint(20) NOT NULL COMMENT '用户ID',
+  `role_id` bigint(20) NOT NULL COMMENT '角色ID',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户角色关系\r\n' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of qrtz_scheduler_state
+-- Records of iam_user_role
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for qrtz_paused_trigger_grps
+-- Table structure for iam_user_third
 -- ----------------------------
-DROP TABLE IF EXISTS `qrtz_paused_trigger_grps`;
-CREATE TABLE `qrtz_paused_trigger_grps`  (
-  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `iam_user_third`;
+CREATE TABLE `iam_user_third`  (
+  `id` bigint(20) NOT NULL COMMENT '主键',
+  `user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户id',
+  `we_chat_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信openId',
+  `we_chat_open_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信开放平台id',
+  `qq_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'qqId',
+  `weibo_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微博Id',
+  `gitee_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '码云唯一标识',
+  `ding_talk_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钉钉唯一标识',
+  `we_com_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '企业微信唯一标识',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '版本',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `pk_user_index`(`user_id`) USING BTREE COMMENT '用户id索引'
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户三方登录绑定' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of qrtz_paused_trigger_grps
+-- Records of iam_user_third
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for qrtz_locks
+-- Table structure for iam_user_third_info
 -- ----------------------------
-DROP TABLE IF EXISTS `qrtz_locks`;
-CREATE TABLE `qrtz_locks`  (
-  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `LOCK_NAME` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  PRIMARY KEY (`SCHED_NAME`, `LOCK_NAME`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `iam_user_third_info`;
+CREATE TABLE `iam_user_third_info`  (
+  `id` bigint(20) NOT NULL COMMENT '主键',
+  `user_id` bigint(20) NOT NULL COMMENT '用户id',
+  `client_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '第三方终端类型',
+  `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户名',
+  `nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户昵称',
+  `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户头像',
+  `third_user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '关联第三方平台的用户id',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '版本',
+  PRIMARY KEY (`id`) USING BTREE,
+  INDEX `pk_user_client`(`user_id`, `client_code`) USING BTREE COMMENT '用户id和终端code'
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '用户三方登录绑定详情' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of qrtz_locks
+-- Records of iam_user_third_info
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for qrtz_job_details
+-- Table structure for notice_mail_config
 -- ----------------------------
-DROP TABLE IF EXISTS `qrtz_job_details`;
-CREATE TABLE `qrtz_job_details`  (
-  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
-  `JOB_CLASS_NAME` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `IS_DURABLE` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `IS_UPDATE_DATA` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `JOB_DATA` blob NULL,
-  PRIMARY KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE,
-  INDEX `IDX_QRTZ_J_GRP`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE,
-  INDEX `IDX_QRTZ_J_REQ_RECOVERY`(`SCHED_NAME`, `REQUESTS_RECOVERY`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `notice_mail_config`;
+CREATE TABLE `notice_mail_config`  (
+  `id` bigint(20) NOT NULL,
+  `code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '编号',
+  `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称',
+  `host` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱服务器host',
+  `port` int(5) NOT NULL COMMENT '邮箱服务器 port',
+  `username` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱服务器 username',
+  `password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱服务器 password',
+  `sender` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱服务器 sender',
+  `from_` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱服务器 from',
+  `activity` tinyint(1) NULL DEFAULT 0 COMMENT '是否默认配置,0:否。1:是',
+  `security_type` int(2) NULL DEFAULT NULL COMMENT '安全传输方式 1:plain 2:tls 3:ssl',
+  `creator` bigint(18) NULL DEFAULT NULL COMMENT '创建人',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(18) NULL DEFAULT NULL COMMENT '最后修改人',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
+  `version` int(8) NULL DEFAULT NULL COMMENT '版本',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '邮件配置' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of qrtz_job_details
+-- Records of notice_mail_config
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for qrtz_fired_triggers
+-- Table structure for notice_message_template
 -- ----------------------------
-DROP TABLE IF EXISTS `qrtz_fired_triggers`;
-CREATE TABLE `qrtz_fired_triggers`  (
-  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `ENTRY_ID` varchar(95) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `FIRED_TIME` bigint(13) NOT NULL,
-  `SCHED_TIME` bigint(13) NOT NULL,
-  `PRIORITY` int(11) NOT NULL,
-  `STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
-  `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
-  `IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
-  `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
-  PRIMARY KEY (`SCHED_NAME`, `ENTRY_ID`) USING BTREE,
-  INDEX `IDX_QRTZ_FT_T_G`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
-  INDEX `IDX_QRTZ_FT_TRIG_INST_NAME`(`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE,
-  INDEX `IDX_QRTZ_FT_J_G`(`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE,
-  INDEX `IDX_QRTZ_FT_INST_JOB_REQ_RCVRY`(`SCHED_NAME`, `INSTANCE_NAME`, `REQUESTS_RECOVERY`) USING BTREE,
-  INDEX `IDX_QRTZ_FT_TG`(`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE,
-  INDEX `IDX_QRTZ_FT_JG`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `notice_message_template`;
+CREATE TABLE `notice_message_template`  (
+  `id` bigint(20) NOT NULL,
+  `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
+  `data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '模板数据',
+  `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板类型',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '版本',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '消息模板' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of qrtz_fired_triggers
+-- Records of notice_message_template
 -- ----------------------------
+INSERT INTO `notice_message_template` VALUES (1424936204932169730, 'cs', '测试', 'hello ${msg}6666666666666666666666666666', '1', '测试模板', 0, '2021-08-10 11:30:40', 0, '2021-08-10 11:30:40', 0, 0);
 
 -- ----------------------------
--- Table structure for qrtz_cron_triggers
+-- Table structure for notice_site_message
 -- ----------------------------
-DROP TABLE IF EXISTS `qrtz_cron_triggers`;
-CREATE TABLE `qrtz_cron_triggers`  (
-  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `CRON_EXPRESSION` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `TIME_ZONE_ID` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
-  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
-  CONSTRAINT `qrtz_cron_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `notice_site_message`;
+CREATE TABLE `notice_site_message`  (
+  `id` bigint(20) NOT NULL COMMENT '主键',
+  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '消息标题',
+  `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '消息内容',
+  `sender_id` bigint(20) NULL DEFAULT NULL COMMENT '发送者id',
+  `sender_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发送者姓名',
+  `sender_time` datetime NULL DEFAULT NULL COMMENT '发送时间',
+  `receive_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '消息类型',
+  `send_state` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发布状态',
+  `efficient_time` datetime NULL DEFAULT NULL COMMENT '截至有效期',
+  `cancel_time` datetime NULL DEFAULT NULL COMMENT '撤回时间',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '版本',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '站内信' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of qrtz_cron_triggers
+-- Records of notice_site_message
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for qrtz_calendars
+-- Table structure for notice_site_message_user
 -- ----------------------------
-DROP TABLE IF EXISTS `qrtz_calendars`;
-CREATE TABLE `qrtz_calendars`  (
-  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `CALENDAR` blob NOT NULL,
-  PRIMARY KEY (`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `notice_site_message_user`;
+CREATE TABLE `notice_site_message_user`  (
+  `id` bigint(20) NOT NULL COMMENT '主键',
+  `message_id` bigint(20) NOT NULL COMMENT '消息id',
+  `receive_id` bigint(20) NOT NULL COMMENT '接收者id',
+  `have_read` bit(1) NOT NULL COMMENT '已读/未读',
+  `read_time` datetime NULL DEFAULT NULL COMMENT '已读时间',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `uni_receive_message`(`receive_id`, `message_id`) USING BTREE COMMENT '接收人和消息联合索引',
+  INDEX `inx_message`(`message_id`) USING BTREE COMMENT '消息索引'
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '消息用户关联' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of qrtz_calendars
+-- Records of notice_site_message_user
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for qrtz_blob_triggers
+-- Table structure for notice_sms_channel_config
 -- ----------------------------
-DROP TABLE IF EXISTS `qrtz_blob_triggers`;
-CREATE TABLE `qrtz_blob_triggers`  (
-  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `BLOB_DATA` blob NULL,
-  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
-  INDEX `SCHED_NAME`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
-  CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `notice_sms_channel_config`;
+CREATE TABLE `notice_sms_channel_config`  (
+  `id` bigint(20) NOT NULL COMMENT '主键',
+  `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '渠道类型编码',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '渠道类型名称',
+  `state` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态',
+  `access_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'AccessKey',
+  `config` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '配置字符串',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
+  `access_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'AccessSecret',
+  `image` bigint(20) NULL DEFAULT NULL COMMENT '图片',
+  `sort_no` double(10, 0) NULL DEFAULT NULL COMMENT '排序',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '乐观锁',
+  `deleted` bit(1) NOT NULL COMMENT '删除标志',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '短信渠道配置' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of qrtz_blob_triggers
+-- Records of notice_sms_channel_config
 -- ----------------------------
+INSERT INTO `notice_sms_channel_config` VALUES (1688432603289337856, 'alibaba', '阿里云短信', 'normal', '1', '{\"accessKeyId\":\"1231231231232111\",\"accessKeySecret\":\"12312312321111\",\"signature\":\"1231\",\"templateId\":\"2312313\",\"templateName\":\"123\",\"requestUrl\":\"五千二无二\",\"action\":\"SendSms\",\"version\":\"11\",\"regionId\":\"cn-hangzhou\"}', NULL, '1', 1688450284000247808, 0, 1414143554414059520, '2023-08-07 14:11:17', 1414143554414059520, '2023-08-07 15:35:34', 0, b'0');
+INSERT INTO `notice_sms_channel_config` VALUES (1688456604610953216, 'huawei', '华为云短信', 'normal', '1', '{\"appKey\":\"1231231231232\",\"appSecret\":\"1111\",\"signature\":\"1\",\"sender\":\"1\",\"templateId\":\"12\",\"statusCallBack\":\"1\",\"url\":\"1\"}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-07 15:46:39', 1414143554414059520, '2023-08-07 15:46:49', 0, b'0');
+INSERT INTO `notice_sms_channel_config` VALUES (1688461302302732288, 'yunpian', '云片短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"callbackUrl\":null,\"templateName\":null}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-07 16:05:19', 1414143554414059520, '2023-08-08 14:12:23', 0, b'0');
+INSERT INTO `notice_sms_channel_config` VALUES (1688788784751001600, 'tencent', '腾讯短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"sdkAppId\":null,\"territory\":\"ap-guangzhou\",\"connTimeout\":60,\"requestUrl\":\"sms.tencentcloudapi.com\",\"action\":\"SendSms\",\"version\":\"2021-01-11\",\"service\":\"sms\"}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:46:37', 1414143554414059520, '2023-08-08 13:46:37', 0, b'0');
+INSERT INTO `notice_sms_channel_config` VALUES (1688788807228276736, 'uni_sms', '合一短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"isSimple\":true,\"templateName\":null}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:46:42', 1414143554414059520, '2023-08-08 13:46:43', 0, b'0');
+INSERT INTO `notice_sms_channel_config` VALUES (1688788823900635136, 'netease', '网易云短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"templateName\":null,\"templateUrl\":\"https://api.netease.im/sms/sendtemplate.action\",\"codeUrl\":\"https://api.netease.im/sms/sendcode.action\",\"verifyUrl\":\"https://api.netease.im/sms/verifycode.action\",\"needUp\":null}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:46:46', 1414143554414059520, '2023-08-08 13:46:47', 0, b'0');
+INSERT INTO `notice_sms_channel_config` VALUES (1688788846944141312, 'ctyun', '天翼云短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"templateName\":null,\"requestUrl\":\"https://sms-global.ctapi.ctyun.cn/sms/api/v1\",\"action\":\"SendSms\"}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:46:52', 1414143554414059520, '2023-08-08 13:46:52', 0, b'0');
+INSERT INTO `notice_sms_channel_config` VALUES (1688788862987354112, 'emay', '亿美短信', 'normal', '1', '{\"appId\":\"1\",\"secretKey\":\"1\",\"requestUrl\":null}', NULL, '1', 1688792913003102208, 0, 1414143554414059520, '2023-08-08 13:46:56', 1414143554414059520, '2023-08-08 14:03:04', 0, b'0');
+INSERT INTO `notice_sms_channel_config` VALUES (1688788885141667840, 'cloopen', '容联短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"appId\":null,\"baseUrl\":\"https://app.cloopen.com:8883/2013-12-26\",\"serverIp\":null,\"serverPort\":null}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:47:01', 1414143554414059520, '2023-08-08 13:47:01', 0, b'0');
+INSERT INTO `notice_sms_channel_config` VALUES (1688788904481603584, 'jd_cloud', '京东短信', 'normal', '1', '{\"accessKeyId\":\"1\",\"accessKeySecret\":\"1\",\"signature\":null,\"templateId\":null,\"region\":\"cn-north-1\"}', NULL, '1', NULL, 0, 1414143554414059520, '2023-08-08 13:47:06', 1414143554414059520, '2023-08-08 13:47:06', 0, b'0');
 
 -- ----------------------------
--- Table structure for notice_wechat_config
+-- Table structure for notice_sms_config
 -- ----------------------------
-DROP TABLE IF EXISTS `notice_wechat_config`;
-CREATE TABLE `notice_wechat_config`  (
+DROP TABLE IF EXISTS `notice_sms_config`;
+CREATE TABLE `notice_sms_config`  (
   `id` bigint(18) NOT NULL,
   `tid` bigint(18) NOT NULL COMMENT '租户id',
   `code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
   `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
-  `corp_id` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
-  `corp_secret` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `account_sid` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `path_sid` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '发送号码的唯一标识(基于twillio的命名风格)',
+  `auth_token` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `from_num` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
   `is_default` tinyint(1) NULL DEFAULT 0 COMMENT '是否默认配置,0:否。1:是',
   `creator` bigint(18) NULL DEFAULT NULL,
-  `create_time` datetime(0) NULL DEFAULT NULL,
+  `create_time` datetime NULL DEFAULT NULL,
   `last_modifier` bigint(18) NULL DEFAULT NULL,
-  `last_modified_time` datetime(0) NULL DEFAULT NULL,
+  `last_modified_time` datetime NULL DEFAULT NULL,
   `version` int(10) NULL DEFAULT NULL,
   `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
+  `secret` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
+  `isp` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
+  `reply_msg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '微信消息配置' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '短信配置' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of notice_wechat_config
+-- Records of notice_sms_config
 -- ----------------------------
 
 -- ----------------------------
@@ -4842,9 +4725,9 @@ CREATE TABLE `notice_sms_template`  (
   `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '短信模板名称',
   `content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '短信模板内容',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
   `version` int(11) NOT NULL COMMENT '乐观锁',
   `deleted` bit(1) NOT NULL COMMENT '删除标志',
   PRIMARY KEY (`id`) USING BTREE
@@ -4855,546 +4738,623 @@ CREATE TABLE `notice_sms_template`  (
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for notice_sms_config
+-- Table structure for notice_wechat_config
 -- ----------------------------
-DROP TABLE IF EXISTS `notice_sms_config`;
-CREATE TABLE `notice_sms_config`  (
+DROP TABLE IF EXISTS `notice_wechat_config`;
+CREATE TABLE `notice_wechat_config`  (
   `id` bigint(18) NOT NULL,
   `tid` bigint(18) NOT NULL COMMENT '租户id',
   `code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
   `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
-  `account_sid` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
-  `path_sid` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '发送号码的唯一标识(基于twillio的命名风格)',
-  `auth_token` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
-  `from_num` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `corp_id` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+  `corp_secret` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
   `is_default` tinyint(1) NULL DEFAULT 0 COMMENT '是否默认配置,0:否。1:是',
   `creator` bigint(18) NULL DEFAULT NULL,
-  `create_time` datetime(0) NULL DEFAULT NULL,
+  `create_time` datetime NULL DEFAULT NULL,
   `last_modifier` bigint(18) NULL DEFAULT NULL,
-  `last_modified_time` datetime(0) NULL DEFAULT NULL,
+  `last_modified_time` datetime NULL DEFAULT NULL,
   `version` int(10) NULL DEFAULT NULL,
   `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
-  `secret` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
-  `isp` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
-  `reply_msg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '短信配置' ROW_FORMAT = DYNAMIC;
-
--- ----------------------------
--- Records of notice_sms_config
--- ----------------------------
-
--- ----------------------------
--- Table structure for notice_sms_channel_config
--- ----------------------------
-DROP TABLE IF EXISTS `notice_sms_channel_config`;
-CREATE TABLE `notice_sms_channel_config`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '渠道类型编码',
-  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '渠道类型名称',
-  `state` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态',
-  `access_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'AccessKey',
-  `config` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '配置字符串',
-  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
-  `access_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'AccessSecret',
-  `image` bigint(20) NULL DEFAULT NULL COMMENT '图片',
-  `sort_no` double(10, 0) NULL DEFAULT NULL COMMENT '排序',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '乐观锁',
-  `deleted` bit(1) NOT NULL COMMENT '删除标志',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '短信渠道配置' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '微信消息配置' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of notice_sms_channel_config
+-- Records of notice_wechat_config
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for notice_site_message_user
+-- Table structure for qrtz_blob_triggers
 -- ----------------------------
-DROP TABLE IF EXISTS `notice_site_message_user`;
-CREATE TABLE `notice_site_message_user`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `message_id` bigint(20) NOT NULL COMMENT '消息id',
-  `receive_id` bigint(20) NOT NULL COMMENT '接收者id',
-  `have_read` bit(1) NOT NULL COMMENT '已读/未读',
-  `read_time` datetime(0) NULL DEFAULT NULL COMMENT '已读时间',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
-  PRIMARY KEY (`id`) USING BTREE,
-  UNIQUE INDEX `uni_receive_message`(`receive_id`, `message_id`) USING BTREE COMMENT '接收人和消息联合索引',
-  INDEX `inx_message`(`message_id`) USING BTREE COMMENT '消息索引'
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '消息用户关联' ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `qrtz_blob_triggers`;
+CREATE TABLE `qrtz_blob_triggers`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `BLOB_DATA` blob NULL,
+  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
+  INDEX `SCHED_NAME`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
+  CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of notice_site_message_user
+-- Records of qrtz_blob_triggers
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for notice_site_message
+-- Table structure for qrtz_calendars
 -- ----------------------------
-DROP TABLE IF EXISTS `notice_site_message`;
-CREATE TABLE `notice_site_message`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '消息标题',
-  `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '消息内容',
-  `sender_id` bigint(20) NULL DEFAULT NULL COMMENT '发送者id',
-  `sender_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发送者姓名',
-  `sender_time` datetime(0) NULL DEFAULT NULL COMMENT '发送时间',
-  `receive_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '消息类型',
-  `send_state` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发布状态',
-  `efficient_time` datetime(0) NULL DEFAULT NULL COMMENT '截至有效期',
-  `cancel_time` datetime(0) NULL DEFAULT NULL COMMENT '撤回时间',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '版本',
-  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '站内信' ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `qrtz_calendars`;
+CREATE TABLE `qrtz_calendars`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `CALENDAR` blob NOT NULL,
+  PRIMARY KEY (`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of notice_site_message
+-- Records of qrtz_calendars
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for notice_mail_config
+-- Table structure for qrtz_cron_triggers
 -- ----------------------------
-DROP TABLE IF EXISTS `notice_mail_config`;
-CREATE TABLE `notice_mail_config`  (
-  `id` bigint(20) NOT NULL,
-  `code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '编号',
-  `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '名称',
-  `host` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱服务器host',
-  `port` int(5) NOT NULL COMMENT '邮箱服务器 port',
-  `username` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱服务器 username',
-  `password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱服务器 password',
-  `sender` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱服务器 sender',
-  `from_` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱服务器 from',
-  `activity` tinyint(1) NULL DEFAULT 0 COMMENT '是否默认配置,0:否。1:是',
-  `security_type` int(2) NULL DEFAULT NULL COMMENT '安全传输方式 1:plain 2:tls 3:ssl',
-  `creator` bigint(18) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(18) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
-  `version` int(8) NULL DEFAULT NULL COMMENT '版本',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '邮件配置' ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `qrtz_cron_triggers`;
+CREATE TABLE `qrtz_cron_triggers`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `CRON_EXPRESSION` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `TIME_ZONE_ID` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
+  CONSTRAINT `qrtz_cron_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of notice_mail_config
+-- Records of qrtz_cron_triggers
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for iam_user_third_info
+-- Table structure for qrtz_fired_triggers
 -- ----------------------------
-DROP TABLE IF EXISTS `iam_user_third_info`;
-CREATE TABLE `iam_user_third_info`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `user_id` bigint(20) NOT NULL COMMENT '用户id',
-  `client_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '第三方终端类型',
-  `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户名',
-  `nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户昵称',
-  `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户头像',
-  `third_user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '关联第三方平台的用户id',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '版本',
-  PRIMARY KEY (`id`) USING BTREE,
-  INDEX `pk_user_client`(`user_id`, `client_code`) USING BTREE COMMENT '用户id和终端code'
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '用户三方登录绑定详情' ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `qrtz_fired_triggers`;
+CREATE TABLE `qrtz_fired_triggers`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `ENTRY_ID` varchar(95) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `FIRED_TIME` bigint(13) NOT NULL,
+  `SCHED_TIME` bigint(13) NOT NULL,
+  `PRIORITY` int(11) NOT NULL,
+  `STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+  `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+  `IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+  `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+  PRIMARY KEY (`SCHED_NAME`, `ENTRY_ID`) USING BTREE,
+  INDEX `IDX_QRTZ_FT_T_G`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
+  INDEX `IDX_QRTZ_FT_TRIG_INST_NAME`(`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE,
+  INDEX `IDX_QRTZ_FT_J_G`(`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE,
+  INDEX `IDX_QRTZ_FT_INST_JOB_REQ_RCVRY`(`SCHED_NAME`, `INSTANCE_NAME`, `REQUESTS_RECOVERY`) USING BTREE,
+  INDEX `IDX_QRTZ_FT_TG`(`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE,
+  INDEX `IDX_QRTZ_FT_JG`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of iam_user_third_info
+-- Records of qrtz_fired_triggers
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for iam_user_third
+-- Table structure for qrtz_job_details
 -- ----------------------------
-DROP TABLE IF EXISTS `iam_user_third`;
-CREATE TABLE `iam_user_third`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户id',
-  `we_chat_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信openId',
-  `we_chat_open_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信开放平台id',
-  `qq_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'qqId',
-  `weibo_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微博Id',
-  `gitee_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '码云唯一标识',
-  `ding_talk_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钉钉唯一标识',
-  `we_com_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '企业微信唯一标识',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '版本',
-  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
-  PRIMARY KEY (`id`) USING BTREE,
-  INDEX `pk_user_index`(`user_id`) USING BTREE COMMENT '用户id索引'
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户三方登录绑定' ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `qrtz_job_details`;
+CREATE TABLE `qrtz_job_details`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+  `JOB_CLASS_NAME` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `IS_DURABLE` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `IS_NONCONCURRENT` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `IS_UPDATE_DATA` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `REQUESTS_RECOVERY` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `JOB_DATA` blob NULL,
+  PRIMARY KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE,
+  INDEX `IDX_QRTZ_J_GRP`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE,
+  INDEX `IDX_QRTZ_J_REQ_RECOVERY`(`SCHED_NAME`, `REQUESTS_RECOVERY`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of iam_user_third
+-- Records of qrtz_job_details
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for iam_user_role
+-- Table structure for qrtz_locks
 -- ----------------------------
-DROP TABLE IF EXISTS `iam_user_role`;
-CREATE TABLE `iam_user_role`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `user_id` bigint(20) NOT NULL COMMENT '用户ID',
-  `role_id` bigint(20) NOT NULL COMMENT '角色ID',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户角色关系\r\n' ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `qrtz_locks`;
+CREATE TABLE `qrtz_locks`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `LOCK_NAME` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  PRIMARY KEY (`SCHED_NAME`, `LOCK_NAME`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of iam_user_role
+-- Records of qrtz_locks
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for iam_user_data_scope
+-- Table structure for qrtz_paused_trigger_grps
 -- ----------------------------
-DROP TABLE IF EXISTS `iam_user_data_scope`;
-CREATE TABLE `iam_user_data_scope`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `user_id` bigint(20) NOT NULL COMMENT '用户ID',
-  `data_scope_id` bigint(20) NOT NULL COMMENT '数据权限ID',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户数据范围关系\r\n' ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `qrtz_paused_trigger_grps`;
+CREATE TABLE `qrtz_paused_trigger_grps`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of iam_user_data_scope
+-- Records of qrtz_paused_trigger_grps
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for iam_role_path
+-- Table structure for qrtz_scheduler_state
 -- ----------------------------
-DROP TABLE IF EXISTS `iam_role_path`;
-CREATE TABLE `iam_role_path`  (
-  `id` bigint(20) NOT NULL,
-  `role_id` bigint(20) NOT NULL COMMENT '角色id',
-  `permission_id` bigint(20) NOT NULL COMMENT '请求权限id',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色请求权限表' ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `qrtz_scheduler_state`;
+CREATE TABLE `qrtz_scheduler_state`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `INSTANCE_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `LAST_CHECKIN_TIME` bigint(13) NOT NULL,
+  `CHECKIN_INTERVAL` bigint(13) NOT NULL,
+  PRIMARY KEY (`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of iam_role_path
+-- Records of qrtz_scheduler_state
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for iam_role_menu
+-- Table structure for qrtz_simple_triggers
 -- ----------------------------
-DROP TABLE IF EXISTS `iam_role_menu`;
-CREATE TABLE `iam_role_menu`  (
-  `id` bigint(20) NOT NULL,
-  `role_id` bigint(20) NOT NULL COMMENT '角色id',
-  `client_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '终端code',
-  `permission_id` bigint(20) NOT NULL COMMENT '菜单权限id',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色菜单权限表' ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `qrtz_simple_triggers`;
+CREATE TABLE `qrtz_simple_triggers`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `REPEAT_COUNT` bigint(7) NOT NULL,
+  `REPEAT_INTERVAL` bigint(12) NOT NULL,
+  `TIMES_TRIGGERED` bigint(10) NOT NULL,
+  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
+  CONSTRAINT `qrtz_simple_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of iam_role_menu
+-- Records of qrtz_simple_triggers
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for iam_perm_path
+-- Table structure for qrtz_simprop_triggers
 -- ----------------------------
-DROP TABLE IF EXISTS `iam_perm_path`;
-CREATE TABLE `iam_perm_path`  (
-  `id` bigint(20) NOT NULL,
-  `code` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '权限标识',
-  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限名称',
-  `request_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '请求类型',
-  `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '请求路径',
-  `group_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分组名称',
-  `enable` bit(1) NOT NULL COMMENT '启用状态',
-  `generate` bit(1) NOT NULL COMMENT '是否通过系统生成的权限',
-  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述',
-  `creator` bigint(20) NULL DEFAULT NULL,
-  `create_time` datetime(6) NULL DEFAULT NULL,
-  `last_modifier` bigint(20) NULL DEFAULT NULL,
-  `last_modified_time` datetime(6) NULL DEFAULT NULL,
-  `deleted` bit(1) NOT NULL,
-  `version` int(11) NOT NULL,
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '权限_请求' ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `qrtz_simprop_triggers`;
+CREATE TABLE `qrtz_simprop_triggers`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `STR_PROP_1` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+  `STR_PROP_2` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+  `STR_PROP_3` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+  `INT_PROP_1` int(11) NULL DEFAULT NULL,
+  `INT_PROP_2` int(11) NULL DEFAULT NULL,
+  `LONG_PROP_1` bigint(20) NULL DEFAULT NULL,
+  `LONG_PROP_2` bigint(20) NULL DEFAULT NULL,
+  `DEC_PROP_1` decimal(13, 4) NULL DEFAULT NULL,
+  `DEC_PROP_2` decimal(13, 4) NULL DEFAULT NULL,
+  `BOOL_PROP_1` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+  `BOOL_PROP_2` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
+  CONSTRAINT `qrtz_simprop_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of iam_perm_path
+-- Records of qrtz_simprop_triggers
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for iam_password_login_fail_record
+-- Table structure for qrtz_triggers
 -- ----------------------------
-DROP TABLE IF EXISTS `iam_password_login_fail_record`;
-CREATE TABLE `iam_password_login_fail_record`  (
+DROP TABLE IF EXISTS `qrtz_triggers`;
+CREATE TABLE `qrtz_triggers`  (
+  `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `TRIGGER_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `TRIGGER_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `JOB_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `JOB_GROUP` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+  `NEXT_FIRE_TIME` bigint(13) NULL DEFAULT NULL,
+  `PREV_FIRE_TIME` bigint(13) NULL DEFAULT NULL,
+  `PRIORITY` int(11) NULL DEFAULT NULL,
+  `TRIGGER_STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `TRIGGER_TYPE` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+  `START_TIME` bigint(13) NOT NULL,
+  `END_TIME` bigint(13) NULL DEFAULT NULL,
+  `CALENDAR_NAME` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+  `MISFIRE_INSTR` smallint(2) NULL DEFAULT NULL,
+  `JOB_DATA` blob NULL,
+  PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE,
+  INDEX `IDX_QRTZ_T_NFT_ST`(`SCHED_NAME`, `TRIGGER_STATE`, `NEXT_FIRE_TIME`) USING BTREE,
+  INDEX `IDX_QRTZ_T_N_STATE`(`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE,
+  INDEX `IDX_QRTZ_T_NEXT_FIRE_TIME`(`SCHED_NAME`, `NEXT_FIRE_TIME`) USING BTREE,
+  INDEX `IDX_QRTZ_T_C`(`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE,
+  INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_STATE`) USING BTREE,
+  INDEX `IDX_QRTZ_T_G`(`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE,
+  INDEX `IDX_QRTZ_T_J`(`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE,
+  INDEX `IDX_QRTZ_T_JG`(`SCHED_NAME`, `JOB_GROUP`) USING BTREE,
+  INDEX `IDX_QRTZ_T_N_G_STATE`(`SCHED_NAME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE,
+  INDEX `IDX_QRTZ_T_NFT_MISFIRE`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`) USING BTREE,
+  INDEX `IDX_QRTZ_T_STATE`(`SCHED_NAME`, `TRIGGER_STATE`) USING BTREE,
+  INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE_GRP`(`SCHED_NAME`, `MISFIRE_INSTR`, `NEXT_FIRE_TIME`, `TRIGGER_GROUP`, `TRIGGER_STATE`) USING BTREE,
+  CONSTRAINT `qrtz_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) REFERENCES `qrtz_job_details` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of qrtz_triggers
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for report_project_info
+-- ----------------------------
+DROP TABLE IF EXISTS `report_project_info`;
+CREATE TABLE `report_project_info`  (
   `id` bigint(20) NOT NULL COMMENT '主键',
-  `user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户id',
-  `fail_count` int(11) NULL DEFAULT NULL COMMENT '登录失败次数',
-  `fail_time` datetime(0) NULL DEFAULT NULL COMMENT '登录失败时间',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目名称',
+  `state` int(11) NULL DEFAULT NULL COMMENT '发布状态',
+  `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '报表内容',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
   `version` int(11) NOT NULL COMMENT '乐观锁',
   `deleted` bit(1) NOT NULL COMMENT '删除标志',
+  `index_image` bigint(20) NULL DEFAULT NULL COMMENT '预览图片id',
+  `edit` bit(1) NULL DEFAULT NULL COMMENT '是否在编辑中',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '密码登录失败记录' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '自定义大屏信息' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of iam_password_login_fail_record
+-- Records of report_project_info
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for iam_password_change_history
+-- Table structure for report_project_info_publish
 -- ----------------------------
-DROP TABLE IF EXISTS `iam_password_change_history`;
-CREATE TABLE `iam_password_change_history`  (
+DROP TABLE IF EXISTS `report_project_info_publish`;
+CREATE TABLE `report_project_info_publish`  (
   `id` bigint(20) NOT NULL COMMENT '主键',
-  `user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户Id',
-  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '密码',
+  `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '报表内容',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
   `version` int(11) NOT NULL COMMENT '乐观锁',
   `deleted` bit(1) NOT NULL COMMENT '删除标志',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '密码更改历史,' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '自定义大屏发布信息' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of iam_password_change_history
+-- Records of report_project_info_publish
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for iam_login_security_config
+-- Table structure for starter_audit_data_version
 -- ----------------------------
-DROP TABLE IF EXISTS `iam_login_security_config`;
-CREATE TABLE `iam_login_security_config`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `client_id` bigint(20) NULL DEFAULT NULL COMMENT '关联终端ID',
-  `require_login_change_pwd` bit(1) NULL DEFAULT NULL COMMENT '修改密码是否需要重新登录',
-  `captcha_enable` bit(1) NULL DEFAULT NULL COMMENT '默认启用验证码',
-  `max_captcha_error_count` int(11) NULL DEFAULT NULL COMMENT '出现验证码的错误次数',
-  `allow_multi_login` bit(1) NULL DEFAULT NULL COMMENT '同端是否允许同时登录',
-  `allow_multi_terminal_login` bit(1) NULL DEFAULT NULL COMMENT '多终端是否允许同时登录',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '乐观锁',
-  `deleted` bit(1) NOT NULL COMMENT '删除标志',
+DROP TABLE IF EXISTS `starter_audit_data_version`;
+CREATE TABLE `starter_audit_data_version`  (
+  `id` bigint(20) NOT NULL,
+  `table_name` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据表名称',
+  `data_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '数据名称',
+  `data_id` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据主键',
+  `data_content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '数据内容',
+  `change_content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '数据更新内容',
+  `version` int(10) NOT NULL COMMENT '版本',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据版本日志' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of starter_audit_data_version
+-- ----------------------------
+INSERT INTO `starter_audit_data_version` VALUES (1480550993828446208, '', 'client', '1', '{\"dataName\":\"client\",\"dataId\":\"1\",\"dataContent\":{\"id\":\"1\",\"creator\":null,\"createTime\":\"2022-01-10 22:43:58\",\"lastModifier\":null,\"lastModifiedTime\":null,\"deleted\":false,\"version\":0,\"code\":null,\"name\":null,\"timeout\":null,\"captcha\":false,\"enable\":false,\"description\":null}}', NULL, 1, 0, '2022-01-10 22:43:59');
+INSERT INTO `starter_audit_data_version` VALUES (1480551021779288064, '', 'client', '1', '{\"dataName\":\"client\",\"dataId\":\"1\",\"dataContent\":{\"id\":\"1\",\"creator\":null,\"createTime\":\"2022-01-10 22:44:05\",\"lastModifier\":null,\"lastModifiedTime\":null,\"deleted\":false,\"version\":0,\"code\":null,\"name\":null,\"timeout\":null,\"captcha\":false,\"enable\":false,\"description\":null}}', NULL, 2, 0, '2022-01-10 22:44:06');
+
+-- ----------------------------
+-- Table structure for starter_audit_login_log
+-- ----------------------------
+DROP TABLE IF EXISTS `starter_audit_login_log`;
+CREATE TABLE `starter_audit_login_log`  (
+  `id` bigint(20) NOT NULL,
+  `user_id` bigint(11) NULL DEFAULT NULL COMMENT '用户id',
+  `account` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户名称',
+  `login` bit(1) NULL DEFAULT NULL COMMENT '登录成功状态',
+  `client` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '终端',
+  `login_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录方式',
+  `ip` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录IP地址',
+  `login_location` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录地点',
+  `os` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作系统',
+  `browser` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '浏览器类型',
+  `msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '提示消息',
+  `login_time` datetime NULL DEFAULT NULL COMMENT '访问时间',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '登陆日志' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of starter_audit_login_log
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for starter_audit_operate_log
+-- ----------------------------
+DROP TABLE IF EXISTS `starter_audit_operate_log`;
+CREATE TABLE `starter_audit_operate_log`  (
+  `id` bigint(20) NOT NULL,
+  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作模块',
+  `operate_id` bigint(20) NULL DEFAULT NULL COMMENT '操作人员id',
+  `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作人员账号',
+  `business_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务类型',
+  `method` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求方法',
+  `request_method` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求方式',
+  `operate_url` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求url',
+  `operate_ip` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作ip',
+  `operate_location` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作地点',
+  `operate_param` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求参数',
+  `operate_return` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '返回参数',
+  `success` bit(1) NULL DEFAULT NULL COMMENT '是否成功',
+  `error_msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '错误提示',
+  `operate_time` datetime NULL DEFAULT NULL COMMENT '操作时间',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '登录安全策略' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '操作日志' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of iam_login_security_config
+-- Records of starter_audit_operate_log
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for iam_data_scope_user
+-- Table structure for starter_ding_media_md5
 -- ----------------------------
-DROP TABLE IF EXISTS `iam_data_scope_user`;
-CREATE TABLE `iam_data_scope_user`  (
+DROP TABLE IF EXISTS `starter_ding_media_md5`;
+CREATE TABLE `starter_ding_media_md5`  (
   `id` bigint(20) NOT NULL,
-  `data_scope_id` bigint(20) NOT NULL COMMENT '数据范围id',
-  `user_id` bigint(20) NOT NULL COMMENT '用户id',
+  `media_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '媒体id',
+  `md5` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'md5值',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数据范围用户关联配置' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '钉钉媒体文件MD5值关联关系' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of iam_data_scope_user
+-- Records of starter_ding_media_md5
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for base_village
+-- Table structure for starter_ding_robot_config
 -- ----------------------------
-DROP TABLE IF EXISTS `base_village`;
-CREATE TABLE `base_village`  (
-  `code` char(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '编码',
-  `name` varchar(55) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '名称',
-  `street_code` char(9) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '社区/乡镇编码',
-  PRIMARY KEY (`code`) USING BTREE,
-  INDEX `inx_street_code`(`street_code`) USING BTREE COMMENT '所属街道索引'
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '村庄/社区' ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `starter_ding_robot_config`;
+CREATE TABLE `starter_ding_robot_config`  (
+  `id` bigint(20) NOT NULL,
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
+  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编号',
+  `access_token` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钉钉机器人访问token',
+  `enable_signature_check` bit(1) NOT NULL COMMENT '是否开启验签',
+  `sign_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '钉钉机器人私钥',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
+  `last_modified_time` datetime(6) NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '版本',
+  `deleted` bit(1) NOT NULL COMMENT '0:未删除。1:已删除',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '钉钉机器人配置' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of base_village
+-- Records of starter_ding_robot_config
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for base_street
+-- Table structure for starter_file_data
 -- ----------------------------
-DROP TABLE IF EXISTS `base_street`;
-CREATE TABLE `base_street`  (
-  `code` char(9) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '编码',
-  `name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '街道名称',
-  `area_code` char(6) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '县区编码',
-  PRIMARY KEY (`code`) USING BTREE,
-  INDEX `inx_area_code`(`area_code`) USING BTREE COMMENT '县区'
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '街道表' ROW_FORMAT = DYNAMIC;
+DROP TABLE IF EXISTS `starter_file_data`;
+CREATE TABLE `starter_file_data`  (
+  `id` bigint(20) NOT NULL COMMENT '主键',
+  `base64` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT 'base64方式存储',
+  `data` longblob NULL COMMENT '数据方式存储',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '上传文件数据' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of base_street
+-- Records of starter_file_data
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for base_query_sql
+-- Table structure for starter_file_upload_info
 -- ----------------------------
-DROP TABLE IF EXISTS `base_query_sql`;
-CREATE TABLE `base_query_sql`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `database_id` bigint(20) NULL DEFAULT NULL COMMENT '数据源ID',
-  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '名称',
-  `is_list` bit(1) NULL DEFAULT NULL COMMENT '是否集合',
-  `sql` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT 'sql语句',
-  `params` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'SQL查询参数',
-  `fields` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'SQL查询结果字段',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '乐观锁',
-  `deleted` bit(1) NOT NULL COMMENT '删除标志',
+DROP TABLE IF EXISTS `starter_file_upload_info`;
+CREATE TABLE `starter_file_upload_info`  (
+  `id` bigint(20) NOT NULL COMMENT '文件id',
+  `url` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文件访问地址',
+  `size` bigint(20) NULL DEFAULT NULL COMMENT '文件大小,单位字节',
+  `filename` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件名称',
+  `original_filename` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '原始文件名',
+  `base_path` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '基础存储路径',
+  `path` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '存储路径',
+  `ext` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件扩展名',
+  `content_type` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'MIME类型',
+  `platform` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '存储平台',
+  `th_url` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '缩略图访问路径',
+  `th_filename` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '缩略图名称',
+  `th_size` bigint(20) NULL DEFAULT NULL COMMENT '缩略图大小,单位字节',
+  `th_content_type` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '缩略图MIME类型',
+  `object_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件所属对象id',
+  `object_type` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件所属对象类型,例如用户头像,评价图片',
+  `metadata` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '文件元数据',
+  `user_metadata` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '文件用户元数据',
+  `th_metadata` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '缩略图元数据',
+  `th_user_metadata` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '缩略图用户元数据',
+  `attr` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '附加属性',
+  `file_acl` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件ACL',
+  `th_file_acl` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '缩略图文件ACL',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'SQL查询语句' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '文件记录表' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of base_query_sql
+-- Records of starter_file_upload_info
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for base_key_value
+-- Table structure for starter_quartz_job
 -- ----------------------------
-DROP TABLE IF EXISTS `base_key_value`;
-CREATE TABLE `base_key_value`  (
-  `id` bigint(20) NOT NULL,
-  `key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '参数键名',
-  `value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '参数值',
+DROP TABLE IF EXISTS `starter_quartz_job`;
+CREATE TABLE `starter_quartz_job`  (
+  `id` bigint(20) NOT NULL COMMENT '主键',
+  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务名称',
+  `job_class_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务类名',
+  `cron` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'cron表达式',
+  `parameter` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '参数',
+  `state` int(4) NULL DEFAULT NULL COMMENT '状态',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '版本',
   `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
-  `version` int(8) NOT NULL COMMENT '版本',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'kv存储' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '定时任务' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of base_key_value
+-- Records of starter_quartz_job
 -- ----------------------------
+INSERT INTO `starter_quartz_job` VALUES (1456579473573867520, '测试任务', 'cn.bootx.starter.quartz.task.TestTask', '50 0 * * * ? *', '{\"aaa\":\"5255\"}', 0, '测试任务', 1399985191002447872, '2021-11-05 19:09:43', 1399985191002447872, '2022-06-22 00:37:48', 25, 0);
+INSERT INTO `starter_quartz_job` VALUES (1546857070483939328, '支付单超时检测', 'cn.bootx.payment.task.PayExpiredTimeTask', '0/5 * * * * ? *', NULL, 1, '检测超时的支付单, 超时后发送超时事件', 1399985191002447872, '2022-07-12 22:00:39', 1399985191002447872, '2022-07-12 22:00:45', 1, 0);
 
 -- ----------------------------
--- Table structure for base_general_template
+-- Table structure for starter_quartz_job_log
 -- ----------------------------
-DROP TABLE IF EXISTS `base_general_template`;
-CREATE TABLE `base_general_template`  (
+DROP TABLE IF EXISTS `starter_quartz_job_log`;
+CREATE TABLE `starter_quartz_job_log`  (
   `id` bigint(20) NOT NULL COMMENT '主键',
-  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板名称',
-  `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板代码',
-  `use_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '使用类型(导入/导出)',
-  `file_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板类型',
-  `file_suffix` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '模板后缀名',
-  `state` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '状态',
-  `file_id` bigint(20) NULL DEFAULT NULL COMMENT '文件ID',
-  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '乐观锁',
-  `deleted` bit(1) NOT NULL COMMENT '删除标志',
+  `handler_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '处理器名称',
+  `class_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '处理器全限定名',
+  `success` bit(1) NOT NULL COMMENT '是否执行成功',
+  `error_message` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '错误信息',
+  `start_time` datetime NULL DEFAULT NULL COMMENT '开始时间',
+  `end_time` datetime NULL DEFAULT NULL COMMENT '结束时间',
+  `duration` bigint(255) NULL DEFAULT NULL COMMENT '执行时长',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '通用模板管理' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '任务执行日志' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of base_general_template
+-- Records of starter_quartz_job_log
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for base_dynamic_data_source
+-- Table structure for starter_wecom_robot_config
 -- ----------------------------
-DROP TABLE IF EXISTS `base_dynamic_data_source`;
-CREATE TABLE `base_dynamic_data_source`  (
+DROP TABLE IF EXISTS `starter_wecom_robot_config`;
+CREATE TABLE `starter_wecom_robot_config`  (
   `id` bigint(20) NOT NULL,
-  `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据源编码',
-  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据源名称',
-  `database_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据库类型',
-  `auto_load` bit(1) NULL DEFAULT NULL COMMENT '是否启动自动加载',
-  `db_driver` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '驱动类',
-  `db_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据库地址',
-  `db_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '数据库名称',
-  `db_username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '用户名',
-  `db_password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '密码',
-  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
+  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编号',
+  `webhook_key` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'webhook地址的key值',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
   `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+  `create_time` datetime(6) NULL DEFAULT NULL COMMENT '创建时间',
   `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
+  `last_modified_time` datetime(6) NULL DEFAULT NULL COMMENT '最后修改时间',
   `version` int(11) NOT NULL COMMENT '版本',
-  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
+  `deleted` bit(1) NOT NULL COMMENT '0:未删除。1:已删除',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '动态数据源管理' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '企业微信机器人配置' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of base_dynamic_data_source
+-- Records of starter_wecom_robot_config
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for base_data_result_sql
+-- Table structure for starter_wx_fans
 -- ----------------------------
-DROP TABLE IF EXISTS `base_data_result_sql`;
-CREATE TABLE `base_data_result_sql`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `database_id` bigint(20) NULL DEFAULT NULL,
-  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
-  `is_list` bit(1) NULL DEFAULT NULL,
-  `sql` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
-  `params` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL,
-  `fields` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL,
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '乐观锁',
-  `deleted` bit(1) NOT NULL COMMENT '删除标志',
+DROP TABLE IF EXISTS `starter_wx_fans`;
+CREATE TABLE `starter_wx_fans`  (
+  `id` bigint(20) NOT NULL,
+  `openid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '关联OpenId',
+  `subscribe_status` bit(1) NULL DEFAULT NULL COMMENT '订阅状态',
+  `subscribe_time` datetime NULL DEFAULT NULL COMMENT '订阅时间',
+  `nickname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称',
+  `sex` varchar(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '性别',
+  `language` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '语言',
+  `country` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '国家',
+  `province` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '省份',
+  `city` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '城市',
+  `avatar_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像地址',
+  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '数据集SQL语句' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信公众号粉丝' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of base_data_result_sql
+-- Records of starter_wx_fans
 -- ----------------------------
 
 -- ----------------------------
--- Table structure for base_china_word
+-- Table structure for starter_wx_menu
 -- ----------------------------
-DROP TABLE IF EXISTS `base_china_word`;
-CREATE TABLE `base_china_word`  (
+DROP TABLE IF EXISTS `starter_wx_menu`;
+CREATE TABLE `starter_wx_menu`  (
   `id` bigint(20) NOT NULL COMMENT '主键',
-  `word` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '敏感词',
-  `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '分类',
-  `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '描述',
-  `enable` bit(1) NULL DEFAULT NULL COMMENT '是否启用',
-  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID',
-  `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间',
-  `version` int(11) NOT NULL COMMENT '乐观锁',
-  `white` bit(1) NULL DEFAULT NULL,
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '名称',
+  `menu_info` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '菜单信息',
+  `remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
+  `publish` bit(1) NOT NULL COMMENT '是否发布',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0:未删除。1:已删除',
+  `version` int(11) NOT NULL COMMENT '版本',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '敏感词' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '微信自定义菜单' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
--- Records of base_china_word
+-- Records of starter_wx_menu
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for starter_wx_template
+-- ----------------------------
+DROP TABLE IF EXISTS `starter_wx_template`;
+CREATE TABLE `starter_wx_template`  (
+  `id` bigint(20) NOT NULL,
+  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
+  `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '编码',
+  `enable` bit(1) NOT NULL COMMENT '是否启用',
+  `template_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '模板ID',
+  `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板标题',
+  `primary_industry` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板所属行业的一级行业',
+  `deputy_industry` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板所属行业的二级行业',
+  `content` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '模板内容',
+  `example` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '示例',
+  `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+  `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修改人',
+  `last_modified_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
+  `version` int(11) NOT NULL COMMENT '版本',
+  PRIMARY KEY (`id`) USING BTREE,
+  UNIQUE INDEX `inx_`(`template_id`) USING BTREE COMMENT '模板id'
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信消息模板' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of starter_wx_template
 -- ----------------------------
 
 SET FOREIGN_KEY_CHECKS = 1;
diff --git a/pom.xml b/pom.xml
index 4aad6501eac0f703552bd81ac122a6a7d675a63d..69d295f313d4058b40218546f28ce89269134955 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
     
         org.springframework.boot
         spring-boot-starter-parent
-        2.7.16
+        2.7.18
          
     
 
@@ -15,7 +15,7 @@
     cn.bootx.platform
     bootx-platform-parent
     pom
-    1.3.5
+    1.3.6
 
     
     bootx-platform
@@ -75,9 +75,9 @@
         1.8
 
         
-        1.3.5
+        1.3.6
         
-        5.8.22
+        5.8.24
         6.4.4
         2.12.3
         3.11
@@ -99,13 +99,16 @@
         2.4.0
         2.9.7
         1.36.0
-        1.16.5
+        1.16.6
         8.5.4
-        3.5.3.2
+        5.6.155
+        3.1.0
+        2.0.0
+        3.5.4
         3.6.1
         1.7.0
         3.23.0
-        4.2.0
+        4.4.0
         1.5.5.Final
         0.2.0
         1.6.2
@@ -125,7 +128,6 @@
     
     
         
-
             
             
             
@@ -178,6 +180,27 @@
                 ${mapstruct.version}
             
 
+            
+            
+                org.springdoc
+                springdoc-openapi-ui
+                ${springdoc.version}
+            
+
+            
+            
+                org.redisson
+                redisson-spring-boot-starter
+                ${redisson.version}
+            
+
+            
+            
+                com.xuxueli
+                xxl-job-core
+                ${xxl-job.version}
+            
+
             
             
                 org.apache.velocity
@@ -185,6 +208,13 @@
                 ${velocity.version}
             
 
+            
+            
+                cn.bootx
+                table-modify-mysql-boot-starter
+                ${table-modify.version}
+            
+
 
             
             
@@ -223,6 +253,12 @@
                 common-mybatis-plus
                 ${bootx-platform.version}
             
+            
+            
+                cn.bootx.platform
+                common-super-query
+                ${bootx-platform.version}
+            
             
             
                 cn.bootx.platform
@@ -247,6 +283,12 @@
                 common-sequence
                 ${bootx-platform.version}
             
+            
+            
+                cn.bootx.platform
+                common-super-query
+                ${bootx-platform.version}
+            
             
             
                 cn.bootx.platform
@@ -284,12 +326,6 @@
                 common-rabbitmq
                 ${bootx-platform.version}
             
-            
-            
-                cn.bootx
-                table-modify-mysql-boot-starter
-                ${table-modify.version}
-            
             
             
                 cn.bootx.platform