diff --git a/.gitee/ISSUE_TEMPLATE.zh-CN.md b/.gitee/ISSUE_TEMPLATE.zh-CN.md new file mode 100644 index 0000000000..06e3de7c2e --- /dev/null +++ b/.gitee/ISSUE_TEMPLATE.zh-CN.md @@ -0,0 +1,25 @@ +碰到问题,请在 搜索是否存在相似的 issue。 + +不按照模板提交的 issue,会被系统自动删除。 + +### 基本信息 + +- ruoyi-vue-pro 版本: +- 操作系统: +- 数据库: + +### 你猜测可能的原因 + +(必填)我花费了 2-4 小时自查,发现可能的原因是:xxxxxx + +### 复现步骤 + +第一步, + +第二步, + +第三步, + +### 报错信息 + +带上必要的截图 diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md new file mode 100644 index 0000000000..6ed00a35c1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.md @@ -0,0 +1,34 @@ +--- +name: 问题反馈 +about: 请详细描述,以便更高快的获得到解决 +title: '' +labels: '' +assignees: '' + +--- + +碰到问题,请在 搜索是否存在相似的 issue。 + +不按照模板提交的 issue,会被系统自动删除。 + +### 基本信息 + +- ruoyi-vue-pro 版本: +- 操作系统: +- 数据库: + +### 你猜测可能的原因 + +(必填)我花费了 2-4 小时自查,发现可能的原因是:xxxxxx + +### 复现步骤 + +第一步, + +第二步, + +第三步, + +### 报错信息 + +带上必要的截图 diff --git a/README.md b/README.md index 17a6529910..b0277fd549 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ | 项目名 | 说明 | 传说门 | |--------------------|------------------------|-------------------------------------------------------------------------------------------------------------------------------------| | `ruoyi-vue-pro` | Spring Boot 多模块 | **[Gitee](https://gitee.com/zhijiantianya/ruoyi-vue-pro)**     [Github](https://github.com/YunaiV/ruoyi-vue-pro) | -| `ruoyi-vue-cloud` | Spring Cloud 微服务 | **[Gitee](https://gitee.com/zhijiantianya/ruoyi-vue-cloud)**     [Github](https://github.com/YunaiV/onemall) | +| `yudao-cloud` | Spring Cloud 微服务 | **[Gitee](https://gitee.com/zhijiantianya/yudao-cloud)**     [Github](https://github.com/YunaiV/yudao-cloud) | | `Spring-Boot-Labs` | Spring Boot & Cloud 入门 | **[Gitee](https://gitee.com/zhijiantianya/SpringBoot-Labs)**     [Github](https://github.com/YunaiV/SpringBoot-Labs) | ## 🐶 在线体验 diff --git a/sql/mysql/ruoyi-vue-pro.sql b/sql/mysql/ruoyi-vue-pro.sql index ea3f8eba22..9590451868 100644 --- a/sql/mysql/ruoyi-vue-pro.sql +++ b/sql/mysql/ruoyi-vue-pro.sql @@ -11,7 +11,7 @@ Target Server Version : 80026 File Encoding : 65001 - Date: 02/05/2022 16:13:31 + Date: 25/05/2022 23:28:25 */ SET NAMES utf8mb4; @@ -73,7 +73,6 @@ CREATE TABLE `QRTZ_CRON_TRIGGERS` ( -- ---------------------------- BEGIN; INSERT INTO `QRTZ_CRON_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`, `CRON_EXPRESSION`, `TIME_ZONE_ID`) VALUES ('schedulerName', 'payNotifyJob', 'DEFAULT', '* * * * * ?', 'Asia/Shanghai'); -INSERT INTO `QRTZ_CRON_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`, `CRON_EXPRESSION`, `TIME_ZONE_ID`) VALUES ('schedulerName', 'userSessionTimeoutJob', 'DEFAULT', '0 * * * * ? *', 'Asia/Shanghai'); COMMIT; -- ---------------------------- @@ -134,7 +133,6 @@ CREATE TABLE `QRTZ_JOB_DETAILS` ( -- ---------------------------- BEGIN; INSERT INTO `QRTZ_JOB_DETAILS` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`, `DESCRIPTION`, `JOB_CLASS_NAME`, `IS_DURABLE`, `IS_NONCONCURRENT`, `IS_UPDATE_DATA`, `REQUESTS_RECOVERY`, `JOB_DATA`) VALUES ('schedulerName', 'payNotifyJob', 'DEFAULT', NULL, 'cn.iocoder.yudao.framework.quartz.core.handler.JobHandlerInvoker', '0', '1', '1', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000027400064A4F425F49447372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B020000787000000000000000057400104A4F425F48414E444C45525F4E414D4574000C7061794E6F746966794A6F627800); -INSERT INTO `QRTZ_JOB_DETAILS` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`, `DESCRIPTION`, `JOB_CLASS_NAME`, `IS_DURABLE`, `IS_NONCONCURRENT`, `IS_UPDATE_DATA`, `REQUESTS_RECOVERY`, `JOB_DATA`) VALUES ('schedulerName', 'userSessionTimeoutJob', 'DEFAULT', NULL, 'cn.iocoder.yudao.framework.quartz.core.handler.JobHandlerInvoker', '0', '1', '1', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000027400064A4F425F49447372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000000000000D7400104A4F425F48414E444C45525F4E414D457400157573657253657373696F6E54696D656F75744A6F627800); COMMIT; -- ---------------------------- @@ -282,7 +280,6 @@ CREATE TABLE `QRTZ_TRIGGERS` ( -- ---------------------------- BEGIN; INSERT INTO `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`, `JOB_NAME`, `JOB_GROUP`, `DESCRIPTION`, `NEXT_FIRE_TIME`, `PREV_FIRE_TIME`, `PRIORITY`, `TRIGGER_STATE`, `TRIGGER_TYPE`, `START_TIME`, `END_TIME`, `CALENDAR_NAME`, `MISFIRE_INSTR`, `JOB_DATA`) VALUES ('schedulerName', 'payNotifyJob', 'DEFAULT', 'payNotifyJob', 'DEFAULT', NULL, 1635572540000, 1635572539000, 5, 'WAITING', 'CRON', 1635294882000, 0, NULL, 0, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000037400114A4F425F48414E444C45525F504152414D707400124A4F425F52455452595F494E54455256414C737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000000074000F4A4F425F52455452595F434F554E5471007E000B7800); -INSERT INTO `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`, `JOB_NAME`, `JOB_GROUP`, `DESCRIPTION`, `NEXT_FIRE_TIME`, `PREV_FIRE_TIME`, `PRIORITY`, `TRIGGER_STATE`, `TRIGGER_TYPE`, `START_TIME`, `END_TIME`, `CALENDAR_NAME`, `MISFIRE_INSTR`, `JOB_DATA`) VALUES ('schedulerName', 'userSessionTimeoutJob', 'DEFAULT', 'userSessionTimeoutJob', 'DEFAULT', NULL, 1643993400000, -1, 5, 'WAITING', 'CRON', 1643993386000, 0, NULL, 0, 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C770800000010000000037400114A4F425F48414E444C45525F504152414D707400124A4F425F52455452595F494E54455256414C737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000007D074000F4A4F425F52455452595F434F554E547371007E0009000000037800); COMMIT; -- ---------------------------- @@ -303,7 +300,7 @@ CREATE TABLE `bpm_form` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '工作流的表单定义'; +) ENGINE = InnoDB AUTO_INCREMENT = 17 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '工作流的表单定义'; -- ---------------------------- -- Records of bpm_form @@ -362,7 +359,7 @@ CREATE TABLE `bpm_process_definition_ext` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 96 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'Bpm 流程定义的拓展表\n'; +) ENGINE = InnoDB AUTO_INCREMENT = 104 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'Bpm 流程定义的拓展表\n'; -- ---------------------------- -- Records of bpm_process_definition_ext @@ -392,7 +389,7 @@ CREATE TABLE `bpm_process_instance_ext` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 200 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '工作流的流程实例的拓展'; +) ENGINE = InnoDB AUTO_INCREMENT = 204 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '工作流的流程实例的拓展'; -- ---------------------------- -- Records of bpm_process_instance_ext @@ -418,7 +415,7 @@ CREATE TABLE `bpm_task_assign_rule` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 187 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'Bpm 任务规则表'; +) ENGINE = InnoDB AUTO_INCREMENT = 201 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'Bpm 任务规则表'; -- ---------------------------- -- Records of bpm_task_assign_rule @@ -447,7 +444,7 @@ CREATE TABLE `bpm_task_ext` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 213 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '工作流的流程任务的拓展表'; +) ENGINE = InnoDB AUTO_INCREMENT = 217 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '工作流的流程任务的拓展表'; -- ---------------------------- -- Records of bpm_task_ext @@ -507,7 +504,7 @@ CREATE TABLE `infra_api_access_log` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 26800 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'API 访问日志表'; +) ENGINE = InnoDB AUTO_INCREMENT = 33232 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'API 访问日志表'; -- ---------------------------- -- Records of infra_api_access_log @@ -549,7 +546,7 @@ CREATE TABLE `infra_api_error_log` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 409 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统异常日志'; +) ENGINE = InnoDB AUTO_INCREMENT = 454 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统异常日志'; -- ---------------------------- -- Records of infra_api_error_log @@ -587,7 +584,7 @@ CREATE TABLE `infra_codegen_column` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1094 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '代码生成表字段定义'; +) ENGINE = InnoDB AUTO_INCREMENT = 1114 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '代码生成表字段定义'; -- ---------------------------- -- Records of infra_codegen_column @@ -619,7 +616,7 @@ CREATE TABLE `infra_codegen_table` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 97 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '代码生成表定义'; +) ENGINE = InnoDB AUTO_INCREMENT = 98 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '代码生成表定义'; -- ---------------------------- -- Records of infra_codegen_table @@ -676,7 +673,7 @@ CREATE TABLE `infra_data_source_config` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据源配置表'; +) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '数据源配置表'; -- ---------------------------- -- Records of infra_data_source_config @@ -701,7 +698,7 @@ CREATE TABLE `infra_file` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '文件表'; +) ENGINE = InnoDB AUTO_INCREMENT = 83 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '文件表'; -- ---------------------------- -- Records of infra_file @@ -787,7 +784,6 @@ CREATE TABLE `infra_job` ( -- ---------------------------- BEGIN; INSERT INTO `infra_job` (`id`, `name`, `status`, `handler_name`, `handler_param`, `cron_expression`, `retry_count`, `retry_interval`, `monitor_timeout`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (5, '支付通知 Job', 2, 'payNotifyJob', NULL, '* * * * * ?', 0, 0, 0, '1', '2021-10-27 08:34:42', '1', '2022-04-03 20:35:25', b'0'); -INSERT INTO `infra_job` (`id`, `name`, `status`, `handler_name`, `handler_param`, `cron_expression`, `retry_count`, `retry_interval`, `monitor_timeout`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (15, '用户 Session 超时 Job', 1, 'userSessionTimeoutJob', NULL, '0 * * * * ?', 0, 0, 60000, '1', '2022-04-03 22:18:14', '1', '2022-04-03 22:18:14', b'0'); COMMIT; -- ---------------------------- @@ -1157,11 +1153,11 @@ CREATE TABLE `system_dept` ( -- ---------------------------- BEGIN; INSERT INTO `system_dept` (`id`, `name`, `parent_id`, `sort`, `leader_user_id`, `phone`, `email`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (100, '芋道源码', 0, 0, 1, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '103', '2022-01-14 01:04:05', b'0', 1); -INSERT INTO `system_dept` (`id`, `name`, `parent_id`, `sort`, `leader_user_id`, `phone`, `email`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (101, '深圳总公司', 100, 1, 104, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '1', '2022-02-22 19:47:48', b'0', 1); +INSERT INTO `system_dept` (`id`, `name`, `parent_id`, `sort`, `leader_user_id`, `phone`, `email`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (101, '深圳总公司', 100, 1, 104, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '1', '2022-05-16 20:25:23', b'0', 1); INSERT INTO `system_dept` (`id`, `name`, `parent_id`, `sort`, `leader_user_id`, `phone`, `email`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (102, '长沙分公司', 100, 2, NULL, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '', '2021-12-15 05:01:40', b'0', 1); INSERT INTO `system_dept` (`id`, `name`, `parent_id`, `sort`, `leader_user_id`, `phone`, `email`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (103, '研发部门', 101, 1, 104, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '103', '2022-01-14 01:04:14', b'0', 1); INSERT INTO `system_dept` (`id`, `name`, `parent_id`, `sort`, `leader_user_id`, `phone`, `email`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (104, '市场部门', 101, 2, NULL, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '', '2021-12-15 05:01:38', b'0', 1); -INSERT INTO `system_dept` (`id`, `name`, `parent_id`, `sort`, `leader_user_id`, `phone`, `email`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (105, '测试部门', 101, 3, NULL, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '', '2021-12-15 05:01:37', b'0', 1); +INSERT INTO `system_dept` (`id`, `name`, `parent_id`, `sort`, `leader_user_id`, `phone`, `email`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (105, '测试部门', 101, 3, NULL, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '1', '2022-05-16 20:25:15', b'0', 1); INSERT INTO `system_dept` (`id`, `name`, `parent_id`, `sort`, `leader_user_id`, `phone`, `email`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (106, '财务部门', 101, 4, 103, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '103', '2022-01-15 21:32:22', b'0', 1); INSERT INTO `system_dept` (`id`, `name`, `parent_id`, `sort`, `leader_user_id`, `phone`, `email`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (107, '运维部门', 101, 5, NULL, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '', '2021-12-15 05:01:33', b'0', 1); INSERT INTO `system_dept` (`id`, `name`, `parent_id`, `sort`, `leader_user_id`, `phone`, `email`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (108, '市场部门', 102, 1, NULL, '15888888888', 'ry@qq.com', 0, 'admin', '2021-01-05 17:03:47', '1', '2022-02-16 08:35:45', b'0', 1); @@ -1190,7 +1186,7 @@ CREATE TABLE `system_dict_data` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1155 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典数据表'; +) ENGINE = InnoDB AUTO_INCREMENT = 1162 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典数据表'; -- ---------------------------- -- Records of system_dict_data @@ -1264,7 +1260,6 @@ INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `st INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (81, 101, '社交登录', '101', 'system_login_type', 0, 'info', '', '社交登录', '1', '2021-10-06 00:52:17', '1', '2022-02-16 13:11:40', b'0'); INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (82, 102, 'Mock 登录', '102', 'system_login_type', 0, 'danger', '', 'Mock 登录', '1', '2021-10-06 00:52:32', '1', '2022-02-16 13:11:44', b'0'); INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (83, 200, '主动登出', '200', 'system_login_type', 0, 'primary', '', '主动登出', '1', '2021-10-06 00:52:58', '1', '2022-02-16 13:11:49', b'0'); -INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (84, 201, '超时登出', '201', 'system_login_type', 0, 'info', '', '超时登出', '1', '2021-10-06 00:53:17', '1', '2022-02-16 13:11:53', b'0'); INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (85, 202, '强制登出', '202', 'system_login_type', 0, 'danger', '', '强制退出', '1', '2021-10-06 00:53:41', '1', '2022-02-16 13:11:57', b'0'); INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (86, 0, '病假', '1', 'bpm_oa_leave_type', 0, 'primary', '', NULL, '1', '2021-09-21 22:35:28', '1', '2022-02-16 10:00:41', b'0'); INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (87, 1, '事假', '2', 'bpm_oa_leave_type', 0, 'info', '', NULL, '1', '2021-09-21 22:36:11', '1', '2022-02-16 10:00:49', b'0'); @@ -1326,6 +1321,12 @@ INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `st INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1152, 11, 'FTP 服务器', '11', 'infra_file_storage', 0, 'default', '', NULL, '1', '2022-03-15 00:26:06', '1', '2022-03-15 00:26:10', b'0'); INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1153, 12, 'SFTP 服务器', '12', 'infra_file_storage', 0, 'default', '', NULL, '1', '2022-03-15 00:26:22', '1', '2022-03-15 00:26:22', b'0'); INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1154, 20, 'S3 对象存储', '20', 'infra_file_storage', 0, 'default', '', NULL, '1', '2022-03-15 00:26:31', '1', '2022-03-15 00:26:45', b'0'); +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1155, 103, '短信登录', '103', 'system_login_type', 0, 'default', '', NULL, '1', '2022-05-09 23:57:58', '1', '2022-05-09 23:58:09', b'0'); +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1156, 1, 'password', 'password', 'system_oauth2_grant_type', 0, 'default', '', '密码模式', '1', '2022-05-12 00:22:05', '1', '2022-05-11 16:26:01', b'0'); +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1157, 2, 'authorization_code', 'authorization_code', 'system_oauth2_grant_type', 0, 'primary', '', '授权码模式', '1', '2022-05-12 00:22:59', '1', '2022-05-11 16:26:02', b'0'); +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1158, 3, 'implicit', 'implicit', 'system_oauth2_grant_type', 0, 'success', '', '简化模式', '1', '2022-05-12 00:23:40', '1', '2022-05-11 16:26:05', b'0'); +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1159, 4, 'client_credentials', 'client_credentials', 'system_oauth2_grant_type', 0, 'default', '', '客户端模式', '1', '2022-05-12 00:23:51', '1', '2022-05-11 16:26:08', b'0'); +INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1160, 5, 'refresh_token', 'refresh_token', 'system_oauth2_grant_type', 0, 'info', '', '刷新模式', '1', '2022-05-12 00:24:02', '1', '2022-05-11 16:26:11', b'0'); COMMIT; -- ---------------------------- @@ -1345,13 +1346,13 @@ CREATE TABLE `system_dict_type` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `dict_type`(`type` ASC) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 147 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典类型表'; +) ENGINE = InnoDB AUTO_INCREMENT = 149 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '字典类型表'; -- ---------------------------- -- Records of system_dict_type -- ---------------------------- BEGIN; -INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, '用户性别', 'system_user_sex', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2022-02-01 16:30:31', b'0'); +INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, '用户性别', 'system_user_sex', 0, NULL, 'admin', '2021-01-05 17:03:48', '1', '2022-05-16 20:29:32', b'0'); INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (6, '参数类型', 'infra_config_type', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2022-02-01 16:36:54', b'0'); INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (7, '通知类型', 'system_notice_type', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2022-02-01 16:35:26', b'0'); INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (9, '操作类型', 'system_operate_type', 0, NULL, 'admin', '2021-01-05 17:03:48', '1', '2022-02-16 09:32:21', b'0'); @@ -1359,7 +1360,7 @@ INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creat INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (11, 'Boolean 是否类型', 'infra_boolean_string', 0, 'boolean 转是否', '', '2021-01-19 03:20:08', '', '2022-02-01 16:37:10', b'0'); INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (104, '登陆结果', 'system_login_result', 0, '登陆结果', '', '2021-01-18 06:17:11', '', '2022-02-01 16:36:00', b'0'); INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (105, 'Redis 超时类型', 'infra_redis_timeout_type', 0, 'RedisKeyDefine.TimeoutTypeEnum', '', '2021-01-26 00:52:50', '', '2022-02-01 16:50:29', b'0'); -INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (106, '代码生成模板类型', 'infra_codegen_template_type', 0, NULL, '', '2021-02-05 07:08:06', '', '2022-03-10 16:33:42', b'0'); +INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (106, '代码生成模板类型', 'infra_codegen_template_type', 0, NULL, '', '2021-02-05 07:08:06', '1', '2022-05-16 20:26:50', b'0'); INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (107, '定时任务状态', 'infra_job_status', 0, NULL, '', '2021-02-07 07:44:16', '', '2022-02-01 16:51:11', b'0'); INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (108, '定时任务日志状态', 'infra_job_log_status', 0, NULL, '', '2021-02-08 10:03:51', '', '2022-02-01 16:50:43', b'0'); INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (109, '用户类型', 'user_type', 0, NULL, '', '2021-02-26 00:15:51', '', '2021-02-26 00:15:51', b'0'); @@ -1390,6 +1391,7 @@ INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creat INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (144, '代码生成的场景枚举', 'infra_codegen_scene', 0, '代码生成的场景枚举', '1', '2022-02-02 13:14:45', '1', '2022-03-10 16:33:46', b'0'); INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (145, '角色类型', 'system_role_type', 0, '角色类型', '1', '2022-02-16 13:01:46', '1', '2022-02-16 13:01:46', b'0'); INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (146, '文件存储器', 'infra_file_storage', 0, '文件存储器', '1', '2022-03-15 00:24:38', '1', '2022-03-15 00:24:38', b'0'); +INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (147, 'OAuth 2.0 授权类型', 'system_oauth2_grant_type', 0, 'OAuth 2.0 授权类型(模式)', '1', '2022-05-12 00:20:52', '1', '2022-05-11 16:25:49', b'0'); COMMIT; -- ---------------------------- @@ -1409,7 +1411,7 @@ CREATE TABLE `system_error_code` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 5453 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '错误码表'; +) ENGINE = InnoDB AUTO_INCREMENT = 5829 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '错误码表'; -- ---------------------------- -- Records of system_error_code @@ -1438,7 +1440,7 @@ CREATE TABLE `system_login_log` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1247 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统访问记录'; +) ENGINE = InnoDB AUTO_INCREMENT = 1416 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统访问记录'; -- ---------------------------- -- Records of system_login_log @@ -1469,7 +1471,7 @@ CREATE TABLE `system_menu` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1261 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '菜单权限表'; +) ENGINE = InnoDB AUTO_INCREMENT = 1268 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '菜单权限表'; -- ---------------------------- -- Records of system_menu @@ -1487,7 +1489,7 @@ INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_i INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (106, '配置管理', '', 2, 6, 2, 'config', 'edit', 'infra/config/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (107, '通知公告', '', 2, 8, 1, 'notice', 'message', 'system/notice/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (108, '审计日志', '', 1, 9, 1, 'log', 'log', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (109, '在线用户', 'system:user-session:list', 2, 10, 1, 'user-session', 'online', 'system/session/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (109, '令牌管理', '', 2, 2, 1261, 'token', 'online', 'system/oauth2/token/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-05-11 23:31:42', b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (110, '定时任务', '', 2, 12, 2, 'job', 'job', 'infra/job/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (111, 'MySQL 监控', '', 2, 9, 2, 'druid', 'druid', 'infra/druid/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (112, 'Java 监控', '', 2, 11, 2, 'admin-server', 'server', 'infra/server/index', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', b'0'); @@ -1540,8 +1542,8 @@ INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_i INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1042, '日志导出', 'system:operate-log:export', 3, 2, 500, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1043, '登录查询', 'system:login-log:query', 3, 1, 501, '#', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1045, '日志导出', 'system:login-log:export', 3, 3, 501, '#', '#', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1046, '在线查询', 'system:user-session:list', 3, 1, 109, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1048, '单条强退', 'system:user-session:delete', 3, 3, 109, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1046, '令牌列表', 'system:oauth2-token:page', 3, 1, 109, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-05-09 23:54:42', b'0'); +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1048, '令牌删除', 'system:oauth2-token:delete', 3, 2, 109, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '1', '2022-05-09 23:54:53', b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1050, '任务新增', 'infra:job:create', 3, 2, 110, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1051, '任务修改', 'infra:job:update', 3, 3, 110, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1052, '任务删除', 'infra:job:delete', 3, 4, 110, '', '', '', 0, b'1', b'1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', b'0'); @@ -1699,6 +1701,12 @@ INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_i INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1258, '数据源配置更新', 'infra:data-source-config:update', 3, 3, 1255, '', '', '', 0, b'1', b'1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1259, '数据源配置删除', 'infra:data-source-config:delete', 3, 4, 1255, '', '', '', 0, b'1', b'1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', b'0'); INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1260, '数据源配置导出', 'infra:data-source-config:export', 3, 5, 1255, '', '', '', 0, b'1', b'1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', b'0'); +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1261, 'OAuth 2.0', '', 1, 10, 1, 'oauth2', 'people', NULL, 0, b'1', b'1', '1', '2022-05-09 23:38:17', '1', '2022-05-11 23:51:46', b'0'); +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1263, '应用管理', '', 2, 0, 1261, 'oauth2/application', 'tool', 'system/oauth2/client/index', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 23:31:36', b'0'); +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1264, '客户端查询', 'system:oauth2-client:query', 3, 1, 1263, '', '', '', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:06', b'0'); +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1265, '客户端创建', 'system:oauth2-client:create', 3, 2, 1263, '', '', '', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:23', b'0'); +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1266, '客户端更新', 'system:oauth2-client:update', 3, 3, 1263, '', '', '', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:28', b'0'); +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1267, '客户端删除', 'system:oauth2-client:delete', 3, 4, 1263, '', '', '', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:33', b'0'); COMMIT; -- ---------------------------- @@ -1724,11 +1732,159 @@ CREATE TABLE `system_notice` ( -- Records of system_notice -- ---------------------------- BEGIN; -INSERT INTO `system_notice` (`id`, `title`, `content`, `type`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1, '温馨提醒:2018-07-01 若依新版本发布啦', '

新版本内容133

', 2, 0, 'admin', '2021-01-05 17:03:48', '1', '2022-02-15 19:47:20', b'0', 1); -INSERT INTO `system_notice` (`id`, `title`, `content`, `type`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (2, '维护通知:2018-07-01 若依系统凌晨维护', '维护内容', 1, 0, 'admin', '2021-01-05 17:03:48', '', '2021-12-15 05:02:22', b'0', 1); +INSERT INTO `system_notice` (`id`, `title`, `content`, `type`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1, '芋道的公众', '

新版本内容133

', 1, 0, 'admin', '2021-01-05 17:03:48', '1', '2022-05-04 21:00:20', b'0', 1); +INSERT INTO `system_notice` (`id`, `title`, `content`, `type`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (2, '维护通知:2018-07-01 若依系统凌晨维护', '

维护内容

', 2, 1, 'admin', '2021-01-05 17:03:48', '1', '2022-05-11 12:34:24', b'0', 1); INSERT INTO `system_notice` (`id`, `title`, `content`, `type`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (4, '我是测试标题', '

哈哈哈哈123

', 1, 0, '110', '2022-02-22 01:01:25', '110', '2022-02-22 01:01:46', b'0', 121); COMMIT; +-- ---------------------------- +-- Table structure for system_oauth2_access_token +-- ---------------------------- +DROP TABLE IF EXISTS `system_oauth2_access_token`; +CREATE TABLE `system_oauth2_access_token` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号', + `user_id` bigint NOT NULL COMMENT '用户编号', + `user_type` tinyint NOT NULL COMMENT '用户类型', + `access_token` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '访问令牌', + `refresh_token` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '刷新令牌', + `client_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户端编号', + `scopes` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '授权范围', + `expires_time` datetime NOT NULL COMMENT '过期时间', + `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 172 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'OAuth2 访问令牌'; + +-- ---------------------------- +-- Records of system_oauth2_access_token +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for system_oauth2_approve +-- ---------------------------- +DROP TABLE IF EXISTS `system_oauth2_approve`; +CREATE TABLE `system_oauth2_approve` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号', + `user_id` bigint NOT NULL COMMENT '用户编号', + `user_type` tinyint NOT NULL COMMENT '用户类型', + `client_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户端编号', + `scope` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '授权范围', + `approved` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否接受', + `expires_time` datetime NOT NULL COMMENT '过期时间', + `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 80 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'OAuth2 批准表'; + +-- ---------------------------- +-- Records of system_oauth2_approve +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for system_oauth2_client +-- ---------------------------- +DROP TABLE IF EXISTS `system_oauth2_client`; +CREATE TABLE `system_oauth2_client` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号', + `client_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户端编号', + `secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户端密钥', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '应用名', + `logo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '应用图标', + `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '应用描述', + `status` tinyint NOT NULL COMMENT '状态', + `access_token_validity_seconds` int NOT NULL COMMENT '访问令牌的有效期', + `refresh_token_validity_seconds` int NOT NULL COMMENT '刷新令牌的有效期', + `redirect_uris` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '可重定向的 URI 地址', + `authorized_grant_types` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '授权类型', + `scopes` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '授权范围', + `auto_approve_scopes` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '自动通过的授权范围', + `authorities` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '权限', + `resource_ids` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '资源', + `additional_information` varchar(4096) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '附加信息', + `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 41 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'OAuth2 客户端表'; + +-- ---------------------------- +-- Records of system_oauth2_client +-- ---------------------------- +BEGIN; +INSERT INTO `system_oauth2_client` (`id`, `client_id`, `secret`, `name`, `logo`, `description`, `status`, `access_token_validity_seconds`, `refresh_token_validity_seconds`, `redirect_uris`, `authorized_grant_types`, `scopes`, `auto_approve_scopes`, `authorities`, `resource_ids`, `additional_information`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, 'default', 'admin123', '芋道源码', 'http://test.yudao.iocoder.cn/a5e2e244368878a366b516805a4aabf1.png', '我是描述', 0, 999999999, 8640, '[\"https://www.iocoder.cn\",\"https://doc.iocoder.cn\"]', '[\"password\",\"authorization_code\",\"implicit\",\"refresh_token\"]', '[\"user.read\",\"user.write\"]', '[]', '[\"user.read\",\"user.write\"]', '[]', '{}', '1', '2022-05-11 21:47:12', '1', '2022-05-23 13:33:11', b'0'); +INSERT INTO `system_oauth2_client` (`id`, `client_id`, `secret`, `name`, `logo`, `description`, `status`, `access_token_validity_seconds`, `refresh_token_validity_seconds`, `redirect_uris`, `authorized_grant_types`, `scopes`, `auto_approve_scopes`, `authorities`, `resource_ids`, `additional_information`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (40, 'test', 'test2', 'biubiu', 'http://test.yudao.iocoder.cn/277a899d573723f1fcdfb57340f00379.png', NULL, 0, 1800, 43200, '[\"https://www.iocoder.cn\"]', '[\"password\",\"authorization_code\",\"implicit\"]', '[\"user_info\",\"projects\"]', '[\"user_info\"]', '[]', '[]', '{}', '1', '2022-05-12 00:28:20', '1', '2022-05-14 15:11:31', b'0'); +COMMIT; + +-- ---------------------------- +-- Table structure for system_oauth2_code +-- ---------------------------- +DROP TABLE IF EXISTS `system_oauth2_code`; +CREATE TABLE `system_oauth2_code` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号', + `user_id` bigint NOT NULL COMMENT '用户编号', + `user_type` tinyint NOT NULL COMMENT '用户类型', + `code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '授权码', + `client_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户端编号', + `scopes` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '授权范围', + `expires_time` datetime NOT NULL COMMENT '过期时间', + `redirect_uri` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '可重定向的 URI 地址', + `state` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '状态', + `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'OAuth2 授权码表'; + +-- ---------------------------- +-- Records of system_oauth2_code +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for system_oauth2_refresh_token +-- ---------------------------- +DROP TABLE IF EXISTS `system_oauth2_refresh_token`; +CREATE TABLE `system_oauth2_refresh_token` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号', + `user_id` bigint NOT NULL COMMENT '用户编号', + `refresh_token` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '刷新令牌', + `user_type` tinyint NOT NULL COMMENT '用户类型', + `client_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '客户端编号', + `scopes` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '授权范围', + `expires_time` datetime NOT NULL COMMENT '过期时间', + `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 106 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '刷新令牌'; + +-- ---------------------------- +-- Records of system_oauth2_refresh_token +-- ---------------------------- +BEGIN; +COMMIT; + -- ---------------------------- -- Table structure for system_operate_log -- ---------------------------- @@ -1761,7 +1917,7 @@ CREATE TABLE `system_operate_log` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1943 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '操作日志记录'; +) ENGINE = InnoDB AUTO_INCREMENT = 2214 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '操作日志记录'; -- ---------------------------- -- Records of system_operate_log @@ -1795,7 +1951,7 @@ CREATE TABLE `system_post` ( BEGIN; INSERT INTO `system_post` (`id`, `code`, `name`, `sort`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1, 'ceo', '董事长', 1, 0, '', 'admin', '2021-01-06 17:03:48', '1', '2022-04-19 16:53:39', b'0', 1); INSERT INTO `system_post` (`id`, `code`, `name`, `sort`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (2, 'se', '项目经理', 2, 0, '', 'admin', '2021-01-05 17:03:48', '1', '2021-12-12 10:47:47', b'0', 1); -INSERT INTO `system_post` (`id`, `code`, `name`, `sort`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (4, 'user', '普通员工', 4, 0, '111', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 00:59:35', b'0', 1); +INSERT INTO `system_post` (`id`, `code`, `name`, `sort`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (4, 'user', '普通员工', 4, 0, '111', 'admin', '2021-01-05 17:03:48', '1', '2022-05-04 22:46:35', b'0', 1); COMMIT; -- ---------------------------- @@ -1819,7 +1975,7 @@ CREATE TABLE `system_role` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 112 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '角色信息表'; +) ENGINE = InnoDB AUTO_INCREMENT = 114 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '角色信息表'; -- ---------------------------- -- Records of system_role @@ -1831,6 +1987,7 @@ INSERT INTO `system_role` (`id`, `name`, `code`, `sort`, `data_scope`, `data_sco INSERT INTO `system_role` (`id`, `name`, `code`, `sort`, `data_scope`, `data_scope_dept_ids`, `status`, `type`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (109, '租户管理员', 'tenant_admin', 0, 1, '', 0, 1, '系统自动生成', '1', '2022-02-22 00:56:14', '1', '2022-02-22 00:56:14', b'0', 121); INSERT INTO `system_role` (`id`, `name`, `code`, `sort`, `data_scope`, `data_scope_dept_ids`, `status`, `type`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (110, '测试角色', 'test', 0, 1, '[]', 0, 2, '嘿嘿', '110', '2022-02-23 00:14:34', '110', '2022-02-23 13:14:58', b'0', 121); INSERT INTO `system_role` (`id`, `name`, `code`, `sort`, `data_scope`, `data_scope_dept_ids`, `status`, `type`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (111, '租户管理员', 'tenant_admin', 0, 1, '', 0, 1, '系统自动生成', '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122); +INSERT INTO `system_role` (`id`, `name`, `code`, `sort`, `data_scope`, `data_scope_dept_ids`, `status`, `type`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (113, '租户管理员', 'tenant_admin', 0, 1, '', 0, 1, '系统自动生成', '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); COMMIT; -- ---------------------------- @@ -1848,7 +2005,7 @@ CREATE TABLE `system_role_menu` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1695 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '角色和菜单关联表'; +) ENGINE = InnoDB AUTO_INCREMENT = 1729 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '角色和菜单关联表'; -- ---------------------------- -- Records of system_role_menu @@ -2045,6 +2202,23 @@ INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_t INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1692, 101, 114, '1', '2022-04-01 22:21:37', '1', '2022-04-01 22:21:37', b'0', 1); INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1693, 101, 115, '1', '2022-04-01 22:21:37', '1', '2022-04-01 22:21:37', b'0', 1); INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1694, 101, 116, '1', '2022-04-01 22:21:37', '1', '2022-04-01 22:21:37', b'0', 1); +INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1712, 113, 1024, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); +INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1713, 113, 1025, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); +INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1714, 113, 1, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); +INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1715, 113, 102, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); +INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1716, 113, 103, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); +INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1717, 113, 104, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); +INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1718, 113, 1013, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); +INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1719, 113, 1014, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); +INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1720, 113, 1015, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); +INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1721, 113, 1016, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); +INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1722, 113, 1017, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); +INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1723, 113, 1018, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); +INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1724, 113, 1019, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); +INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1725, 113, 1020, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); +INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1726, 113, 1021, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); +INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1727, 113, 1022, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); +INSERT INTO `system_role_menu` (`id`, `role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1728, 113, 1023, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); COMMIT; -- ---------------------------- @@ -2101,7 +2275,7 @@ BEGIN; INSERT INTO `system_sms_channel` (`id`, `signature`, `code`, `status`, `remark`, `api_key`, `api_secret`, `callback_url`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, '芋道', 'YUN_PIAN', 0, '呵呵呵哒', '1555a14277cb8a608cf45a9e6a80d510', NULL, 'http://vdwapu.natappfree.cc/admin-api/system/sms/callback/yunpian', '', '2021-03-31 06:12:20', '1', '2022-02-23 16:48:44', b'0'); INSERT INTO `system_sms_channel` (`id`, `signature`, `code`, `status`, `remark`, `api_key`, `api_secret`, `callback_url`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2, 'Ballcat', 'ALIYUN', 0, '啦啦啦', 'LTAI5tCnKso2uG3kJ5gRav88', 'fGJ5SNXL7P1NHNRmJ7DJaMJGPyE55C', NULL, '', '2021-03-31 11:53:10', '1', '2021-04-14 00:08:37', b'0'); INSERT INTO `system_sms_channel` (`id`, `signature`, `code`, `status`, `remark`, `api_key`, `api_secret`, `callback_url`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (4, '测试渠道', 'DEBUG_DING_TALK', 0, '123', '696b5d8ead48071237e4aa5861ff08dbadb2b4ded1c688a7b7c9afc615579859', 'SEC5c4e5ff888bc8a9923ae47f59e7ccd30af1f14d93c55b4e2c9cb094e35aeed67', NULL, '1', '2021-04-13 00:23:14', '1', '2022-03-27 20:29:49', b'0'); -INSERT INTO `system_sms_channel` (`id`, `signature`, `code`, `status`, `remark`, `api_key`, `api_secret`, `callback_url`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (6, '测试演示', 'DEBUG_DING_TALK', 0, NULL, '696b5d8ead48071237e4aa5861ff08dbadb2b4ded1c688a7b7c9afc615579859', 'SEC5c4e5ff888bc8a9923ae47f59e7ccd30af1f14d93c55b4e2c9cb094e35aeed67', NULL, '1', '2022-04-10 23:07:59', '1', '2022-04-10 23:07:59', b'0'); +INSERT INTO `system_sms_channel` (`id`, `signature`, `code`, `status`, `remark`, `api_key`, `api_secret`, `callback_url`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (6, '测试演示', 'DEBUG_DING_TALK', 0, NULL, '696b5d8ead48071237e4aa5861ff08dbadb2b4ded1c688a7b7c9afc615579859', 'SEC5c4e5ff888bc8a9923ae47f59e7ccd30af1f14d93c55b4e2c9cb094e35aeed67', NULL, '1', '2022-04-10 23:07:59', '1', '2022-05-16 20:34:49', b'0'); COMMIT; -- ---------------------------- @@ -2126,7 +2300,7 @@ CREATE TABLE `system_sms_code` ( `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_mobile`(`mobile` ASC) USING BTREE COMMENT '手机号' -) ENGINE = InnoDB AUTO_INCREMENT = 467 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '手机验证码'; +) ENGINE = InnoDB AUTO_INCREMENT = 468 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '手机验证码'; -- ---------------------------- -- Records of system_sms_code @@ -2169,7 +2343,7 @@ CREATE TABLE `system_sms_log` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 138 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '短信日志'; +) ENGINE = InnoDB AUTO_INCREMENT = 144 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '短信日志'; -- ---------------------------- -- Records of system_sms_log @@ -2199,7 +2373,7 @@ CREATE TABLE `system_sms_template` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '短信模板'; +) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '短信模板'; -- ---------------------------- -- Records of system_sms_template @@ -2239,7 +2413,7 @@ CREATE TABLE `system_social_user` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '社交用户表'; +) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '社交用户表'; -- ---------------------------- -- Records of system_social_user @@ -2264,7 +2438,7 @@ CREATE TABLE `system_social_user_bind` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '社交绑定表'; +) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '社交绑定表'; -- ---------------------------- -- Records of system_social_user_bind @@ -2293,14 +2467,14 @@ CREATE TABLE `system_tenant` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 123 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '租户表'; +) ENGINE = InnoDB AUTO_INCREMENT = 125 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '租户表'; -- ---------------------------- -- Records of system_tenant -- ---------------------------- BEGIN; INSERT INTO `system_tenant` (`id`, `name`, `contact_user_id`, `contact_name`, `contact_mobile`, `status`, `domain`, `package_id`, `expire_time`, `account_count`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, '芋道源码', NULL, '芋艿', '17321315478', 0, 'https://www.iocoder.cn', 0, '2099-02-19 17:14:16', 9999, '1', '2021-01-05 17:03:47', '1', '2022-02-23 12:15:11', b'0'); -INSERT INTO `system_tenant` (`id`, `name`, `contact_user_id`, `contact_name`, `contact_mobile`, `status`, `domain`, `package_id`, `expire_time`, `account_count`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (121, '小租户', 110, '小王2', '15601691300', 0, 'http://www.iocoder.cn', 111, '2024-03-11 00:00:00', 20, '1', '2022-02-22 00:56:14', '1', '2022-03-19 18:37:20', b'0'); +INSERT INTO `system_tenant` (`id`, `name`, `contact_user_id`, `contact_name`, `contact_mobile`, `status`, `domain`, `package_id`, `expire_time`, `account_count`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (121, '小租户', 110, '小王2', '15601691300', 0, 'http://www.iocoder.cn', 111, '2024-03-11 00:00:00', 20, '1', '2022-02-22 00:56:14', '1', '2022-05-17 10:03:59', b'0'); INSERT INTO `system_tenant` (`id`, `name`, `contact_user_id`, `contact_name`, `contact_mobile`, `status`, `domain`, `package_id`, `expire_time`, `account_count`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (122, '测试租户', 113, '芋道', '15601691300', 0, 'https://www.iocoder.cn', 111, '2022-04-30 00:00:00', 50, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0'); COMMIT; @@ -2344,7 +2518,7 @@ CREATE TABLE `system_user_post` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 115 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户岗位表'; +) ENGINE = InnoDB AUTO_INCREMENT = 116 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户岗位表'; -- ---------------------------- -- Records of system_user_post @@ -2353,6 +2527,7 @@ BEGIN; INSERT INTO `system_user_post` (`id`, `user_id`, `post_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (112, 1, 1, 'admin', '2022-05-02 07:25:24', 'admin', '2022-05-02 07:25:24', b'0', 1); INSERT INTO `system_user_post` (`id`, `user_id`, `post_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (113, 100, 1, 'admin', '2022-05-02 07:25:24', 'admin', '2022-05-02 07:25:24', b'0', 1); INSERT INTO `system_user_post` (`id`, `user_id`, `post_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (114, 114, 3, 'admin', '2022-05-02 07:25:24', 'admin', '2022-05-02 07:25:24', b'0', 1); +INSERT INTO `system_user_post` (`id`, `user_id`, `post_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (115, 104, 1, '1', '2022-05-16 19:36:28', '1', '2022-05-16 19:36:28', b'0', 1); COMMIT; -- ---------------------------- @@ -2364,24 +2539,24 @@ CREATE TABLE `system_user_role` ( `user_id` bigint NOT NULL COMMENT '用户ID', `role_id` bigint NOT NULL COMMENT '角色ID', `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户和角色关联表'; +) ENGINE = InnoDB AUTO_INCREMENT = 20 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户和角色关联表'; -- ---------------------------- -- Records of system_user_role -- ---------------------------- BEGIN; -INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1, 1, 1, '', NULL, '', NULL, b'0', 1); -INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (2, 2, 2, '', NULL, '', NULL, b'0', 1); -INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (4, 100, 101, '', NULL, '', NULL, b'0', 1); -INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (5, 100, 1, '', NULL, '', NULL, b'0', 1); -INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (6, 100, 2, '', NULL, '', NULL, b'0', 1); -INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (7, 104, 101, '', NULL, '', NULL, b'0', 1); +INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1, 1, 1, '', '2022-01-11 13:19:45', '', '2022-05-12 12:35:17', b'0', 1); +INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (2, 2, 2, '', '2022-01-11 13:19:45', '', '2022-05-12 12:35:13', b'0', 1); +INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (4, 100, 101, '', '2022-01-11 13:19:45', '', '2022-05-12 12:35:13', b'0', 1); +INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (5, 100, 1, '', '2022-01-11 13:19:45', '', '2022-05-12 12:35:12', b'0', 1); +INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (6, 100, 2, '', '2022-01-11 13:19:45', '', '2022-05-12 12:35:11', b'0', 1); +INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (7, 104, 101, '', '2022-01-11 13:19:45', '', '2022-05-12 12:35:11', b'0', 1); INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (10, 103, 1, '1', '2022-01-11 13:19:45', '1', '2022-01-11 13:19:45', b'0', 1); INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (11, 107, 106, '1', '2022-02-20 22:59:33', '1', '2022-02-20 22:59:33', b'0', 118); INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (12, 108, 107, '1', '2022-02-20 23:00:50', '1', '2022-02-20 23:00:50', b'0', 119); @@ -2390,6 +2565,8 @@ INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_t INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (15, 111, 110, '110', '2022-02-23 13:14:38', '110', '2022-02-23 13:14:38', b'0', 121); INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (16, 113, 111, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', b'0', 122); INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (17, 114, 101, '1', '2022-03-19 21:51:13', '1', '2022-03-19 21:51:13', b'0', 1); +INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (18, 1, 2, '1', '2022-05-12 20:39:29', '1', '2022-05-12 20:39:29', b'0', 1); +INSERT INTO `system_user_role` (`id`, `user_id`, `role_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (19, 116, 113, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); COMMIT; -- ---------------------------- @@ -2412,7 +2589,7 @@ CREATE TABLE `system_user_session` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户在线 Session'; +) ENGINE = InnoDB AUTO_INCREMENT = 17 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户在线 Session'; -- ---------------------------- -- Records of system_user_session @@ -2447,16 +2624,16 @@ CREATE TABLE `system_users` ( `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `idx_username`(`username` ASC, `update_time` ASC, `tenant_id` ASC) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 116 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户信息表'; +) ENGINE = InnoDB AUTO_INCREMENT = 117 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户信息表'; -- ---------------------------- -- Records of system_users -- ---------------------------- BEGIN; -INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1, 'admin', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道源码', '管理员', 103, '[1]', 'aoteman@126.com', '15612345678', 1, 'http://test.yudao.iocoder.cn/48934f2f-92d4-4250-b917-d10d2b262c6a', 0, '127.0.0.1', '2022-05-02 12:32:50', 'admin', '2021-01-05 17:03:47', NULL, '2022-05-02 12:32:50', b'0', 1); -INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (100, 'yudao', '$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', '芋道', '不要吓我', 104, '[1]', 'yudao@iocoder.cn', '15601691300', 1, '', 1, '', NULL, '', '2021-01-07 09:07:17', '104', '2021-12-16 09:26:10', b'0', 1); +INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (1, 'admin', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道源码', '管理员', 103, '[1]', 'aoteman@126.com', '15612345678', 1, 'http://test.yudao.iocoder.cn/48934f2f-92d4-4250-b917-d10d2b262c6a', 0, '127.0.0.1', '2022-05-23 20:27:29', 'admin', '2021-01-05 17:03:47', NULL, '2022-05-23 20:27:29', b'0', 1); +INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (100, 'yudao', '$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', '芋道', '不要吓我', 104, '[1]', 'yudao@iocoder.cn', '15601691300', 1, '', 1, '127.0.0.1', '2022-05-22 19:35:33', '', '2021-01-07 09:07:17', NULL, '2022-05-22 19:35:33', b'0', 1); INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (103, 'yuanma', '$2a$10$wWoPT7sqriM2O1YXRL.je.GiL538OR6ZTN8aQZr9JAGdnpCH2tpYe', '源码', NULL, 106, NULL, 'yuanma@iocoder.cn', '15601701300', 0, '', 0, '127.0.0.1', '2022-01-18 00:33:40', '', '2021-01-13 23:50:35', NULL, '2022-01-18 00:33:40', b'0', 1); -INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (104, 'test', '$2a$10$e5RpuDCC0GYSt0Hvd2.CjujIXwgGct4SnXi6dVGxdgFsnqgEryk5a', '测试号', NULL, 107, '[]', '111@qq.com', '15601691200', 1, '', 0, '127.0.0.1', '2022-03-19 21:46:19', '', '2021-01-21 02:13:53', NULL, '2022-03-19 21:46:19', b'0', 1); +INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (104, 'test', '$2a$10$e5RpuDCC0GYSt0Hvd2.CjujIXwgGct4SnXi6dVGxdgFsnqgEryk5a', '测试号', NULL, 107, '[1]', '111@qq.com', '15601691200', 1, '', 0, '127.0.0.1', '2022-03-19 21:46:19', '', '2021-01-21 02:13:53', '1', '2022-05-16 19:36:28', b'0', 1); INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (107, 'admin107', '$2a$10$dYOOBKMO93v/.ReCqzyFg.o67Tqk.bbc2bhrpyBGkIw9aypCtr2pm', '芋艿', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '', NULL, '1', '2022-02-20 22:59:33', '1', '2022-02-27 08:26:51', b'0', 118); INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (108, 'admin108', '$2a$10$y6mfvKoNYL1GXWak8nYwVOH.kCWqjactkzdoIDgiKl93WN3Ejg.Lu', '芋艿', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '', NULL, '1', '2022-02-20 23:00:50', '1', '2022-02-27 08:26:53', b'0', 119); INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (109, 'admin109', '$2a$10$JAqvH0tEc0I7dfDVBI7zyuB4E3j.uH6daIjV53.vUS6PknFkDJkuK', '芋艿', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '', NULL, '1', '2022-02-20 23:11:50', '1', '2022-02-27 08:26:56', b'0', 120); @@ -2465,7 +2642,8 @@ INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (112, 'newobject', '$2a$10$jh5MsR.ud/gKe3mVeUp5t.nEXGDSmHyv5OYjWQwHO8wlGmMSI9Twy', '新对象', NULL, NULL, '[]', '', '', 0, '', 0, '', NULL, '1', '2022-02-23 19:08:03', '1', '2022-02-23 19:08:03', b'0', 1); INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (113, 'aoteman', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '127.0.0.1', '2022-03-19 18:38:51', '1', '2022-03-07 21:37:58', NULL, '2022-03-19 18:38:51', b'0', 122); INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (114, 'hrmgr', '$2a$10$TR4eybBioGRhBmDBWkqWLO6NIh3mzYa8KBKDDB5woiGYFVlRAi.fu', 'hr 小姐姐', NULL, NULL, '[3]', '', '', 0, '', 0, '127.0.0.1', '2022-03-19 22:15:43', '1', '2022-03-19 21:50:58', NULL, '2022-03-19 22:15:43', b'0', 1); -INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (115, 'aotemane', '$2a$10$/WCwGHu1eq0wOVDd/u8HweJ0gJCHyLS6T7ndCqI8UXZAQom1etk2e', '1', '11', 100, '[]', '', '', 0, '', 0, '', NULL, '1', '2022-04-30 02:55:43', '1', '2022-04-30 02:55:43', b'0', 1); +INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (115, 'aotemane', '$2a$10$/WCwGHu1eq0wOVDd/u8HweJ0gJCHyLS6T7ndCqI8UXZAQom1etk2e', '1', '11', 101, '[]', '', '', 1, '', 0, '', NULL, '1', '2022-04-30 02:55:43', '1', '2022-05-22 20:18:45', b'0', 1); +INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`, `dept_id`, `post_ids`, `email`, `mobile`, `sex`, `avatar`, `status`, `login_ip`, `login_date`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES (116, '15601691302', '$2a$10$L5C4S0U6adBWMvFv1Wwl4.DI/NwYS3WIfLj5Q.Naqr5II8CmqsDZ6', '小豆', NULL, NULL, NULL, '', '', 0, '', 0, '', NULL, '1', '2022-05-17 10:07:10', '1', '2022-05-17 10:07:10', b'0', 124); COMMIT; SET FOREIGN_KEY_CHECKS = 1; diff --git a/sql/oracle/ruoyi-vue-pro.sql b/sql/oracle/ruoyi-vue-pro.sql index 8e27c25198..2137292ef7 100644 --- a/sql/oracle/ruoyi-vue-pro.sql +++ b/sql/oracle/ruoyi-vue-pro.sql @@ -11,7 +11,7 @@ Target Server Version : 110200 File Encoding : 65001 - Date: 02/05/2022 16:52:06 + Date: 26/05/2022 00:38:28 */ @@ -500,6 +500,7 @@ COMMENT ON TABLE "INFRA_API_ACCESS_LOG" IS 'API 访问日志表'; -- ---------------------------- -- Records of INFRA_API_ACCESS_LOG -- ---------------------------- +INSERT INTO "INFRA_API_ACCESS_LOG" ("ID", "TRACE_ID", "USER_ID", "USER_TYPE", "APPLICATION_NAME", "REQUEST_METHOD", "REQUEST_URL", "REQUEST_PARAMS", "USER_IP", "USER_AGENT", "BEGIN_TIME", "END_TIME", "DURATION", "RESULT_CODE", "RESULT_MSG", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('0', NULL, '0', '2', 'yudao-server', 'GET', '/admin-api/system/dict-data/list-all-simple', '{"query":{},"body":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36', TO_DATE('2022-05-13 01:26:54', 'SYYYY-MM-DD HH24:MI:SS'), TO_DATE('2022-05-13 01:26:54', 'SYYYY-MM-DD HH24:MI:SS'), '94', '0', NULL, NULL, TO_DATE('2022-05-13 01:26:54', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-05-13 01:26:54', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); COMMIT; COMMIT; @@ -2331,7 +2332,78 @@ COMMENT ON TABLE "SYSTEM_DICT_DATA" IS '字典数据表'; -- ---------------------------- -- Records of SYSTEM_DICT_DATA -- ---------------------------- -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1', '1', '男', '1', 'system_user_sex', '0', 'default', 'A', '性别男', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 01:30:55', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1143', '20', '流程发起人的一级领导', '20', 'bpm_task_assign_script', '0', NULL, NULL, '任务分配自定义脚本 - 流程发起人的一级领导', '103', TO_DATE('2022-01-15 21:24:31', 'SYYYY-MM-DD HH24:MI:SS'), '103', TO_DATE('2022-01-15 21:24:31', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1144', '21', '流程发起人的二级领导', '21', 'bpm_task_assign_script', '0', NULL, NULL, '任务分配自定义脚本 - 流程发起人的二级领导', '103', TO_DATE('2022-01-15 21:24:46', 'SYYYY-MM-DD HH24:MI:SS'), '103', TO_DATE('2022-01-15 21:24:57', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1145', '1', '管理后台', '1', 'infra_codegen_scene', '0', NULL, NULL, '代码生成的场景枚举 - 管理后台', '1', TO_DATE('2022-02-02 13:15:06', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-10 16:32:59', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1146', '2', '用户 APP', '2', 'infra_codegen_scene', '0', NULL, NULL, '代码生成的场景枚举 - 用户 APP', '1', TO_DATE('2022-02-02 13:15:19', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-10 16:33:03', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1147', '0', '未退款', '0', 'pay_refund_order_type', '0', 'info', NULL, '退款类型 - 未退款', '1', TO_DATE('2022-02-16 14:09:01', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 14:09:01', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1148', '10', '部分退款', '10', 'pay_refund_order_type', '0', 'success', NULL, '退款类型 - 部分退款', '1', TO_DATE('2022-02-16 14:09:25', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 14:11:38', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1149', '20', '全部退款', '20', 'pay_refund_order_type', '0', 'warning', NULL, '退款类型 - 全部退款', '1', TO_DATE('2022-02-16 14:11:33', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 14:11:33', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1150', '1', '数据库', '1', 'infra_file_storage', '0', 'default', NULL, NULL, '1', TO_DATE('2022-03-15 00:25:28', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-15 00:25:28', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1151', '10', '本地磁盘', '10', 'infra_file_storage', '0', 'default', NULL, NULL, '1', TO_DATE('2022-03-15 00:25:41', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-15 00:25:56', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1152', '11', 'FTP 服务器', '11', 'infra_file_storage', '0', 'default', NULL, NULL, '1', TO_DATE('2022-03-15 00:26:06', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-15 00:26:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1153', '12', 'SFTP 服务器', '12', 'infra_file_storage', '0', 'default', NULL, NULL, '1', TO_DATE('2022-03-15 00:26:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-15 00:26:22', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1154', '20', 'S3 对象存储', '20', 'infra_file_storage', '0', 'default', NULL, NULL, '1', TO_DATE('2022-03-15 00:26:31', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-15 00:26:45', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1155', '103', '短信登录', '103', 'system_login_type', '0', 'default', NULL, NULL, '1', TO_DATE('2022-05-09 23:57:58', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-09 23:58:09', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1156', '1', 'password', 'password', 'system_oauth2_grant_type', '0', 'default', NULL, '密码模式', '1', TO_DATE('2022-05-12 00:22:05', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-11 16:26:01', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1157', '2', 'authorization_code', 'authorization_code', 'system_oauth2_grant_type', '0', 'primary', NULL, '授权码模式', '1', TO_DATE('2022-05-12 00:22:59', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-11 16:26:02', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1158', '3', 'implicit', 'implicit', 'system_oauth2_grant_type', '0', 'success', NULL, '简化模式', '1', TO_DATE('2022-05-12 00:23:40', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-11 16:26:05', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1159', '4', 'client_credentials', 'client_credentials', 'system_oauth2_grant_type', '0', 'default', NULL, '客户端模式', '1', TO_DATE('2022-05-12 00:23:51', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-11 16:26:08', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1160', '5', 'refresh_token', 'refresh_token', 'system_oauth2_grant_type', '0', 'info', NULL, '刷新模式', '1', TO_DATE('2022-05-12 00:24:02', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-11 16:26:11', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('79', '2', '手动编辑', '2', 'system_error_code_type', '0', 'primary', NULL, NULL, '1', TO_DATE('2021-04-21 00:07:14', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 13:57:24', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('80', '100', '账号登录', '100', 'system_login_type', '0', 'primary', NULL, '账号登录', '1', TO_DATE('2021-10-06 00:52:02', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 13:11:34', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('81', '101', '社交登录', '101', 'system_login_type', '0', 'info', NULL, '社交登录', '1', TO_DATE('2021-10-06 00:52:17', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 13:11:40', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('83', '200', '主动登出', '200', 'system_login_type', '0', 'primary', NULL, '主动登出', '1', TO_DATE('2021-10-06 00:52:58', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 13:11:49', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('85', '202', '强制登出', '202', 'system_login_type', '0', 'danger', NULL, '强制退出', '1', TO_DATE('2021-10-06 00:53:41', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 13:11:57', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('86', '0', '病假', '1', 'bpm_oa_leave_type', '0', 'primary', NULL, NULL, '1', TO_DATE('2021-09-21 22:35:28', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 10:00:41', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('87', '1', '事假', '2', 'bpm_oa_leave_type', '0', 'info', NULL, NULL, '1', TO_DATE('2021-09-21 22:36:11', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 10:00:49', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('88', '2', '婚假', '3', 'bpm_oa_leave_type', '0', 'warning', NULL, NULL, '1', TO_DATE('2021-09-21 22:36:38', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 10:00:53', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('98', '1', 'v2', 'v2', 'pay_channel_wechat_version', '0', NULL, NULL, 'v2版本', '1', TO_DATE('2021-11-08 17:00:58', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-11-08 17:00:58', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('99', '2', 'v3', 'v3', 'pay_channel_wechat_version', '0', NULL, NULL, 'v3版本', '1', TO_DATE('2021-11-08 17:01:07', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-11-08 17:01:07', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('108', '1', 'RSA2', 'RSA2', 'pay_channel_alipay_sign_type', '0', NULL, NULL, 'RSA2', '1', TO_DATE('2021-11-18 15:39:29', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-11-18 15:39:29', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('109', '1', '公钥模式', '1', 'pay_channel_alipay_mode', '0', NULL, NULL, '公钥模式:privateKey + alipayPublicKey', '1', TO_DATE('2021-11-18 15:45:23', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-11-18 15:45:23', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('110', '2', '证书模式', '2', 'pay_channel_alipay_mode', '0', NULL, NULL, '证书模式:appCertContent + alipayPublicCertContent + rootCertContent', '1', TO_DATE('2021-11-18 15:45:40', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-11-18 15:45:40', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('111', '1', '线上', 'https://openapi.alipay.com/gateway.do', 'pay_channel_alipay_server_type', '0', NULL, NULL, '网关地址 - 线上', '1', TO_DATE('2021-11-18 16:59:32', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-11-21 17:37:29', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('112', '2', '沙箱', 'https://openapi.alipaydev.com/gateway.do', 'pay_channel_alipay_server_type', '0', NULL, NULL, '网关地址 - 沙箱', '1', TO_DATE('2021-11-18 16:59:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-11-21 17:37:39', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('113', '1', '微信 JSAPI 支付', 'wx_pub', 'pay_channel_code_type', '0', NULL, NULL, '微信 JSAPI(公众号) 支付', '1', TO_DATE('2021-12-03 10:40:24', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-04 16:41:00', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('114', '2', '微信小程序支付', 'wx_lite', 'pay_channel_code_type', '0', NULL, NULL, '微信小程序支付', '1', TO_DATE('2021-12-03 10:41:06', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-03 10:41:06', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('115', '3', '微信 App 支付', 'wx_app', 'pay_channel_code_type', '0', NULL, NULL, '微信 App 支付', '1', TO_DATE('2021-12-03 10:41:20', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-03 10:41:20', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('116', '4', '支付宝 PC 网站支付', 'alipay_pc', 'pay_channel_code_type', '0', NULL, NULL, '支付宝 PC 网站支付', '1', TO_DATE('2021-12-03 10:42:09', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-03 10:42:09', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('117', '5', '支付宝 Wap 网站支付', 'alipay_wap', 'pay_channel_code_type', '0', NULL, NULL, '支付宝 Wap 网站支付', '1', TO_DATE('2021-12-03 10:42:26', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-03 10:42:26', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('118', '6', '支付宝App 支付', 'alipay_app', 'pay_channel_code_type', '0', NULL, NULL, '支付宝App 支付', '1', TO_DATE('2021-12-03 10:42:55', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-03 10:42:55', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('119', '7', '支付宝扫码支付', 'alipay_qr', 'pay_channel_code_type', '0', NULL, NULL, '支付宝扫码支付', '1', TO_DATE('2021-12-03 10:43:10', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-03 10:43:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('120', '1', '通知成功', '10', 'pay_order_notify_status', '0', 'success', NULL, '通知成功', '1', TO_DATE('2021-12-03 11:02:41', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 13:59:13', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('121', '2', '通知失败', '20', 'pay_order_notify_status', '0', 'danger', NULL, '通知失败', '1', TO_DATE('2021-12-03 11:02:59', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 13:59:17', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('122', '3', '未通知', '0', 'pay_order_notify_status', '0', 'info', NULL, '未通知', '1', TO_DATE('2021-12-03 11:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 13:59:23', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('123', '1', '支付成功', '10', 'pay_order_status', '0', 'success', NULL, '支付成功', '1', TO_DATE('2021-12-03 11:18:29', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 15:24:25', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('124', '2', '支付关闭', '20', 'pay_order_status', '0', 'danger', NULL, '支付关闭', '1', TO_DATE('2021-12-03 11:18:42', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 15:24:31', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('125', '3', '未支付', '0', 'pay_order_status', '0', 'info', NULL, '未支付', '1', TO_DATE('2021-12-03 11:18:18', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 15:24:35', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('126', '1', '未退款', '0', 'pay_order_refund_status', '0', NULL, NULL, '未退款', '1', TO_DATE('2021-12-03 11:30:35', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-03 11:34:05', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('127', '2', '部分退款', '10', 'pay_order_refund_status', '0', NULL, NULL, '部分退款', '1', TO_DATE('2021-12-03 11:30:44', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-03 11:34:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('128', '3', '全部退款', '20', 'pay_order_refund_status', '0', NULL, NULL, '全部退款', '1', TO_DATE('2021-12-03 11:30:52', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-03 11:34:14', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1117', '1', '退款订单生成', '0', 'pay_refund_order_status', '0', 'primary', NULL, '退款订单生成', '1', TO_DATE('2021-12-10 16:44:44', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 14:05:24', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1118', '2', '退款成功', '1', 'pay_refund_order_status', '0', 'success', NULL, '退款成功', '1', TO_DATE('2021-12-10 16:44:59', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 14:05:28', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1119', '3', '退款失败', '2', 'pay_refund_order_status', '0', 'danger', NULL, '退款失败', '1', TO_DATE('2021-12-10 16:45:10', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 14:05:34', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1124', '8', '退款关闭', '99', 'pay_refund_order_status', '0', 'info', NULL, '退款关闭', '1', TO_DATE('2021-12-10 16:46:26', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 14:05:40', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1125', '0', '默认', '1', 'bpm_model_category', '0', 'primary', NULL, '流程分类 - 默认', '1', TO_DATE('2022-01-02 08:41:11', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:01:42', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1126', '0', 'OA', '2', 'bpm_model_category', '0', 'success', NULL, '流程分类 - OA', '1', TO_DATE('2022-01-02 08:41:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:01:50', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1127', '0', '进行中', '1', 'bpm_process_instance_status', '0', 'primary', NULL, '流程实例的状态 - 进行中', '1', TO_DATE('2022-01-07 23:47:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:07:49', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1128', '2', '已完成', '2', 'bpm_process_instance_status', '0', 'success', NULL, '流程实例的状态 - 已完成', '1', TO_DATE('2022-01-07 23:47:49', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:07:54', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1129', '1', '处理中', '1', 'bpm_process_instance_result', '0', 'primary', NULL, '流程实例的结果 - 处理中', '1', TO_DATE('2022-01-07 23:48:32', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 09:53:26', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1130', '2', '通过', '2', 'bpm_process_instance_result', '0', 'success', NULL, '流程实例的结果 - 通过', '1', TO_DATE('2022-01-07 23:48:45', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 09:53:31', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1131', '3', '不通过', '3', 'bpm_process_instance_result', '0', 'danger', NULL, '流程实例的结果 - 不通过', '1', TO_DATE('2022-01-07 23:48:55', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 09:53:38', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1132', '4', '已取消', '4', 'bpm_process_instance_result', '0', 'info', NULL, '流程实例的结果 - 撤销', '1', TO_DATE('2022-01-07 23:49:06', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 09:53:42', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1133', '10', '流程表单', '10', 'bpm_model_form_type', '0', NULL, NULL, '流程的表单类型 - 流程表单', '103', TO_DATE('2022-01-11 23:51:30', 'SYYYY-MM-DD HH24:MI:SS'), '103', TO_DATE('2022-01-11 23:51:30', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1134', '20', '业务表单', '20', 'bpm_model_form_type', '0', NULL, NULL, '流程的表单类型 - 业务表单', '103', TO_DATE('2022-01-11 23:51:47', 'SYYYY-MM-DD HH24:MI:SS'), '103', TO_DATE('2022-01-11 23:51:47', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1135', '10', '角色', '10', 'bpm_task_assign_rule_type', '0', 'info', NULL, '任务分配规则的类型 - 角色', '103', TO_DATE('2022-01-12 23:21:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:06:14', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1136', '20', '部门的成员', '20', 'bpm_task_assign_rule_type', '0', 'primary', NULL, '任务分配规则的类型 - 部门的成员', '103', TO_DATE('2022-01-12 23:21:47', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:05:28', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1137', '21', '部门的负责人', '21', 'bpm_task_assign_rule_type', '0', 'primary', NULL, '任务分配规则的类型 - 部门的负责人', '103', TO_DATE('2022-01-12 23:33:36', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:05:31', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1138', '30', '用户', '30', 'bpm_task_assign_rule_type', '0', 'info', NULL, '任务分配规则的类型 - 用户', '103', TO_DATE('2022-01-12 23:34:02', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:05:50', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1139', '40', '用户组', '40', 'bpm_task_assign_rule_type', '0', 'warning', NULL, '任务分配规则的类型 - 用户组', '103', TO_DATE('2022-01-12 23:34:21', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:05:57', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1140', '50', '自定义脚本', '50', 'bpm_task_assign_rule_type', '0', 'danger', NULL, '任务分配规则的类型 - 自定义脚本', '103', TO_DATE('2022-01-12 23:34:43', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:06:01', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1141', '22', '岗位', '22', 'bpm_task_assign_rule_type', '0', 'success', NULL, '任务分配规则的类型 - 岗位', '103', TO_DATE('2022-01-14 18:41:55', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:05:39', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1142', '10', '流程发起人', '10', 'bpm_task_assign_script', '0', NULL, NULL, '任务分配自定义脚本 - 流程发起人', '103', TO_DATE('2022-01-15 00:10:57', 'SYYYY-MM-DD HH24:MI:SS'), '103', TO_DATE('2022-01-15 21:24:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1', '1', '男', '1', 'system_user_sex', '0', 'default', 'A', '性别男', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-29 00:14:39', 'SYYYY-MM-DD HH24:MI:SS'), '0'); INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('2', '2', '女', '2', 'system_user_sex', '1', 'success', NULL, '性别女', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 01:30:51', 'SYYYY-MM-DD HH24:MI:SS'), '0'); INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('8', '1', '正常', '1', 'infra_job_status', '0', 'success', NULL, '正常状态', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 19:33:38', 'SYYYY-MM-DD HH24:MI:SS'), '0'); INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('9', '2', '暂停', '2', 'infra_job_status', '0', 'danger', NULL, '停用状态', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 19:33:45', 'SYYYY-MM-DD HH24:MI:SS'), '0'); @@ -2394,73 +2466,6 @@ INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "ST INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('76', '2', '接收失败', '20', 'system_sms_receive_status', '0', 'danger', NULL, NULL, '1', TO_DATE('2021-04-11 20:29:31', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 10:28:32', 'SYYYY-MM-DD HH24:MI:SS'), '0'); INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('77', '0', '调试(钉钉)', 'DEBUG_DING_TALK', 'system_sms_channel_code', '0', 'info', NULL, NULL, '1', TO_DATE('2021-04-13 00:20:37', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 10:10:00', 'SYYYY-MM-DD HH24:MI:SS'), '0'); INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('78', '1', '自动生成', '1', 'system_error_code_type', '0', 'warning', NULL, NULL, '1', TO_DATE('2021-04-21 00:06:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 13:57:20', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('79', '2', '手动编辑', '2', 'system_error_code_type', '0', 'primary', NULL, NULL, '1', TO_DATE('2021-04-21 00:07:14', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 13:57:24', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('80', '100', '账号登录', '100', 'system_login_type', '0', 'primary', NULL, '账号登录', '1', TO_DATE('2021-10-06 00:52:02', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 13:11:34', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('81', '101', '社交登录', '101', 'system_login_type', '0', 'info', NULL, '社交登录', '1', TO_DATE('2021-10-06 00:52:17', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 13:11:40', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('82', '102', 'Mock 登录', '102', 'system_login_type', '0', 'danger', NULL, 'Mock 登录', '1', TO_DATE('2021-10-06 00:52:32', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 13:11:44', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('83', '200', '主动登出', '200', 'system_login_type', '0', 'primary', NULL, '主动登出', '1', TO_DATE('2021-10-06 00:52:58', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 13:11:49', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('84', '201', '超时登出', '201', 'system_login_type', '0', 'info', NULL, '超时登出', '1', TO_DATE('2021-10-06 00:53:17', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 13:11:53', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('85', '202', '强制登出', '202', 'system_login_type', '0', 'danger', NULL, '强制退出', '1', TO_DATE('2021-10-06 00:53:41', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 13:11:57', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('86', '0', '病假', '1', 'bpm_oa_leave_type', '0', 'primary', NULL, NULL, '1', TO_DATE('2021-09-21 22:35:28', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 10:00:41', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('87', '1', '事假', '2', 'bpm_oa_leave_type', '0', 'info', NULL, NULL, '1', TO_DATE('2021-09-21 22:36:11', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 10:00:49', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('88', '2', '婚假', '3', 'bpm_oa_leave_type', '0', 'warning', NULL, NULL, '1', TO_DATE('2021-09-21 22:36:38', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 10:00:53', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('98', '1', 'v2', 'v2', 'pay_channel_wechat_version', '0', NULL, NULL, 'v2版本', '1', TO_DATE('2021-11-08 17:00:58', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-11-08 17:00:58', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('99', '2', 'v3', 'v3', 'pay_channel_wechat_version', '0', NULL, NULL, 'v3版本', '1', TO_DATE('2021-11-08 17:01:07', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-11-08 17:01:07', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('108', '1', 'RSA2', 'RSA2', 'pay_channel_alipay_sign_type', '0', NULL, NULL, 'RSA2', '1', TO_DATE('2021-11-18 15:39:29', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-11-18 15:39:29', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('109', '1', '公钥模式', '1', 'pay_channel_alipay_mode', '0', NULL, NULL, '公钥模式:privateKey + alipayPublicKey', '1', TO_DATE('2021-11-18 15:45:23', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-11-18 15:45:23', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('110', '2', '证书模式', '2', 'pay_channel_alipay_mode', '0', NULL, NULL, '证书模式:appCertContent + alipayPublicCertContent + rootCertContent', '1', TO_DATE('2021-11-18 15:45:40', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-11-18 15:45:40', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('111', '1', '线上', 'https://openapi.alipay.com/gateway.do', 'pay_channel_alipay_server_type', '0', NULL, NULL, '网关地址 - 线上', '1', TO_DATE('2021-11-18 16:59:32', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-11-21 17:37:29', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('112', '2', '沙箱', 'https://openapi.alipaydev.com/gateway.do', 'pay_channel_alipay_server_type', '0', NULL, NULL, '网关地址 - 沙箱', '1', TO_DATE('2021-11-18 16:59:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-11-21 17:37:39', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('113', '1', '微信 JSAPI 支付', 'wx_pub', 'pay_channel_code_type', '0', NULL, NULL, '微信 JSAPI(公众号) 支付', '1', TO_DATE('2021-12-03 10:40:24', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-04 16:41:00', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('114', '2', '微信小程序支付', 'wx_lite', 'pay_channel_code_type', '0', NULL, NULL, '微信小程序支付', '1', TO_DATE('2021-12-03 10:41:06', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-03 10:41:06', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('115', '3', '微信 App 支付', 'wx_app', 'pay_channel_code_type', '0', NULL, NULL, '微信 App 支付', '1', TO_DATE('2021-12-03 10:41:20', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-03 10:41:20', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('116', '4', '支付宝 PC 网站支付', 'alipay_pc', 'pay_channel_code_type', '0', NULL, NULL, '支付宝 PC 网站支付', '1', TO_DATE('2021-12-03 10:42:09', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-03 10:42:09', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('117', '5', '支付宝 Wap 网站支付', 'alipay_wap', 'pay_channel_code_type', '0', NULL, NULL, '支付宝 Wap 网站支付', '1', TO_DATE('2021-12-03 10:42:26', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-03 10:42:26', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('118', '6', '支付宝App 支付', 'alipay_app', 'pay_channel_code_type', '0', NULL, NULL, '支付宝App 支付', '1', TO_DATE('2021-12-03 10:42:55', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-03 10:42:55', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('119', '7', '支付宝扫码支付', 'alipay_qr', 'pay_channel_code_type', '0', NULL, NULL, '支付宝扫码支付', '1', TO_DATE('2021-12-03 10:43:10', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-03 10:43:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('120', '1', '通知成功', '10', 'pay_order_notify_status', '0', 'success', NULL, '通知成功', '1', TO_DATE('2021-12-03 11:02:41', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 13:59:13', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('121', '2', '通知失败', '20', 'pay_order_notify_status', '0', 'danger', NULL, '通知失败', '1', TO_DATE('2021-12-03 11:02:59', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 13:59:17', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('122', '3', '未通知', '0', 'pay_order_notify_status', '0', 'info', NULL, '未通知', '1', TO_DATE('2021-12-03 11:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 13:59:23', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('123', '1', '支付成功', '10', 'pay_order_status', '0', 'success', NULL, '支付成功', '1', TO_DATE('2021-12-03 11:18:29', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 15:24:25', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('124', '2', '支付关闭', '20', 'pay_order_status', '0', 'danger', NULL, '支付关闭', '1', TO_DATE('2021-12-03 11:18:42', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 15:24:31', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('125', '3', '未支付', '0', 'pay_order_status', '0', 'info', NULL, '未支付', '1', TO_DATE('2021-12-03 11:18:18', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 15:24:35', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('126', '1', '未退款', '0', 'pay_order_refund_status', '0', NULL, NULL, '未退款', '1', TO_DATE('2021-12-03 11:30:35', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-03 11:34:05', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('127', '2', '部分退款', '10', 'pay_order_refund_status', '0', NULL, NULL, '部分退款', '1', TO_DATE('2021-12-03 11:30:44', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-03 11:34:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('128', '3', '全部退款', '20', 'pay_order_refund_status', '0', NULL, NULL, '全部退款', '1', TO_DATE('2021-12-03 11:30:52', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-03 11:34:14', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1117', '1', '退款订单生成', '0', 'pay_refund_order_status', '0', 'primary', NULL, '退款订单生成', '1', TO_DATE('2021-12-10 16:44:44', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 14:05:24', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1118', '2', '退款成功', '1', 'pay_refund_order_status', '0', 'success', NULL, '退款成功', '1', TO_DATE('2021-12-10 16:44:59', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 14:05:28', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1119', '3', '退款失败', '2', 'pay_refund_order_status', '0', 'danger', NULL, '退款失败', '1', TO_DATE('2021-12-10 16:45:10', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 14:05:34', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1124', '8', '退款关闭', '99', 'pay_refund_order_status', '0', 'info', NULL, '退款关闭', '1', TO_DATE('2021-12-10 16:46:26', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 14:05:40', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1125', '0', '默认', '1', 'bpm_model_category', '0', 'primary', NULL, '流程分类 - 默认', '1', TO_DATE('2022-01-02 08:41:11', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:01:42', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1126', '0', 'OA', '2', 'bpm_model_category', '0', 'success', NULL, '流程分类 - OA', '1', TO_DATE('2022-01-02 08:41:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:01:50', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1127', '0', '进行中', '1', 'bpm_process_instance_status', '0', 'primary', NULL, '流程实例的状态 - 进行中', '1', TO_DATE('2022-01-07 23:47:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:07:49', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1128', '2', '已完成', '2', 'bpm_process_instance_status', '0', 'success', NULL, '流程实例的状态 - 已完成', '1', TO_DATE('2022-01-07 23:47:49', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:07:54', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1129', '1', '处理中', '1', 'bpm_process_instance_result', '0', 'primary', NULL, '流程实例的结果 - 处理中', '1', TO_DATE('2022-01-07 23:48:32', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 09:53:26', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1130', '2', '通过', '2', 'bpm_process_instance_result', '0', 'success', NULL, '流程实例的结果 - 通过', '1', TO_DATE('2022-01-07 23:48:45', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 09:53:31', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1131', '3', '不通过', '3', 'bpm_process_instance_result', '0', 'danger', NULL, '流程实例的结果 - 不通过', '1', TO_DATE('2022-01-07 23:48:55', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 09:53:38', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1132', '4', '已取消', '4', 'bpm_process_instance_result', '0', 'info', NULL, '流程实例的结果 - 撤销', '1', TO_DATE('2022-01-07 23:49:06', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 09:53:42', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1133', '10', '流程表单', '10', 'bpm_model_form_type', '0', NULL, NULL, '流程的表单类型 - 流程表单', '103', TO_DATE('2022-01-11 23:51:30', 'SYYYY-MM-DD HH24:MI:SS'), '103', TO_DATE('2022-01-11 23:51:30', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1134', '20', '业务表单', '20', 'bpm_model_form_type', '0', NULL, NULL, '流程的表单类型 - 业务表单', '103', TO_DATE('2022-01-11 23:51:47', 'SYYYY-MM-DD HH24:MI:SS'), '103', TO_DATE('2022-01-11 23:51:47', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1135', '10', '角色', '10', 'bpm_task_assign_rule_type', '0', 'info', NULL, '任务分配规则的类型 - 角色', '103', TO_DATE('2022-01-12 23:21:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:06:14', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1136', '20', '部门的成员', '20', 'bpm_task_assign_rule_type', '0', 'primary', NULL, '任务分配规则的类型 - 部门的成员', '103', TO_DATE('2022-01-12 23:21:47', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:05:28', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1137', '21', '部门的负责人', '21', 'bpm_task_assign_rule_type', '0', 'primary', NULL, '任务分配规则的类型 - 部门的负责人', '103', TO_DATE('2022-01-12 23:33:36', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:05:31', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1138', '30', '用户', '30', 'bpm_task_assign_rule_type', '0', 'info', NULL, '任务分配规则的类型 - 用户', '103', TO_DATE('2022-01-12 23:34:02', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:05:50', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1139', '40', '用户组', '40', 'bpm_task_assign_rule_type', '0', 'warning', NULL, '任务分配规则的类型 - 用户组', '103', TO_DATE('2022-01-12 23:34:21', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:05:57', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1140', '50', '自定义脚本', '50', 'bpm_task_assign_rule_type', '0', 'danger', NULL, '任务分配规则的类型 - 自定义脚本', '103', TO_DATE('2022-01-12 23:34:43', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:06:01', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1141', '22', '岗位', '22', 'bpm_task_assign_rule_type', '0', 'success', NULL, '任务分配规则的类型 - 岗位', '103', TO_DATE('2022-01-14 18:41:55', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 20:05:39', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1142', '10', '流程发起人', '10', 'bpm_task_assign_script', '0', NULL, NULL, '任务分配自定义脚本 - 流程发起人', '103', TO_DATE('2022-01-15 00:10:57', 'SYYYY-MM-DD HH24:MI:SS'), '103', TO_DATE('2022-01-15 21:24:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1143', '20', '流程发起人的一级领导', '20', 'bpm_task_assign_script', '0', NULL, NULL, '任务分配自定义脚本 - 流程发起人的一级领导', '103', TO_DATE('2022-01-15 21:24:31', 'SYYYY-MM-DD HH24:MI:SS'), '103', TO_DATE('2022-01-15 21:24:31', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1144', '21', '流程发起人的二级领导', '21', 'bpm_task_assign_script', '0', NULL, NULL, '任务分配自定义脚本 - 流程发起人的二级领导', '103', TO_DATE('2022-01-15 21:24:46', 'SYYYY-MM-DD HH24:MI:SS'), '103', TO_DATE('2022-01-15 21:24:57', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1145', '1', '管理后台', '1', 'infra_codegen_scene', '0', NULL, NULL, '代码生成的场景枚举 - 管理后台', '1', TO_DATE('2022-02-02 13:15:06', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-10 16:32:59', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1146', '2', '用户 APP', '2', 'infra_codegen_scene', '0', NULL, NULL, '代码生成的场景枚举 - 用户 APP', '1', TO_DATE('2022-02-02 13:15:19', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-10 16:33:03', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1147', '0', '未退款', '0', 'pay_refund_order_type', '0', 'info', NULL, '退款类型 - 未退款', '1', TO_DATE('2022-02-16 14:09:01', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 14:09:01', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1148', '10', '部分退款', '10', 'pay_refund_order_type', '0', 'success', NULL, '退款类型 - 部分退款', '1', TO_DATE('2022-02-16 14:09:25', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 14:11:38', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1149', '20', '全部退款', '20', 'pay_refund_order_type', '0', 'warning', NULL, '退款类型 - 全部退款', '1', TO_DATE('2022-02-16 14:11:33', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-16 14:11:33', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1150', '1', '数据库', '1', 'infra_file_storage', '0', 'default', NULL, NULL, '1', TO_DATE('2022-03-15 00:25:28', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-15 00:25:28', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1151', '10', '本地磁盘', '10', 'infra_file_storage', '0', 'default', NULL, NULL, '1', TO_DATE('2022-03-15 00:25:41', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-15 00:25:56', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1152', '11', 'FTP 服务器', '11', 'infra_file_storage', '0', 'default', NULL, NULL, '1', TO_DATE('2022-03-15 00:26:06', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-15 00:26:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1153', '12', 'SFTP 服务器', '12', 'infra_file_storage', '0', 'default', NULL, NULL, '1', TO_DATE('2022-03-15 00:26:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-15 00:26:22', 'SYYYY-MM-DD HH24:MI:SS'), '0'); -INSERT INTO "SYSTEM_DICT_DATA" ("ID", "SORT", "LABEL", "VALUE", "DICT_TYPE", "STATUS", "COLOR_TYPE", "CSS_CLASS", "REMARK", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1154', '20', 'S3 对象存储', '20', 'infra_file_storage', '0', 'default', NULL, NULL, '1', TO_DATE('2022-03-15 00:26:31', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-15 00:26:45', 'SYYYY-MM-DD HH24:MI:SS'), '0'); COMMIT; COMMIT; @@ -2605,6 +2610,7 @@ COMMENT ON TABLE "SYSTEM_ERROR_CODE" IS '错误码表'; -- Records of SYSTEM_ERROR_CODE -- ---------------------------- INSERT INTO "SYSTEM_ERROR_CODE" ("ID", "TYPE", "APPLICATION_NAME", "CODE", "MESSAGE", "MEMO", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('0', '1', 'yudao-server', '1001007000', '数据源配置不存在', NULL, NULL, TO_DATE('2022-05-01 01:08:31', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-05-01 01:08:31', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_ERROR_CODE" ("ID", "TYPE", "APPLICATION_NAME", "CODE", "MESSAGE", "MEMO", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('0', '1', 'yudao-server', '1009000002', '获取高亮流程图异常', NULL, NULL, TO_DATE('2022-05-13 01:26:47', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-05-13 01:26:47', 'SYYYY-MM-DD HH24:MI:SS'), '0'); COMMIT; COMMIT; @@ -2666,6 +2672,7 @@ COMMENT ON TABLE "SYSTEM_LOGIN_LOG" IS '系统访问记录'; -- ---------------------------- -- Records of SYSTEM_LOGIN_LOG -- ---------------------------- +INSERT INTO "SYSTEM_LOGIN_LOG" ("ID", "LOG_TYPE", "TRACE_ID", "USER_ID", "USER_TYPE", "USERNAME", "RESULT", "USER_IP", "USER_AGENT", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('0', '100', NULL, '1', '2', 'admin', '0', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36', NULL, TO_DATE('2022-05-13 01:27:36', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-05-13 01:27:36', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); COMMIT; COMMIT; @@ -2675,22 +2682,22 @@ COMMIT; DROP TABLE "SYSTEM_MENU"; CREATE TABLE "SYSTEM_MENU" ( "ID" NUMBER(20,0) NOT NULL, - "NAME" NVARCHAR2(50), + "NAME" NVARCHAR2(50) NOT NULL, "PERMISSION" NVARCHAR2(100), - "TYPE" NUMBER(4,0) NOT NULL, + "TYPE" NUMBER(6,0) NOT NULL, "SORT" NUMBER(11,0) NOT NULL, "PARENT_ID" NUMBER(20,0) NOT NULL, "PATH" NVARCHAR2(200), "ICON" NVARCHAR2(100), "COMPONENT" NVARCHAR2(255), - "STATUS" NUMBER(4,0) NOT NULL, + "STATUS" NUMBER(6,0) NOT NULL, + "VISIBLE" NVARCHAR2(4) NOT NULL, + "KEEP_ALIVE" NVARCHAR2(4) NOT NULL, "CREATOR" NVARCHAR2(64), "CREATE_TIME" DATE NOT NULL, "UPDATER" NVARCHAR2(64), "UPDATE_TIME" DATE NOT NULL, - "DELETED" NUMBER DEFAULT 0 NOT NULL, - "VISIBLE" NUMBER(1,0) DEFAULT 1 NOT NULL, - "KEEP_ALIVE" NUMBER(1,0) DEFAULT 1 NOT NULL + "DELETED" NUMBER(6,0) NOT NULL ) LOGGING NOCOMPRESS @@ -2712,242 +2719,255 @@ DISABLE ROW MOVEMENT COMMENT ON COLUMN "SYSTEM_MENU"."ID" IS '菜单ID'; COMMENT ON COLUMN "SYSTEM_MENU"."NAME" IS '菜单名称'; COMMENT ON COLUMN "SYSTEM_MENU"."PERMISSION" IS '权限标识'; -COMMENT ON COLUMN "SYSTEM_MENU"."TYPE" IS '菜单类型(1目录 2菜单 3按钮)'; +COMMENT ON COLUMN "SYSTEM_MENU"."TYPE" IS '菜单类型'; COMMENT ON COLUMN "SYSTEM_MENU"."SORT" IS '显示顺序'; COMMENT ON COLUMN "SYSTEM_MENU"."PARENT_ID" IS '父菜单ID'; COMMENT ON COLUMN "SYSTEM_MENU"."PATH" IS '路由地址'; COMMENT ON COLUMN "SYSTEM_MENU"."ICON" IS '菜单图标'; COMMENT ON COLUMN "SYSTEM_MENU"."COMPONENT" IS '组件路径'; -COMMENT ON COLUMN "SYSTEM_MENU"."STATUS" IS '菜单状态(0正常 1停用)'; +COMMENT ON COLUMN "SYSTEM_MENU"."STATUS" IS '菜单状态'; +COMMENT ON COLUMN "SYSTEM_MENU"."VISIBLE" IS '是否可见'; +COMMENT ON COLUMN "SYSTEM_MENU"."KEEP_ALIVE" IS '是否缓存'; COMMENT ON COLUMN "SYSTEM_MENU"."CREATOR" IS '创建者'; COMMENT ON COLUMN "SYSTEM_MENU"."CREATE_TIME" IS '创建时间'; COMMENT ON COLUMN "SYSTEM_MENU"."UPDATER" IS '更新者'; COMMENT ON COLUMN "SYSTEM_MENU"."UPDATE_TIME" IS '更新时间'; COMMENT ON COLUMN "SYSTEM_MENU"."DELETED" IS '是否删除'; -COMMENT ON COLUMN "SYSTEM_MENU"."VISIBLE" IS '是否可见'; -COMMENT ON COLUMN "SYSTEM_MENU"."KEEP_ALIVE" IS '是否缓存'; COMMENT ON TABLE "SYSTEM_MENU" IS '菜单权限表'; -- ---------------------------- -- Records of SYSTEM_MENU -- ---------------------------- -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1114', '错误码删除', 'system:error-code:delete', '3', '4', '1110', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-04-13 21:46:42', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-04-13 22:09:51', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1115', '错误码导出', 'system:error-code:export', '3', '5', '1110', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-04-13 21:46:42', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-04-13 22:09:55', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1116', '日志中心', NULL, '2', '14', '2', 'log-center', 'log', 'infra/skywalking/log', '0', '1', TO_DATE('2021-04-26 22:35:45', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:31:27', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1117', '支付管理', NULL, '1', '11', '0', '/pay', 'money', NULL, '0', '1', TO_DATE('2021-12-25 16:43:41', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-25 16:46:40', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1118', '请假查询', NULL, '2', '0', '5', 'leave', 'user', 'bpm/oa/leave/index', '0', NULL, TO_DATE('2021-09-20 08:51:03', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-22 21:36:06', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1119', '请假申请查询', 'bpm:oa-leave:query', '3', '1', '1118', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-09-20 08:51:03', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-23 00:14:20', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1120', '请假申请创建', 'bpm:oa-leave:create', '3', '2', '1118', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-09-20 08:51:03', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-23 00:14:49', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1126', '应用信息', NULL, '2', '1', '1117', 'app', 'table', 'pay/app/index', '0', NULL, TO_DATE('2021-11-10 01:13:30', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-25 16:56:41', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1127', '支付应用信息查询', 'pay:app:query', '3', '1', '1126', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-11-10 01:13:31', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-11-10 01:13:31', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1128', '支付应用信息创建', 'pay:app:create', '3', '2', '1126', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-11-10 01:13:31', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-11-10 01:13:31', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1129', '支付应用信息更新', 'pay:app:update', '3', '3', '1126', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-11-10 01:13:31', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-11-10 01:13:31', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1130', '支付应用信息删除', 'pay:app:delete', '3', '4', '1126', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-11-10 01:13:31', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-11-10 01:13:31', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1131', '支付应用信息导出', 'pay:app:export', '3', '5', '1126', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-11-10 01:13:31', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-11-10 01:13:31', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1132', '秘钥解析', 'pay:channel:parsing', '3', '6', '1129', NULL, NULL, NULL, '0', '1', TO_DATE('2021-11-08 15:15:47', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-11-08 15:15:47', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1133', '支付商户信息查询', 'pay:merchant:query', '3', '1', '1132', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-11-10 01:13:41', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-11-10 01:13:41', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1134', '支付商户信息创建', 'pay:merchant:create', '3', '2', '1132', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-11-10 01:13:41', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-11-10 01:13:41', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1135', '支付商户信息更新', 'pay:merchant:update', '3', '3', '1132', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-11-10 01:13:41', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-11-10 01:13:41', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1136', '支付商户信息删除', 'pay:merchant:delete', '3', '4', '1132', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-11-10 01:13:41', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-11-10 01:13:41', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1137', '支付商户信息导出', 'pay:merchant:export', '3', '5', '1132', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-11-10 01:13:41', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-11-10 01:13:41', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1138', '租户列表', NULL, '2', '0', '1224', 'list', 'peoples', 'system/tenant/index', '0', NULL, TO_DATE('2021-12-14 12:31:43', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-20 01:42:43', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1139', '租户查询', 'system:tenant:query', '3', '1', '1138', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-14 12:31:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-14 12:31:44', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1140', '租户创建', 'system:tenant:create', '3', '2', '1138', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-14 12:31:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-14 12:31:44', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1141', '租户更新', 'system:tenant:update', '3', '3', '1138', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-14 12:31:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-14 12:31:44', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1142', '租户删除', 'system:tenant:delete', '3', '4', '1138', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-14 12:31:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-14 12:31:44', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1143', '租户导出', 'system:tenant:export', '3', '5', '1138', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-14 12:31:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-14 12:31:44', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1150', '秘钥解析', 'pay:channel:parsing', '3', '6', '1129', NULL, NULL, NULL, '0', '1', TO_DATE('2021-11-08 15:15:47', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-11-08 15:15:47', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1156', '支付订单查询', 'pay:order:query', '3', '1', '1155', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 08:29:01', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 08:29:01', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1157', '支付订单创建', 'pay:order:create', '3', '2', '1155', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 08:29:01', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 08:29:01', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1158', '支付订单更新', 'pay:order:update', '3', '3', '1155', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 08:29:01', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 08:29:01', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1159', '支付订单删除', 'pay:order:delete', '3', '4', '1155', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 08:29:01', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 08:29:01', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1160', '支付订单导出', 'pay:order:export', '3', '5', '1155', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 08:29:01', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 08:29:01', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1161', '退款订单', NULL, '2', '3', '1117', 'refund', 'order', 'pay/refund/index', '0', NULL, TO_DATE('2021-12-25 08:29:07', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-25 19:30:22', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1162', '退款订单查询', 'pay:refund:query', '3', '1', '1161', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 08:29:07', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 08:29:07', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1163', '退款订单创建', 'pay:refund:create', '3', '2', '1161', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 08:29:07', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 08:29:07', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1164', '退款订单更新', 'pay:refund:update', '3', '3', '1161', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 08:29:07', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 08:29:07', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1165', '退款订单删除', 'pay:refund:delete', '3', '4', '1161', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 08:29:07', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 08:29:07', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1166', '退款订单导出', 'pay:refund:export', '3', '5', '1161', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 08:29:07', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 08:29:07', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1173', '支付订单', NULL, '2', '2', '1117', 'order', 'pay', 'pay/order/index', '0', NULL, TO_DATE('2021-12-25 08:49:43', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-25 19:29:54', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1174', '支付订单查询', 'pay:order:query', '3', '1', '1173', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 08:49:43', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 08:49:43', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1175', '支付订单创建', 'pay:order:create', '3', '2', '1173', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 08:49:43', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 08:49:43', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1176', '支付订单更新', 'pay:order:update', '3', '3', '1173', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 08:49:43', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 08:49:43', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1177', '支付订单删除', 'pay:order:delete', '3', '4', '1173', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 08:49:43', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 08:49:43', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1178', '支付订单导出', 'pay:order:export', '3', '5', '1173', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 08:49:43', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 08:49:43', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1179', '商户信息', NULL, '2', '0', '1117', 'merchant', 'merchant', 'pay/merchant/index', '0', NULL, TO_DATE('2021-12-25 09:01:44', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-25 17:02:13', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1180', '支付商户信息查询', 'pay:merchant:query', '3', '1', '1179', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 09:01:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 09:01:44', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1181', '支付商户信息创建', 'pay:merchant:create', '3', '2', '1179', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 09:01:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 09:01:44', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1182', '支付商户信息更新', 'pay:merchant:update', '3', '3', '1179', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 09:01:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 09:01:44', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1183', '支付商户信息删除', 'pay:merchant:delete', '3', '4', '1179', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 09:01:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 09:01:44', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1184', '支付商户信息导出', 'pay:merchant:export', '3', '5', '1179', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-25 09:01:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-12-25 09:01:44', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1185', '工作流程', NULL, '1', '50', '0', '/bpm', 'tool', NULL, '0', '1', TO_DATE('2021-12-30 20:26:36', 'SYYYY-MM-DD HH24:MI:SS'), '103', TO_DATE('2022-01-14 18:44:00', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1186', '流程管理', NULL, '1', '10', '1185', 'manager', 'nested', NULL, '0', '1', TO_DATE('2021-12-30 20:28:30', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-30 20:28:57', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1187', '流程表单', NULL, '2', '0', '1186', 'form', 'form', 'bpm/form/index', '0', NULL, TO_DATE('2021-12-30 12:38:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-31 23:20:38', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1188', '表单查询', 'bpm:form:query', '3', '1', '1187', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-30 12:38:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-03 18:59:53', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1189', '表单创建', 'bpm:form:create', '3', '2', '1187', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-30 12:38:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-03 18:59:59', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1190', '表单更新', 'bpm:form:update', '3', '3', '1187', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-30 12:38:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-03 19:00:21', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1191', '表单删除', 'bpm:form:delete', '3', '4', '1187', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-30 12:38:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-03 19:00:26', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1192', '表单导出', 'bpm:form:export', '3', '5', '1187', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-12-30 12:38:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-03 19:00:33', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1193', '流程模型', NULL, '2', '5', '1186', 'model', 'guide', 'bpm/model/index', '0', '1', TO_DATE('2021-12-31 23:24:58', 'SYYYY-MM-DD HH24:MI:SS'), '103', TO_DATE('2022-01-14 10:14:38', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1194', '模型查询', 'bpm:model:query', '3', '1', '1193', NULL, NULL, NULL, '0', '1', TO_DATE('2022-01-03 19:01:10', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-03 19:01:10', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1195', '模型创建', 'bpm:model:create', '3', '2', '1193', NULL, NULL, NULL, '0', '1', TO_DATE('2022-01-03 19:01:24', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-03 19:02:02', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1196', '模型导入', 'bpm:model:import', '3', '3', '1193', NULL, NULL, NULL, '0', '1', TO_DATE('2022-01-03 19:01:35', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-03 19:02:11', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1197', '模型更新', 'bpm:model:update', '3', '4', '1193', NULL, NULL, NULL, '0', '1', TO_DATE('2022-01-03 19:02:28', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-03 19:02:28', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1198', '模型删除', 'bpm:model:delete', '3', '5', '1193', NULL, NULL, NULL, '0', '1', TO_DATE('2022-01-03 19:02:43', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-03 19:02:43', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1199', '模型发布', 'bpm:model:deploy', '3', '6', '1193', NULL, NULL, NULL, '0', '1', TO_DATE('2022-01-03 19:03:24', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-03 19:03:24', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1200', '任务管理', NULL, '1', '20', '1185', 'task', 'cascader', NULL, '0', '1', TO_DATE('2022-01-07 23:51:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-07 23:51:48', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1201', '我的流程', NULL, '2', '0', '1200', 'my', 'people', 'bpm/processInstance/index', '0', NULL, TO_DATE('2022-01-07 15:53:44', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-08 16:44:41', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1202', '流程实例的查询', 'bpm:process-instance:query', '3', '1', '1201', NULL, NULL, NULL, '0', NULL, TO_DATE('2022-01-07 15:53:44', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-07 23:56:29', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1207', '待办任务', NULL, '2', '10', '1200', 'todo', 'eye-open', 'bpm/task/todo', '0', '1', TO_DATE('2022-01-08 10:33:37', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-08 10:33:48', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1208', '已办任务', NULL, '2', '20', '1200', 'done', 'eye', 'bpm/task/done', '0', '1', TO_DATE('2022-01-08 10:34:13', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-08 10:34:13', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1209', '用户分组', NULL, '2', '2', '1186', 'user-group', 'people', 'bpm/group/index', '0', NULL, TO_DATE('2022-01-14 02:14:20', 'SYYYY-MM-DD HH24:MI:SS'), '103', TO_DATE('2022-01-14 10:15:43', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1210', '用户组查询', 'bpm:user-group:query', '3', '1', '1209', NULL, NULL, NULL, '0', NULL, TO_DATE('2022-01-14 02:14:20', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-01-14 02:14:20', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1211', '用户组创建', 'bpm:user-group:create', '3', '2', '1209', NULL, NULL, NULL, '0', NULL, TO_DATE('2022-01-14 02:14:20', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-01-14 02:14:20', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1212', '用户组更新', 'bpm:user-group:update', '3', '3', '1209', NULL, NULL, NULL, '0', NULL, TO_DATE('2022-01-14 02:14:20', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-01-14 02:14:20', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1213', '用户组删除', 'bpm:user-group:delete', '3', '4', '1209', NULL, NULL, NULL, '0', NULL, TO_DATE('2022-01-14 02:14:20', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-01-14 02:14:20', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1215', '流程定义查询', 'bpm:process-definition:query', '3', '10', '1193', NULL, NULL, NULL, '0', '1', TO_DATE('2022-01-23 00:21:43', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-23 00:26:30', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1216', '流程任务分配规则查询', 'bpm:task-assign-rule:query', '3', '20', '1193', NULL, NULL, NULL, '0', '1', TO_DATE('2022-01-23 00:26:53', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-23 00:26:53', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1217', '流程任务分配规则创建', 'bpm:task-assign-rule:create', '3', '21', '1193', NULL, NULL, NULL, '0', '1', TO_DATE('2022-01-23 00:28:15', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-23 00:28:15', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1218', '流程任务分配规则更新', 'bpm:task-assign-rule:update', '3', '22', '1193', NULL, NULL, NULL, '0', '1', TO_DATE('2022-01-23 00:28:41', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-23 00:28:41', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1219', '流程实例的创建', 'bpm:process-instance:create', '3', '2', '1201', NULL, NULL, NULL, '0', '1', TO_DATE('2022-01-23 00:36:15', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-23 00:36:15', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1220', '流程实例的取消', 'bpm:process-instance:cancel', '3', '3', '1201', NULL, NULL, NULL, '0', '1', TO_DATE('2022-01-23 00:36:33', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-23 00:36:33', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1221', '流程任务的查询', 'bpm:task:query', '3', '1', '1207', NULL, NULL, NULL, '0', '1', TO_DATE('2022-01-23 00:38:52', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-23 00:38:52', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1222', '流程任务的更新', 'bpm:task:update', '3', '2', '1207', NULL, NULL, NULL, '0', '1', TO_DATE('2022-01-23 00:39:24', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-23 00:39:30', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1224', '租户管理', NULL, '2', '0', '1', 'tenant', 'peoples', NULL, '0', '1', TO_DATE('2022-02-20 01:41:13', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-20 01:42:47', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1225', '租户套餐', NULL, '2', '0', '1224', 'package', 'eye', 'system/tenantPackage/index', '0', NULL, TO_DATE('2022-02-19 17:44:06', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-20 01:45:13', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1226', '租户套餐查询', 'system:tenant-package:query', '3', '1', '1225', NULL, NULL, NULL, '0', NULL, TO_DATE('2022-02-19 17:44:06', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-02-19 17:44:06', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1227', '租户套餐创建', 'system:tenant-package:create', '3', '2', '1225', NULL, NULL, NULL, '0', NULL, TO_DATE('2022-02-19 17:44:06', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-02-19 17:44:06', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1228', '租户套餐更新', 'system:tenant-package:update', '3', '3', '1225', NULL, NULL, NULL, '0', NULL, TO_DATE('2022-02-19 17:44:06', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-02-19 17:44:06', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1229', '租户套餐删除', 'system:tenant-package:delete', '3', '4', '1225', NULL, NULL, NULL, '0', NULL, TO_DATE('2022-02-19 17:44:06', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-02-19 17:44:06', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1237', '文件配置', NULL, '2', '0', '1243', 'file-config', 'config', 'infra/fileConfig/index', '0', NULL, TO_DATE('2022-03-15 14:35:28', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-16 23:49:31', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1238', '文件配置查询', 'infra:file-config:query', '3', '1', '1237', NULL, NULL, NULL, '0', NULL, TO_DATE('2022-03-15 14:35:28', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-03-15 14:35:28', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1239', '文件配置创建', 'infra:file-config:create', '3', '2', '1237', NULL, NULL, NULL, '0', NULL, TO_DATE('2022-03-15 14:35:28', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-03-15 14:35:28', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1240', '文件配置更新', 'infra:file-config:update', '3', '3', '1237', NULL, NULL, NULL, '0', NULL, TO_DATE('2022-03-15 14:35:28', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-03-15 14:35:28', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1241', '文件配置删除', 'infra:file-config:delete', '3', '4', '1237', NULL, NULL, NULL, '0', NULL, TO_DATE('2022-03-15 14:35:28', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-03-15 14:35:28', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1242', '文件配置导出', 'infra:file-config:export', '3', '5', '1237', NULL, NULL, NULL, '0', NULL, TO_DATE('2022-03-15 14:35:28', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-03-15 14:35:28', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1243', '文件管理', NULL, '2', '5', '2', 'file', 'download', NULL, '0', '1', TO_DATE('2022-03-16 23:47:40', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-16 23:48:27', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1', '系统管理', NULL, '1', '10', '0', '/system', 'system', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-25 16:43:08', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('2', '基础设施', NULL, '1', '20', '0', '/infra', 'monitor', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-12-25 16:43:18', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('5', 'OA 示例', NULL, '1', '40', '1185', 'oa', 'people', NULL, '0', 'admin', TO_DATE('2021-09-20 16:26:19', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-22 18:32:50', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('100', '用户管理', 'system:user:list', '2', '1', '1', 'user', 'user', 'system/user/index', '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-05 22:36:45', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('101', '角色管理', NULL, '2', '2', '1', 'role', 'peoples', 'system/role/index', '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 22:04:49', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('102', '菜单管理', NULL, '2', '3', '1', 'menu', 'tree-table', 'system/menu/index', '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 22:04:28', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('103', '部门管理', NULL, '2', '4', '1', 'dept', 'tree', 'system/dept/index', '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 20:25:19', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('104', '岗位管理', NULL, '2', '5', '1', 'post', 'post', 'system/post/index', '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 20:38:23', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('105', '字典管理', NULL, '2', '6', '1', 'dict', 'dict', 'system/dict/index', '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 21:16:58', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('106', '配置管理', NULL, '2', '6', '2', 'config', 'edit', 'infra/config/index', '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:30:22', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('107', '通知公告', NULL, '2', '8', '1', 'notice', 'message', 'system/notice/index', '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 21:51:39', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('108', '审计日志', NULL, '1', '9', '1', 'log', 'log', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-04-26 22:34:58', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('109', '在线用户', 'system:user-session:list', '2', '10', '1', 'user-session', 'online', 'system/session/index', '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-26 08:21:20', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('110', '定时任务', NULL, '2', '12', '2', 'job', 'job', 'infra/job/index', '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:31:08', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('111', 'MySQL 监控', NULL, '2', '9', '2', 'druid', 'druid', 'infra/druid/index', '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:30:47', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('112', 'Java 监控', NULL, '2', '11', '2', 'admin-server', 'server', 'infra/server', '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:31:01', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('113', 'Redis 监控', NULL, '2', '10', '2', 'redis', 'redis', 'infra/redis/index', '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:30:52', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('114', '表单构建', 'infra:build:list', '2', '2', '2', 'build', 'build', 'infra/build/index', '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:29:59', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('115', '代码生成', 'infra:codegen:query', '2', '1', '2', 'codegen', 'code', 'infra/codegen/index', '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:29:33', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('116', '系统接口', 'infra:swagger:list', '2', '3', '2', 'swagger', 'swagger', 'infra/swagger/index', '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:30:03', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('500', '操作日志', NULL, '2', '1', '108', 'operate-log', 'form', 'system/operatelog/index', '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 21:42:56', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('501', '登录日志', NULL, '2', '2', '108', 'login-log', 'logininfor', 'system/loginlog/index', '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 21:39:23', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1001', '用户查询', 'system:user:query', '3', '1', '100', NULL, '#', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-05 22:36:55', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1002', '用户新增', 'system:user:create', '3', '2', '100', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 22:21:47', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1003', '用户修改', 'system:user:update', '3', '3', '100', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 22:21:54', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1004', '用户删除', 'system:user:delete', '3', '4', '100', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 22:22:03', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1005', '用户导出', 'system:user:export', '3', '5', '100', NULL, '#', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-05 22:36:55', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1006', '用户导入', 'system:user:import', '3', '6', '100', NULL, '#', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-05 22:36:55', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1007', '重置密码', 'system:user:update-password', '3', '7', '100', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 22:20:55', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1008', '角色查询', 'system:role:query', '3', '1', '101', NULL, '#', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-05 22:36:55', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1009', '角色新增', 'system:role:create', '3', '2', '101', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 22:05:24', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1010', '角色修改', 'system:role:update', '3', '3', '101', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 22:05:14', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1011', '角色删除', 'system:role:delete', '3', '4', '101', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 22:05:05', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1012', '角色导出', 'system:role:export', '3', '5', '101', NULL, '#', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-05 22:36:55', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1013', '菜单查询', 'system:menu:query', '3', '1', '102', NULL, '#', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-05 22:36:55', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1014', '菜单新增', 'system:menu:create', '3', '2', '102', NULL, '#', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-03-13 15:49:36', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1015', '菜单修改', 'system:menu:update', '3', '3', '102', NULL, '#', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-03-13 15:49:30', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1016', '菜单删除', 'system:menu:delete', '3', '4', '102', NULL, '#', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-03-13 15:49:45', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1017', '部门查询', 'system:dept:query', '3', '1', '103', NULL, '#', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-05 22:36:55', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1018', '部门新增', 'system:dept:create', '3', '2', '103', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 20:25:30', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1019', '部门修改', 'system:dept:update', '3', '3', '103', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 20:25:37', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1020', '部门删除', 'system:dept:delete', '3', '4', '103', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 20:25:43', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1021', '岗位查询', 'system:post:query', '3', '1', '104', NULL, '#', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-05 22:36:55', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1022', '岗位新增', 'system:post:create', '3', '2', '104', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 20:38:34', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1023', '岗位修改', 'system:post:update', '3', '3', '104', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 20:38:41', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1024', '岗位删除', 'system:post:delete', '3', '4', '104', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 20:38:48', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1025', '岗位导出', 'system:post:export', '3', '5', '104', NULL, '#', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-05 22:36:55', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1026', '字典查询', 'system:dict:query', '3', '1', '105', '#', '#', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-05 22:36:55', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1027', '字典新增', 'system:dict:create', '3', '2', '105', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 21:19:29', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1028', '字典修改', 'system:dict:update', '3', '3', '105', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 21:19:36', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1029', '字典删除', 'system:dict:delete', '3', '4', '105', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 21:19:45', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1030', '字典导出', 'system:dict:export', '3', '5', '105', '#', '#', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-05 22:36:55', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1031', '配置查询', 'infra:config:query', '3', '1', '106', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-20 14:34:00', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1032', '配置新增', 'infra:config:create', '3', '2', '106', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-10 01:12:18', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1033', '配置修改', 'infra:config:update', '3', '3', '106', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-10 01:12:30', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1034', '配置删除', 'infra:config:delete', '3', '4', '106', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-10 01:12:36', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1035', '配置导出', 'infra:config:export', '3', '5', '106', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-20 14:34:19', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1036', '公告查询', 'system:notice:query', '3', '1', '107', '#', '#', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-05 22:36:55', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1037', '公告新增', 'system:notice:create', '3', '2', '107', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 21:51:48', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1038', '公告修改', 'system:notice:update', '3', '3', '107', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 21:51:55', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1039', '公告删除', 'system:notice:delete', '3', '4', '107', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-14 21:52:01', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1040', '操作查询', 'system:operate-log:query', '3', '1', '500', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-16 18:28:10', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1042', '日志导出', 'system:operate-log:export', '3', '2', '500', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-16 18:28:23', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1043', '登录查询', 'system:login-log:query', '3', '1', '501', '#', '#', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-18 05:29:26', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1045', '日志导出', 'system:login-log:export', '3', '3', '501', '#', '#', NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-18 05:29:30', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1046', '在线查询', 'system:user-session:list', '3', '1', '109', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-26 08:22:37', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1048', '单条强退', 'system:user-session:delete', '3', '3', '109', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-26 08:22:54', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1050', '任务新增', 'infra:job:create', '3', '2', '110', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-02-07 13:01:58', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1051', '任务修改', 'infra:job:update', '3', '3', '110', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-02-07 13:02:10', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1052', '任务删除', 'infra:job:delete', '3', '4', '110', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-02-07 13:02:22', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1053', '状态修改', 'infra:job:update', '3', '5', '110', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-02-07 13:02:38', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1054', '任务导出', 'infra:job:export', '3', '7', '110', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-02-07 13:02:51', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1056', '生成修改', 'infra:codegen:update', '3', '2', '115', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:26:19', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1057', '生成删除', 'infra:codegen:delete', '3', '3', '115', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:26:32', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1058', '导入代码', 'infra:codegen:create', '3', '2', '115', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:26:24', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1059', '预览代码', 'infra:codegen:preview', '3', '4', '115', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:26:37', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1060', '生成代码', 'infra:codegen:download', '3', '5', '115', NULL, NULL, NULL, '0', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:26:44', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1063', '设置角色菜单权限', 'system:permission:assign-role-menu', '3', '6', '101', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-01-06 17:53:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-06 17:55:23', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1064', '设置角色数据权限', 'system:permission:assign-role-data-scope', '3', '7', '101', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-01-06 17:56:31', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-06 17:56:31', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1065', '设置用户角色', 'system:permission:assign-user-role', '3', '8', '101', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-01-07 10:23:28', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-07 10:23:28', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1066', '获得 Redis 监控信息', 'infra:redis:get-monitor-info', '3', '1', '113', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-01-26 01:02:31', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-26 01:02:31', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1067', '获得 Redis Key 列表', 'infra:redis:get-key-list', '3', '2', '113', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-01-26 01:02:52', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-26 01:02:52', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1070', '代码生成示例', 'infra:test-demo:query', '2', '1', '2', 'test-demo', 'validCode', 'infra/testDemo/index', '0', NULL, TO_DATE('2021-02-06 12:42:49', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:29:37', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1071', '测试示例表创建', 'infra:test-demo:create', '3', '1', '1070', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-02-06 12:42:49', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:26:51', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1072', '测试示例表更新', 'infra:test-demo:update', '3', '2', '1070', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-02-06 12:42:49', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:27:00', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1073', '测试示例表删除', 'infra:test-demo:delete', '3', '3', '1070', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-02-06 12:42:49', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:27:11', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1074', '测试示例表导出', 'infra:test-demo:export', '3', '4', '1070', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-02-06 12:42:49', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:27:17', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1075', '任务触发', 'infra:job:trigger', '3', '8', '110', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-02-07 13:03:10', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-02-07 13:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1076', '数据库文档', NULL, '2', '4', '2', 'db-doc', 'table', 'infra/dbDoc/index', '0', NULL, TO_DATE('2021-02-08 01:41:47', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:30:06', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1077', '链路追踪', NULL, '2', '13', '2', 'skywalking', 'eye-open', 'infra/skywalking', '0', NULL, TO_DATE('2021-02-08 20:41:31', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:31:12', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1078', '访问日志', NULL, '2', '1', '1083', 'api-access-log', 'log', 'infra/apiAccessLog/index', '0', NULL, TO_DATE('2021-02-26 01:32:59', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-10 01:28:09', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1082', '日志导出', 'infra:api-access-log:export', '3', '2', '1078', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-02-26 01:32:59', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-10 01:28:13', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1083', 'API 日志', NULL, '2', '8', '2', 'log', 'log', NULL, '0', NULL, TO_DATE('2021-02-26 02:18:24', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-11 00:30:41', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1084', '错误日志', 'infra:api-error-log:query', '2', '2', '1083', 'api-error-log', 'log', 'infra/apiErrorLog/index', '0', NULL, TO_DATE('2021-02-26 07:53:20', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-02-26 07:54:40', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1085', '日志处理', 'infra:api-error-log:update-status', '3', '2', '1084', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-02-26 07:53:20', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-10 01:28:18', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1086', '日志导出', 'infra:api-error-log:export', '3', '3', '1084', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-02-26 07:53:20', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-10 01:28:21', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1087', '任务查询', 'infra:job:query', '3', '1', '110', NULL, NULL, NULL, '0', '1', TO_DATE('2021-03-10 01:26:19', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-10 01:26:19', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1088', '日志查询', 'infra:api-access-log:query', '3', '1', '1078', NULL, NULL, NULL, '0', '1', TO_DATE('2021-03-10 01:28:04', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-10 01:29:38', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1089', '日志查询', 'infra:api-error-log:query', '3', '1', '1084', NULL, NULL, NULL, '0', '1', TO_DATE('2021-03-10 01:29:09', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-03-10 01:29:09', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1090', '文件列表', NULL, '2', '5', '1243', 'file', 'upload', 'infra/file/index', '0', NULL, TO_DATE('2021-03-12 20:16:20', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-16 23:48:19', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1091', '文件查询', 'infra:file:query', '3', '1', '1090', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-03-12 20:16:20', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-03-12 20:16:20', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1092', '文件删除', 'infra:file:delete', '3', '4', '1090', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-03-12 20:16:20', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-03-12 20:16:20', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1093', '短信管理', NULL, '1', '11', '1', 'sms', 'validCode', NULL, '0', '1', TO_DATE('2021-04-05 01:10:16', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-04-05 01:11:38', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1094', '短信渠道', NULL, '2', '0', '1093', 'sms-channel', 'phone', 'system/sms/smsChannel', '0', NULL, TO_DATE('2021-04-01 11:07:15', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-04-09 23:44:07', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1095', '短信渠道查询', 'system:sms-channel:query', '3', '1', '1094', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-04-01 11:07:15', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-04-01 11:07:15', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1096', '短信渠道创建', 'system:sms-channel:create', '3', '2', '1094', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-04-01 11:07:15', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-04-01 11:07:15', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1097', '短信渠道更新', 'system:sms-channel:update', '3', '3', '1094', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-04-01 11:07:15', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-04-01 11:07:15', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1098', '短信渠道删除', 'system:sms-channel:delete', '3', '4', '1094', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-04-01 11:07:15', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-04-01 11:07:15', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1100', '短信模板', NULL, '2', '1', '1093', 'sms-template', 'phone', 'system/sms/smsTemplate', '0', NULL, TO_DATE('2021-04-01 17:35:17', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-04-11 19:34:21', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1101', '短信模板查询', 'system:sms-template:query', '3', '1', '1100', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-04-01 17:35:17', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-04-01 17:35:17', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1102', '短信模板创建', 'system:sms-template:create', '3', '2', '1100', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-04-01 17:35:17', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-04-01 17:35:17', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1103', '短信模板更新', 'system:sms-template:update', '3', '3', '1100', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-04-01 17:35:17', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-04-01 17:35:17', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1104', '短信模板删除', 'system:sms-template:delete', '3', '4', '1100', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-04-01 17:35:17', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-04-01 17:35:17', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1105', '短信模板导出', 'system:sms-template:export', '3', '5', '1100', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-04-01 17:35:17', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-04-01 17:35:17', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1106', '发送测试短信', 'system:sms-template:send-sms', '3', '6', '1100', NULL, NULL, NULL, '0', '1', TO_DATE('2021-04-11 00:26:40', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-04-11 00:26:40', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1107', '短信日志', NULL, '2', '2', '1093', 'sms-log', 'phone', 'system/sms/smsLog', '0', NULL, TO_DATE('2021-04-11 08:37:05', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-04-11 19:34:25', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1108', '短信日志查询', 'system:sms-log:query', '3', '1', '1107', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-04-11 08:37:05', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-04-11 08:37:05', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1109', '短信日志导出', 'system:sms-log:export', '3', '5', '1107', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-04-11 08:37:05', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-04-11 08:37:05', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1110', '错误码管理', NULL, '2', '12', '1', 'error-code', 'code', 'system/errorCode/index', '0', NULL, TO_DATE('2021-04-13 21:46:42', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2021-04-22 00:04:35', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1111', '错误码查询', 'system:error-code:query', '3', '1', '1110', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-04-13 21:46:42', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-04-13 22:09:37', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1112', '错误码创建', 'system:error-code:create', '3', '2', '1110', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-04-13 21:46:42', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-04-13 22:09:43', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); -INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "VISIBLE", "KEEP_ALIVE") VALUES ('1113', '错误码更新', 'system:error-code:update', '3', '3', '1110', NULL, NULL, NULL, '0', NULL, TO_DATE('2021-04-13 21:46:42', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-04-13 22:09:47', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1', '1'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1', '系统管理', NULL, '1', '10', '0', '/system', 'system', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-12 18:11:34', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('2', '基础设施', NULL, '1', '20', '0', '/infra', 'monitor', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-12 18:11:34', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('5', 'OA 示例', NULL, '1', '40', '1185', 'oa', 'people', NULL, '0', '1', '1', 'admin', TO_DATE('2021-09-20 16:26:19', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-12 18:11:34', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('100', '用户管理', 'system:user:list', '2', '1', '1', 'user', 'user', 'system/user/index', '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('101', '角色管理', NULL, '2', '2', '1', 'role', 'peoples', 'system/role/index', '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('102', '菜单管理', NULL, '2', '3', '1', 'menu', 'tree-table', 'system/menu/index', '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('103', '部门管理', NULL, '2', '4', '1', 'dept', 'tree', 'system/dept/index', '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('104', '岗位管理', NULL, '2', '5', '1', 'post', 'post', 'system/post/index', '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('105', '字典管理', NULL, '2', '6', '1', 'dict', 'dict', 'system/dict/index', '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('106', '配置管理', NULL, '2', '6', '2', 'config', 'edit', 'infra/config/index', '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('107', '通知公告', NULL, '2', '8', '1', 'notice', 'message', 'system/notice/index', '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('108', '审计日志', NULL, '1', '9', '1', 'log', 'log', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('109', '令牌管理', NULL, '2', '2', '1261', 'token', 'online', 'system/oauth2/token/index', '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-11 23:31:42', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('110', '定时任务', NULL, '2', '12', '2', 'job', 'job', 'infra/job/index', '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('111', 'MySQL 监控', NULL, '2', '9', '2', 'druid', 'druid', 'infra/druid/index', '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('112', 'Java 监控', NULL, '2', '11', '2', 'admin-server', 'server', 'infra/server/index', '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('113', 'Redis 监控', NULL, '2', '10', '2', 'redis', 'redis', 'infra/redis/index', '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('114', '表单构建', 'infra:build:list', '2', '2', '2', 'build', 'build', 'infra/build/index', '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('115', '代码生成', 'infra:codegen:query', '2', '1', '2', 'codegen', 'code', 'infra/codegen/index', '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('116', '系统接口', 'infra:swagger:list', '2', '3', '2', 'swagger', 'swagger', 'infra/swagger/index', '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('500', '操作日志', NULL, '2', '1', '108', 'operate-log', 'form', 'system/operatelog/index', '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('501', '登录日志', NULL, '2', '2', '108', 'login-log', 'logininfor', 'system/loginlog/index', '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1001', '用户查询', 'system:user:query', '3', '1', '100', NULL, '#', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1002', '用户新增', 'system:user:create', '3', '2', '100', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1003', '用户修改', 'system:user:update', '3', '3', '100', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1004', '用户删除', 'system:user:delete', '3', '4', '100', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1005', '用户导出', 'system:user:export', '3', '5', '100', NULL, '#', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1006', '用户导入', 'system:user:import', '3', '6', '100', NULL, '#', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1007', '重置密码', 'system:user:update-password', '3', '7', '100', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1008', '角色查询', 'system:role:query', '3', '1', '101', NULL, '#', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1009', '角色新增', 'system:role:create', '3', '2', '101', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1010', '角色修改', 'system:role:update', '3', '3', '101', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1011', '角色删除', 'system:role:delete', '3', '4', '101', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1012', '角色导出', 'system:role:export', '3', '5', '101', NULL, '#', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1013', '菜单查询', 'system:menu:query', '3', '1', '102', NULL, '#', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1014', '菜单新增', 'system:menu:create', '3', '2', '102', NULL, '#', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1015', '菜单修改', 'system:menu:update', '3', '3', '102', NULL, '#', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1016', '菜单删除', 'system:menu:delete', '3', '4', '102', NULL, '#', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1017', '部门查询', 'system:dept:query', '3', '1', '103', NULL, '#', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1018', '部门新增', 'system:dept:create', '3', '2', '103', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1019', '部门修改', 'system:dept:update', '3', '3', '103', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1020', '部门删除', 'system:dept:delete', '3', '4', '103', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1021', '岗位查询', 'system:post:query', '3', '1', '104', NULL, '#', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1022', '岗位新增', 'system:post:create', '3', '2', '104', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1023', '岗位修改', 'system:post:update', '3', '3', '104', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1024', '岗位删除', 'system:post:delete', '3', '4', '104', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1025', '岗位导出', 'system:post:export', '3', '5', '104', NULL, '#', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1026', '字典查询', 'system:dict:query', '3', '1', '105', '#', '#', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1027', '字典新增', 'system:dict:create', '3', '2', '105', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1028', '字典修改', 'system:dict:update', '3', '3', '105', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1029', '字典删除', 'system:dict:delete', '3', '4', '105', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1030', '字典导出', 'system:dict:export', '3', '5', '105', '#', '#', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1031', '配置查询', 'infra:config:query', '3', '1', '106', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1032', '配置新增', 'infra:config:create', '3', '2', '106', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1033', '配置修改', 'infra:config:update', '3', '3', '106', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1034', '配置删除', 'infra:config:delete', '3', '4', '106', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1035', '配置导出', 'infra:config:export', '3', '5', '106', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1036', '公告查询', 'system:notice:query', '3', '1', '107', '#', '#', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1037', '公告新增', 'system:notice:create', '3', '2', '107', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1038', '公告修改', 'system:notice:update', '3', '3', '107', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1039', '公告删除', 'system:notice:delete', '3', '4', '107', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1040', '操作查询', 'system:operate-log:query', '3', '1', '500', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1042', '日志导出', 'system:operate-log:export', '3', '2', '500', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1043', '登录查询', 'system:login-log:query', '3', '1', '501', '#', '#', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1045', '日志导出', 'system:login-log:export', '3', '3', '501', '#', '#', NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1046', '令牌列表', 'system:oauth2-token:page', '3', '1', '109', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-09 23:54:42', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1048', '令牌删除', 'system:oauth2-token:delete', '3', '2', '109', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-09 23:54:53', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1050', '任务新增', 'infra:job:create', '3', '2', '110', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1051', '任务修改', 'infra:job:update', '3', '3', '110', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1052', '任务删除', 'infra:job:delete', '3', '4', '110', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1053', '状态修改', 'infra:job:update', '3', '5', '110', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1054', '任务导出', 'infra:job:export', '3', '7', '110', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1056', '生成修改', 'infra:codegen:update', '3', '2', '115', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1057', '生成删除', 'infra:codegen:delete', '3', '3', '115', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1058', '导入代码', 'infra:codegen:create', '3', '2', '115', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1059', '预览代码', 'infra:codegen:preview', '3', '4', '115', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1060', '生成代码', 'infra:codegen:download', '3', '5', '115', NULL, NULL, NULL, '0', '1', '1', 'admin', TO_DATE('2021-01-05 17:03:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1063', '设置角色菜单权限', 'system:permission:assign-role-menu', '3', '6', '101', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-01-06 17:53:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1064', '设置角色数据权限', 'system:permission:assign-role-data-scope', '3', '7', '101', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-01-06 17:56:31', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1065', '设置用户角色', 'system:permission:assign-user-role', '3', '8', '101', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-01-07 10:23:28', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1066', '获得 Redis 监控信息', 'infra:redis:get-monitor-info', '3', '1', '113', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-01-26 01:02:31', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1067', '获得 Redis Key 列表', 'infra:redis:get-key-list', '3', '2', '113', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-01-26 01:02:52', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1070', '代码生成示例', 'infra:test-demo:query', '2', '1', '2', 'test-demo', 'validCode', 'infra/testDemo/index', '0', '1', '1', NULL, TO_DATE('2021-02-06 12:42:49', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1071', '测试示例表创建', 'infra:test-demo:create', '3', '1', '1070', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-02-06 12:42:49', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1072', '测试示例表更新', 'infra:test-demo:update', '3', '2', '1070', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-02-06 12:42:49', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1073', '测试示例表删除', 'infra:test-demo:delete', '3', '3', '1070', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-02-06 12:42:49', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1074', '测试示例表导出', 'infra:test-demo:export', '3', '4', '1070', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-02-06 12:42:49', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1075', '任务触发', 'infra:job:trigger', '3', '8', '110', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-02-07 13:03:10', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1076', '数据库文档', NULL, '2', '4', '2', 'db-doc', 'table', 'infra/dbDoc/index', '0', '1', '1', NULL, TO_DATE('2021-02-08 01:41:47', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1077', '监控平台', NULL, '2', '13', '2', 'skywalking', 'eye-open', 'infra/skywalking/index', '0', '1', '1', NULL, TO_DATE('2021-02-08 20:41:31', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1078', '访问日志', NULL, '2', '1', '1083', 'api-access-log', 'log', 'infra/apiAccessLog/index', '0', '1', '1', NULL, TO_DATE('2021-02-26 01:32:59', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1082', '日志导出', 'infra:api-access-log:export', '3', '2', '1078', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-02-26 01:32:59', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1083', 'API 日志', NULL, '2', '8', '2', 'log', 'log', NULL, '0', '1', '1', NULL, TO_DATE('2021-02-26 02:18:24', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-12 18:11:34', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1084', '错误日志', 'infra:api-error-log:query', '2', '2', '1083', 'api-error-log', 'log', 'infra/apiErrorLog/index', '0', '1', '1', NULL, TO_DATE('2021-02-26 07:53:20', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1085', '日志处理', 'infra:api-error-log:update-status', '3', '2', '1084', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-02-26 07:53:20', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1086', '日志导出', 'infra:api-error-log:export', '3', '3', '1084', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-02-26 07:53:20', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1087', '任务查询', 'infra:job:query', '3', '1', '110', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2021-03-10 01:26:19', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1088', '日志查询', 'infra:api-access-log:query', '3', '1', '1078', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2021-03-10 01:28:04', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1089', '日志查询', 'infra:api-error-log:query', '3', '1', '1084', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2021-03-10 01:29:09', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1090', '文件列表', NULL, '2', '5', '1243', 'file', 'upload', 'infra/file/index', '0', '1', '1', NULL, TO_DATE('2021-03-12 20:16:20', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1091', '文件查询', 'infra:file:query', '3', '1', '1090', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-03-12 20:16:20', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1092', '文件删除', 'infra:file:delete', '3', '4', '1090', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-03-12 20:16:20', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1093', '短信管理', NULL, '1', '11', '1', 'sms', 'validCode', NULL, '0', '1', '1', '1', TO_DATE('2021-04-05 01:10:16', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-12 18:11:34', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1094', '短信渠道', NULL, '2', '0', '1093', 'sms-channel', 'phone', 'system/sms/smsChannel', '0', '1', '1', NULL, TO_DATE('2021-04-01 11:07:15', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1095', '短信渠道查询', 'system:sms-channel:query', '3', '1', '1094', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-04-01 11:07:15', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1096', '短信渠道创建', 'system:sms-channel:create', '3', '2', '1094', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-04-01 11:07:15', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1097', '短信渠道更新', 'system:sms-channel:update', '3', '3', '1094', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-04-01 11:07:15', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1098', '短信渠道删除', 'system:sms-channel:delete', '3', '4', '1094', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-04-01 11:07:15', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1100', '短信模板', NULL, '2', '1', '1093', 'sms-template', 'phone', 'system/sms/smsTemplate', '0', '1', '1', NULL, TO_DATE('2021-04-01 17:35:17', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1101', '短信模板查询', 'system:sms-template:query', '3', '1', '1100', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-04-01 17:35:17', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1102', '短信模板创建', 'system:sms-template:create', '3', '2', '1100', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-04-01 17:35:17', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1103', '短信模板更新', 'system:sms-template:update', '3', '3', '1100', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-04-01 17:35:17', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1104', '短信模板删除', 'system:sms-template:delete', '3', '4', '1100', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-04-01 17:35:17', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1105', '短信模板导出', 'system:sms-template:export', '3', '5', '1100', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-04-01 17:35:17', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1106', '发送测试短信', 'system:sms-template:send-sms', '3', '6', '1100', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2021-04-11 00:26:40', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1107', '短信日志', NULL, '2', '2', '1093', 'sms-log', 'phone', 'system/sms/smsLog', '0', '1', '1', NULL, TO_DATE('2021-04-11 08:37:05', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1108', '短信日志查询', 'system:sms-log:query', '3', '1', '1107', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-04-11 08:37:05', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1109', '短信日志导出', 'system:sms-log:export', '3', '5', '1107', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-04-11 08:37:05', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1110', '错误码管理', NULL, '2', '12', '1', 'error-code', 'code', 'system/errorCode/index', '0', '1', '1', NULL, TO_DATE('2021-04-13 21:46:42', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1111', '错误码查询', 'system:error-code:query', '3', '1', '1110', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-04-13 21:46:42', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1112', '错误码创建', 'system:error-code:create', '3', '2', '1110', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-04-13 21:46:42', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1113', '错误码更新', 'system:error-code:update', '3', '3', '1110', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-04-13 21:46:42', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1114', '错误码删除', 'system:error-code:delete', '3', '4', '1110', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-04-13 21:46:42', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1115', '错误码导出', 'system:error-code:export', '3', '5', '1110', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-04-13 21:46:42', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1117', '支付管理', NULL, '1', '11', '0', '/pay', 'money', NULL, '0', '1', '1', '1', TO_DATE('2021-12-25 16:43:41', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-12 18:11:34', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1118', '请假查询', NULL, '2', '0', '5', 'leave', 'user', 'bpm/oa/leave/index', '0', '1', '1', NULL, TO_DATE('2021-09-20 08:51:03', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1119', '请假申请查询', 'bpm:oa-leave:query', '3', '1', '1118', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-09-20 08:51:03', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1120', '请假申请创建', 'bpm:oa-leave:create', '3', '2', '1118', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-09-20 08:51:03', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1126', '应用信息', NULL, '2', '1', '1117', 'app', 'table', 'pay/app/index', '0', '1', '1', NULL, TO_DATE('2021-11-10 01:13:30', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1127', '支付应用信息查询', 'pay:app:query', '3', '1', '1126', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-11-10 01:13:31', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1128', '支付应用信息创建', 'pay:app:create', '3', '2', '1126', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-11-10 01:13:31', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1129', '支付应用信息更新', 'pay:app:update', '3', '3', '1126', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-11-10 01:13:31', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1130', '支付应用信息删除', 'pay:app:delete', '3', '4', '1126', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-11-10 01:13:31', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1131', '支付应用信息导出', 'pay:app:export', '3', '5', '1126', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-11-10 01:13:31', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1132', '秘钥解析', 'pay:channel:parsing', '3', '6', '1129', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2021-11-08 15:15:47', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1133', '支付商户信息查询', 'pay:merchant:query', '3', '1', '1132', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-11-10 01:13:41', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1134', '支付商户信息创建', 'pay:merchant:create', '3', '2', '1132', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-11-10 01:13:41', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1135', '支付商户信息更新', 'pay:merchant:update', '3', '3', '1132', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-11-10 01:13:41', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1136', '支付商户信息删除', 'pay:merchant:delete', '3', '4', '1132', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-11-10 01:13:41', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1137', '支付商户信息导出', 'pay:merchant:export', '3', '5', '1132', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-11-10 01:13:41', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1138', '租户列表', NULL, '2', '0', '1224', 'list', 'peoples', 'system/tenant/index', '0', '1', '1', NULL, TO_DATE('2021-12-14 12:31:43', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1139', '租户查询', 'system:tenant:query', '3', '1', '1138', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-14 12:31:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1140', '租户创建', 'system:tenant:create', '3', '2', '1138', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-14 12:31:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1141', '租户更新', 'system:tenant:update', '3', '3', '1138', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-14 12:31:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1142', '租户删除', 'system:tenant:delete', '3', '4', '1138', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-14 12:31:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1143', '租户导出', 'system:tenant:export', '3', '5', '1138', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-14 12:31:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1150', '秘钥解析', NULL, '3', '6', '1129', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2021-11-08 15:15:47', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1161', '退款订单', NULL, '2', '3', '1117', 'refund', 'order', 'pay/refund/index', '0', '1', '1', NULL, TO_DATE('2021-12-25 08:29:07', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1162', '退款订单查询', 'pay:refund:query', '3', '1', '1161', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-25 08:29:07', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1163', '退款订单创建', 'pay:refund:create', '3', '2', '1161', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-25 08:29:07', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1164', '退款订单更新', 'pay:refund:update', '3', '3', '1161', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-25 08:29:07', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1165', '退款订单删除', 'pay:refund:delete', '3', '4', '1161', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-25 08:29:07', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1166', '退款订单导出', 'pay:refund:export', '3', '5', '1161', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-25 08:29:07', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1173', '支付订单', NULL, '2', '2', '1117', 'order', 'pay', 'pay/order/index', '0', '1', '1', NULL, TO_DATE('2021-12-25 08:49:43', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1174', '支付订单查询', 'pay:order:query', '3', '1', '1173', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-25 08:49:43', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1175', '支付订单创建', 'pay:order:create', '3', '2', '1173', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-25 08:49:43', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1176', '支付订单更新', 'pay:order:update', '3', '3', '1173', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-25 08:49:43', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1177', '支付订单删除', 'pay:order:delete', '3', '4', '1173', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-25 08:49:43', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1178', '支付订单导出', 'pay:order:export', '3', '5', '1173', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-25 08:49:43', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1179', '商户信息', NULL, '2', '0', '1117', 'merchant', 'merchant', 'pay/merchant/index', '0', '1', '1', NULL, TO_DATE('2021-12-25 09:01:44', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1180', '支付商户信息查询', 'pay:merchant:query', '3', '1', '1179', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-25 09:01:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1181', '支付商户信息创建', 'pay:merchant:create', '3', '2', '1179', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-25 09:01:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1182', '支付商户信息更新', 'pay:merchant:update', '3', '3', '1179', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-25 09:01:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1183', '支付商户信息删除', NULL, '3', '4', '1179', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-25 09:01:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1184', '支付商户信息导出', 'pay:merchant:export', '3', '5', '1179', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-25 09:01:44', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1185', '工作流程', NULL, '1', '50', '0', '/bpm', 'tool', NULL, '0', '1', '1', '1', TO_DATE('2021-12-30 20:26:36', 'SYYYY-MM-DD HH24:MI:SS'), '103', TO_DATE('2022-05-12 18:11:34', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1186', '流程管理', NULL, '1', '10', '1185', 'manager', 'nested', NULL, '0', '1', '1', '1', TO_DATE('2021-12-30 20:28:30', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-12 18:11:34', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1187', '流程表单', NULL, '2', '0', '1186', 'form', 'form', 'bpm/form/index', '0', '1', '1', NULL, TO_DATE('2021-12-30 12:38:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1188', '表单查询', 'bpm:form:query', '3', '1', '1187', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-30 12:38:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1189', '表单创建', 'bpm:form:create', '3', '2', '1187', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-30 12:38:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1190', '表单更新', 'bpm:form:update', '3', '3', '1187', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-30 12:38:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1191', '表单删除', 'bpm:form:delete', '3', '4', '1187', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-30 12:38:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1192', '表单导出', 'bpm:form:export', '3', '5', '1187', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2021-12-30 12:38:22', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1193', '流程模型', NULL, '2', '5', '1186', 'model', 'guide', 'bpm/model/index', '0', '1', '1', '1', TO_DATE('2021-12-31 23:24:58', 'SYYYY-MM-DD HH24:MI:SS'), '103', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1194', '模型查询', 'bpm:model:query', '3', '1', '1193', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2022-01-03 19:01:10', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1195', '模型创建', 'bpm:model:create', '3', '2', '1193', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2022-01-03 19:01:24', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1196', '模型导入', 'bpm:model:import', '3', '3', '1193', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2022-01-03 19:01:35', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1197', '模型更新', 'bpm:model:update', '3', '4', '1193', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2022-01-03 19:02:28', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1198', '模型删除', 'bpm:model:delete', '3', '5', '1193', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2022-01-03 19:02:43', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1199', '模型发布', 'bpm:model:deploy', '3', '6', '1193', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2022-01-03 19:03:24', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1200', '任务管理', NULL, '1', '20', '1185', 'task', 'cascader', NULL, '0', '1', '1', '1', TO_DATE('2022-01-07 23:51:48', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-12 18:11:34', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1201', '我的流程', NULL, '2', '0', '1200', 'my', 'people', 'bpm/processInstance/index', '0', '1', '1', NULL, TO_DATE('2022-01-07 15:53:44', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1202', '流程实例的查询', 'bpm:process-instance:query', '3', '1', '1201', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-01-07 15:53:44', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1207', '待办任务', NULL, '2', '10', '1200', 'todo', 'eye-open', 'bpm/task/todo', '0', '1', '1', '1', TO_DATE('2022-01-08 10:33:37', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1208', '已办任务', NULL, '2', '20', '1200', 'done', 'eye', 'bpm/task/done', '0', '1', '1', '1', TO_DATE('2022-01-08 10:34:13', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1209', '用户分组', NULL, '2', '2', '1186', 'user-group', 'people', 'bpm/group/index', '0', '1', '1', NULL, TO_DATE('2022-01-14 02:14:20', 'SYYYY-MM-DD HH24:MI:SS'), '103', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1210', '用户组查询', 'bpm:user-group:query', '3', '1', '1209', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-01-14 02:14:20', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1211', '用户组创建', 'bpm:user-group:create', '3', '2', '1209', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-01-14 02:14:20', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1212', '用户组更新', 'bpm:user-group:update', '3', '3', '1209', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-01-14 02:14:20', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1213', '用户组删除', 'bpm:user-group:delete', '3', '4', '1209', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-01-14 02:14:20', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1215', '流程定义查询', 'bpm:process-definition:query', '3', '10', '1193', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2022-01-23 00:21:43', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1216', '流程任务分配规则查询', 'bpm:task-assign-rule:query', '3', '20', '1193', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2022-01-23 00:26:53', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1217', '流程任务分配规则创建', 'bpm:task-assign-rule:create', '3', '21', '1193', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2022-01-23 00:28:15', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1218', '流程任务分配规则更新', 'bpm:task-assign-rule:update', '3', '22', '1193', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2022-01-23 00:28:41', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1219', '流程实例的创建', 'bpm:process-instance:create', '3', '2', '1201', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2022-01-23 00:36:15', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1220', '流程实例的取消', 'bpm:process-instance:cancel', '3', '3', '1201', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2022-01-23 00:36:33', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1221', '流程任务的查询', 'bpm:task:query', '3', '1', '1207', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2022-01-23 00:38:52', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1222', '流程任务的更新', 'bpm:task:update', '3', '2', '1207', NULL, NULL, NULL, '0', '1', '1', '1', TO_DATE('2022-01-23 00:39:24', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1224', '租户管理', NULL, '2', '0', '1', 'tenant', 'peoples', NULL, '0', '1', '1', '1', TO_DATE('2022-02-20 01:41:13', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-12 18:11:34', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1225', '租户套餐', NULL, '2', '0', '1224', 'package', 'eye', 'system/tenantPackage/index', '0', '1', '1', NULL, TO_DATE('2022-02-19 17:44:06', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-21 01:21:25', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1226', '租户套餐查询', 'system:tenant-package:query', '3', '1', '1225', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-02-19 17:44:06', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1227', '租户套餐创建', 'system:tenant-package:create', '3', '2', '1225', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-02-19 17:44:06', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1228', '租户套餐更新', 'system:tenant-package:update', '3', '3', '1225', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-02-19 17:44:06', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1229', '租户套餐删除', 'system:tenant-package:delete', '3', '4', '1225', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-02-19 17:44:06', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1237', '文件配置', NULL, '2', '0', '1243', 'file-config', 'config', 'infra/fileConfig/index', '0', '1', '1', NULL, TO_DATE('2022-03-15 14:35:28', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1238', '文件配置查询', 'infra:file-config:query', '3', '1', '1237', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-03-15 14:35:28', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1239', '文件配置创建', 'infra:file-config:create', '3', '2', '1237', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-03-15 14:35:28', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1240', '文件配置更新', 'infra:file-config:update', '3', '3', '1237', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-03-15 14:35:28', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1241', '文件配置删除', 'infra:file-config:delete', '3', '4', '1237', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-03-15 14:35:28', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1242', '文件配置导出', 'infra:file-config:export', '3', '5', '1237', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-03-15 14:35:28', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1243', '文件管理', NULL, '2', '5', '2', 'file', 'download', NULL, '0', '1', '1', '1', TO_DATE('2022-03-16 23:47:40', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-12 18:11:34', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1247', '敏感词管理', NULL, '2', '13', '1', 'sensitive-word', 'education', 'system/sensitiveWord/index', '0', '1', '1', NULL, TO_DATE('2022-04-07 16:55:03', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1248', '敏感词查询', 'system:sensitive-word:query', '3', '1', '1247', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-04-07 16:55:03', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1249', '敏感词创建', 'system:sensitive-word:create', '3', '2', '1247', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-04-07 16:55:03', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1250', '敏感词更新', 'system:sensitive-word:update', '3', '3', '1247', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-04-07 16:55:03', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1251', '敏感词删除', 'system:sensitive-word:delete', '3', '4', '1247', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-04-07 16:55:03', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1252', '敏感词导出', 'system:sensitive-word:export', '3', '5', '1247', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-04-07 16:55:03', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-20 17:03:10', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1254', '作者动态', NULL, '1', '0', '0', 'https://www.iocoder.cn', 'people', NULL, '0', '1', '1', '1', TO_DATE('2022-04-23 01:03:15', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-12 18:11:34', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1255', '数据源配置', NULL, '2', '1', '2', 'data-source-config', 'rate', 'infra/dataSourceConfig/index', '0', '1', '1', NULL, TO_DATE('2022-04-27 14:37:32', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-04-27 22:42:06', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1256', '数据源配置查询', 'infra:data-source-config:query', '3', '1', '1255', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-04-27 14:37:32', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-27 14:37:32', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1257', '数据源配置创建', 'infra:data-source-config:create', '3', '2', '1255', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-04-27 14:37:32', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-27 14:37:32', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1258', '数据源配置更新', 'infra:data-source-config:update', '3', '3', '1255', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-04-27 14:37:32', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-27 14:37:32', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1259', '数据源配置删除', 'infra:data-source-config:delete', '3', '4', '1255', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-04-27 14:37:32', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-27 14:37:32', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1260', '数据源配置导出', 'infra:data-source-config:export', '3', '5', '1255', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-04-27 14:37:32', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-04-27 14:37:32', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1261', 'OAuth 2.0', NULL, '1', '10', '1', 'oauth2', 'people', NULL, '0', '1', '1', '1', TO_DATE('2022-05-09 23:38:17', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-12 18:11:34', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1263', '应用管理', NULL, '2', '0', '1261', 'oauth2/application', 'tool', 'system/oauth2/client/index', '0', '1', '1', NULL, TO_DATE('2022-05-10 16:26:33', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-11 23:31:36', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1264', '客户端查询', 'system:oauth2-client:query', '3', '1', '1263', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-05-10 16:26:33', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-11 00:31:06', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1265', '客户端创建', 'system:oauth2-client:create', '3', '2', '1263', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-05-10 16:26:33', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-11 00:31:23', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1266', '客户端更新', 'system:oauth2-client:update', '3', '3', '1263', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-05-10 16:26:33', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-11 00:31:28', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_MENU" ("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON", "COMPONENT", "STATUS", "VISIBLE", "KEEP_ALIVE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1267', '客户端删除', 'system:oauth2-client:delete', '3', '4', '1263', NULL, NULL, NULL, '0', '1', '1', NULL, TO_DATE('2022-05-10 16:26:33', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-11 00:31:33', 'SYYYY-MM-DD HH24:MI:SS'), '0'); COMMIT; COMMIT; @@ -3004,6 +3024,320 @@ COMMENT ON TABLE "SYSTEM_NOTICE" IS '通知公告表'; COMMIT; COMMIT; +-- ---------------------------- +-- Table structure for SYSTEM_OAUTH2_ACCESS_TOKEN +-- ---------------------------- +DROP TABLE "SYSTEM_OAUTH2_ACCESS_TOKEN"; +CREATE TABLE "SYSTEM_OAUTH2_ACCESS_TOKEN" ( + "ID" NUMBER(20,0) NOT NULL, + "USER_ID" NUMBER(20,0) NOT NULL, + "ACCESS_TOKEN" NVARCHAR2(255) NOT NULL, + "REFRESH_TOKEN" NVARCHAR2(32) NOT NULL, + "USER_TYPE" NUMBER(4,0) NOT NULL, + "CLIENT_ID" NVARCHAR2(255) NOT NULL, + "EXPIRES_TIME" DATE NOT NULL, + "CREATOR" NVARCHAR2(64), + "CREATE_TIME" DATE NOT NULL, + "UPDATER" NVARCHAR2(64), + "UPDATE_TIME" DATE NOT NULL, + "DELETED" NUMBER(4,0) DEFAULT 0 NOT NULL, + "TENANT_ID" NUMBER(20,0) NOT NULL, + "SCOPES" NVARCHAR2(255) DEFAULT '' +) +LOGGING +NOCOMPRESS +PCTFREE 10 +INITRANS 1 +STORAGE ( + INITIAL 65536 + NEXT 1048576 + MINEXTENTS 1 + MAXEXTENTS 2147483645 + FREELISTS 1 + FREELIST GROUPS 1 + BUFFER_POOL DEFAULT +) +PARALLEL 1 +NOCACHE +DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "SYSTEM_OAUTH2_ACCESS_TOKEN"."ID" IS '编号'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_ACCESS_TOKEN"."USER_ID" IS '用户编号'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_ACCESS_TOKEN"."ACCESS_TOKEN" IS '访问令牌'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_ACCESS_TOKEN"."REFRESH_TOKEN" IS '刷新令牌'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_ACCESS_TOKEN"."USER_TYPE" IS '用户类型'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_ACCESS_TOKEN"."CLIENT_ID" IS '客户端编号'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_ACCESS_TOKEN"."EXPIRES_TIME" IS '过期时间'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_ACCESS_TOKEN"."CREATOR" IS '创建者'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_ACCESS_TOKEN"."CREATE_TIME" IS '创建时间'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_ACCESS_TOKEN"."UPDATER" IS '更新者'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_ACCESS_TOKEN"."UPDATE_TIME" IS '更新时间'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_ACCESS_TOKEN"."DELETED" IS '是否删除'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_ACCESS_TOKEN"."TENANT_ID" IS '租户编号'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_ACCESS_TOKEN"."SCOPES" IS '授权范围'; +COMMENT ON TABLE "SYSTEM_OAUTH2_ACCESS_TOKEN" IS '刷新令牌'; + +-- ---------------------------- +-- Records of SYSTEM_OAUTH2_ACCESS_TOKEN +-- ---------------------------- +COMMIT; +COMMIT; + +-- ---------------------------- +-- Table structure for SYSTEM_OAUTH2_APPROVE +-- ---------------------------- +DROP TABLE "SYSTEM_OAUTH2_APPROVE"; +CREATE TABLE "SYSTEM_OAUTH2_APPROVE" ( + "ID" NUMBER(20,0) NOT NULL, + "USER_ID" NUMBER(20,0) NOT NULL, + "USER_TYPE" NUMBER(4,0) NOT NULL, + "CLIENT_ID" NVARCHAR2(255) NOT NULL, + "SCOPE" NVARCHAR2(255) NOT NULL, + "APPROVED" VARCHAR2(1 BYTE) NOT NULL, + "EXPIRES_TIME" DATE NOT NULL, + "CREATOR" NVARCHAR2(64), + "CREATE_TIME" DATE NOT NULL, + "UPDATER" NVARCHAR2(64), + "UPDATE_TIME" DATE NOT NULL, + "DELETED" NUMBER(4,0) DEFAULT 0 NOT NULL, + "TENANT_ID" NUMBER(20,0) NOT NULL +) +LOGGING +NOCOMPRESS +PCTFREE 10 +INITRANS 1 +STORAGE ( + INITIAL 65536 + NEXT 1048576 + MINEXTENTS 1 + MAXEXTENTS 2147483645 + FREELISTS 1 + FREELIST GROUPS 1 + BUFFER_POOL DEFAULT +) +PARALLEL 1 +NOCACHE +DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "SYSTEM_OAUTH2_APPROVE"."ID" IS '编号'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_APPROVE"."USER_ID" IS '用户编号'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_APPROVE"."USER_TYPE" IS '用户类型'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_APPROVE"."CLIENT_ID" IS '客户端编号'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_APPROVE"."SCOPE" IS '授权范围'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_APPROVE"."APPROVED" IS '是否接受'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_APPROVE"."EXPIRES_TIME" IS '过期时间'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_APPROVE"."CREATOR" IS '创建者'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_APPROVE"."CREATE_TIME" IS '创建时间'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_APPROVE"."UPDATER" IS '更新者'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_APPROVE"."UPDATE_TIME" IS '更新时间'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_APPROVE"."DELETED" IS '是否删除'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_APPROVE"."TENANT_ID" IS '租户编号'; +COMMENT ON TABLE "SYSTEM_OAUTH2_APPROVE" IS 'OAuth2 批准表'; + +-- ---------------------------- +-- Records of SYSTEM_OAUTH2_APPROVE +-- ---------------------------- +INSERT INTO "SYSTEM_OAUTH2_APPROVE" ("ID", "USER_ID", "USER_TYPE", "CLIENT_ID", "SCOPE", "APPROVED", "EXPIRES_TIME", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "TENANT_ID") VALUES ('42', '1', '2', 'default', 'user.write', '1', TO_DATE('2022-06-25 00:36:50', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-26 00:35:06', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-26 00:36:50', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1'); +INSERT INTO "SYSTEM_OAUTH2_APPROVE" ("ID", "USER_ID", "USER_TYPE", "CLIENT_ID", "SCOPE", "APPROVED", "EXPIRES_TIME", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "TENANT_ID") VALUES ('43', '1', '2', 'default', 'user.read', '1', TO_DATE('2022-06-25 00:36:50', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-26 00:35:06', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-26 00:36:50', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1'); +COMMIT; +COMMIT; + +-- ---------------------------- +-- Table structure for SYSTEM_OAUTH2_CLIENT +-- ---------------------------- +DROP TABLE "SYSTEM_OAUTH2_CLIENT"; +CREATE TABLE "SYSTEM_OAUTH2_CLIENT" ( + "ID" NUMBER(20,0) NOT NULL, + "CLIENT_ID" NVARCHAR2(255) NOT NULL, + "SECRET" NVARCHAR2(255) NOT NULL, + "NAME" NVARCHAR2(255) NOT NULL, + "LOGO" NVARCHAR2(255) NOT NULL, + "DESCRIPTION" NVARCHAR2(255), + "STATUS" NUMBER(4,0) NOT NULL, + "ACCESS_TOKEN_VALIDITY_SECONDS" NUMBER(11,0) NOT NULL, + "REFRESH_TOKEN_VALIDITY_SECONDS" NUMBER(11,0) NOT NULL, + "REDIRECT_URIS" NVARCHAR2(255) NOT NULL, + "AUTO_APPROVE_SCOPES" VARCHAR2(255 BYTE) DEFAULT '', + "AUTHORIZED_GRANT_TYPES" NVARCHAR2(255) NOT NULL, + "SCOPES" NVARCHAR2(255) DEFAULT '', + "AUTHORITIES" NVARCHAR2(255), + "RESOURCE_IDS" NVARCHAR2(255), + "ADDITIONAL_INFORMATION" NCLOB, + "CREATOR" NVARCHAR2(64), + "CREATE_TIME" DATE NOT NULL, + "UPDATER" NVARCHAR2(64), + "UPDATE_TIME" DATE NOT NULL, + "DELETED" NUMBER(4,0) DEFAULT 0 NOT NULL +) +LOGGING +NOCOMPRESS +PCTFREE 10 +INITRANS 1 +STORAGE ( + INITIAL 65536 + NEXT 1048576 + MINEXTENTS 1 + MAXEXTENTS 2147483645 + FREELISTS 1 + FREELIST GROUPS 1 + BUFFER_POOL DEFAULT +) +PARALLEL 1 +NOCACHE +DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."ID" IS '编号'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."CLIENT_ID" IS '客户端编号'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."SECRET" IS '客户端密钥'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."NAME" IS '应用名'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."LOGO" IS '应用图标'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."DESCRIPTION" IS '应用描述'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."STATUS" IS '状态'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."ACCESS_TOKEN_VALIDITY_SECONDS" IS '访问令牌的有效期'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."REFRESH_TOKEN_VALIDITY_SECONDS" IS '刷新令牌的有效期'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."REDIRECT_URIS" IS '可重定向的 URI 地址'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."AUTO_APPROVE_SCOPES" IS '是否自动授权'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."AUTHORIZED_GRANT_TYPES" IS '授权类型'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."SCOPES" IS '授权范围'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."AUTHORITIES" IS '权限'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."RESOURCE_IDS" IS '资源'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."ADDITIONAL_INFORMATION" IS '附加信息'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."CREATOR" IS '创建者'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."CREATE_TIME" IS '创建时间'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."UPDATER" IS '更新者'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."UPDATE_TIME" IS '更新时间'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CLIENT"."DELETED" IS '是否删除'; +COMMENT ON TABLE "SYSTEM_OAUTH2_CLIENT" IS 'OAuth2 客户端表'; + +-- ---------------------------- +-- Records of SYSTEM_OAUTH2_CLIENT +-- ---------------------------- +INSERT INTO "SYSTEM_OAUTH2_CLIENT" ("ID", "CLIENT_ID", "SECRET", "NAME", "LOGO", "DESCRIPTION", "STATUS", "ACCESS_TOKEN_VALIDITY_SECONDS", "REFRESH_TOKEN_VALIDITY_SECONDS", "REDIRECT_URIS", "AUTO_APPROVE_SCOPES", "AUTHORIZED_GRANT_TYPES", "SCOPES", "AUTHORITIES", "RESOURCE_IDS", "ADDITIONAL_INFORMATION", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('1', 'default', 'admin123', '芋道源码', 'http://test.yudao.iocoder.cn/a5e2e244368878a366b516805a4aabf1.png', '我是描述', '0', '180', '8640', '["https://www.iocoder.cn","https://doc.iocoder.cn"]', NULL, '["password","authorization_code","implicit","refresh_token"]', '["user.read","user.write"]', '["system:user:query"]', '[]', '{}', '1', TO_DATE('2022-05-11 21:47:12', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-12 01:00:20', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +INSERT INTO "SYSTEM_OAUTH2_CLIENT" ("ID", "CLIENT_ID", "SECRET", "NAME", "LOGO", "DESCRIPTION", "STATUS", "ACCESS_TOKEN_VALIDITY_SECONDS", "REFRESH_TOKEN_VALIDITY_SECONDS", "REDIRECT_URIS", "AUTO_APPROVE_SCOPES", "AUTHORIZED_GRANT_TYPES", "SCOPES", "AUTHORITIES", "RESOURCE_IDS", "ADDITIONAL_INFORMATION", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED") VALUES ('40', 'test', 'test2', 'biubiu', 'http://test.yudao.iocoder.cn/277a899d573723f1fcdfb57340f00379.png', NULL, '0', '1800', '43200', '["https://www.iocoder.cn"]', '[]', '["password","authorization_code","implicit"]', '[]', '[]', '[]', '{}', '1', TO_DATE('2022-05-12 00:28:20', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-26 00:30:33', 'SYYYY-MM-DD HH24:MI:SS'), '0'); +COMMIT; +COMMIT; + +-- ---------------------------- +-- Table structure for SYSTEM_OAUTH2_CODE +-- ---------------------------- +DROP TABLE "SYSTEM_OAUTH2_CODE"; +CREATE TABLE "SYSTEM_OAUTH2_CODE" ( + "ID" NUMBER(20,0) NOT NULL, + "USER_ID" NUMBER(20,0) NOT NULL, + "USER_TYPE" NUMBER(4,0) NOT NULL, + "CODE" NVARCHAR2(32) NOT NULL, + "CLIENT_ID" NVARCHAR2(255) NOT NULL, + "SCOPES" NVARCHAR2(255), + "EXPIRES_TIME" DATE NOT NULL, + "REDIRECT_URI" NVARCHAR2(255), + "STATE" NVARCHAR2(255) DEFAULT '', + "CREATOR" NVARCHAR2(64), + "CREATE_TIME" DATE NOT NULL, + "UPDATER" NVARCHAR2(64), + "UPDATE_TIME" DATE NOT NULL, + "DELETED" NUMBER(4,0) DEFAULT 0 NOT NULL, + "TENANT_ID" NUMBER(20,0) NOT NULL +) +LOGGING +NOCOMPRESS +PCTFREE 10 +INITRANS 1 +STORAGE ( + INITIAL 65536 + NEXT 1048576 + MINEXTENTS 1 + MAXEXTENTS 2147483645 + FREELISTS 1 + FREELIST GROUPS 1 + BUFFER_POOL DEFAULT +) +PARALLEL 1 +NOCACHE +DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CODE"."ID" IS '编号'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CODE"."USER_ID" IS '用户编号'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CODE"."USER_TYPE" IS '用户类型'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CODE"."CODE" IS '授权码'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CODE"."CLIENT_ID" IS '客户端编号'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CODE"."SCOPES" IS '授权范围'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CODE"."EXPIRES_TIME" IS '过期时间'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CODE"."REDIRECT_URI" IS '可重定向的 URI 地址'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CODE"."STATE" IS '状态'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CODE"."CREATOR" IS '创建者'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CODE"."CREATE_TIME" IS '创建时间'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CODE"."UPDATER" IS '更新者'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CODE"."UPDATE_TIME" IS '更新时间'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CODE"."DELETED" IS '是否删除'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_CODE"."TENANT_ID" IS '租户编号'; +COMMENT ON TABLE "SYSTEM_OAUTH2_CODE" IS 'OAuth2 授权码表'; + +-- ---------------------------- +-- Records of SYSTEM_OAUTH2_CODE +-- ---------------------------- +INSERT INTO "SYSTEM_OAUTH2_CODE" ("ID", "USER_ID", "USER_TYPE", "CODE", "CLIENT_ID", "SCOPES", "EXPIRES_TIME", "REDIRECT_URI", "STATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "TENANT_ID") VALUES ('3', '1', '2', 'b882271c7082496e889e8e1a798f1ca2', 'default', '["user.write"]', TO_DATE('2022-05-26 00:41:41', 'SYYYY-MM-DD HH24:MI:SS'), 'https://www.iocoder.cn', NULL, '1', TO_DATE('2022-05-26 00:36:41', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-26 00:36:41', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1'); +INSERT INTO "SYSTEM_OAUTH2_CODE" ("ID", "USER_ID", "USER_TYPE", "CODE", "CLIENT_ID", "SCOPES", "EXPIRES_TIME", "REDIRECT_URI", "STATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "TENANT_ID") VALUES ('4', '1', '2', '69f7969f221c41e8a5a7887daad9d14e', 'default', '["user.write","user.read"]', TO_DATE('2022-05-26 00:41:50', 'SYYYY-MM-DD HH24:MI:SS'), 'https://www.iocoder.cn', NULL, '1', TO_DATE('2022-05-26 00:36:50', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-26 00:36:50', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1'); +INSERT INTO "SYSTEM_OAUTH2_CODE" ("ID", "USER_ID", "USER_TYPE", "CODE", "CLIENT_ID", "SCOPES", "EXPIRES_TIME", "REDIRECT_URI", "STATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED", "TENANT_ID") VALUES ('5', '1', '2', 'b624454a2fd1447f95849629cf3079a1', 'default', '["user.read","user.write"]', TO_DATE('2022-05-26 00:41:52', 'SYYYY-MM-DD HH24:MI:SS'), 'https://www.iocoder.cn', NULL, '1', TO_DATE('2022-05-26 00:36:52', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-26 00:36:52', 'SYYYY-MM-DD HH24:MI:SS'), '0', '1'); +COMMIT; +COMMIT; + +-- ---------------------------- +-- Table structure for SYSTEM_OAUTH2_REFRESH_TOKEN +-- ---------------------------- +DROP TABLE "SYSTEM_OAUTH2_REFRESH_TOKEN"; +CREATE TABLE "SYSTEM_OAUTH2_REFRESH_TOKEN" ( + "ID" NUMBER(20,0) NOT NULL, + "USER_ID" NUMBER(20,0) NOT NULL, + "REFRESH_TOKEN" NVARCHAR2(32) NOT NULL, + "USER_TYPE" NUMBER(4,0) NOT NULL, + "CLIENT_ID" NVARCHAR2(255) NOT NULL, + "EXPIRES_TIME" DATE NOT NULL, + "CREATOR" NVARCHAR2(64), + "CREATE_TIME" DATE NOT NULL, + "UPDATER" NVARCHAR2(64), + "UPDATE_TIME" DATE NOT NULL, + "DELETED" NUMBER DEFAULT 0 NOT NULL, + "TENANT_ID" NUMBER(20,0) NOT NULL, + "SCOPES" NVARCHAR2(255) DEFAULT '' +) +LOGGING +NOCOMPRESS +PCTFREE 10 +INITRANS 1 +STORAGE ( + INITIAL 65536 + NEXT 1048576 + MINEXTENTS 1 + MAXEXTENTS 2147483645 + FREELISTS 1 + FREELIST GROUPS 1 + BUFFER_POOL DEFAULT +) +PARALLEL 1 +NOCACHE +DISABLE ROW MOVEMENT +; +COMMENT ON COLUMN "SYSTEM_OAUTH2_REFRESH_TOKEN"."ID" IS '编号'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_REFRESH_TOKEN"."USER_ID" IS '用户编号'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_REFRESH_TOKEN"."REFRESH_TOKEN" IS '刷新令牌'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_REFRESH_TOKEN"."USER_TYPE" IS '用户类型'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_REFRESH_TOKEN"."CLIENT_ID" IS '客户端编号'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_REFRESH_TOKEN"."EXPIRES_TIME" IS '过期时间'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_REFRESH_TOKEN"."CREATOR" IS '创建者'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_REFRESH_TOKEN"."CREATE_TIME" IS '创建时间'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_REFRESH_TOKEN"."UPDATER" IS '更新者'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_REFRESH_TOKEN"."UPDATE_TIME" IS '更新时间'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_REFRESH_TOKEN"."DELETED" IS '是否删除'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_REFRESH_TOKEN"."TENANT_ID" IS '租户编号'; +COMMENT ON COLUMN "SYSTEM_OAUTH2_REFRESH_TOKEN"."SCOPES" IS '授权范围'; +COMMENT ON TABLE "SYSTEM_OAUTH2_REFRESH_TOKEN" IS '刷新令牌'; + +-- ---------------------------- +-- Records of SYSTEM_OAUTH2_REFRESH_TOKEN +-- ---------------------------- +COMMIT; +COMMIT; + -- ---------------------------- -- Table structure for SYSTEM_OPERATE_LOG -- ---------------------------- @@ -3988,7 +4322,7 @@ COMMENT ON TABLE "SYSTEM_USERS" IS '用户信息表'; -- Records of SYSTEM_USERS -- ---------------------------- INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('115', 'anzhen', '$2a$10$Qr2lBUuwvDMb98p/o7iSPuHb7GRi4zPHSq4g01ETuY.l4O5txXfvi', 'anzhen', NULL, '100', '[]', NULL, NULL, NULL, NULL, '0', NULL, NULL, '1', TO_DATE('2022-03-24 18:50:59', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-03-24 18:50:59', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); -INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('1', 'admin', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道源码', '管理员', '103', '[1,2]', 'aoteman@126.com', '15612345678', '1', 'http://test.yudao.iocoder.cn/a294ecb2-73dd-4353-bf40-296b8931d0bf', '0', '127.0.0.1', TO_DATE('2022-05-02 16:43:06', 'SYYYY-MM-DD HH24:MI:SS'), 'admin', TO_DATE('2021-01-05 17:03:47', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-05-02 16:49:29', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); +INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('1', 'admin', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道源码', '管理员', '103', '[1,2]', 'aoteman@126.com', '15612345678', '1', 'http://test.yudao.iocoder.cn/a294ecb2-73dd-4353-bf40-296b8931d0bf', '0', '127.0.0.1', TO_DATE('2022-05-13 09:40:57', 'SYYYY-MM-DD HH24:MI:SS'), 'admin', TO_DATE('2021-01-05 17:03:47', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-05-13 09:40:57', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('100', 'yudao', '$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', '芋道', '不要吓我', '104', '[1]', 'yudao@iocoder.cn', '15601691300', '1', NULL, '1', NULL, NULL, NULL, TO_DATE('2021-01-07 09:07:17', 'SYYYY-MM-DD HH24:MI:SS'), '104', TO_DATE('2021-12-16 09:26:10', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('103', 'yuanma', '$2a$10$wWoPT7sqriM2O1YXRL.je.GiL538OR6ZTN8aQZr9JAGdnpCH2tpYe', '源码', NULL, '106', NULL, 'yuanma@iocoder.cn', '15601701300', '0', NULL, '0', '127.0.0.1', TO_DATE('2022-01-18 00:33:40', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-13 23:50:35', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-01-18 00:33:40', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); INSERT INTO "SYSTEM_USERS" ("ID", "USERNAME", "PASSWORD", "NICKNAME", "REMARK", "DEPT_ID", "POST_IDS", "EMAIL", "MOBILE", "SEX", "AVATAR", "STATUS", "LOGIN_IP", "LOGIN_DATE", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('104', 'test', '$2a$10$e5RpuDCC0GYSt0Hvd2.CjujIXwgGct4SnXi6dVGxdgFsnqgEryk5a', '测试号', NULL, '107', '[]', '111@qq.com', '15601691200', '1', NULL, '0', '127.0.0.1', TO_DATE('2022-03-19 21:46:19', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2021-01-21 02:13:53', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-03-19 21:46:19', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); @@ -4102,12 +4436,12 @@ COMMENT ON TABLE "SYSTEM_USER_ROLE" IS '用户和角色关联表'; -- ---------------------------- -- Records of SYSTEM_USER_ROLE -- ---------------------------- -INSERT INTO "SYSTEM_USER_ROLE" ("ID", "USER_ID", "ROLE_ID", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('1', '1', '1', NULL, NULL, NULL, NULL, '1', '0'); -INSERT INTO "SYSTEM_USER_ROLE" ("ID", "USER_ID", "ROLE_ID", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('2', '2', '2', NULL, NULL, NULL, NULL, '1', '0'); -INSERT INTO "SYSTEM_USER_ROLE" ("ID", "USER_ID", "ROLE_ID", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('4', '100', '101', NULL, NULL, NULL, NULL, '1', '0'); -INSERT INTO "SYSTEM_USER_ROLE" ("ID", "USER_ID", "ROLE_ID", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('5', '100', '1', NULL, NULL, NULL, NULL, '1', '0'); -INSERT INTO "SYSTEM_USER_ROLE" ("ID", "USER_ID", "ROLE_ID", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('6', '100', '2', NULL, NULL, NULL, NULL, '1', '0'); -INSERT INTO "SYSTEM_USER_ROLE" ("ID", "USER_ID", "ROLE_ID", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('7', '104', '101', NULL, NULL, NULL, NULL, '1', '0'); +INSERT INTO "SYSTEM_USER_ROLE" ("ID", "USER_ID", "ROLE_ID", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('1', '1', '1', NULL, TO_DATE('2022-02-20 22:59:33', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-02-20 22:59:33', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); +INSERT INTO "SYSTEM_USER_ROLE" ("ID", "USER_ID", "ROLE_ID", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('2', '2', '2', NULL, TO_DATE('2022-02-20 22:59:33', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-02-20 22:59:33', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); +INSERT INTO "SYSTEM_USER_ROLE" ("ID", "USER_ID", "ROLE_ID", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('4', '100', '101', NULL, TO_DATE('2022-02-20 22:59:33', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-02-20 22:59:33', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); +INSERT INTO "SYSTEM_USER_ROLE" ("ID", "USER_ID", "ROLE_ID", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('5', '100', '1', NULL, TO_DATE('2022-02-20 22:59:33', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-02-20 22:59:33', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); +INSERT INTO "SYSTEM_USER_ROLE" ("ID", "USER_ID", "ROLE_ID", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('6', '100', '2', NULL, TO_DATE('2022-02-20 22:59:33', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-02-20 22:59:33', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); +INSERT INTO "SYSTEM_USER_ROLE" ("ID", "USER_ID", "ROLE_ID", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('7', '104', '101', NULL, TO_DATE('2022-02-20 22:59:33', 'SYYYY-MM-DD HH24:MI:SS'), NULL, TO_DATE('2022-02-20 22:59:33', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); INSERT INTO "SYSTEM_USER_ROLE" ("ID", "USER_ID", "ROLE_ID", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('10', '103', '1', '1', TO_DATE('2022-01-11 13:19:45', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-01-11 13:19:45', 'SYYYY-MM-DD HH24:MI:SS'), '1', '0'); INSERT INTO "SYSTEM_USER_ROLE" ("ID", "USER_ID", "ROLE_ID", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('11', '107', '106', '1', TO_DATE('2022-02-20 22:59:33', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-20 22:59:33', 'SYYYY-MM-DD HH24:MI:SS'), '118', '0'); INSERT INTO "SYSTEM_USER_ROLE" ("ID", "USER_ID", "ROLE_ID", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "TENANT_ID", "DELETED") VALUES ('12', '108', '107', '1', TO_DATE('2022-02-20 23:00:50', 'SYYYY-MM-DD HH24:MI:SS'), '1', TO_DATE('2022-02-20 23:00:50', 'SYYYY-MM-DD HH24:MI:SS'), '119', '0'); @@ -4119,50 +4453,6 @@ INSERT INTO "SYSTEM_USER_ROLE" ("ID", "USER_ID", "ROLE_ID", "CREATOR", "CREATE_T COMMIT; COMMIT; --- ---------------------------- --- Table structure for SYSTEM_USER_SESSION --- ---------------------------- -DROP TABLE "SYSTEM_USER_SESSION"; -CREATE TABLE "SYSTEM_USER_SESSION" ( - "ID" NUMBER(20,0) NOT NULL, - "TOKEN" NVARCHAR2(32) NOT NULL, - "USER_ID" NUMBER(20,0) NOT NULL, - "USER_TYPE" NUMBER(4,0) NOT NULL, - "SESSION_TIMEOUT" DATE NOT NULL, - "USERNAME" NVARCHAR2(30), - "USER_IP" NVARCHAR2(50), - "USER_AGENT" NVARCHAR2(512), - "CREATOR" NVARCHAR2(64), - "CREATE_TIME" DATE NOT NULL, - "UPDATER" NVARCHAR2(64), - "UPDATE_TIME" DATE NOT NULL, - "TENANT_ID" NUMBER(20,0) NOT NULL, - "DELETED" NUMBER(1,0) DEFAULT 0 NOT NULL -) -LOGGING -NOCOMPRESS -PCTFREE 10 -INITRANS 1 -STORAGE ( - INITIAL 65536 - NEXT 1048576 - MINEXTENTS 1 - MAXEXTENTS 2147483645 - FREELISTS 1 - FREELIST GROUPS 1 - BUFFER_POOL DEFAULT -) -PARALLEL 1 -NOCACHE -DISABLE ROW MOVEMENT -; - --- ---------------------------- --- Records of SYSTEM_USER_SESSION --- ---------------------------- -COMMIT; -COMMIT; - -- ---------------------------- -- Sequence structure for BPM_FORM_SEQ -- ---------------------------- @@ -4373,6 +4663,30 @@ CREATE SEQUENCE "SYSTEM_MENU_SEQ" MINVALUE 0 MAXVALUE 99999999999999999999999999 DROP SEQUENCE "SYSTEM_NOTICE_SEQ"; CREATE SEQUENCE "SYSTEM_NOTICE_SEQ" MINVALUE 0 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 CACHE 20; +-- ---------------------------- +-- Sequence structure for SYSTEM_OAUTH2_ACCESS_TOKEN_SEQ +-- ---------------------------- +DROP SEQUENCE "SYSTEM_OAUTH2_ACCESS_TOKEN_SEQ"; +CREATE SEQUENCE "SYSTEM_OAUTH2_ACCESS_TOKEN_SEQ" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 CACHE 20; + +-- ---------------------------- +-- Sequence structure for SYSTEM_OAUTH2_APPROVE_SEQ +-- ---------------------------- +DROP SEQUENCE "SYSTEM_OAUTH2_APPROVE_SEQ"; +CREATE SEQUENCE "SYSTEM_OAUTH2_APPROVE_SEQ" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 CACHE 20; + +-- ---------------------------- +-- Sequence structure for SYSTEM_OAUTH2_CLIENT_SEQ +-- ---------------------------- +DROP SEQUENCE "SYSTEM_OAUTH2_CLIENT_SEQ"; +CREATE SEQUENCE "SYSTEM_OAUTH2_CLIENT_SEQ" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 CACHE 20; + +-- ---------------------------- +-- Sequence structure for SYSTEM_OAUTH2_CODE_SEQ +-- ---------------------------- +DROP SEQUENCE "SYSTEM_OAUTH2_CODE_SEQ"; +CREATE SEQUENCE "SYSTEM_OAUTH2_CODE_SEQ" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 CACHE 20; + -- ---------------------------- -- Sequence structure for SYSTEM_OPERATE_LOG_SEQ -- ---------------------------- @@ -4484,6 +4798,12 @@ ALTER TABLE "BPM_FORM" ADD CONSTRAINT "SYS_C007770" CHECK ("CREATE_TIME" IS NOT ALTER TABLE "BPM_FORM" ADD CONSTRAINT "SYS_C007771" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "BPM_FORM" ADD CONSTRAINT "SYS_C007772" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "BPM_FORM" ADD CONSTRAINT "SYS_C008199" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_FORM" ADD CONSTRAINT "SYS_C008446" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_FORM" ADD CONSTRAINT "SYS_C008447" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_FORM" ADD CONSTRAINT "SYS_C008448" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_FORM" ADD CONSTRAINT "SYS_C008449" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_FORM" ADD CONSTRAINT "SYS_C008450" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_FORM" ADD CONSTRAINT "SYS_C008451" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table BPM_OA_LEAVE @@ -4499,6 +4819,17 @@ ALTER TABLE "BPM_OA_LEAVE" ADD CONSTRAINT "SYS_C007780" CHECK ("CREATE_TIME" IS ALTER TABLE "BPM_OA_LEAVE" ADD CONSTRAINT "SYS_C007781" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "BPM_OA_LEAVE" ADD CONSTRAINT "SYS_C007782" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "BPM_OA_LEAVE" ADD CONSTRAINT "SYS_C008200" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_OA_LEAVE" ADD CONSTRAINT "SYS_C008452" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_OA_LEAVE" ADD CONSTRAINT "SYS_C008453" CHECK ("USER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_OA_LEAVE" ADD CONSTRAINT "SYS_C008454" CHECK ("TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_OA_LEAVE" ADD CONSTRAINT "SYS_C008455" CHECK ("START_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_OA_LEAVE" ADD CONSTRAINT "SYS_C008456" CHECK ("END_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_OA_LEAVE" ADD CONSTRAINT "SYS_C008457" CHECK ("DAY" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_OA_LEAVE" ADD CONSTRAINT "SYS_C008458" CHECK ("RESULT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_OA_LEAVE" ADD CONSTRAINT "SYS_C008459" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_OA_LEAVE" ADD CONSTRAINT "SYS_C008460" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_OA_LEAVE" ADD CONSTRAINT "SYS_C008461" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_OA_LEAVE" ADD CONSTRAINT "SYS_C008462" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table BPM_PROCESS_DEFINITION_EXT @@ -4509,6 +4840,12 @@ ALTER TABLE "BPM_PROCESS_DEFINITION_EXT" ADD CONSTRAINT "SYS_C007785" CHECK ("CR ALTER TABLE "BPM_PROCESS_DEFINITION_EXT" ADD CONSTRAINT "SYS_C007786" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "BPM_PROCESS_DEFINITION_EXT" ADD CONSTRAINT "SYS_C007787" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "BPM_PROCESS_DEFINITION_EXT" ADD CONSTRAINT "SYS_C008201" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_PROCESS_DEFINITION_EXT" ADD CONSTRAINT "SYS_C008463" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_PROCESS_DEFINITION_EXT" ADD CONSTRAINT "SYS_C008464" CHECK ("FORM_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_PROCESS_DEFINITION_EXT" ADD CONSTRAINT "SYS_C008465" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_PROCESS_DEFINITION_EXT" ADD CONSTRAINT "SYS_C008466" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_PROCESS_DEFINITION_EXT" ADD CONSTRAINT "SYS_C008467" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_PROCESS_DEFINITION_EXT" ADD CONSTRAINT "SYS_C008468" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table BPM_PROCESS_INSTANCE_EXT @@ -4521,6 +4858,14 @@ ALTER TABLE "BPM_PROCESS_INSTANCE_EXT" ADD CONSTRAINT "SYS_C007792" CHECK ("CREA ALTER TABLE "BPM_PROCESS_INSTANCE_EXT" ADD CONSTRAINT "SYS_C007793" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "BPM_PROCESS_INSTANCE_EXT" ADD CONSTRAINT "SYS_C007794" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "BPM_PROCESS_INSTANCE_EXT" ADD CONSTRAINT "SYS_C008202" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_PROCESS_INSTANCE_EXT" ADD CONSTRAINT "SYS_C008469" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_PROCESS_INSTANCE_EXT" ADD CONSTRAINT "SYS_C008470" CHECK ("START_USER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_PROCESS_INSTANCE_EXT" ADD CONSTRAINT "SYS_C008471" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_PROCESS_INSTANCE_EXT" ADD CONSTRAINT "SYS_C008472" CHECK ("RESULT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_PROCESS_INSTANCE_EXT" ADD CONSTRAINT "SYS_C008473" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_PROCESS_INSTANCE_EXT" ADD CONSTRAINT "SYS_C008474" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_PROCESS_INSTANCE_EXT" ADD CONSTRAINT "SYS_C008475" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_PROCESS_INSTANCE_EXT" ADD CONSTRAINT "SYS_C008476" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table BPM_TASK_ASSIGN_RULE @@ -4531,6 +4876,12 @@ ALTER TABLE "BPM_TASK_ASSIGN_RULE" ADD CONSTRAINT "SYS_C007797" CHECK ("CREATE_T ALTER TABLE "BPM_TASK_ASSIGN_RULE" ADD CONSTRAINT "SYS_C007798" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "BPM_TASK_ASSIGN_RULE" ADD CONSTRAINT "SYS_C007799" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "BPM_TASK_ASSIGN_RULE" ADD CONSTRAINT "SYS_C008203" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_TASK_ASSIGN_RULE" ADD CONSTRAINT "SYS_C008477" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_TASK_ASSIGN_RULE" ADD CONSTRAINT "SYS_C008478" CHECK ("TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_TASK_ASSIGN_RULE" ADD CONSTRAINT "SYS_C008479" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_TASK_ASSIGN_RULE" ADD CONSTRAINT "SYS_C008480" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_TASK_ASSIGN_RULE" ADD CONSTRAINT "SYS_C008481" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_TASK_ASSIGN_RULE" ADD CONSTRAINT "SYS_C008482" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table BPM_TASK_EXT @@ -4541,6 +4892,12 @@ ALTER TABLE "BPM_TASK_EXT" ADD CONSTRAINT "SYS_C007802" CHECK ("CREATE_TIME" IS ALTER TABLE "BPM_TASK_EXT" ADD CONSTRAINT "SYS_C007803" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "BPM_TASK_EXT" ADD CONSTRAINT "SYS_C007804" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "BPM_TASK_EXT" ADD CONSTRAINT "SYS_C008204" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_TASK_EXT" ADD CONSTRAINT "SYS_C008483" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_TASK_EXT" ADD CONSTRAINT "SYS_C008484" CHECK ("RESULT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_TASK_EXT" ADD CONSTRAINT "SYS_C008485" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_TASK_EXT" ADD CONSTRAINT "SYS_C008486" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_TASK_EXT" ADD CONSTRAINT "SYS_C008487" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_TASK_EXT" ADD CONSTRAINT "SYS_C008488" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table BPM_USER_GROUP @@ -4552,6 +4909,13 @@ ALTER TABLE "BPM_USER_GROUP" ADD CONSTRAINT "SYS_C007810" CHECK ("CREATE_TIME" I ALTER TABLE "BPM_USER_GROUP" ADD CONSTRAINT "SYS_C007811" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "BPM_USER_GROUP" ADD CONSTRAINT "SYS_C007812" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "BPM_USER_GROUP" ADD CONSTRAINT "SYS_C008205" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_USER_GROUP" ADD CONSTRAINT "SYS_C008489" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_USER_GROUP" ADD CONSTRAINT "SYS_C008490" CHECK ("MEMBER_USER_IDS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_USER_GROUP" ADD CONSTRAINT "SYS_C008491" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_USER_GROUP" ADD CONSTRAINT "SYS_C008492" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_USER_GROUP" ADD CONSTRAINT "SYS_C008493" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_USER_GROUP" ADD CONSTRAINT "SYS_C008494" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "BPM_USER_GROUP" ADD CONSTRAINT "SYS_C008495" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table INFRA_API_ACCESS_LOG @@ -4566,6 +4930,16 @@ ALTER TABLE "INFRA_API_ACCESS_LOG" ADD CONSTRAINT "SYS_C007835" CHECK ("RESULT_C ALTER TABLE "INFRA_API_ACCESS_LOG" ADD CONSTRAINT "SYS_C007836" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_API_ACCESS_LOG" ADD CONSTRAINT "SYS_C007837" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_API_ACCESS_LOG" ADD CONSTRAINT "SYS_C007838" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ACCESS_LOG" ADD CONSTRAINT "SYS_C008496" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ACCESS_LOG" ADD CONSTRAINT "SYS_C008497" CHECK ("USER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ACCESS_LOG" ADD CONSTRAINT "SYS_C008498" CHECK ("USER_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ACCESS_LOG" ADD CONSTRAINT "SYS_C008499" CHECK ("BEGIN_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ACCESS_LOG" ADD CONSTRAINT "SYS_C008500" CHECK ("END_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ACCESS_LOG" ADD CONSTRAINT "SYS_C008501" CHECK ("DURATION" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ACCESS_LOG" ADD CONSTRAINT "SYS_C008502" CHECK ("RESULT_CODE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ACCESS_LOG" ADD CONSTRAINT "SYS_C008503" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ACCESS_LOG" ADD CONSTRAINT "SYS_C008504" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ACCESS_LOG" ADD CONSTRAINT "SYS_C008505" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table INFRA_API_ERROR_LOG @@ -4582,6 +4956,18 @@ ALTER TABLE "INFRA_API_ERROR_LOG" ADD CONSTRAINT "SYS_C007859" CHECK ("PROCESS_S ALTER TABLE "INFRA_API_ERROR_LOG" ADD CONSTRAINT "SYS_C007860" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_API_ERROR_LOG" ADD CONSTRAINT "SYS_C007861" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_API_ERROR_LOG" ADD CONSTRAINT "SYS_C007862" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ERROR_LOG" ADD CONSTRAINT "SYS_C008506" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ERROR_LOG" ADD CONSTRAINT "SYS_C008507" CHECK ("USER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ERROR_LOG" ADD CONSTRAINT "SYS_C008508" CHECK ("USER_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ERROR_LOG" ADD CONSTRAINT "SYS_C008509" CHECK ("EXCEPTION_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ERROR_LOG" ADD CONSTRAINT "SYS_C008510" CHECK ("EXCEPTION_MESSAGE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ERROR_LOG" ADD CONSTRAINT "SYS_C008511" CHECK ("EXCEPTION_ROOT_CAUSE_MESSAGE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ERROR_LOG" ADD CONSTRAINT "SYS_C008512" CHECK ("EXCEPTION_STACK_TRACE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ERROR_LOG" ADD CONSTRAINT "SYS_C008513" CHECK ("EXCEPTION_LINE_NUMBER" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ERROR_LOG" ADD CONSTRAINT "SYS_C008514" CHECK ("PROCESS_STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ERROR_LOG" ADD CONSTRAINT "SYS_C008515" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ERROR_LOG" ADD CONSTRAINT "SYS_C008516" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_API_ERROR_LOG" ADD CONSTRAINT "SYS_C008517" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table INFRA_CODEGEN_COLUMN @@ -4592,6 +4978,12 @@ ALTER TABLE "INFRA_CODEGEN_COLUMN" ADD CONSTRAINT "SYS_C007841" CHECK ("ORDINAL_ ALTER TABLE "INFRA_CODEGEN_COLUMN" ADD CONSTRAINT "SYS_C007842" CHECK ("LIST_OPERATION_CONDITION" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_CODEGEN_COLUMN" ADD CONSTRAINT "SYS_C007843" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_CODEGEN_COLUMN" ADD CONSTRAINT "SYS_C007844" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_CODEGEN_COLUMN" ADD CONSTRAINT "SYS_C008518" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_CODEGEN_COLUMN" ADD CONSTRAINT "SYS_C008519" CHECK ("TABLE_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_CODEGEN_COLUMN" ADD CONSTRAINT "SYS_C008520" CHECK ("ORDINAL_POSITION" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_CODEGEN_COLUMN" ADD CONSTRAINT "SYS_C008521" CHECK ("LIST_OPERATION_CONDITION" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_CODEGEN_COLUMN" ADD CONSTRAINT "SYS_C008522" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_CODEGEN_COLUMN" ADD CONSTRAINT "SYS_C008523" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table INFRA_CODEGEN_TABLE @@ -4602,6 +4994,12 @@ ALTER TABLE "INFRA_CODEGEN_TABLE" ADD CONSTRAINT "SYS_C007847" CHECK ("SCENE" IS ALTER TABLE "INFRA_CODEGEN_TABLE" ADD CONSTRAINT "SYS_C007848" CHECK ("TEMPLATE_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_CODEGEN_TABLE" ADD CONSTRAINT "SYS_C007849" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_CODEGEN_TABLE" ADD CONSTRAINT "SYS_C007850" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_CODEGEN_TABLE" ADD CONSTRAINT "SYS_C008524" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_CODEGEN_TABLE" ADD CONSTRAINT "SYS_C008525" CHECK ("DATA_SOURCE_CONFIG_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_CODEGEN_TABLE" ADD CONSTRAINT "SYS_C008526" CHECK ("SCENE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_CODEGEN_TABLE" ADD CONSTRAINT "SYS_C008527" CHECK ("TEMPLATE_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_CODEGEN_TABLE" ADD CONSTRAINT "SYS_C008528" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_CODEGEN_TABLE" ADD CONSTRAINT "SYS_C008529" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table INFRA_CONFIG @@ -4611,6 +5009,11 @@ ALTER TABLE "INFRA_CONFIG" ADD CONSTRAINT "SYS_C007864" CHECK ("TYPE" IS NOT NUL ALTER TABLE "INFRA_CONFIG" ADD CONSTRAINT "SYS_C007865" CHECK ("VISIBLE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_CONFIG" ADD CONSTRAINT "SYS_C007866" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_CONFIG" ADD CONSTRAINT "SYS_C007867" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_CONFIG" ADD CONSTRAINT "SYS_C008530" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_CONFIG" ADD CONSTRAINT "SYS_C008531" CHECK ("TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_CONFIG" ADD CONSTRAINT "SYS_C008532" CHECK ("VISIBLE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_CONFIG" ADD CONSTRAINT "SYS_C008533" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_CONFIG" ADD CONSTRAINT "SYS_C008534" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table INFRA_DATA_SOURCE_CONFIG @@ -4623,6 +5026,14 @@ ALTER TABLE "INFRA_DATA_SOURCE_CONFIG" ADD CONSTRAINT "SYS_C008191" CHECK ("PASS ALTER TABLE "INFRA_DATA_SOURCE_CONFIG" ADD CONSTRAINT "SYS_C008192" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_DATA_SOURCE_CONFIG" ADD CONSTRAINT "SYS_C008193" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_DATA_SOURCE_CONFIG" ADD CONSTRAINT "SYS_C008194" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_DATA_SOURCE_CONFIG" ADD CONSTRAINT "SYS_C008535" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_DATA_SOURCE_CONFIG" ADD CONSTRAINT "SYS_C008536" CHECK ("NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_DATA_SOURCE_CONFIG" ADD CONSTRAINT "SYS_C008537" CHECK ("URL" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_DATA_SOURCE_CONFIG" ADD CONSTRAINT "SYS_C008538" CHECK ("USERNAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_DATA_SOURCE_CONFIG" ADD CONSTRAINT "SYS_C008539" CHECK ("PASSWORD" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_DATA_SOURCE_CONFIG" ADD CONSTRAINT "SYS_C008540" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_DATA_SOURCE_CONFIG" ADD CONSTRAINT "SYS_C008541" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_DATA_SOURCE_CONFIG" ADD CONSTRAINT "SYS_C008542" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table INFRA_FILE @@ -4631,6 +5042,10 @@ ALTER TABLE "INFRA_FILE" ADD CONSTRAINT "SYS_C007868" CHECK ("ID" IS NOT NULL) N ALTER TABLE "INFRA_FILE" ADD CONSTRAINT "SYS_C007869" CHECK ("SIZE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_FILE" ADD CONSTRAINT "SYS_C007870" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_FILE" ADD CONSTRAINT "SYS_C007871" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_FILE" ADD CONSTRAINT "SYS_C008543" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_FILE" ADD CONSTRAINT "SYS_C008544" CHECK ("SIZE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_FILE" ADD CONSTRAINT "SYS_C008545" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_FILE" ADD CONSTRAINT "SYS_C008546" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table INFRA_FILE_CONFIG @@ -4639,6 +5054,10 @@ ALTER TABLE "INFRA_FILE_CONFIG" ADD CONSTRAINT "SYS_C007872" CHECK ("ID" IS NOT ALTER TABLE "INFRA_FILE_CONFIG" ADD CONSTRAINT "SYS_C007873" CHECK ("STORAGE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_FILE_CONFIG" ADD CONSTRAINT "SYS_C007874" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_FILE_CONFIG" ADD CONSTRAINT "SYS_C007875" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_FILE_CONFIG" ADD CONSTRAINT "SYS_C008547" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_FILE_CONFIG" ADD CONSTRAINT "SYS_C008548" CHECK ("STORAGE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_FILE_CONFIG" ADD CONSTRAINT "SYS_C008549" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_FILE_CONFIG" ADD CONSTRAINT "SYS_C008550" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table INFRA_FILE_CONTENT @@ -4648,6 +5067,11 @@ ALTER TABLE "INFRA_FILE_CONTENT" ADD CONSTRAINT "SYS_C007877" CHECK ("CONFIG_ID" ALTER TABLE "INFRA_FILE_CONTENT" ADD CONSTRAINT "SYS_C007878" CHECK ("CONTENT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_FILE_CONTENT" ADD CONSTRAINT "SYS_C007879" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_FILE_CONTENT" ADD CONSTRAINT "SYS_C007880" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_FILE_CONTENT" ADD CONSTRAINT "SYS_C008551" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_FILE_CONTENT" ADD CONSTRAINT "SYS_C008552" CHECK ("CONFIG_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_FILE_CONTENT" ADD CONSTRAINT "SYS_C008553" CHECK ("CONTENT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_FILE_CONTENT" ADD CONSTRAINT "SYS_C008554" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_FILE_CONTENT" ADD CONSTRAINT "SYS_C008555" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table INFRA_JOB @@ -4659,6 +5083,13 @@ ALTER TABLE "INFRA_JOB" ADD CONSTRAINT "SYS_C007884" CHECK ("RETRY_INTERVAL" IS ALTER TABLE "INFRA_JOB" ADD CONSTRAINT "SYS_C007885" CHECK ("MONITOR_TIMEOUT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_JOB" ADD CONSTRAINT "SYS_C007886" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_JOB" ADD CONSTRAINT "SYS_C007887" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_JOB" ADD CONSTRAINT "SYS_C008556" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_JOB" ADD CONSTRAINT "SYS_C008557" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_JOB" ADD CONSTRAINT "SYS_C008558" CHECK ("RETRY_COUNT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_JOB" ADD CONSTRAINT "SYS_C008559" CHECK ("RETRY_INTERVAL" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_JOB" ADD CONSTRAINT "SYS_C008560" CHECK ("MONITOR_TIMEOUT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_JOB" ADD CONSTRAINT "SYS_C008561" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_JOB" ADD CONSTRAINT "SYS_C008562" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table INFRA_JOB_LOG @@ -4670,6 +5101,13 @@ ALTER TABLE "INFRA_JOB_LOG" ADD CONSTRAINT "SYS_C007897" CHECK ("BEGIN_TIME" IS ALTER TABLE "INFRA_JOB_LOG" ADD CONSTRAINT "SYS_C007898" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_JOB_LOG" ADD CONSTRAINT "SYS_C007899" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_JOB_LOG" ADD CONSTRAINT "SYS_C007900" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_JOB_LOG" ADD CONSTRAINT "SYS_C008563" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_JOB_LOG" ADD CONSTRAINT "SYS_C008564" CHECK ("JOB_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_JOB_LOG" ADD CONSTRAINT "SYS_C008565" CHECK ("EXECUTE_INDEX" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_JOB_LOG" ADD CONSTRAINT "SYS_C008566" CHECK ("BEGIN_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_JOB_LOG" ADD CONSTRAINT "SYS_C008567" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_JOB_LOG" ADD CONSTRAINT "SYS_C008568" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_JOB_LOG" ADD CONSTRAINT "SYS_C008569" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table INFRA_TEST_DEMO @@ -4680,6 +5118,12 @@ ALTER TABLE "INFRA_TEST_DEMO" ADD CONSTRAINT "SYS_C007890" CHECK ("TYPE" IS NOT ALTER TABLE "INFRA_TEST_DEMO" ADD CONSTRAINT "SYS_C007891" CHECK ("CATEGORY" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_TEST_DEMO" ADD CONSTRAINT "SYS_C007892" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "INFRA_TEST_DEMO" ADD CONSTRAINT "SYS_C007893" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_TEST_DEMO" ADD CONSTRAINT "SYS_C008570" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_TEST_DEMO" ADD CONSTRAINT "SYS_C008571" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_TEST_DEMO" ADD CONSTRAINT "SYS_C008572" CHECK ("TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_TEST_DEMO" ADD CONSTRAINT "SYS_C008573" CHECK ("CATEGORY" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_TEST_DEMO" ADD CONSTRAINT "SYS_C008574" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "INFRA_TEST_DEMO" ADD CONSTRAINT "SYS_C008575" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table MEMBER_USER @@ -4689,6 +5133,11 @@ ALTER TABLE "MEMBER_USER" ADD CONSTRAINT "SYS_C007902" CHECK ("STATUS" IS NOT NU ALTER TABLE "MEMBER_USER" ADD CONSTRAINT "SYS_C007903" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "MEMBER_USER" ADD CONSTRAINT "SYS_C007904" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "MEMBER_USER" ADD CONSTRAINT "SYS_C007905" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "MEMBER_USER" ADD CONSTRAINT "SYS_C008576" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "MEMBER_USER" ADD CONSTRAINT "SYS_C008577" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "MEMBER_USER" ADD CONSTRAINT "SYS_C008578" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "MEMBER_USER" ADD CONSTRAINT "SYS_C008579" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "MEMBER_USER" ADD CONSTRAINT "SYS_C008580" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table PAY_APP @@ -4699,6 +5148,12 @@ ALTER TABLE "PAY_APP" ADD CONSTRAINT "SYS_C007908" CHECK ("MERCHANT_ID" IS NOT N ALTER TABLE "PAY_APP" ADD CONSTRAINT "SYS_C007909" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "PAY_APP" ADD CONSTRAINT "SYS_C007910" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "PAY_APP" ADD CONSTRAINT "SYS_C007911" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_APP" ADD CONSTRAINT "SYS_C008581" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_APP" ADD CONSTRAINT "SYS_C008582" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_APP" ADD CONSTRAINT "SYS_C008583" CHECK ("MERCHANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_APP" ADD CONSTRAINT "SYS_C008584" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_APP" ADD CONSTRAINT "SYS_C008585" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_APP" ADD CONSTRAINT "SYS_C008586" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table PAY_CHANNEL @@ -4711,6 +5166,14 @@ ALTER TABLE "PAY_CHANNEL" ADD CONSTRAINT "SYS_C007916" CHECK ("APP_ID" IS NOT NU ALTER TABLE "PAY_CHANNEL" ADD CONSTRAINT "SYS_C007917" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "PAY_CHANNEL" ADD CONSTRAINT "SYS_C007918" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "PAY_CHANNEL" ADD CONSTRAINT "SYS_C007919" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_CHANNEL" ADD CONSTRAINT "SYS_C008587" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_CHANNEL" ADD CONSTRAINT "SYS_C008588" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_CHANNEL" ADD CONSTRAINT "SYS_C008589" CHECK ("FEE_RATE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_CHANNEL" ADD CONSTRAINT "SYS_C008590" CHECK ("MERCHANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_CHANNEL" ADD CONSTRAINT "SYS_C008591" CHECK ("APP_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_CHANNEL" ADD CONSTRAINT "SYS_C008592" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_CHANNEL" ADD CONSTRAINT "SYS_C008593" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_CHANNEL" ADD CONSTRAINT "SYS_C008594" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table PAY_MERCHANT @@ -4720,6 +5183,11 @@ ALTER TABLE "PAY_MERCHANT" ADD CONSTRAINT "SYS_C007921" CHECK ("STATUS" IS NOT N ALTER TABLE "PAY_MERCHANT" ADD CONSTRAINT "SYS_C007922" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "PAY_MERCHANT" ADD CONSTRAINT "SYS_C007923" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "PAY_MERCHANT" ADD CONSTRAINT "SYS_C007924" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_MERCHANT" ADD CONSTRAINT "SYS_C008595" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_MERCHANT" ADD CONSTRAINT "SYS_C008596" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_MERCHANT" ADD CONSTRAINT "SYS_C008597" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_MERCHANT" ADD CONSTRAINT "SYS_C008598" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_MERCHANT" ADD CONSTRAINT "SYS_C008599" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table PAY_NOTIFY_LOG @@ -4731,6 +5199,13 @@ ALTER TABLE "PAY_NOTIFY_LOG" ADD CONSTRAINT "SYS_C007928" CHECK ("STATUS" IS NOT ALTER TABLE "PAY_NOTIFY_LOG" ADD CONSTRAINT "SYS_C007929" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "PAY_NOTIFY_LOG" ADD CONSTRAINT "SYS_C007930" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "PAY_NOTIFY_LOG" ADD CONSTRAINT "SYS_C007931" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_LOG" ADD CONSTRAINT "SYS_C008600" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_LOG" ADD CONSTRAINT "SYS_C008601" CHECK ("TASK_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_LOG" ADD CONSTRAINT "SYS_C008602" CHECK ("NOTIFY_TIMES" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_LOG" ADD CONSTRAINT "SYS_C008603" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_LOG" ADD CONSTRAINT "SYS_C008604" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_LOG" ADD CONSTRAINT "SYS_C008605" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_LOG" ADD CONSTRAINT "SYS_C008606" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table PAY_NOTIFY_TASK @@ -4748,6 +5223,19 @@ ALTER TABLE "PAY_NOTIFY_TASK" ADD CONSTRAINT "SYS_C007941" CHECK ("MAX_NOTIFY_TI ALTER TABLE "PAY_NOTIFY_TASK" ADD CONSTRAINT "SYS_C007942" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "PAY_NOTIFY_TASK" ADD CONSTRAINT "SYS_C007943" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "PAY_NOTIFY_TASK" ADD CONSTRAINT "SYS_C007944" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_TASK" ADD CONSTRAINT "SYS_C008607" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_TASK" ADD CONSTRAINT "SYS_C008608" CHECK ("MERCHANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_TASK" ADD CONSTRAINT "SYS_C008609" CHECK ("APP_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_TASK" ADD CONSTRAINT "SYS_C008610" CHECK ("TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_TASK" ADD CONSTRAINT "SYS_C008611" CHECK ("DATA_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_TASK" ADD CONSTRAINT "SYS_C008612" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_TASK" ADD CONSTRAINT "SYS_C008613" CHECK ("NEXT_NOTIFY_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_TASK" ADD CONSTRAINT "SYS_C008614" CHECK ("LAST_EXECUTE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_TASK" ADD CONSTRAINT "SYS_C008615" CHECK ("NOTIFY_TIMES" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_TASK" ADD CONSTRAINT "SYS_C008616" CHECK ("MAX_NOTIFY_TIMES" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_TASK" ADD CONSTRAINT "SYS_C008617" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_TASK" ADD CONSTRAINT "SYS_C008618" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_NOTIFY_TASK" ADD CONSTRAINT "SYS_C008619" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table PAY_ORDER @@ -4765,6 +5253,19 @@ ALTER TABLE "PAY_ORDER" ADD CONSTRAINT "SYS_C007954" CHECK ("REFUND_AMOUNT" IS N ALTER TABLE "PAY_ORDER" ADD CONSTRAINT "SYS_C007955" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "PAY_ORDER" ADD CONSTRAINT "SYS_C007956" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "PAY_ORDER" ADD CONSTRAINT "SYS_C007957" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER" ADD CONSTRAINT "SYS_C008620" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER" ADD CONSTRAINT "SYS_C008621" CHECK ("MERCHANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER" ADD CONSTRAINT "SYS_C008622" CHECK ("APP_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER" ADD CONSTRAINT "SYS_C008623" CHECK ("NOTIFY_STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER" ADD CONSTRAINT "SYS_C008624" CHECK ("AMOUNT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER" ADD CONSTRAINT "SYS_C008625" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER" ADD CONSTRAINT "SYS_C008626" CHECK ("EXPIRE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER" ADD CONSTRAINT "SYS_C008627" CHECK ("REFUND_STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER" ADD CONSTRAINT "SYS_C008628" CHECK ("REFUND_TIMES" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER" ADD CONSTRAINT "SYS_C008629" CHECK ("REFUND_AMOUNT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER" ADD CONSTRAINT "SYS_C008630" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER" ADD CONSTRAINT "SYS_C008631" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER" ADD CONSTRAINT "SYS_C008632" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table PAY_ORDER_EXTENSION @@ -4776,6 +5277,13 @@ ALTER TABLE "PAY_ORDER_EXTENSION" ADD CONSTRAINT "SYS_C007961" CHECK ("STATUS" I ALTER TABLE "PAY_ORDER_EXTENSION" ADD CONSTRAINT "SYS_C007962" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "PAY_ORDER_EXTENSION" ADD CONSTRAINT "SYS_C007963" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "PAY_ORDER_EXTENSION" ADD CONSTRAINT "SYS_C007964" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER_EXTENSION" ADD CONSTRAINT "SYS_C008633" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER_EXTENSION" ADD CONSTRAINT "SYS_C008634" CHECK ("ORDER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER_EXTENSION" ADD CONSTRAINT "SYS_C008635" CHECK ("CHANNEL_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER_EXTENSION" ADD CONSTRAINT "SYS_C008636" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER_EXTENSION" ADD CONSTRAINT "SYS_C008637" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER_EXTENSION" ADD CONSTRAINT "SYS_C008638" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_ORDER_EXTENSION" ADD CONSTRAINT "SYS_C008639" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table PAY_REFUND @@ -4793,6 +5301,19 @@ ALTER TABLE "PAY_REFUND" ADD CONSTRAINT "SYS_C007974" CHECK ("REFUND_AMOUNT" IS ALTER TABLE "PAY_REFUND" ADD CONSTRAINT "SYS_C007975" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "PAY_REFUND" ADD CONSTRAINT "SYS_C007976" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "PAY_REFUND" ADD CONSTRAINT "SYS_C007977" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_REFUND" ADD CONSTRAINT "SYS_C008640" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_REFUND" ADD CONSTRAINT "SYS_C008641" CHECK ("MERCHANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_REFUND" ADD CONSTRAINT "SYS_C008642" CHECK ("APP_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_REFUND" ADD CONSTRAINT "SYS_C008643" CHECK ("CHANNEL_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_REFUND" ADD CONSTRAINT "SYS_C008644" CHECK ("ORDER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_REFUND" ADD CONSTRAINT "SYS_C008645" CHECK ("NOTIFY_STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_REFUND" ADD CONSTRAINT "SYS_C008646" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_REFUND" ADD CONSTRAINT "SYS_C008647" CHECK ("TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_REFUND" ADD CONSTRAINT "SYS_C008648" CHECK ("PAY_AMOUNT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_REFUND" ADD CONSTRAINT "SYS_C008649" CHECK ("REFUND_AMOUNT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_REFUND" ADD CONSTRAINT "SYS_C008650" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_REFUND" ADD CONSTRAINT "SYS_C008651" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "PAY_REFUND" ADD CONSTRAINT "SYS_C008652" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Primary Key structure for table QRTZ_BLOB_TRIGGERS @@ -4805,6 +5326,9 @@ ALTER TABLE "QRTZ_BLOB_TRIGGERS" ADD CONSTRAINT "QRTZ_BLOB_TRIG_PK" PRIMARY KEY ALTER TABLE "QRTZ_BLOB_TRIGGERS" ADD CONSTRAINT "SYS_C008266" CHECK ("SCHED_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "QRTZ_BLOB_TRIGGERS" ADD CONSTRAINT "SYS_C008267" CHECK ("TRIGGER_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "QRTZ_BLOB_TRIGGERS" ADD CONSTRAINT "SYS_C008268" CHECK ("TRIGGER_GROUP" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_BLOB_TRIGGERS" ADD CONSTRAINT "SYS_C008653" CHECK ("SCHED_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_BLOB_TRIGGERS" ADD CONSTRAINT "SYS_C008654" CHECK ("TRIGGER_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_BLOB_TRIGGERS" ADD CONSTRAINT "SYS_C008655" CHECK ("TRIGGER_GROUP" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Primary Key structure for table QRTZ_CALENDARS @@ -4817,6 +5341,9 @@ ALTER TABLE "QRTZ_CALENDARS" ADD CONSTRAINT "QRTZ_CALENDARS_PK" PRIMARY KEY ("SC ALTER TABLE "QRTZ_CALENDARS" ADD CONSTRAINT "SYS_C008271" CHECK ("SCHED_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "QRTZ_CALENDARS" ADD CONSTRAINT "SYS_C008272" CHECK ("CALENDAR_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "QRTZ_CALENDARS" ADD CONSTRAINT "SYS_C008273" CHECK ("CALENDAR" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_CALENDARS" ADD CONSTRAINT "SYS_C008656" CHECK ("SCHED_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_CALENDARS" ADD CONSTRAINT "SYS_C008657" CHECK ("CALENDAR_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_CALENDARS" ADD CONSTRAINT "SYS_C008658" CHECK ("CALENDAR" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Primary Key structure for table QRTZ_CRON_TRIGGERS @@ -4830,6 +5357,10 @@ ALTER TABLE "QRTZ_CRON_TRIGGERS" ADD CONSTRAINT "SYS_C008255" CHECK ("SCHED_NAME ALTER TABLE "QRTZ_CRON_TRIGGERS" ADD CONSTRAINT "SYS_C008256" CHECK ("TRIGGER_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "QRTZ_CRON_TRIGGERS" ADD CONSTRAINT "SYS_C008257" CHECK ("TRIGGER_GROUP" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "QRTZ_CRON_TRIGGERS" ADD CONSTRAINT "SYS_C008258" CHECK ("CRON_EXPRESSION" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_CRON_TRIGGERS" ADD CONSTRAINT "SYS_C008659" CHECK ("SCHED_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_CRON_TRIGGERS" ADD CONSTRAINT "SYS_C008660" CHECK ("TRIGGER_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_CRON_TRIGGERS" ADD CONSTRAINT "SYS_C008661" CHECK ("TRIGGER_GROUP" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_CRON_TRIGGERS" ADD CONSTRAINT "SYS_C008662" CHECK ("CRON_EXPRESSION" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Primary Key structure for table QRTZ_FIRED_TRIGGERS @@ -4848,73 +5379,21 @@ ALTER TABLE "QRTZ_FIRED_TRIGGERS" ADD CONSTRAINT "SYS_C008283" CHECK ("FIRED_TIM ALTER TABLE "QRTZ_FIRED_TRIGGERS" ADD CONSTRAINT "SYS_C008284" CHECK ("SCHED_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "QRTZ_FIRED_TRIGGERS" ADD CONSTRAINT "SYS_C008285" CHECK ("PRIORITY" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "QRTZ_FIRED_TRIGGERS" ADD CONSTRAINT "SYS_C008286" CHECK ("STATE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_FIRED_TRIGGERS" ADD CONSTRAINT "SYS_C008663" CHECK ("SCHED_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_FIRED_TRIGGERS" ADD CONSTRAINT "SYS_C008664" CHECK ("ENTRY_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_FIRED_TRIGGERS" ADD CONSTRAINT "SYS_C008665" CHECK ("TRIGGER_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_FIRED_TRIGGERS" ADD CONSTRAINT "SYS_C008666" CHECK ("TRIGGER_GROUP" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_FIRED_TRIGGERS" ADD CONSTRAINT "SYS_C008667" CHECK ("INSTANCE_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_FIRED_TRIGGERS" ADD CONSTRAINT "SYS_C008668" CHECK ("FIRED_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_FIRED_TRIGGERS" ADD CONSTRAINT "SYS_C008669" CHECK ("SCHED_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_FIRED_TRIGGERS" ADD CONSTRAINT "SYS_C008670" CHECK ("PRIORITY" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_FIRED_TRIGGERS" ADD CONSTRAINT "SYS_C008671" CHECK ("STATE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Indexes structure for table QRTZ_FIRED_TRIGGERS -- ---------------------------- CREATE INDEX "IDX_QRTZ_FT_INST_JOB_REQ_RCVRY" - ON "QRTZ_FIRED_TRIGGERS" ("SCHED_NAME" ASC, "INSTANCE_NAME" ASC, "REQUESTS_RECOVERY" ASC) - LOGGING - VISIBLE -PCTFREE 10 -INITRANS 2 -STORAGE ( - INITIAL 65536 - NEXT 1048576 - MINEXTENTS 1 - MAXEXTENTS 2147483645 - FREELISTS 1 - FREELIST GROUPS 1 - BUFFER_POOL DEFAULT -); -CREATE INDEX "IDX_QRTZ_FT_JG" - ON "QRTZ_FIRED_TRIGGERS" ("SCHED_NAME" ASC, "JOB_GROUP" ASC) - LOGGING - VISIBLE -PCTFREE 10 -INITRANS 2 -STORAGE ( - INITIAL 65536 - NEXT 1048576 - MINEXTENTS 1 - MAXEXTENTS 2147483645 - FREELISTS 1 - FREELIST GROUPS 1 - BUFFER_POOL DEFAULT -); -CREATE INDEX "IDX_QRTZ_FT_J_G" - ON "QRTZ_FIRED_TRIGGERS" ("SCHED_NAME" ASC, "JOB_NAME" ASC, "JOB_GROUP" ASC) - LOGGING - NOSORT - VISIBLE -PCTFREE 10 -INITRANS 2 -STORAGE ( - INITIAL 65536 - NEXT 1048576 - MINEXTENTS 1 - MAXEXTENTS 2147483645 - FREELISTS 1 - FREELIST GROUPS 1 - BUFFER_POOL DEFAULT -); -CREATE INDEX "IDX_QRTZ_FT_TG" - ON "QRTZ_FIRED_TRIGGERS" ("SCHED_NAME" ASC, "TRIGGER_GROUP" ASC) - LOGGING - VISIBLE -PCTFREE 10 -INITRANS 2 -STORAGE ( - INITIAL 65536 - NEXT 1048576 - MINEXTENTS 1 - MAXEXTENTS 2147483645 - FREELISTS 1 - FREELIST GROUPS 1 - BUFFER_POOL DEFAULT -); -CREATE INDEX "IDX_QRTZ_FT_TRIG_INST_NAME" - ON "QRTZ_FIRED_TRIGGERS" ("SCHED_NAME" ASC, "INSTANCE_NAME" ASC) LOCAL + ON "QRTZ_FIRED_TRIGGERS" ("SCHED_NAME" ASC, "INSTANCE_NAME" ASC, "REQUESTS_RECOVERY" ASC) LOCAL LOGGING ONLINE NOSORT @@ -4930,8 +5409,42 @@ STORAGE ( FREELIST GROUPS 1 BUFFER_POOL DEFAULT ); -CREATE INDEX "IDX_QRTZ_FT_T_G" - ON "QRTZ_FIRED_TRIGGERS" ("SCHED_NAME" ASC, "TRIGGER_NAME" ASC, "TRIGGER_GROUP" ASC) LOCAL +CREATE INDEX "IDX_QRTZ_FT_JG" + ON "QRTZ_FIRED_TRIGGERS" ("SCHED_NAME" ASC, "JOB_GROUP" ASC) LOCAL + LOGGING + ONLINE + NOSORT + VISIBLE +PCTFREE 10 +INITRANS 2 +STORAGE ( + INITIAL 65536 + NEXT 1048576 + MINEXTENTS 1 + MAXEXTENTS 2147483645 + FREELISTS 1 + FREELIST GROUPS 1 + BUFFER_POOL DEFAULT +); +CREATE INDEX "IDX_QRTZ_FT_J_G" + ON "QRTZ_FIRED_TRIGGERS" ("SCHED_NAME" ASC, "JOB_NAME" ASC, "JOB_GROUP" ASC) LOCAL + LOGGING + ONLINE + NOSORT + VISIBLE +PCTFREE 10 +INITRANS 2 +STORAGE ( + INITIAL 65536 + NEXT 1048576 + MINEXTENTS 1 + MAXEXTENTS 2147483645 + FREELISTS 1 + FREELIST GROUPS 1 + BUFFER_POOL DEFAULT +); +CREATE INDEX "IDX_QRTZ_FT_TG" + ON "QRTZ_FIRED_TRIGGERS" ("SCHED_NAME" ASC, "TRIGGER_GROUP" ASC) LOCAL LOGGING ONLINE NOSORT @@ -5011,6 +5524,8 @@ ALTER TABLE "QRTZ_LOCKS" ADD CONSTRAINT "QRTZ_LOCKS_PK" PRIMARY KEY ("SCHED_NAME -- ---------------------------- ALTER TABLE "QRTZ_LOCKS" ADD CONSTRAINT "SYS_C008293" CHECK ("SCHED_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "QRTZ_LOCKS" ADD CONSTRAINT "SYS_C008294" CHECK ("LOCK_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_LOCKS" ADD CONSTRAINT "SYS_C008672" CHECK ("SCHED_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_LOCKS" ADD CONSTRAINT "SYS_C008673" CHECK ("LOCK_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Primary Key structure for table QRTZ_PAUSED_TRIGGER_GRPS @@ -5022,6 +5537,8 @@ ALTER TABLE "QRTZ_PAUSED_TRIGGER_GRPS" ADD CONSTRAINT "QRTZ_PAUSED_TRIG_GRPS_PK" -- ---------------------------- ALTER TABLE "QRTZ_PAUSED_TRIGGER_GRPS" ADD CONSTRAINT "SYS_C008275" CHECK ("SCHED_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "QRTZ_PAUSED_TRIGGER_GRPS" ADD CONSTRAINT "SYS_C008276" CHECK ("TRIGGER_GROUP" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_PAUSED_TRIGGER_GRPS" ADD CONSTRAINT "SYS_C008674" CHECK ("SCHED_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_PAUSED_TRIGGER_GRPS" ADD CONSTRAINT "SYS_C008675" CHECK ("TRIGGER_GROUP" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Primary Key structure for table QRTZ_SCHEDULER_STATE @@ -5035,6 +5552,10 @@ ALTER TABLE "QRTZ_SCHEDULER_STATE" ADD CONSTRAINT "SYS_C008288" CHECK ("SCHED_NA ALTER TABLE "QRTZ_SCHEDULER_STATE" ADD CONSTRAINT "SYS_C008289" CHECK ("INSTANCE_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "QRTZ_SCHEDULER_STATE" ADD CONSTRAINT "SYS_C008290" CHECK ("LAST_CHECKIN_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "QRTZ_SCHEDULER_STATE" ADD CONSTRAINT "SYS_C008291" CHECK ("CHECKIN_INTERVAL" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_SCHEDULER_STATE" ADD CONSTRAINT "SYS_C008676" CHECK ("SCHED_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_SCHEDULER_STATE" ADD CONSTRAINT "SYS_C008677" CHECK ("INSTANCE_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_SCHEDULER_STATE" ADD CONSTRAINT "SYS_C008678" CHECK ("LAST_CHECKIN_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_SCHEDULER_STATE" ADD CONSTRAINT "SYS_C008679" CHECK ("CHECKIN_INTERVAL" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Primary Key structure for table QRTZ_SIMPLE_TRIGGERS @@ -5050,6 +5571,12 @@ ALTER TABLE "QRTZ_SIMPLE_TRIGGERS" ADD CONSTRAINT "SYS_C008249" CHECK ("TRIGGER_ ALTER TABLE "QRTZ_SIMPLE_TRIGGERS" ADD CONSTRAINT "SYS_C008250" CHECK ("REPEAT_COUNT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "QRTZ_SIMPLE_TRIGGERS" ADD CONSTRAINT "SYS_C008251" CHECK ("REPEAT_INTERVAL" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "QRTZ_SIMPLE_TRIGGERS" ADD CONSTRAINT "SYS_C008252" CHECK ("TIMES_TRIGGERED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_SIMPLE_TRIGGERS" ADD CONSTRAINT "SYS_C008680" CHECK ("SCHED_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_SIMPLE_TRIGGERS" ADD CONSTRAINT "SYS_C008681" CHECK ("TRIGGER_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_SIMPLE_TRIGGERS" ADD CONSTRAINT "SYS_C008682" CHECK ("TRIGGER_GROUP" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_SIMPLE_TRIGGERS" ADD CONSTRAINT "SYS_C008683" CHECK ("REPEAT_COUNT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_SIMPLE_TRIGGERS" ADD CONSTRAINT "SYS_C008684" CHECK ("REPEAT_INTERVAL" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_SIMPLE_TRIGGERS" ADD CONSTRAINT "SYS_C008685" CHECK ("TIMES_TRIGGERED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Primary Key structure for table QRTZ_SIMPROP_TRIGGERS @@ -5062,6 +5589,9 @@ ALTER TABLE "QRTZ_SIMPROP_TRIGGERS" ADD CONSTRAINT "QRTZ_SIMPROP_TRIG_PK" PRIMAR ALTER TABLE "QRTZ_SIMPROP_TRIGGERS" ADD CONSTRAINT "SYS_C008261" CHECK ("SCHED_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "QRTZ_SIMPROP_TRIGGERS" ADD CONSTRAINT "SYS_C008262" CHECK ("TRIGGER_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "QRTZ_SIMPROP_TRIGGERS" ADD CONSTRAINT "SYS_C008263" CHECK ("TRIGGER_GROUP" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_SIMPROP_TRIGGERS" ADD CONSTRAINT "SYS_C008686" CHECK ("SCHED_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_SIMPROP_TRIGGERS" ADD CONSTRAINT "SYS_C008687" CHECK ("TRIGGER_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_SIMPROP_TRIGGERS" ADD CONSTRAINT "SYS_C008688" CHECK ("TRIGGER_GROUP" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Primary Key structure for table QRTZ_TRIGGERS @@ -5079,6 +5609,14 @@ ALTER TABLE "QRTZ_TRIGGERS" ADD CONSTRAINT "SYS_C008241" CHECK ("JOB_GROUP" IS N ALTER TABLE "QRTZ_TRIGGERS" ADD CONSTRAINT "SYS_C008242" CHECK ("TRIGGER_STATE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "QRTZ_TRIGGERS" ADD CONSTRAINT "SYS_C008243" CHECK ("TRIGGER_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "QRTZ_TRIGGERS" ADD CONSTRAINT "SYS_C008244" CHECK ("START_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_TRIGGERS" ADD CONSTRAINT "SYS_C008689" CHECK ("SCHED_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_TRIGGERS" ADD CONSTRAINT "SYS_C008690" CHECK ("TRIGGER_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_TRIGGERS" ADD CONSTRAINT "SYS_C008691" CHECK ("TRIGGER_GROUP" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_TRIGGERS" ADD CONSTRAINT "SYS_C008692" CHECK ("JOB_NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_TRIGGERS" ADD CONSTRAINT "SYS_C008693" CHECK ("JOB_GROUP" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_TRIGGERS" ADD CONSTRAINT "SYS_C008694" CHECK ("TRIGGER_STATE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_TRIGGERS" ADD CONSTRAINT "SYS_C008695" CHECK ("TRIGGER_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "QRTZ_TRIGGERS" ADD CONSTRAINT "SYS_C008696" CHECK ("START_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Indexes structure for table QRTZ_TRIGGERS @@ -5098,8 +5636,8 @@ STORAGE ( FREELIST GROUPS 1 BUFFER_POOL DEFAULT ); -CREATE INDEX "IDX_QRTZ_T_G" - ON "QRTZ_TRIGGERS" ("SCHED_NAME" ASC, "TRIGGER_GROUP" ASC) LOCAL +CREATE INDEX "IDX_QRTZ_T_J" + ON "QRTZ_TRIGGERS" ("SCHED_NAME" ASC, "JOB_NAME" ASC, "JOB_GROUP" ASC) LOCAL LOGGING ONLINE NOSORT @@ -5115,21 +5653,6 @@ STORAGE ( FREELIST GROUPS 1 BUFFER_POOL DEFAULT ); -CREATE INDEX "IDX_QRTZ_T_J" - ON "QRTZ_TRIGGERS" ("SCHED_NAME" ASC, "JOB_NAME" ASC, "JOB_GROUP" ASC) - LOGGING - VISIBLE -PCTFREE 10 -INITRANS 2 -STORAGE ( - INITIAL 65536 - NEXT 1048576 - MINEXTENTS 1 - MAXEXTENTS 2147483645 - FREELISTS 1 - FREELIST GROUPS 1 - BUFFER_POOL DEFAULT -); CREATE INDEX "IDX_QRTZ_T_JG" ON "QRTZ_TRIGGERS" ("SCHED_NAME" ASC, "JOB_GROUP" ASC) LOGGING @@ -5146,22 +5669,7 @@ STORAGE ( BUFFER_POOL DEFAULT ); CREATE INDEX "IDX_QRTZ_T_NEXT_FIRE_TIME" - ON "QRTZ_TRIGGERS" ("SCHED_NAME" ASC, "NEXT_FIRE_TIME" ASC) - LOGGING - VISIBLE -PCTFREE 10 -INITRANS 2 -STORAGE ( - INITIAL 65536 - NEXT 1048576 - MINEXTENTS 1 - MAXEXTENTS 2147483645 - FREELISTS 1 - FREELIST GROUPS 1 - BUFFER_POOL DEFAULT -); -CREATE INDEX "IDX_QRTZ_T_NFT_MISFIRE" - ON "QRTZ_TRIGGERS" ("SCHED_NAME" ASC, "MISFIRE_INSTR" ASC, "NEXT_FIRE_TIME" ASC) LOCAL + ON "QRTZ_TRIGGERS" ("SCHED_NAME" ASC, "NEXT_FIRE_TIME" ASC) LOCAL LOGGING ONLINE NOSORT @@ -5178,7 +5686,7 @@ STORAGE ( BUFFER_POOL DEFAULT ); CREATE INDEX "IDX_QRTZ_T_NFT_ST" - ON "QRTZ_TRIGGERS" ("SCHED_NAME" ASC, "TRIGGER_STATE" ASC, "NEXT_FIRE_TIME" ASC) + ON "QRTZ_TRIGGERS" ("SCHED_NAME" ASC, "TRIGGER_STATE" ASC, "NEXT_FIRE_TIME" ASC) LOCAL LOGGING VISIBLE PCTFREE 10 @@ -5193,56 +5701,7 @@ STORAGE ( BUFFER_POOL DEFAULT ); CREATE INDEX "IDX_QRTZ_T_NFT_ST_MISFIRE" - ON "QRTZ_TRIGGERS" ("SCHED_NAME" ASC, "MISFIRE_INSTR" ASC, "NEXT_FIRE_TIME" ASC, "TRIGGER_STATE" ASC) - LOGGING - VISIBLE -PCTFREE 10 -INITRANS 2 -STORAGE ( - INITIAL 65536 - NEXT 1048576 - MINEXTENTS 1 - MAXEXTENTS 2147483645 - FREELISTS 1 - FREELIST GROUPS 1 - BUFFER_POOL DEFAULT -); -CREATE INDEX "IDX_QRTZ_T_NFT_ST_MISFIRE_GRP" - ON "QRTZ_TRIGGERS" ("SCHED_NAME" ASC, "MISFIRE_INSTR" ASC, "NEXT_FIRE_TIME" ASC, "TRIGGER_GROUP" ASC, "TRIGGER_STATE" ASC) LOCAL - LOGGING - ONLINE - NOSORT - VISIBLE -PCTFREE 10 -INITRANS 2 -STORAGE ( - INITIAL 65536 - NEXT 1048576 - MINEXTENTS 1 - MAXEXTENTS 2147483645 - FREELISTS 1 - FREELIST GROUPS 1 - BUFFER_POOL DEFAULT -); -CREATE INDEX "IDX_QRTZ_T_N_G_STATE" - ON "QRTZ_TRIGGERS" ("SCHED_NAME" ASC, "TRIGGER_GROUP" ASC, "TRIGGER_STATE" ASC) LOCAL - LOGGING - ONLINE - NOSORT - VISIBLE -PCTFREE 10 -INITRANS 2 -STORAGE ( - INITIAL 65536 - NEXT 1048576 - MINEXTENTS 1 - MAXEXTENTS 2147483645 - FREELISTS 1 - FREELIST GROUPS 1 - BUFFER_POOL DEFAULT -); -CREATE INDEX "IDX_QRTZ_T_N_STATE" - ON "QRTZ_TRIGGERS" ("SCHED_NAME" ASC, "TRIGGER_NAME" ASC, "TRIGGER_GROUP" ASC, "TRIGGER_STATE" ASC) LOCAL + ON "QRTZ_TRIGGERS" ("SCHED_NAME" ASC, "MISFIRE_INSTR" ASC, "NEXT_FIRE_TIME" ASC, "TRIGGER_STATE" ASC) LOCAL LOGGING ONLINE NOSORT @@ -5285,6 +5744,14 @@ ALTER TABLE "SYSTEM_DEPT" ADD CONSTRAINT "SYS_C008034" CHECK ("CREATE_TIME" IS N ALTER TABLE "SYSTEM_DEPT" ADD CONSTRAINT "SYS_C008035" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_DEPT" ADD CONSTRAINT "SYS_C008036" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_DEPT" ADD CONSTRAINT "SYS_C008206" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_DEPT" ADD CONSTRAINT "SYS_C008697" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_DEPT" ADD CONSTRAINT "SYS_C008698" CHECK ("PARENT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_DEPT" ADD CONSTRAINT "SYS_C008699" CHECK ("SORT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_DEPT" ADD CONSTRAINT "SYS_C008700" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_DEPT" ADD CONSTRAINT "SYS_C008701" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_DEPT" ADD CONSTRAINT "SYS_C008702" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_DEPT" ADD CONSTRAINT "SYS_C008703" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_DEPT" ADD CONSTRAINT "SYS_C008704" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_DICT_DATA @@ -5295,6 +5762,12 @@ ALTER TABLE "SYSTEM_DICT_DATA" ADD CONSTRAINT "SYS_C008039" CHECK ("STATUS" IS N ALTER TABLE "SYSTEM_DICT_DATA" ADD CONSTRAINT "SYS_C008040" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_DICT_DATA" ADD CONSTRAINT "SYS_C008041" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_DICT_DATA" ADD CONSTRAINT "SYS_C008207" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_DICT_DATA" ADD CONSTRAINT "SYS_C008705" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_DICT_DATA" ADD CONSTRAINT "SYS_C008706" CHECK ("SORT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_DICT_DATA" ADD CONSTRAINT "SYS_C008707" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_DICT_DATA" ADD CONSTRAINT "SYS_C008708" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_DICT_DATA" ADD CONSTRAINT "SYS_C008709" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_DICT_DATA" ADD CONSTRAINT "SYS_C008710" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_DICT_TYPE @@ -5304,6 +5777,11 @@ ALTER TABLE "SYSTEM_DICT_TYPE" ADD CONSTRAINT "SYS_C008043" CHECK ("STATUS" IS N ALTER TABLE "SYSTEM_DICT_TYPE" ADD CONSTRAINT "SYS_C008044" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_DICT_TYPE" ADD CONSTRAINT "SYS_C008045" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_DICT_TYPE" ADD CONSTRAINT "SYS_C008208" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_DICT_TYPE" ADD CONSTRAINT "SYS_C008711" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_DICT_TYPE" ADD CONSTRAINT "SYS_C008712" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_DICT_TYPE" ADD CONSTRAINT "SYS_C008713" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_DICT_TYPE" ADD CONSTRAINT "SYS_C008714" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_DICT_TYPE" ADD CONSTRAINT "SYS_C008715" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_ERROR_CODE @@ -5314,6 +5792,12 @@ ALTER TABLE "SYSTEM_ERROR_CODE" ADD CONSTRAINT "SYS_C008048" CHECK ("CODE" IS NO ALTER TABLE "SYSTEM_ERROR_CODE" ADD CONSTRAINT "SYS_C008049" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_ERROR_CODE" ADD CONSTRAINT "SYS_C008050" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_ERROR_CODE" ADD CONSTRAINT "SYS_C008209" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ERROR_CODE" ADD CONSTRAINT "SYS_C008716" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ERROR_CODE" ADD CONSTRAINT "SYS_C008717" CHECK ("TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ERROR_CODE" ADD CONSTRAINT "SYS_C008718" CHECK ("CODE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ERROR_CODE" ADD CONSTRAINT "SYS_C008719" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ERROR_CODE" ADD CONSTRAINT "SYS_C008720" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ERROR_CODE" ADD CONSTRAINT "SYS_C008721" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_LOGIN_LOG @@ -5327,71 +5811,171 @@ ALTER TABLE "SYSTEM_LOGIN_LOG" ADD CONSTRAINT "SYS_C008061" CHECK ("CREATE_TIME" ALTER TABLE "SYSTEM_LOGIN_LOG" ADD CONSTRAINT "SYS_C008062" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_LOGIN_LOG" ADD CONSTRAINT "SYS_C008063" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_LOGIN_LOG" ADD CONSTRAINT "SYS_C008210" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_LOGIN_LOG" ADD CONSTRAINT "SYS_C008722" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_LOGIN_LOG" ADD CONSTRAINT "SYS_C008723" CHECK ("LOG_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_LOGIN_LOG" ADD CONSTRAINT "SYS_C008724" CHECK ("USER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_LOGIN_LOG" ADD CONSTRAINT "SYS_C008725" CHECK ("USER_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_LOGIN_LOG" ADD CONSTRAINT "SYS_C008726" CHECK ("RESULT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_LOGIN_LOG" ADD CONSTRAINT "SYS_C008727" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_LOGIN_LOG" ADD CONSTRAINT "SYS_C008728" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_LOGIN_LOG" ADD CONSTRAINT "SYS_C008729" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_LOGIN_LOG" ADD CONSTRAINT "SYS_C008730" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_MENU -- ---------------------------- -ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C008064" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C008065" CHECK ("TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C008066" CHECK ("SORT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C008067" CHECK ("PARENT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C008068" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C008069" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C008070" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C008211" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C008212" CHECK ("VISIBLE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C008213" CHECK ("KEEP_ALIVE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C009625" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C009626" CHECK ("NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C009628" CHECK ("TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C009629" CHECK ("SORT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C009630" CHECK ("PARENT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C009631" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C009632" CHECK ("VISIBLE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C009633" CHECK ("KEEP_ALIVE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C009634" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C009635" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_MENU" ADD CONSTRAINT "SYS_C009636" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_NOTICE -- ---------------------------- -ALTER TABLE "SYSTEM_NOTICE" ADD CONSTRAINT "SYS_C008071" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_NOTICE" ADD CONSTRAINT "SYS_C008072" CHECK ("CONTENT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_NOTICE" ADD CONSTRAINT "SYS_C008073" CHECK ("NOTICE_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_NOTICE" ADD CONSTRAINT "SYS_C008074" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_NOTICE" ADD CONSTRAINT "SYS_C008075" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_NOTICE" ADD CONSTRAINT "SYS_C008076" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_NOTICE" ADD CONSTRAINT "SYS_C008077" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_NOTICE" ADD CONSTRAINT "SYS_C008214" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_NOTICE" ADD CONSTRAINT "SYS_C009566" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_NOTICE" ADD CONSTRAINT "SYS_C009567" CHECK ("CONTENT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_NOTICE" ADD CONSTRAINT "SYS_C009568" CHECK ("NOTICE_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_NOTICE" ADD CONSTRAINT "SYS_C009569" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_NOTICE" ADD CONSTRAINT "SYS_C009570" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_NOTICE" ADD CONSTRAINT "SYS_C009571" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_NOTICE" ADD CONSTRAINT "SYS_C009572" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_NOTICE" ADD CONSTRAINT "SYS_C009573" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; + +-- ---------------------------- +-- Primary Key structure for table SYSTEM_OAUTH2_ACCESS_TOKEN +-- ---------------------------- +ALTER TABLE "SYSTEM_OAUTH2_ACCESS_TOKEN" ADD CONSTRAINT "SYS_C008444" PRIMARY KEY ("ID"); + +-- ---------------------------- +-- Checks structure for table SYSTEM_OAUTH2_ACCESS_TOKEN +-- ---------------------------- +ALTER TABLE "SYSTEM_OAUTH2_ACCESS_TOKEN" ADD CONSTRAINT "SYS_C008418" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_ACCESS_TOKEN" ADD CONSTRAINT "SYS_C008419" CHECK ("USER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_ACCESS_TOKEN" ADD CONSTRAINT "SYS_C008420" CHECK ("ACCESS_TOKEN" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_ACCESS_TOKEN" ADD CONSTRAINT "SYS_C008421" CHECK ("REFRESH_TOKEN" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_ACCESS_TOKEN" ADD CONSTRAINT "SYS_C008422" CHECK ("USER_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_ACCESS_TOKEN" ADD CONSTRAINT "SYS_C008423" CHECK ("CLIENT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_ACCESS_TOKEN" ADD CONSTRAINT "SYS_C008424" CHECK ("EXPIRES_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_ACCESS_TOKEN" ADD CONSTRAINT "SYS_C008425" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_ACCESS_TOKEN" ADD CONSTRAINT "SYS_C008426" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_ACCESS_TOKEN" ADD CONSTRAINT "SYS_C008427" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_ACCESS_TOKEN" ADD CONSTRAINT "SYS_C008428" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; + +-- ---------------------------- +-- Checks structure for table SYSTEM_OAUTH2_APPROVE +-- ---------------------------- +ALTER TABLE "SYSTEM_OAUTH2_APPROVE" ADD CONSTRAINT "SYS_C009679" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_APPROVE" ADD CONSTRAINT "SYS_C009691" CHECK ("USER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_APPROVE" ADD CONSTRAINT "SYS_C009692" CHECK ("USER_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_APPROVE" ADD CONSTRAINT "SYS_C009693" CHECK ("CLIENT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_APPROVE" ADD CONSTRAINT "SYS_C009694" CHECK ("SCOPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_APPROVE" ADD CONSTRAINT "SYS_C009695" CHECK ("APPROVED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_APPROVE" ADD CONSTRAINT "SYS_C009696" CHECK ("EXPIRES_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_APPROVE" ADD CONSTRAINT "SYS_C009697" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_APPROVE" ADD CONSTRAINT "SYS_C009698" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_APPROVE" ADD CONSTRAINT "SYS_C009699" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_APPROVE" ADD CONSTRAINT "SYS_C009700" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; + +-- ---------------------------- +-- Primary Key structure for table SYSTEM_OAUTH2_CLIENT +-- ---------------------------- +ALTER TABLE "SYSTEM_OAUTH2_CLIENT" ADD CONSTRAINT "SYS_C008445" PRIMARY KEY ("ID"); + +-- ---------------------------- +-- Checks structure for table SYSTEM_OAUTH2_CLIENT +-- ---------------------------- +ALTER TABLE "SYSTEM_OAUTH2_CLIENT" ADD CONSTRAINT "SYS_C008429" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CLIENT" ADD CONSTRAINT "SYS_C008430" CHECK ("CLIENT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CLIENT" ADD CONSTRAINT "SYS_C008431" CHECK ("SECRET" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CLIENT" ADD CONSTRAINT "SYS_C008432" CHECK ("NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CLIENT" ADD CONSTRAINT "SYS_C008433" CHECK ("LOGO" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CLIENT" ADD CONSTRAINT "SYS_C008434" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CLIENT" ADD CONSTRAINT "SYS_C008435" CHECK ("ACCESS_TOKEN_VALIDITY_SECONDS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CLIENT" ADD CONSTRAINT "SYS_C008436" CHECK ("REFRESH_TOKEN_VALIDITY_SECONDS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CLIENT" ADD CONSTRAINT "SYS_C008437" CHECK ("REDIRECT_URIS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CLIENT" ADD CONSTRAINT "SYS_C008439" CHECK ("AUTHORIZED_GRANT_TYPES" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CLIENT" ADD CONSTRAINT "SYS_C008440" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CLIENT" ADD CONSTRAINT "SYS_C008441" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CLIENT" ADD CONSTRAINT "SYS_C008442" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; + +-- ---------------------------- +-- Checks structure for table SYSTEM_OAUTH2_CODE +-- ---------------------------- +ALTER TABLE "SYSTEM_OAUTH2_CODE" ADD CONSTRAINT "SYS_C009680" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CODE" ADD CONSTRAINT "SYS_C009681" CHECK ("USER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CODE" ADD CONSTRAINT "SYS_C009682" CHECK ("USER_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CODE" ADD CONSTRAINT "SYS_C009683" CHECK ("CODE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CODE" ADD CONSTRAINT "SYS_C009684" CHECK ("CLIENT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CODE" ADD CONSTRAINT "SYS_C009685" CHECK ("EXPIRES_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CODE" ADD CONSTRAINT "SYS_C009687" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CODE" ADD CONSTRAINT "SYS_C009688" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CODE" ADD CONSTRAINT "SYS_C009689" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_CODE" ADD CONSTRAINT "SYS_C009690" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; + +-- ---------------------------- +-- Primary Key structure for table SYSTEM_OAUTH2_REFRESH_TOKEN +-- ---------------------------- +ALTER TABLE "SYSTEM_OAUTH2_REFRESH_TOKEN" ADD CONSTRAINT "SYS_C008443" PRIMARY KEY ("ID"); + +-- ---------------------------- +-- Checks structure for table SYSTEM_OAUTH2_REFRESH_TOKEN +-- ---------------------------- +ALTER TABLE "SYSTEM_OAUTH2_REFRESH_TOKEN" ADD CONSTRAINT "SYS_C008408" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_REFRESH_TOKEN" ADD CONSTRAINT "SYS_C008409" CHECK ("USER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_REFRESH_TOKEN" ADD CONSTRAINT "SYS_C008410" CHECK ("REFRESH_TOKEN" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_REFRESH_TOKEN" ADD CONSTRAINT "SYS_C008411" CHECK ("USER_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_REFRESH_TOKEN" ADD CONSTRAINT "SYS_C008412" CHECK ("CLIENT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_REFRESH_TOKEN" ADD CONSTRAINT "SYS_C008413" CHECK ("EXPIRES_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_REFRESH_TOKEN" ADD CONSTRAINT "SYS_C008414" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_REFRESH_TOKEN" ADD CONSTRAINT "SYS_C008415" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_REFRESH_TOKEN" ADD CONSTRAINT "SYS_C008416" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OAUTH2_REFRESH_TOKEN" ADD CONSTRAINT "SYS_C008417" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_OPERATE_LOG -- ---------------------------- -ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C008078" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C008079" CHECK ("USER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C008080" CHECK ("USER_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C008081" CHECK ("TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C008082" CHECK ("START_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C008083" CHECK ("DURATION" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C008084" CHECK ("RESULT_CODE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C008085" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C008086" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C008087" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C008215" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C009574" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C009575" CHECK ("USER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C009576" CHECK ("USER_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C009577" CHECK ("TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C009578" CHECK ("START_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C009579" CHECK ("DURATION" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C009580" CHECK ("RESULT_CODE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C009581" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C009582" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C009583" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_OPERATE_LOG" ADD CONSTRAINT "SYS_C009584" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_POST -- ---------------------------- -ALTER TABLE "SYSTEM_POST" ADD CONSTRAINT "SYS_C008088" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_POST" ADD CONSTRAINT "SYS_C008089" CHECK ("SORT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_POST" ADD CONSTRAINT "SYS_C008090" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_POST" ADD CONSTRAINT "SYS_C008091" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_POST" ADD CONSTRAINT "SYS_C008092" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_POST" ADD CONSTRAINT "SYS_C008093" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_POST" ADD CONSTRAINT "SYS_C008216" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_POST" ADD CONSTRAINT "SYS_C009585" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_POST" ADD CONSTRAINT "SYS_C009586" CHECK ("SORT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_POST" ADD CONSTRAINT "SYS_C009587" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_POST" ADD CONSTRAINT "SYS_C009588" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_POST" ADD CONSTRAINT "SYS_C009589" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_POST" ADD CONSTRAINT "SYS_C009590" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_POST" ADD CONSTRAINT "SYS_C009591" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_ROLE -- ---------------------------- -ALTER TABLE "SYSTEM_ROLE" ADD CONSTRAINT "SYS_C008094" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_ROLE" ADD CONSTRAINT "SYS_C008095" CHECK ("SORT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_ROLE" ADD CONSTRAINT "SYS_C008096" CHECK ("DATA_SCOPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_ROLE" ADD CONSTRAINT "SYS_C008097" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_ROLE" ADD CONSTRAINT "SYS_C008098" CHECK ("TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_ROLE" ADD CONSTRAINT "SYS_C008099" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_ROLE" ADD CONSTRAINT "SYS_C008100" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_ROLE" ADD CONSTRAINT "SYS_C008101" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_ROLE" ADD CONSTRAINT "SYS_C008217" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ROLE" ADD CONSTRAINT "SYS_C009592" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ROLE" ADD CONSTRAINT "SYS_C009593" CHECK ("SORT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ROLE" ADD CONSTRAINT "SYS_C009594" CHECK ("DATA_SCOPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ROLE" ADD CONSTRAINT "SYS_C009595" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ROLE" ADD CONSTRAINT "SYS_C009596" CHECK ("TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ROLE" ADD CONSTRAINT "SYS_C009597" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ROLE" ADD CONSTRAINT "SYS_C009598" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ROLE" ADD CONSTRAINT "SYS_C009599" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ROLE" ADD CONSTRAINT "SYS_C009600" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_ROLE_MENU @@ -5403,6 +5987,13 @@ ALTER TABLE "SYSTEM_ROLE_MENU" ADD CONSTRAINT "SYS_C008111" CHECK ("CREATE_TIME" ALTER TABLE "SYSTEM_ROLE_MENU" ADD CONSTRAINT "SYS_C008112" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_ROLE_MENU" ADD CONSTRAINT "SYS_C008113" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_ROLE_MENU" ADD CONSTRAINT "SYS_C008218" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ROLE_MENU" ADD CONSTRAINT "SYS_C008776" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ROLE_MENU" ADD CONSTRAINT "SYS_C008777" CHECK ("ROLE_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ROLE_MENU" ADD CONSTRAINT "SYS_C008778" CHECK ("MENU_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ROLE_MENU" ADD CONSTRAINT "SYS_C008779" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ROLE_MENU" ADD CONSTRAINT "SYS_C008780" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ROLE_MENU" ADD CONSTRAINT "SYS_C008781" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_ROLE_MENU" ADD CONSTRAINT "SYS_C008782" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_SENSITIVE_WORD @@ -5413,6 +6004,12 @@ ALTER TABLE "SYSTEM_SENSITIVE_WORD" ADD CONSTRAINT "SYS_C008104" CHECK ("STATUS" ALTER TABLE "SYSTEM_SENSITIVE_WORD" ADD CONSTRAINT "SYS_C008105" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_SENSITIVE_WORD" ADD CONSTRAINT "SYS_C008106" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_SENSITIVE_WORD" ADD CONSTRAINT "SYS_C008107" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SENSITIVE_WORD" ADD CONSTRAINT "SYS_C008783" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SENSITIVE_WORD" ADD CONSTRAINT "SYS_C008784" CHECK ("NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SENSITIVE_WORD" ADD CONSTRAINT "SYS_C008785" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SENSITIVE_WORD" ADD CONSTRAINT "SYS_C008786" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SENSITIVE_WORD" ADD CONSTRAINT "SYS_C008787" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SENSITIVE_WORD" ADD CONSTRAINT "SYS_C008788" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_SMS_CHANNEL @@ -5422,6 +6019,11 @@ ALTER TABLE "SYSTEM_SMS_CHANNEL" ADD CONSTRAINT "SYS_C008115" CHECK ("STATUS" IS ALTER TABLE "SYSTEM_SMS_CHANNEL" ADD CONSTRAINT "SYS_C008116" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_SMS_CHANNEL" ADD CONSTRAINT "SYS_C008117" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_SMS_CHANNEL" ADD CONSTRAINT "SYS_C008219" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_CHANNEL" ADD CONSTRAINT "SYS_C008789" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_CHANNEL" ADD CONSTRAINT "SYS_C008790" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_CHANNEL" ADD CONSTRAINT "SYS_C008791" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_CHANNEL" ADD CONSTRAINT "SYS_C008792" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_CHANNEL" ADD CONSTRAINT "SYS_C008793" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_SMS_CODE @@ -5434,6 +6036,14 @@ ALTER TABLE "SYSTEM_SMS_CODE" ADD CONSTRAINT "SYS_C008122" CHECK ("CREATE_TIME" ALTER TABLE "SYSTEM_SMS_CODE" ADD CONSTRAINT "SYS_C008123" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_SMS_CODE" ADD CONSTRAINT "SYS_C008124" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_SMS_CODE" ADD CONSTRAINT "SYS_C008220" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_CODE" ADD CONSTRAINT "SYS_C008794" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_CODE" ADD CONSTRAINT "SYS_C008795" CHECK ("SCENE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_CODE" ADD CONSTRAINT "SYS_C008796" CHECK ("TODAY_INDEX" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_CODE" ADD CONSTRAINT "SYS_C008797" CHECK ("USED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_CODE" ADD CONSTRAINT "SYS_C008798" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_CODE" ADD CONSTRAINT "SYS_C008799" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_CODE" ADD CONSTRAINT "SYS_C008800" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_CODE" ADD CONSTRAINT "SYS_C008801" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_SMS_LOG @@ -5447,6 +6057,15 @@ ALTER TABLE "SYSTEM_SMS_LOG" ADD CONSTRAINT "SYS_C008130" CHECK ("RECEIVE_STATUS ALTER TABLE "SYSTEM_SMS_LOG" ADD CONSTRAINT "SYS_C008131" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_SMS_LOG" ADD CONSTRAINT "SYS_C008132" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_SMS_LOG" ADD CONSTRAINT "SYS_C008221" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_LOG" ADD CONSTRAINT "SYS_C008802" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_LOG" ADD CONSTRAINT "SYS_C008803" CHECK ("CHANNEL_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_LOG" ADD CONSTRAINT "SYS_C008804" CHECK ("TEMPLATE_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_LOG" ADD CONSTRAINT "SYS_C008805" CHECK ("TEMPLATE_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_LOG" ADD CONSTRAINT "SYS_C008806" CHECK ("SEND_STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_LOG" ADD CONSTRAINT "SYS_C008807" CHECK ("RECEIVE_STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_LOG" ADD CONSTRAINT "SYS_C008808" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_LOG" ADD CONSTRAINT "SYS_C008809" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_LOG" ADD CONSTRAINT "SYS_C008810" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_SMS_TEMPLATE @@ -5458,6 +6077,13 @@ ALTER TABLE "SYSTEM_SMS_TEMPLATE" ADD CONSTRAINT "SYS_C008136" CHECK ("CHANNEL_I ALTER TABLE "SYSTEM_SMS_TEMPLATE" ADD CONSTRAINT "SYS_C008137" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_SMS_TEMPLATE" ADD CONSTRAINT "SYS_C008138" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_SMS_TEMPLATE" ADD CONSTRAINT "SYS_C008222" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_TEMPLATE" ADD CONSTRAINT "SYS_C008811" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_TEMPLATE" ADD CONSTRAINT "SYS_C008812" CHECK ("TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_TEMPLATE" ADD CONSTRAINT "SYS_C008813" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_TEMPLATE" ADD CONSTRAINT "SYS_C008814" CHECK ("CHANNEL_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_TEMPLATE" ADD CONSTRAINT "SYS_C008815" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_TEMPLATE" ADD CONSTRAINT "SYS_C008816" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SMS_TEMPLATE" ADD CONSTRAINT "SYS_C008817" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_SOCIAL_USER @@ -5470,6 +6096,14 @@ ALTER TABLE "SYSTEM_SOCIAL_USER" ADD CONSTRAINT "SYS_C008143" CHECK ("CREATE_TIM ALTER TABLE "SYSTEM_SOCIAL_USER" ADD CONSTRAINT "SYS_C008144" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_SOCIAL_USER" ADD CONSTRAINT "SYS_C008145" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_SOCIAL_USER" ADD CONSTRAINT "SYS_C008223" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SOCIAL_USER" ADD CONSTRAINT "SYS_C008818" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SOCIAL_USER" ADD CONSTRAINT "SYS_C008819" CHECK ("USER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SOCIAL_USER" ADD CONSTRAINT "SYS_C008820" CHECK ("USER_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SOCIAL_USER" ADD CONSTRAINT "SYS_C008821" CHECK ("TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SOCIAL_USER" ADD CONSTRAINT "SYS_C008822" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SOCIAL_USER" ADD CONSTRAINT "SYS_C008823" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SOCIAL_USER" ADD CONSTRAINT "SYS_C008824" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_SOCIAL_USER" ADD CONSTRAINT "SYS_C008825" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_TENANT @@ -5482,6 +6116,14 @@ ALTER TABLE "SYSTEM_TENANT" ADD CONSTRAINT "SYS_C008150" CHECK ("ACCOUNT_COUNT" ALTER TABLE "SYSTEM_TENANT" ADD CONSTRAINT "SYS_C008151" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_TENANT" ADD CONSTRAINT "SYS_C008152" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_TENANT" ADD CONSTRAINT "SYS_C008224" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_TENANT" ADD CONSTRAINT "SYS_C008826" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_TENANT" ADD CONSTRAINT "SYS_C008827" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_TENANT" ADD CONSTRAINT "SYS_C008828" CHECK ("PACKAGE_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_TENANT" ADD CONSTRAINT "SYS_C008829" CHECK ("EXPIRE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_TENANT" ADD CONSTRAINT "SYS_C008830" CHECK ("ACCOUNT_COUNT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_TENANT" ADD CONSTRAINT "SYS_C008831" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_TENANT" ADD CONSTRAINT "SYS_C008832" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_TENANT" ADD CONSTRAINT "SYS_C008833" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_TENANT_PACKAGE @@ -5491,6 +6133,11 @@ ALTER TABLE "SYSTEM_TENANT_PACKAGE" ADD CONSTRAINT "SYS_C008154" CHECK ("STATUS" ALTER TABLE "SYSTEM_TENANT_PACKAGE" ADD CONSTRAINT "SYS_C008155" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_TENANT_PACKAGE" ADD CONSTRAINT "SYS_C008156" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_TENANT_PACKAGE" ADD CONSTRAINT "SYS_C008197" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_TENANT_PACKAGE" ADD CONSTRAINT "SYS_C008834" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_TENANT_PACKAGE" ADD CONSTRAINT "SYS_C008835" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_TENANT_PACKAGE" ADD CONSTRAINT "SYS_C008836" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_TENANT_PACKAGE" ADD CONSTRAINT "SYS_C008837" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_TENANT_PACKAGE" ADD CONSTRAINT "SYS_C008838" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_USERS @@ -5501,6 +6148,12 @@ ALTER TABLE "SYSTEM_USERS" ADD CONSTRAINT "SYS_C008159" CHECK ("CREATE_TIME" IS ALTER TABLE "SYSTEM_USERS" ADD CONSTRAINT "SYS_C008160" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_USERS" ADD CONSTRAINT "SYS_C008161" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_USERS" ADD CONSTRAINT "SYS_C008227" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_USERS" ADD CONSTRAINT "SYS_C008839" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_USERS" ADD CONSTRAINT "SYS_C008840" CHECK ("STATUS" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_USERS" ADD CONSTRAINT "SYS_C008841" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_USERS" ADD CONSTRAINT "SYS_C008842" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_USERS" ADD CONSTRAINT "SYS_C008843" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_USERS" ADD CONSTRAINT "SYS_C008844" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_USER_POST @@ -5512,6 +6165,13 @@ ALTER TABLE "SYSTEM_USER_POST" ADD CONSTRAINT "SYS_C008305" CHECK ("CREATE_TIME" ALTER TABLE "SYSTEM_USER_POST" ADD CONSTRAINT "SYS_C008306" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_USER_POST" ADD CONSTRAINT "SYS_C008307" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_USER_POST" ADD CONSTRAINT "SYS_C008308" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_USER_POST" ADD CONSTRAINT "SYS_C008845" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_USER_POST" ADD CONSTRAINT "SYS_C008846" CHECK ("USER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_USER_POST" ADD CONSTRAINT "SYS_C008847" CHECK ("POST_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_USER_POST" ADD CONSTRAINT "SYS_C008848" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_USER_POST" ADD CONSTRAINT "SYS_C008849" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_USER_POST" ADD CONSTRAINT "SYS_C008850" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_USER_POST" ADD CONSTRAINT "SYS_C008851" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Checks structure for table SYSTEM_USER_ROLE @@ -5521,19 +6181,11 @@ ALTER TABLE "SYSTEM_USER_ROLE" ADD CONSTRAINT "SYS_C008163" CHECK ("USER_ID" IS ALTER TABLE "SYSTEM_USER_ROLE" ADD CONSTRAINT "SYS_C008164" CHECK ("ROLE_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_USER_ROLE" ADD CONSTRAINT "SYS_C008165" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; ALTER TABLE "SYSTEM_USER_ROLE" ADD CONSTRAINT "SYS_C008226" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; - --- ---------------------------- --- Checks structure for table SYSTEM_USER_SESSION --- ---------------------------- -ALTER TABLE "SYSTEM_USER_SESSION" ADD CONSTRAINT "SYS_C008310" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_USER_SESSION" ADD CONSTRAINT "SYS_C008311" CHECK ("TOKEN" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_USER_SESSION" ADD CONSTRAINT "SYS_C008312" CHECK ("USER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_USER_SESSION" ADD CONSTRAINT "SYS_C008313" CHECK ("USER_TYPE" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_USER_SESSION" ADD CONSTRAINT "SYS_C008314" CHECK ("SESSION_TIMEOUT" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_USER_SESSION" ADD CONSTRAINT "SYS_C008315" CHECK ("CREATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_USER_SESSION" ADD CONSTRAINT "SYS_C008316" CHECK ("UPDATE_TIME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_USER_SESSION" ADD CONSTRAINT "SYS_C008317" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -ALTER TABLE "SYSTEM_USER_SESSION" ADD CONSTRAINT "SYS_C008318" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_USER_ROLE" ADD CONSTRAINT "SYS_C008852" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_USER_ROLE" ADD CONSTRAINT "SYS_C008853" CHECK ("USER_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_USER_ROLE" ADD CONSTRAINT "SYS_C008854" CHECK ("ROLE_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_USER_ROLE" ADD CONSTRAINT "SYS_C008855" CHECK ("TENANT_ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; +ALTER TABLE "SYSTEM_USER_ROLE" ADD CONSTRAINT "SYS_C008856" CHECK ("DELETED" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; -- ---------------------------- -- Foreign Keys structure for table QRTZ_BLOB_TRIGGERS @@ -5554,7 +6206,3 @@ ALTER TABLE "QRTZ_SIMPLE_TRIGGERS" ADD CONSTRAINT "QRTZ_SIMPLE_TRIG_TO_TRIG_FK" -- Foreign Keys structure for table QRTZ_SIMPROP_TRIGGERS -- ---------------------------- ALTER TABLE "QRTZ_SIMPROP_TRIGGERS" ADD CONSTRAINT "QRTZ_SIMPROP_TRIG_TO_TRIG_FK" FOREIGN KEY ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") REFERENCES "QRTZ_TRIGGERS" ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE; - --- ---------------------------- --- Foreign Keys structure for table QRTZ_TRIGGERS --- ---------------------------- diff --git a/sql/postgresql/ruoyi-vue-pro.sql b/sql/postgresql/ruoyi-vue-pro.sql index 84447ef86b..719ae312a1 100644 --- a/sql/postgresql/ruoyi-vue-pro.sql +++ b/sql/postgresql/ruoyi-vue-pro.sql @@ -12,7 +12,7 @@ Target Server Version : 140002 File Encoding : 65001 - Date: 02/05/2022 16:42:43 + Date: 26/05/2022 00:10:12 */ @@ -353,6 +353,61 @@ INCREMENT 1 MAXVALUE 9223372036854775807 CACHE 1; +-- ---------------------------- +-- Sequence structure for system_oauth2_access_token_seq +-- ---------------------------- +DROP SEQUENCE IF EXISTS "system_oauth2_access_token_seq"; +CREATE SEQUENCE "system_oauth2_access_token_seq" +INCREMENT 1 +MINVALUE 1 +MAXVALUE 9223372036854775807 +START 1 +CACHE 1; + +-- ---------------------------- +-- Sequence structure for system_oauth2_approve_seq +-- ---------------------------- +DROP SEQUENCE IF EXISTS "system_oauth2_approve_seq"; +CREATE SEQUENCE "system_oauth2_approve_seq" +INCREMENT 1 +MINVALUE 1 +MAXVALUE 9223372036854775807 +START 1 +CACHE 1; + +-- ---------------------------- +-- Sequence structure for system_oauth2_client_seq +-- ---------------------------- +DROP SEQUENCE IF EXISTS "system_oauth2_client_seq"; +CREATE SEQUENCE "system_oauth2_client_seq" +INCREMENT 1 +MINVALUE 1 +MAXVALUE 9223372036854775807 +START 1 +CACHE 1; + +-- ---------------------------- +-- Sequence structure for system_oauth2_code_seq +-- ---------------------------- +DROP SEQUENCE IF EXISTS "system_oauth2_code_seq"; +CREATE SEQUENCE "system_oauth2_code_seq" +INCREMENT 1 +MINVALUE 1 +MAXVALUE 9223372036854775807 +START 1 +CACHE 1; + +-- ---------------------------- +-- Sequence structure for system_oauth2_refresh_token_seq +-- ---------------------------- +DROP SEQUENCE IF EXISTS "system_oauth2_refresh_token_seq"; +CREATE SEQUENCE "system_oauth2_refresh_token_seq" +INCREMENT 1 +MINVALUE 1 +MAXVALUE 9223372036854775807 +START 1 +CACHE 1; + -- ---------------------------- -- Sequence structure for system_operate_log_seq -- ---------------------------- @@ -497,41 +552,6 @@ INCREMENT 1 MAXVALUE 9223372036854775807 CACHE 1; --- ---------------------------- --- Sequence structure for system_user_session_seq --- ---------------------------- -DROP SEQUENCE IF EXISTS "system_user_session_seq"; -CREATE SEQUENCE "system_user_session_seq" -INCREMENT 1 -MAXVALUE 9223372036854775807 -CACHE 1; - --- ---------------------------- --- Table structure for act_evt_log --- ---------------------------- -DROP TABLE IF EXISTS "act_evt_log"; -CREATE TABLE "act_evt_log" ( - "log_nr_" int4 NOT NULL DEFAULT nextval('act_evt_log_log_nr__seq'::regclass), - "type_" varchar(64) COLLATE "pg_catalog"."default", - "proc_def_id_" varchar(64) COLLATE "pg_catalog"."default", - "proc_inst_id_" varchar(64) COLLATE "pg_catalog"."default", - "execution_id_" varchar(64) COLLATE "pg_catalog"."default", - "task_id_" varchar(64) COLLATE "pg_catalog"."default", - "time_stamp_" timestamp(6) NOT NULL, - "user_id_" varchar(255) COLLATE "pg_catalog"."default", - "data_" bytea, - "lock_owner_" varchar(255) COLLATE "pg_catalog"."default", - "lock_time_" timestamp(6), - "is_processed_" int2 DEFAULT 0 -) -; - --- ---------------------------- --- Records of act_evt_log --- ---------------------------- -BEGIN; -COMMIT; - -- ---------------------------- -- Table structure for bpm_form -- ---------------------------- @@ -569,6 +589,12 @@ COMMENT ON TABLE "bpm_form" IS '工作流的表单定义'; -- Records of bpm_form -- ---------------------------- BEGIN; +INSERT INTO "bpm_form" ("id", "name", "status", "conf", "fields", "remark", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (7, '啊1', 1, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"label\":\"密码\",\"tag\":\"el-input\",\"tagIcon\":\"password\",\"placeholder\":\"请输入密码\",\"span\":24,\"show-password\":true,\"labelWidth\":null,\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prepend\":\"\",\"append\":\"\",\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"formId\":102,\"renderKey\":1640930414772,\"layout\":\"colFormItem\",\"vModel\":\"field102\",\"defaultValue\":\"admin123\"}","{\"label\":\"级联选择\",\"tag\":\"el-cascader\",\"tagIcon\":\"cascader\",\"placeholder\":\"请选择级联选择级联选择级联选择\",\"defaultValue\":[],\"span\":24,\"labelWidth\":null,\"style\":{\"width\":\"100%\"},\"props\":{\"props\":{\"multiple\":false}},\"show-all-levels\":true,\"disabled\":false,\"clearable\":true,\"filterable\":false,\"required\":true,\"options\":[{\"id\":1,\"value\":1,\"label\":\"选项1\",\"children\":[{\"id\":2,\"value\":2,\"label\":\"选项1-1\"}]}],\"dataType\":\"dynamic\",\"labelKey\":\"label\",\"valueKey\":\"value\",\"childrenKey\":\"children\",\"separator\":\"/\",\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/cascader\",\"formId\":101,\"renderKey\":1640960350991,\"layout\":\"colFormItem\",\"vModel\":\"field101\"}","{\"label\":\"生活\",\"tag\":\"el-input\",\"tagIcon\":\"input\",\"placeholder\":\"请输入生活生活生活\",\"span\":24,\"labelWidth\":null,\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prepend\":\"\",\"append\":\"\",\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"formId\":101,\"renderKey\":1640930388977,\"layout\":\"colFormItem\",\"vModel\":\"field101\",\"defaultValue\":\"admin\"}"]', '哈哈哈哈biu', '1', '2021-12-31 10:10:13', '1', '2022-02-19 17:27:56', 1, 1); +INSERT INTO "bpm_form" ("id", "name", "status", "conf", "fields", "remark", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (8, '啊哈哈', 0, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '[]', '哈哈哈哈', '1', '2021-12-31 10:17:26', '1', '2022-02-19 17:27:54', 1, 1); +INSERT INTO "bpm_form" ("id", "name", "status", "conf", "fields", "remark", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (9, '新增', 0, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"label\":\"单行文本\",\"tag\":\"el-input\",\"tagIcon\":\"input\",\"placeholder\":\"请输入单行文本\",\"span\":24,\"labelWidth\":null,\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prepend\":\"\",\"append\":\"\",\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"formId\":101,\"renderKey\":1640959561705,\"layout\":\"colFormItem\",\"vModel\":\"field101\"}","{\"label\":\"单选框组\",\"tag\":\"el-radio-group\",\"tagIcon\":\"radio\",\"span\":24,\"labelWidth\":null,\"style\":{},\"optionType\":\"default\",\"border\":false,\"size\":\"medium\",\"disabled\":false,\"required\":true,\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}],\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/radio\",\"formId\":102,\"renderKey\":1640959563240,\"layout\":\"colFormItem\",\"vModel\":\"field102\"}"]', '哈哈哈', '1', '2021-12-31 22:06:11', '1', '2022-02-19 17:27:54', 1, 1); +INSERT INTO "bpm_form" ("id", "name", "status", "conf", "fields", "remark", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (10, '11333', 1, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"left","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"label\":\"多行文本\",\"tag\":\"el-input\",\"tagIcon\":\"textarea\",\"type\":\"textarea\",\"placeholder\":\"请输入多行文本多行文本多行文本\",\"span\":24,\"labelWidth\":null,\"autosize\":{\"minRows\":4,\"maxRows\":4},\"style\":{\"width\":\"100%\"},\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"formId\":101,\"renderKey\":1640959720587,\"layout\":\"colFormItem\",\"vModel\":\"field101\",\"defaultValue\":\"1111\"}","{\"label\":\"滑块\",\"tag\":\"el-slider\",\"tagIcon\":\"slider\",\"defaultValue\":0,\"span\":24,\"labelWidth\":null,\"disabled\":false,\"required\":true,\"min\":0,\"max\":100,\"step\":1,\"show-stops\":false,\"range\":false,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/slider\",\"formId\":101,\"renderKey\":1640959732257,\"layout\":\"colFormItem\",\"vModel\":\"field101\"}"]', '222211', '1', '2021-12-31 22:08:45', '1', '2022-02-19 17:27:52', 1, 1); +INSERT INTO "bpm_form" ("id", "name", "status", "conf", "fields", "remark", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (11, 'biubiu', 0, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}","{\"__config__\":{\"label\":\"上传\",\"tag\":\"el-upload\",\"tagIcon\":\"upload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":106,\"renderKey\":\"1061652244347700\"},\"__slot__\":{\"list-type\":true},\"action\":\"/dev-api/admin-api/infra/file/upload\",\"disabled\":false,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"field106\"}"]', '嘿嘿', '1', '2022-01-02 12:25:55', '1', '2022-05-11 12:46:06', 0, 1); +INSERT INTO "bpm_form" ("id", "name", "status", "conf", "fields", "remark", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (15, 'leave-form', 0, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"开始时间\",\"tag\":\"el-date-picker\",\"tagIcon\":\"date\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/date-picker\",\"formId\":101,\"renderKey\":\"1011647692195671\"},\"placeholder\":\"请选择开始时间\",\"type\":\"date\",\"style\":{\"width\":\"100%\"},\"disabled\":false,\"clearable\":true,\"format\":\"yyyy-MM-dd\",\"value-format\":\"yyyy-MM-dd\",\"readonly\":false,\"__vModel__\":\"field101\"}","{\"__config__\":{\"label\":\"结束时间\",\"tag\":\"el-date-picker\",\"tagIcon\":\"date\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/date-picker\",\"formId\":102,\"renderKey\":\"1021647692207701\"},\"placeholder\":\"请选择结束时间\",\"type\":\"date\",\"style\":{\"width\":\"100%\"},\"disabled\":false,\"clearable\":true,\"format\":\"yyyy-MM-dd\",\"value-format\":\"yyyy-MM-dd\",\"readonly\":false,\"__vModel__\":\"field102\"}","{\"__config__\":{\"label\":\"请假类型\",\"showLabel\":true,\"labelWidth\":null,\"tag\":\"el-select\",\"tagIcon\":\"select\",\"layout\":\"colFormItem\",\"span\":24,\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/select\",\"formId\":103,\"renderKey\":\"1031647692231884\"},\"__slot__\":{\"options\":[{\"label\":\"事假\",\"value\":1},{\"label\":\"年假\",\"value\":2}]},\"placeholder\":\"请选择请假类型\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"disabled\":false,\"filterable\":false,\"multiple\":false,\"__vModel__\":\"field103\"}","{\"__config__\":{\"label\":\"原因\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-input\",\"tagIcon\":\"textarea\",\"required\":false,\"layout\":\"colFormItem\",\"span\":24,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"formId\":105,\"renderKey\":\"1051647692319768\"},\"type\":\"textarea\",\"placeholder\":\"请输入原因\",\"autosize\":{\"minRows\":4,\"maxRows\":4},\"style\":{\"width\":\"100%\"},\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field105\"}"]', NULL, '1', '2022-03-19 20:20:56', '1', '2022-03-19 20:20:56', 0, 1); COMMIT; -- ---------------------------- @@ -614,7 +640,29 @@ COMMENT ON TABLE "bpm_oa_leave" IS 'OA 请假申请表'; -- Records of bpm_oa_leave -- ---------------------------- BEGIN; -INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (1, 1, 2, '222', '2022-04-04 00:00:00', '2022-04-19 00:00:00', 15, 2, '0d23cbd6-c893-11ec-8a1d-3e2374911326', '1', '2022-04-30 22:37:24.589', '1', '2022-04-30 22:40:30.538', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (3, 1, 1, '我要请假啦啦啦!', '2022-03-01 08:00:00', '2022-03-03 08:00:00', 2, 1, 'a6a007dd-7b6d-11ec-b781-acde48001122', '1', '2022-01-22 18:25:42', '1', '2022-02-19 17:28:04', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (4, 1, 1, '我要请假啦啦啦!', '2022-03-01 08:00:00', '2022-03-03 08:00:00', 2, 1, '28a5d744-7b75-11ec-a3c8-acde48001122', '1', '2022-01-22 19:19:26', '1', '2022-02-19 17:28:05', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (5, 1, 1, '我要请假啦啦啦!', '2022-03-01 08:00:00', '2022-03-05 08:00:00', 4, 1, '75d43fd1-7b7f-11ec-a3c8-acde48001122', '1', '2022-01-22 20:33:11', '1', '2022-02-19 17:28:06', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (6, 1, 1, '我要请假啦啦啦!', '2022-03-01 08:00:00', '2022-03-05 08:00:00', 4, 1, '9ac0eab4-7b7f-11ec-a3c8-acde48001122', '1', '2022-01-22 20:34:13', '1', '2022-02-19 17:28:07', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (7, 1, 1, 'EEE', '2022-01-11 00:00:00', '2022-01-27 00:00:00', 16, 1, '7250cfdf-7b88-11ec-8ef0-acde48001122', '1', '2022-01-22 21:37:31', '1', '2022-02-19 17:28:08', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (8, 1, 1, 'EEE', '2022-01-02 00:00:00', '2022-01-23 00:00:00', 21, 1, '0699ab3c-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 21:48:49', '1', '2022-02-19 17:28:08', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (9, 1, 1, 'EEE', '2022-01-01 00:00:00', '2022-01-29 00:00:00', 28, 1, 'ea957056-7b8d-11ec-b8e2-acde48001122', '1', '2022-01-22 22:16:40', '1', '2022-02-19 17:28:09', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (10, 1, 1, 'EEE', '2022-01-13 00:00:00', '2022-01-25 00:00:00', 12, 1, '7e093de8-7b8e-11ec-b8e2-acde48001122', '1', '2022-01-22 22:20:47', '1', '2022-02-19 17:28:10', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (11, 1, 1, 'AAA', '2022-01-03 00:00:00', '2022-01-21 00:00:00', 18, 1, '5354233a-7b91-11ec-8473-acde48001122', '1', '2022-01-22 22:41:04', '1', '2022-02-19 17:28:11', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (12, 1, 1, 'EEEEE', '2021-12-27 00:00:00', '2022-01-27 00:00:00', 31, 1, '68ce0834-7b91-11ec-8473-acde48001122', '1', '2022-01-22 22:41:40', '1', '2022-02-19 17:28:12', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (13, 1, 1, 'aaa', '2022-01-10 00:00:00', '2022-01-28 00:00:00', 18, 1, 'bb23c2b4-7b91-11ec-8473-acde48001122', '1', '2022-01-22 22:43:58', '1', '2022-02-19 17:28:14', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (14, 1, 1, 'eee', '2021-12-27 00:00:00', '2022-01-28 00:00:00', 32, 3, '8884f3e7-7b99-11ec-ba5c-acde48001122', '1', '2022-01-22 23:39:49', '1', '2022-02-19 17:28:13', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (15, 1, 1, 'EEE', '2022-01-20 00:00:00', '2022-01-19 00:00:00', 1, 1, 'a59a5391-7b99-11ec-ba5c-acde48001122', '1', '2022-01-22 23:40:38', '1', '2022-02-19 17:28:15', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (16, 1, 3, 'EEE', '2022-01-04 00:00:00', '2022-01-13 00:00:00', 9, 3, '03c6c157-7b9a-11ec-a290-acde48001122', '1', '2022-01-22 23:43:16', '1', '2022-02-19 17:28:15', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (17, 1, 2, 'EEE', '2022-01-22 00:00:00', '2022-01-22 00:00:00', 0, 1, '331bc281-7b9a-11ec-a290-acde48001122', '1', '2022-01-22 23:44:35', '1', '2022-02-19 17:28:20', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (18, 1, 2, 'EEE', '2022-01-11 00:00:00', '2022-01-11 00:00:00', 0, 1, '52ffd28e-7b9a-11ec-a290-acde48001122', '1', '2022-01-22 23:45:29', '1', '2022-02-19 17:28:16', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (19, 1, 2, 'eee', '2022-01-22 00:00:00', '2022-01-22 00:00:00', 0, 1, '67c2eaab-7b9a-11ec-a290-acde48001122', '1', '2022-01-22 23:46:04', '1', '2022-02-19 17:28:19', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (20, 1, 1, 'EEE', '2022-01-04 00:00:00', '2022-01-04 00:00:00', 0, 1, '819442e8-7b9a-11ec-a290-acde48001122', '1', '2022-01-22 23:46:47', '1', '2022-02-19 17:28:17', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (21, 1, 1, 'EEE', '2022-01-22 00:00:00', '2022-01-23 00:00:00', 1, 1, 'ec45f38f-7b9a-11ec-b03b-acde48001122', '1', '2022-01-22 23:49:46', '1', '2022-02-19 17:28:22', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (22, 1, 1, 'eee', '2022-01-22 00:00:00', '2022-01-22 00:00:00', 0, 2, '2152467e-7b9b-11ec-9a1b-acde48001122', '1', '2022-01-22 23:51:15', '1', '2022-02-19 17:28:23', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (23, 1, 2, 'eee', '2022-01-03 00:00:00', '2022-01-26 00:00:00', 23, 1, '7317cec6-7b9b-11ec-b5b7-acde48001122', '1', '2022-01-22 23:53:32', '1', '2022-02-19 17:28:24', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (24, 1, 2, 'eee', '2022-01-03 00:00:00', '2022-01-26 00:00:00', 23, 4, '7470a810-7b9b-11ec-b5b7-acde48001122', '1', '2022-01-22 23:53:35', '1', '2022-02-19 17:28:25', 0, 1); +INSERT INTO "bpm_oa_leave" ("id", "user_id", "type", "reason", "start_time", "end_time", "day", "result", "process_instance_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (25, 1, 1, 'EE', '2021-12-27 00:00:00', '2022-01-19 00:00:00', 23, 1, '3ad174fb-7b9d-11ec-8404-acde48001122', '1', '2022-01-23 00:06:17', '1', '2022-02-19 17:28:26', 0, 1); COMMIT; -- ---------------------------- @@ -663,7 +711,91 @@ COMMENT ON TABLE "bpm_process_definition_ext" IS 'Bpm 流程定义的拓展表 -- Records of bpm_process_definition_ext -- ---------------------------- BEGIN; -INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (0, 'oa_leave:1:934362e3-c892-11ec-a15b-3e2374911326', '2d3151fa-c892-11ec-a15b-3e2374911326', NULL, 20, NULL, NULL, NULL, '/bpm/oa/leave/create', '/bpm/oa/leave/detail', '1', '2022-04-30 22:34:00.342', '1', '2022-04-30 22:34:00.342', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (12, 'process1641042089407:5:6d9a655c-6b0b-11ec-bfb7-cacd34981f8e', '', '', 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-01 22:02:17', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (13, 'Process_1641152976334:1:2db33c43-6c05-11ec-9fce-cacd34981f8e', '', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-03 03:50:04', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (14, 'Process_1641152976334:2:52a4a536-6c09-11ec-b333-cacd34981f8e', '', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-03 04:19:44', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (15, 'Process_1641152976334:3:54f1a279-6c09-11ec-b333-cacd34981f8e', '', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-03 04:19:48', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (16, 'Process_1641152976334:4:59fc120c-6c09-11ec-b333-cacd34981f8e', '', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-03 04:19:56', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (17, 'Process_1641152976334:5:67c5bbcf-6c09-11ec-b333-cacd34981f8e', '', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-03 04:20:19', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (18, 'Process_1641152976334:6:741521a2-6c09-11ec-b333-cacd34981f8e', '', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-03 04:20:40', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (19, 'Process_1641152976334:7:a80332e5-6c09-11ec-b333-cacd34981f8e', '', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-03 04:22:07', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (20, 'Process_1641152976334:8:7b70fa71-6c14-11ec-8928-cacd34981f8e', '', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-03 05:40:27', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (21, 'baba:1:506515c9-6c2e-11ec-9fc8-cacd34981f8e', '', NULL, 1, NULL, NULL, NULL, NULL, NULL, '1', '2022-01-03 08:44:46', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (22, 'Process_1641152976334:9:c4b8386c-6c30-11ec-9fc8-cacd34981f8e', '', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-03 09:02:06', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (23, 'Process_1641152976334:10:dd62eaef-6c30-11ec-9fc8-cacd34981f8e', '', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-03 09:04:00', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (24, 'Process_1641152976334:11:1a212652-6c31-11ec-9fc8-cacd34981f8e', '', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-03 09:04:32', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (25, 'baba:2:42165635-6c31-11ec-9fc8-cacd34981f8e', '', NULL, 1, NULL, NULL, NULL, NULL, NULL, '1', '2022-01-03 09:05:36', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (26, 'baba:3:3b6ff69d-6c41-11ec-a218-cacd34981f8e', '', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-03 10:59:57', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (27, 'baba:4:76cf8c60-6c41-11ec-a218-cacd34981f8e', '', '我是描述丫丫啊', 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-03 11:01:36', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (28, 'baba:5:52d3b4c3-6c42-11ec-a218-cacd34981f8e', '', '我是描述丫丫啊', 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-03 11:07:46', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (29, 'baba:6:2f739ca9-6c4d-11ec-86db-cacd34981f8e', '', '我是描述丫丫啊', 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-03 12:25:31', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (30, 'tt:1:f1062230-6c7f-11ec-88b1-cacd34981f8e', '', NULL, 1, NULL, NULL, NULL, NULL, NULL, '1', '2022-01-03 18:28:50', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (31, 'qqw:1:897c7005-6c80-11ec-88b1-cacd34981f8e', '', '11', 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-03 18:33:06', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (32, 'leave:7:20ada39c-6c95-11ec-88b1-cacd34981f8e', '', NULL, 1, NULL, NULL, NULL, NULL, NULL, '1', '2022-01-03 21:00:30', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (33, 'gateway_test:1:bf30c38f-7019-11ec-bc41-a2380e71991a', '', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-08 08:27:23', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (34, 'gateway_test:2:00e52d8e-701b-11ec-aca9-a2380e71991a', '', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-08 08:36:22', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (35, 'gateway_test:3:43f8ca4f-709c-11ec-9ce9-a2380e71991a', '', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-09 00:01:40', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (36, 'gateway_test:4:2e50e9a4-7136-11ec-93f6-a2380e71991a', '', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-09 18:23:26', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (37, 'AA:1:e1e1a8d3-7208-11ec-8954-a2380e71991a', '', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-10 19:31:42', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (38, 'AA:2:0d01d9e6-7209-11ec-8954-a2380e71991a', '', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-10 19:32:54', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (39, 'AA:3:83a1ac25-720b-11ec-95cb-a2380e71991a', '', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-10 19:50:32', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (40, 'leave:8:462de361-7282-11ec-8908-a2380e71991a', '0c1ee1f8-6c95-11ec-88b1-cacd34981f8e', NULL, 1, NULL, NULL, NULL, NULL, NULL, '1', '2022-01-11 10:00:39', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (41, 'leave:9:59689ba0-7284-11ec-965c-a2380e71991a', '0c1ee1f8-6c95-11ec-88b1-cacd34981f8e', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-11 10:15:30', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (42, 'leave:10:d7fb3bb3-7473-11ec-a434-a2380e71991a', '0c1ee1f8-6c95-11ec-88b1-cacd34981f8e', NULL, 1, 11, NULL, NULL, NULL, NULL, '103', '2022-01-13 21:22:24', '103', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (43, 'leave:11:5ddc9eb0-7483-11ec-b390-a2380e71991a', '0c1ee1f8-6c95-11ec-88b1-cacd34981f8e', 'AAA', 1, 11, NULL, NULL, NULL, NULL, '103', '2022-01-13 23:13:31', '103', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (44, 'test:1:913d7930-75b8-11ec-b607-a2380e71991a', '1f98df4c-75b7-11ec-b607-a2380e71991a', NULL, 1, 11, NULL, NULL, NULL, NULL, '103', '2022-01-15 12:06:51', '103', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (45, 'test:2:0f0e3986-75ba-11ec-a317-a2380e71991a', '1f98df4c-75b7-11ec-b607-a2380e71991a', NULL, 1, 11, NULL, NULL, NULL, NULL, '103', '2022-01-15 12:17:32', '103', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (46, 'test:3:8e4df3a5-75bb-11ec-a317-a2380e71991a', '1f98df4c-75b7-11ec-b607-a2380e71991a', NULL, 1, 11, NULL, NULL, NULL, NULL, '103', '2022-01-15 12:28:15', '103', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (47, 'test:4:b86e7d03-75bd-11ec-bf54-a2380e71991a', '1f98df4c-75b7-11ec-b607-a2380e71991a', NULL, 1, 11, NULL, NULL, NULL, NULL, '103', '2022-01-15 12:43:45', '103', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (48, 'test:5:d64bc095-75bd-11ec-bf54-a2380e71991a', '1f98df4c-75b7-11ec-b607-a2380e71991a', NULL, 1, 11, NULL, NULL, NULL, NULL, '103', '2022-01-15 12:44:35', '103', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (49, 'test:6:ebac9f59-75bd-11ec-bf54-a2380e71991a', '1f98df4c-75b7-11ec-b607-a2380e71991a', NULL, 1, 11, NULL, NULL, NULL, NULL, '103', '2022-01-15 12:45:11', '103', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (50, 'test:7:fc60e5fc-75bd-11ec-bf54-a2380e71991a', '1f98df4c-75b7-11ec-b607-a2380e71991a', NULL, 1, 11, NULL, NULL, NULL, NULL, '103', '2022-01-15 12:45:39', '103', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (51, 'test:8:12e0a13e-75be-11ec-bf54-a2380e71991a', '1f98df4c-75b7-11ec-b607-a2380e71991a', NULL, 1, 11, NULL, NULL, NULL, NULL, '103', '2022-01-15 12:46:16', '103', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (53, 'test:9:e2658d43-7606-11ec-8cd2-a2380e71991a', 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', '滔博牛皮', 1, 11, NULL, NULL, NULL, NULL, '103', '2022-01-15 21:27:28', '103', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (54, 'test:10:f3aa05e6-7606-11ec-8cd2-a2380e71991a', 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', '滔博牛皮', 1, 11, NULL, NULL, NULL, NULL, '103', '2022-01-15 21:27:57', '103', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (55, 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', 'a3d5105e-760b-11ec-9367-a2380e71991a', NULL, 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-15 22:02:27', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (56, 'test:11:536ecba7-761a-11ec-a5c5-a2380e71991a', 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', '滔博牛皮', 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-15 23:46:38', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (57, 'test:12:5c91d0ba-761a-11ec-a5c5-a2380e71991a', 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', '滔博牛皮', 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-15 23:46:54', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (58, 'test:13:651e140d-761a-11ec-a5c5-a2380e71991a', 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', '滔博牛皮', 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-15 23:47:08', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (59, 'test:14:c1f049a4-761a-11ec-ba93-a2380e71991a', 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', '滔博牛皮', 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-15 23:49:44', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (60, 'test:15:5304ca92-761b-11ec-b05a-a2380e71991a', 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', '滔博牛皮', 1, 11, NULL, NULL, NULL, NULL, '1', '2022-01-15 23:53:47', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (61, 'oa_leave:1:482ec033-762a-11ec-8477-a2380e71991a', 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'OA 请假的示例', 20, NULL, NULL, NULL, '/bpm/oa/flow', '/oa/oa/leave', '1', '2022-01-16 01:40:51', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (62, 'test:16:d83ee859-762d-11ec-9125-a2380e71991a', 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', '滔博牛皮', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-16 02:06:22', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (63, 'test:17:04259e68-762e-11ec-9ab0-a2380e71991a', 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', '滔博牛皮', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-16 02:07:35', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (64, 'test:18:1bb307b1-7633-11ec-957a-a2380e71991a', 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', '滔博牛皮', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-16 02:44:02', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (65, 'self:1:17c042ff-7680-11ec-bc82-a2380e71991a', '024b400b-7680-11ec-bc82-a2380e71991a', NULL, 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-16 11:55:07', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (91, 'oa_leave:3:1fad3d93-7b75-11ec-a3c8-acde48001122', 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'OA 请假的示例', 20, NULL, NULL, NULL, '/bpm/oa/flow', '/oa/oa/leave', '1', '2022-01-22 19:19:11', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (92, 'oa_leave:4:991f2193-7b7f-11ec-a3c8-acde48001122', 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'OA 请假的示例', 20, NULL, NULL, NULL, '/bpm/oa/flow', '/oa/oa/leave', '1', '2022-01-22 20:34:10', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (93, 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'OA 请假的示例', 20, NULL, NULL, NULL, '/bpm/oa/leave/create', '/bpm/oa/leave/detail', '1', '2022-01-22 21:48:38', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (66, 'test:19:a401b61a-768b-11ec-afcd-a2380e71991a', 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', '滔博牛皮', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-16 13:17:47', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (67, 'test_001:2:c680200d-768b-11ec-afcd-a2380e71991a', 'a3d5105e-760b-11ec-9367-a2380e71991a', NULL, 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-16 13:18:44', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (68, 'test_001:3:4e8e99b2-768c-11ec-afcd-a2380e71991a', 'a3d5105e-760b-11ec-9367-a2380e71991a', NULL, 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-16 13:22:33', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (69, 'self:2:3a5a065e-76b1-11ec-9c66-a2380e71991a', '024b400b-7680-11ec-bc82-a2380e71991a', NULL, 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-16 17:46:50', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (70, 'oa_leave:2:3c1f0ef1-76b1-11ec-9c66-a2380e71991a', 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'OA 请假的示例', 20, NULL, NULL, NULL, '/bpm/oa/flow', '/oa/oa/leave', '1', '2022-01-16 17:46:53', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (71, 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', 'a3d5105e-760b-11ec-9367-a2380e71991a', NULL, 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-16 17:46:56', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (72, 'test:20:3f1c2257-76b1-11ec-9c66-a2380e71991a', 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', '滔博牛皮', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-16 17:46:58', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (73, 'eee:1:89b300ac-79af-11ec-abb0-a2380e71991a', '02b756a8-79af-11ec-abb0-a2380e71991a', NULL, 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-20 13:12:18', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (74, 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', '滔博牛皮', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-20 13:21:03', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (75, 'eee:2:8a7b5672-7ade-11ec-a777-a2380e71991a', '02b756a8-79af-11ec-abb0-a2380e71991a', NULL, 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-22 01:21:17', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (76, 'eee:3:8db9dfa5-7ade-11ec-a777-a2380e71991a', '02b756a8-79af-11ec-abb0-a2380e71991a', NULL, 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-22 01:21:22', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (77, 'eee:4:a63e1e68-7ade-11ec-a777-a2380e71991a', '02b756a8-79af-11ec-abb0-a2380e71991a', 'AAA', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-22 01:22:03', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (78, 'eee:5:33f2d275-7adf-11ec-93fe-a2380e71991a', '02b756a8-79af-11ec-abb0-a2380e71991a', 'AAA', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-22 01:26:01', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (79, 'eee:6:365e0618-7adf-11ec-93fe-a2380e71991a', '02b756a8-79af-11ec-abb0-a2380e71991a', 'AAA', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-22 01:26:05', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (80, 'eee:7:3c5b3a1b-7adf-11ec-93fe-a2380e71991a', '02b756a8-79af-11ec-abb0-a2380e71991a', 'AAA', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-22 01:26:15', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (81, 'eee:8:3da2872e-7adf-11ec-93fe-a2380e71991a', '02b756a8-79af-11ec-abb0-a2380e71991a', 'AAA', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-22 01:26:17', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (82, 'eee:9:3f0f84b1-7adf-11ec-93fe-a2380e71991a', '02b756a8-79af-11ec-abb0-a2380e71991a', 'AAA', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-22 01:26:20', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (83, 'eee:10:479efc54-7adf-11ec-93fe-a2380e71991a', '02b756a8-79af-11ec-abb0-a2380e71991a', 'AAA', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-22 01:26:34', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (84, 'eee:11:38c6faaa-7ae0-11ec-9d9d-a2380e71991a', '02b756a8-79af-11ec-abb0-a2380e71991a', 'AAA', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-22 01:33:19', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (85, 'eee:12:c9c8ddcd-7ae0-11ec-9d9d-a2380e71991a', '02b756a8-79af-11ec-abb0-a2380e71991a', 'AAA', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-22 01:37:22', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (86, 'eee:13:f1aca890-7ae0-11ec-9d9d-a2380e71991a', '02b756a8-79af-11ec-abb0-a2380e71991a', 'AAA', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-22 01:38:29', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (87, 'eee:14:27a560fb-7ae2-11ec-9d9a-a2380e71991a', '02b756a8-79af-11ec-abb0-a2380e71991a', 'AAA', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-22 01:47:09', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (88, 'eee:15:c1906d85-7ae5-11ec-a69c-a2380e71991a', '02b756a8-79af-11ec-abb0-a2380e71991a', 'AAA', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-22 02:12:56', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (89, 'eee:16:c325da98-7ae5-11ec-a69c-a2380e71991a', '02b756a8-79af-11ec-abb0-a2380e71991a', 'AAA', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-22 02:12:58', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (90, 'eee:17:f3aad03b-7ae5-11ec-a69c-a2380e71991a', '02b756a8-79af-11ec-abb0-a2380e71991a', 'AAA', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-01-22 02:14:20', '1', '2022-02-19 17:29:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (94, 'flowable_01:1:c0bb5b36-97ed-11ec-a2b9-862bc1a4a054', '4b4909d8-97e7-11ec-8e20-862bc1a4a054', 'ooxx', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-02-28 00:53:14', '1', '2022-02-28 00:53:14', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (95, 'common-form:1:7fdfc407-a786-11ec-96d6-8e557beca7ad', '02217e82-a77e-11ec-96d6-8e557beca7ad', '通用表单简单示例', 10, 15, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"开始时间\",\"tag\":\"el-date-picker\",\"tagIcon\":\"date\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/date-picker\",\"formId\":101,\"renderKey\":\"1011647692195671\"},\"placeholder\":\"请选择开始时间\",\"type\":\"date\",\"style\":{\"width\":\"100%\"},\"disabled\":false,\"clearable\":true,\"format\":\"yyyy-MM-dd\",\"value-format\":\"yyyy-MM-dd\",\"readonly\":false,\"__vModel__\":\"field101\"}","{\"__config__\":{\"label\":\"结束时间\",\"tag\":\"el-date-picker\",\"tagIcon\":\"date\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"span\":24,\"layout\":\"colFormItem\",\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/date-picker\",\"formId\":102,\"renderKey\":\"1021647692207701\"},\"placeholder\":\"请选择结束时间\",\"type\":\"date\",\"style\":{\"width\":\"100%\"},\"disabled\":false,\"clearable\":true,\"format\":\"yyyy-MM-dd\",\"value-format\":\"yyyy-MM-dd\",\"readonly\":false,\"__vModel__\":\"field102\"}","{\"__config__\":{\"label\":\"请假类型\",\"showLabel\":true,\"labelWidth\":null,\"tag\":\"el-select\",\"tagIcon\":\"select\",\"layout\":\"colFormItem\",\"span\":24,\"required\":true,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/select\",\"formId\":103,\"renderKey\":\"1031647692231884\"},\"__slot__\":{\"options\":[{\"label\":\"事假\",\"value\":1},{\"label\":\"年假\",\"value\":2}]},\"placeholder\":\"请选择请假类型\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"disabled\":false,\"filterable\":false,\"multiple\":false,\"__vModel__\":\"field103\"}","{\"__config__\":{\"label\":\"原因\",\"labelWidth\":null,\"showLabel\":true,\"tag\":\"el-input\",\"tagIcon\":\"textarea\",\"required\":false,\"layout\":\"colFormItem\",\"span\":24,\"regList\":[],\"changeTag\":true,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"formId\":105,\"renderKey\":\"1051647692319768\"},\"type\":\"textarea\",\"placeholder\":\"请输入原因\",\"autosize\":{\"minRows\":4,\"maxRows\":4},\"style\":{\"width\":\"100%\"},\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field105\"}"]', NULL, NULL, '1', '2022-03-19 21:14:26', '1', '2022-03-19 21:14:26', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (96, 'flowable_01:2:d344a0bd-cd5f-11ec-8280-3e2374911326', '4b4909d8-97e7-11ec-8e20-862bc1a4a054', 'ooxx', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}"]', NULL, NULL, '1', '2022-05-07 01:13:19', '1', '2022-05-07 01:13:19', 0, 1); +INSERT INTO "bpm_process_definition_ext" ("id", "process_definition_id", "model_id", "description", "form_type", "form_id", "form_conf", "form_fields", "form_custom_create_path", "form_custom_view_path", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (97, 'flowable_01:3:4b0eec62-d0e5-11ec-b8b5-3e2374911326', '4b4909d8-97e7-11ec-8e20-862bc1a4a054', 'ooxx', 10, 11, '{"formRef":"elForm","formModel":"formData","size":"medium","labelPosition":"right","labelWidth":100,"formRules":"rules","gutter":15,"disabled":false,"span":24,"formBtns":true}', '["{\"__config__\":{\"label\":\"单行文本\",\"labelWidth\":null,\"showLabel\":true,\"changeTag\":true,\"tag\":\"el-input\",\"tagIcon\":\"input\",\"required\":true,\"layout\":\"colFormItem\",\"span\":24,\"document\":\"https://element.eleme.cn/#/zh-CN/component/input\",\"regList\":[],\"formId\":121,\"renderKey\":\"1211641657675668\"},\"__slot__\":{\"prepend\":\"\",\"append\":\"\"},\"placeholder\":\"请输入单行文本\",\"style\":{\"width\":\"100%\"},\"clearable\":true,\"prefix-icon\":\"\",\"suffix-icon\":\"\",\"maxlength\":null,\"show-word-limit\":false,\"readonly\":false,\"disabled\":false,\"__vModel__\":\"field121\"}","{\"__config__\":{\"label\":\"多选框组\",\"tag\":\"el-checkbox-group\",\"tagIcon\":\"checkbox\",\"defaultValue\":[],\"span\":24,\"showLabel\":true,\"labelWidth\":null,\"layout\":\"colFormItem\",\"optionType\":\"default\",\"required\":true,\"regList\":[],\"changeTag\":true,\"border\":false,\"document\":\"https://element.eleme.cn/#/zh-CN/component/checkbox\",\"formId\":122,\"renderKey\":\"1221641097529857\"},\"__slot__\":{\"options\":[{\"label\":\"选项一\",\"value\":1},{\"label\":\"选项二\",\"value\":2}]},\"style\":{},\"size\":\"medium\",\"disabled\":false,\"__vModel__\":\"field122\"}","{\"__config__\":{\"label\":\"上传\",\"tag\":\"el-upload\",\"tagIcon\":\"upload\",\"layout\":\"colFormItem\",\"defaultValue\":null,\"showLabel\":true,\"labelWidth\":null,\"required\":true,\"span\":24,\"showTip\":false,\"buttonText\":\"点击上传\",\"regList\":[],\"changeTag\":true,\"fileSize\":2,\"sizeUnit\":\"MB\",\"document\":\"https://element.eleme.cn/#/zh-CN/component/upload\",\"formId\":106,\"renderKey\":\"1061652244347700\"},\"__slot__\":{\"list-type\":true},\"action\":\"/dev-api/admin-api/infra/file/upload\",\"disabled\":false,\"accept\":\"\",\"name\":\"file\",\"auto-upload\":true,\"list-type\":\"text\",\"multiple\":false,\"__vModel__\":\"field106\"}"]', NULL, NULL, '1', '2022-05-11 12:46:17', '1', '2022-05-11 12:46:17', 0, 1); COMMIT; -- ---------------------------- @@ -711,7 +843,125 @@ COMMENT ON TABLE "bpm_process_instance_ext" IS '工作流的流程实例的拓 -- Records of bpm_process_instance_ext -- ---------------------------- BEGIN; -INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (0, 1, 'OA 请假', '0d23cbd6-c893-11ec-8a1d-3e2374911326', 'oa_leave:1:934362e3-c892-11ec-a15b-3e2374911326', '2', 2, 2, '2022-04-30 22:40:30.428', '{"day":15}', '1', '2022-04-30 22:37:24.802', '1', '2022-04-30 22:40:30.432', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (51, 1, '笑死', 'd7bcdeb9-7134-11ec-99e4-a2380e71991a', 'gateway_test:3:43f8ca4f-709c-11ec-9ce9-a2380e71991a', '1', 1, 4, '2022-01-09 18:18:36', NULL, '1', '2022-01-09 18:13:51', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (52, 1, '笑死', '944619dd-7135-11ec-93f6-a2380e71991a', 'gateway_test:3:43f8ca4f-709c-11ec-9ce9-a2380e71991a', '2', 2, 3, '2022-01-09 18:35:50', NULL, '1', '2022-01-09 18:19:08', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (53, 1, '业务流程_1641152976334', 'dc524fb5-7135-11ec-93f6-a2380e71991a', 'Process_1641152976334:10:dd62eaef-6c30-11ec-9fc8-cacd34981f8e', '1', 2, 3, '2022-01-09 18:35:49', NULL, '1', '2022-01-09 18:21:09', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (54, 1, '背背', 'e4e745a4-7135-11ec-93f6-a2380e71991a', 'qqw:1:897c7005-6c80-11ec-88b1-cacd34981f8e', '2', 2, 3, '2022-01-09 18:35:49', NULL, '1', '2022-01-09 18:21:23', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (55, 1, '背背', 'ea2ff6c3-7135-11ec-93f6-a2380e71991a', 'qqw:1:897c7005-6c80-11ec-88b1-cacd34981f8e', '1', 2, 3, '2022-01-09 18:35:48', NULL, '1', '2022-01-09 18:21:32', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (56, 1, '笑死', '47a87df5-7136-11ec-93f6-a2380e71991a', 'gateway_test:4:2e50e9a4-7136-11ec-93f6-a2380e71991a', 'http://activiti.org/bpmn', 2, 3, '2022-01-09 18:35:46', NULL, '1', '2022-01-09 18:24:09', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (58, 1, '业务流程_1641152976334', 'af747f00-7137-11ec-bf24-a2380e71991a', 'Process_1641152976334:10:dd62eaef-6c30-11ec-9fc8-cacd34981f8e', 'http://activiti.org/bpmn', 1, 2, '2022-01-09 18:34:35', NULL, '1', '2022-01-09 18:34:12', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (59, 1, '笑死', 'f17cf222-7137-11ec-bf24-a2380e71991a', 'gateway_test:4:2e50e9a4-7136-11ec-93f6-a2380e71991a', 'http://activiti.org/bpmn', 1, 2, '2022-01-09 18:36:16', NULL, '1', '2022-01-09 18:36:03', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (60, 1, '笑死', '2592fce0-7138-11ec-bf24-a2380e71991a', 'gateway_test:4:2e50e9a4-7136-11ec-93f6-a2380e71991a', 'http://activiti.org/bpmn', 2, 3, '2022-01-09 18:37:37', NULL, '1', '2022-01-09 18:37:30', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (61, 1, '业务流程_1641152976334', '34b09dfb-7138-11ec-bf24-a2380e71991a', 'Process_1641152976334:10:dd62eaef-6c30-11ec-9fc8-cacd34981f8e', 'http://activiti.org/bpmn', 2, 2, '2022-01-09 18:38:02', NULL, '1', '2022-01-09 18:37:56', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (63, 1, '笑死', '9ea14ead-714b-11ec-af9b-a2380e71991a', 'gateway_test:4:2e50e9a4-7136-11ec-93f6-a2380e71991a', 'http://activiti.org/bpmn', 2, 3, '2022-01-09 22:08:12', NULL, '1', '2022-01-09 20:56:54', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (64, 1, '业务流程_1641152976334', '1179546c-714c-11ec-943f-a2380e71991a', 'Process_1641152976334:10:dd62eaef-6c30-11ec-9fc8-cacd34981f8e', '1', 2, 2, '2022-01-09 22:08:11', NULL, '1', '2022-01-09 21:00:07', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (65, 1, '业务流程_1641152976334', 'be323fbb-714c-11ec-943f-a2380e71991a', 'Process_1641152976334:10:dd62eaef-6c30-11ec-9fc8-cacd34981f8e', '1', 2, 3, '2022-01-09 22:08:10', NULL, '1', '2022-01-09 21:04:56', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (66, 1, '业务流程_1641152976334', '09da6c8e-714e-11ec-922e-a2380e71991a', 'Process_1641152976334:10:dd62eaef-6c30-11ec-9fc8-cacd34981f8e', '1', 2, 2, '2022-01-09 22:08:09', NULL, '1', '2022-01-09 21:14:13', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (67, 1, '业务流程_1641152976334', '66f0f91f-7155-11ec-b613-a2380e71991a', 'Process_1641152976334:10:dd62eaef-6c30-11ec-9fc8-cacd34981f8e', '1', 2, 2, '2022-01-09 22:07:03', NULL, '1', '2022-01-09 22:06:55', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (68, 1, '业务流程_1641152976334', 'b86d4397-7155-11ec-b613-a2380e71991a', 'Process_1641152976334:10:dd62eaef-6c30-11ec-9fc8-cacd34981f8e', '1', 2, 3, '2022-01-09 22:10:02', NULL, '1', '2022-01-09 22:09:12', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (69, 1, '业务流程_1641152976334', 'dcaa4d86-7155-11ec-b613-a2380e71991a', 'Process_1641152976334:10:dd62eaef-6c30-11ec-9fc8-cacd34981f8e', '1', 2, 2, '2022-01-09 22:10:19', NULL, '1', '2022-01-09 22:10:13', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (70, 1, '业务流程_1641152976334', '4b1c61a8-7156-11ec-b613-a2380e71991a', 'Process_1641152976334:10:dd62eaef-6c30-11ec-9fc8-cacd34981f8e', '1', 2, 2, '2022-01-09 22:14:38', NULL, '1', '2022-01-09 22:13:18', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (71, 1, '业务流程_1641152976334', '36e36bdd-7157-11ec-8642-a2380e71991a', 'Process_1641152976334:10:dd62eaef-6c30-11ec-9fc8-cacd34981f8e', '1', 2, 2, '2022-01-09 22:20:16', NULL, '1', '2022-01-09 22:19:54', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (72, 1, '业务流程_1641152976334', '7917733d-7207-11ec-af01-a2380e71991a', 'Process_1641152976334:10:dd62eaef-6c30-11ec-9fc8-cacd34981f8e', '1', 2, 2, '2022-01-10 19:48:34', NULL, '1', '2022-01-10 19:21:36', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (73, 1, '业务流程_1641152976334', 'd14992df-7207-11ec-a1b3-a2380e71991a', 'Process_1641152976334:10:dd62eaef-6c30-11ec-9fc8-cacd34981f8e', '1', 2, 4, '2022-01-15 21:59:21', NULL, '1', '2022-01-10 19:24:04', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (74, 1, '业务流程_1641152976334', '37056d50-7208-11ec-a594-a2380e71991a', 'Process_1641152976334:10:dd62eaef-6c30-11ec-9fc8-cacd34981f8e', '1', 2, 4, '2022-01-15 21:59:23', NULL, '1', '2022-01-10 19:26:55', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (75, 1, '笑死', '90b5effe-7208-11ec-a594-a2380e71991a', 'gateway_test:4:2e50e9a4-7136-11ec-93f6-a2380e71991a', '2', 2, 4, '2022-01-15 21:59:26', NULL, '1', '2022-01-10 19:29:25', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (76, 1, '测试任务', '12ac8117-7209-11ec-8954-a2380e71991a', 'AA:2:0d01d9e6-7209-11ec-8954-a2380e71991a', '2', 2, 4, '2022-01-15 21:59:33', NULL, '1', '2022-01-10 19:33:04', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (77, 1, '测试任务', '712ac2f9-720a-11ec-883f-a2380e71991a', 'AA:2:0d01d9e6-7209-11ec-8954-a2380e71991a', '2', 2, 4, '2022-01-15 21:59:29', NULL, '1', '2022-01-10 19:42:52', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (78, 1, '测试任务', '926ee336-720b-11ec-95cb-a2380e71991a', 'AA:3:83a1ac25-720b-11ec-95cb-a2380e71991a', '2', 2, 4, '2022-01-15 21:59:36', NULL, '1', '2022-01-10 19:50:57', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (79, 1, '测试任务', 'a89534d8-720b-11ec-95cb-a2380e71991a', 'AA:3:83a1ac25-720b-11ec-95cb-a2380e71991a', '2', 2, 4, '2022-01-15 21:59:38', NULL, '1', '2022-01-10 19:51:34', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (80, 1, '测试任务', '6acb0a6b-720f-11ec-b740-a2380e71991a', 'AA:3:83a1ac25-720b-11ec-95cb-a2380e71991a', '2', 2, 4, '2022-01-15 21:59:41', NULL, '1', '2022-01-10 20:18:28', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (81, 1, '笑死', 'dcc756b9-720f-11ec-b740-a2380e71991a', 'gateway_test:4:2e50e9a4-7136-11ec-93f6-a2380e71991a', '2', 2, 4, '2022-01-15 21:59:43', NULL, '1', '2022-01-10 20:21:40', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (82, 1, '测试任务', '2597c8a7-7210-11ec-8e38-a2380e71991a', 'AA:3:83a1ac25-720b-11ec-95cb-a2380e71991a', '2', 2, 2, '2022-01-10 20:23:55', NULL, '1', '2022-01-10 20:23:42', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (83, 1, '测试任务', '46b12370-7210-11ec-8e38-a2380e71991a', 'AA:3:83a1ac25-720b-11ec-95cb-a2380e71991a', '2', 2, 2, '2022-01-10 20:25:14', NULL, '1', '2022-01-10 20:24:37', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (84, 1, '测试任务', '40416229-7211-11ec-8e38-a2380e71991a', 'AA:3:83a1ac25-720b-11ec-95cb-a2380e71991a', '2', 2, 4, '2022-01-15 21:59:15', NULL, '1', '2022-01-10 20:31:36', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (85, 1, '测试任务', '84285947-7211-11ec-8e38-a2380e71991a', 'AA:3:83a1ac25-720b-11ec-95cb-a2380e71991a', '2', 2, 4, '2022-01-15 21:59:12', NULL, '1', '2022-01-10 20:33:30', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (92, 1, '请假', 'e93a3338-729d-11ec-abc7-a2380e71991a', 'leave:9:59689ba0-7284-11ec-965c-a2380e71991a', '2', 2, 4, '2022-01-15 21:59:10', NULL, '1', '2022-01-11 13:18:29', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (93, 1, '请假', '37c2e026-729e-11ec-abc7-a2380e71991a', 'leave:9:59689ba0-7284-11ec-965c-a2380e71991a', '2', 2, 4, '2022-01-15 21:59:07', NULL, '1', '2022-01-11 13:20:41', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (94, 1, '请假', '613e8904-729e-11ec-abc7-a2380e71991a', 'leave:9:59689ba0-7284-11ec-965c-a2380e71991a', '2', 2, 3, '2022-01-15 21:58:22', NULL, '1', '2022-01-11 13:21:50', '103', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (98, 103, '请假', 'fcdfddae-7483-11ec-8645-a2380e71991a', 'leave:11:5ddc9eb0-7483-11ec-b390-a2380e71991a', '2', 2, 4, '2022-01-13 23:20:27', NULL, '103', '2022-01-13 23:17:57', '103', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (99, 103, '请假', '265fa43c-7484-11ec-8645-a2380e71991a', 'leave:11:5ddc9eb0-7483-11ec-b390-a2380e71991a', '2', 2, 4, '2022-01-13 23:20:22', NULL, '103', '2022-01-13 23:19:07', '103', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (103, 103, '测试流程', '078f63f1-75b9-11ec-b607-a2380e71991a', 'test:1:913d7930-75b8-11ec-b607-a2380e71991a', '1', 2, 4, '2022-01-15 12:10:18', NULL, '103', '2022-01-15 12:10:10', '103', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (117, 103, '测试流程', 'a4f215b0-75bd-11ec-bf54-a2380e71991a', 'test:3:8e4df3a5-75bb-11ec-a317-a2380e71991a', '1', 2, 4, '2022-01-15 21:58:18', NULL, '103', '2022-01-15 12:43:12', '103', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (118, 103, '测试流程', 'c2c10164-75bd-11ec-bf54-a2380e71991a', 'test:4:b86e7d03-75bd-11ec-bf54-a2380e71991a', '1', 2, 4, '2022-01-15 21:58:15', NULL, '103', '2022-01-15 12:44:02', '103', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (119, 103, '测试流程', 'dce61ef6-75bd-11ec-bf54-a2380e71991a', 'test:5:d64bc095-75bd-11ec-bf54-a2380e71991a', '1', 2, 4, '2022-01-15 21:58:12', NULL, '103', '2022-01-15 12:44:46', '103', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (120, 103, '测试流程', 'f19a6a0a-75bd-11ec-bf54-a2380e71991a', 'test:6:ebac9f59-75bd-11ec-bf54-a2380e71991a', '1', 2, 4, '2022-01-15 21:58:10', NULL, '103', '2022-01-15 12:45:20', '103', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (121, 103, '测试流程', '027ff9dd-75be-11ec-bf54-a2380e71991a', 'test:7:fc60e5fc-75bd-11ec-bf54-a2380e71991a', '1', 2, 4, '2022-01-15 21:58:07', NULL, '103', '2022-01-15 12:45:49', '103', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (123, 103, '滔博', '10008257-7607-11ec-8cd2-a2380e71991a', 'test:10:f3aa05e6-7606-11ec-8cd2-a2380e71991a', '1', 2, 4, '2022-01-15 21:58:05', NULL, '103', '2022-01-15 21:28:45', '103', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (124, 1, '测试多审批人', 'caf40483-760b-11ec-9367-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', 2, 3, '2022-01-15 22:28:57', NULL, '1', '2022-01-15 22:02:36', '103', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (125, 1, '测试多审批人', '9091b32c-760e-11ec-a415-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', 2, 3, '2022-01-15 22:28:51', NULL, '1', '2022-01-15 22:22:27', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (128, 1, '测试多审批人', '6325c778-760f-11ec-ad1b-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', 2, 3, '2022-01-15 22:28:56', NULL, '1', '2022-01-15 22:28:20', '103', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (129, 1, '测试多审批人', '873817e8-760f-11ec-ad1b-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', 2, 3, '2022-01-15 22:31:04', NULL, '1', '2022-01-15 22:29:21', '103', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (130, 1, '测试多审批人', '0c843d9b-7610-11ec-9266-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', 2, 3, '2022-01-15 23:01:43', NULL, '1', '2022-01-15 22:33:04', '103', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (131, 1, '测试多审批人', '5822c2eb-7610-11ec-9266-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', 2, 3, '2022-01-15 23:01:42', NULL, '1', '2022-01-15 22:35:11', '103', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (132, 1, '测试多审批人', '59b537cc-7612-11ec-8063-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', 2, 3, '2022-01-15 23:01:41', NULL, '1', '2022-01-15 22:49:33', '103', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (133, 1, '测试多审批人', '1a0bb164-7614-11ec-87b4-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', 2, 4, '2022-01-15 23:54:05', NULL, '1', '2022-01-15 23:02:05', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (134, 1, '测试多审批人', '46a21254-7615-11ec-87b4-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', 2, 4, '2022-01-15 23:54:02', NULL, '1', '2022-01-15 23:10:29', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (135, 1, '测试多审批人', '57ce3983-761b-11ec-b05a-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', 2, 4, '2022-01-15 23:54:00', NULL, '1', '2022-01-15 23:53:55', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (136, 1, '滔博', '8a2ee6c9-7630-11ec-a535-a2380e71991a', 'test:17:04259e68-762e-11ec-9ab0-a2380e71991a', '1', 2, 4, '2022-01-16 22:58:25', '{"field121":"AA","field122":[1]}', '1', '2022-01-16 02:25:39', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (137, 1, '滔博', 'e05c44cd-767f-11ec-bc82-a2380e71991a', 'test:18:1bb307b1-7633-11ec-957a-a2380e71991a', '1', 2, 4, '2022-01-16 22:58:23', '{"field121":"AAA","field122":[1]}', '1', '2022-01-16 11:53:34', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (138, 1, '自己审批', '1d249260-7680-11ec-bc82-a2380e71991a', 'self:1:17c042ff-7680-11ec-bc82-a2380e71991a', '1', 2, 2, '2022-01-16 22:58:04', '{"field121":"AAA","field122":[1]}', '1', '2022-01-16 11:55:16', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (139, 1, '测试多审批人', '70ca71a9-768b-11ec-afcd-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', 2, 4, '2022-01-16 22:58:20', '{"field121":"EEE","field122":[1]}', '1', '2022-01-16 13:16:21', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (140, 1, '测试多审批人', 'cdbd4e1e-768b-11ec-afcd-a2380e71991a', 'test_001:2:c680200d-768b-11ec-afcd-a2380e71991a', '1', 2, 2, '2022-01-16 13:21:42', '{"field121":"eee","field122":[1]}', '1', '2022-01-16 13:18:57', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (141, 1, '测试多审批人', '537cceb3-768c-11ec-afcd-a2380e71991a', 'test_001:3:4e8e99b2-768c-11ec-afcd-a2380e71991a', '1', 2, 2, '2022-01-16 22:58:03', '{"field121":"EEE","field122":[1]}', '1', '2022-01-16 13:22:41', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (142, 1, '测试多审批人', '4b4c16ac-76d2-11ec-9423-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', 2, 2, '2022-01-16 22:57:44', '{"field121":"AAA","field122":[1]}', '1', '2022-01-16 21:43:32', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (143, 1, '测试多审批人', 'db3f3c84-76dc-11ec-95f2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', 2, 2, '2022-01-16 23:12:55', '{"field121":"AEEE","field122":[1,2]}', '1', '2022-01-16 22:59:08', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (144, 1, '测试多审批人', 'cfe3c1d0-76de-11ec-95f2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', 2, 2, '2022-01-17 00:51:07', '{"field121":"AAA","field122":[1]}', '1', '2022-01-16 23:13:08', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (145, 1, '测试多审批人', '1642e0b9-76e6-11ec-95f2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', 2, 2, '2022-01-17 00:35:32', '{"field121":"EEE","field122":[1]}', '1', '2022-01-17 00:05:13', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (146, 1, '测试多审批人', '8bb14c95-76ea-11ec-95f2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', 2, 3, '2022-01-17 00:37:21', '{"field121":"EEE","field122":[1]}', '1', '2022-01-17 00:37:08', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (147, 1, '测试多审批人', '29288241-76ed-11ec-95f2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', 2, 2, '2022-01-17 12:49:45', '{"field121":"AAA","field122":[1]}', '1', '2022-01-17 00:55:51', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (148, 1, '测试多审批人', 'ce5e126f-77aa-11ec-9be9-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', 2, 2, '2022-01-17 23:51:26', '{"field121":"AAAA","field122":[1]}', '1', '2022-01-17 23:33:23', '103', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (149, 1, '测试多审批人', 'd1e75899-77b8-11ec-bc1a-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', 2, 2, '2022-01-19 08:45:38', '{"field121":"AAA","field122":[1]}', '1', '2022-01-18 01:13:42', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (150, 1, '滔博', 'f3191202-77f2-11ec-bc1a-a2380e71991a', 'test:20:3f1c2257-76b1-11ec-9c66-a2380e71991a', '1', 1, 1, NULL, '{"field121":"AAA","field122":[1]}', '1', '2022-01-18 08:09:49', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (151, 1, '滔博', '342453f2-78c1-11ec-9b4d-a2380e71991a', 'test:20:3f1c2257-76b1-11ec-9c66-a2380e71991a', '1', 1, 1, NULL, '{"field121":"EEE","field122":[1]}', '1', '2022-01-19 08:46:14', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (152, 1, '测试多审批人', 'b2b9b949-78c1-11ec-9b4d-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', 2, 3, '2022-01-19 09:13:19', '{"field121":"EEE","field122":[1]}', '1', '2022-01-19 08:49:46', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (153, 1, '测试多审批人', '0ef30262-78c5-11ec-9b4d-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', 2, 2, '2022-01-19 09:14:22', '{"field121":"AAAA","field122":[2]}', '1', '2022-01-19 09:13:50', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (154, 1, '测试多审批人', '7d80f10e-78c7-11ec-9b4d-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', 2, 2, '2022-01-19 09:31:27', '{"field121":"aaaa","field122":[1]}', '1', '2022-01-19 09:31:14', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (155, 1, '测试多审批人', '079d97ba-78cd-11ec-a731-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', 2, 3, '2022-01-19 10:11:03', '{"field121":"AAAA","field122":[1]}', '1', '2022-01-19 10:10:53', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (156, 1, 'eeee', '92904a2d-79af-11ec-abb0-a2380e71991a', 'eee:1:89b300ac-79af-11ec-abb0-a2380e71991a', '1', 2, 2, '2022-01-20 13:12:51', '{"field121":"eeee","field122":[1]}', '1', '2022-01-20 13:12:33', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (157, 1, '滔博', 'cabc84b1-79b0-11ec-b2b8-a2380e71991a', 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', '1', 2, 2, '2022-01-20 13:21:30', '{"field121":"AAA","field122":[1]}', '1', '2022-01-20 13:21:16', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (158, 1, '自己审批', 'b7f3b79b-7a14-11ec-8762-a2380e71991a', 'self:2:3a5a065e-76b1-11ec-9c66-a2380e71991a', '1', 2, 3, '2022-01-21 01:16:42', '{"field121":"aaa","field122":[1]}', '1', '2022-01-21 01:16:35', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (159, 1, '滔博', 'd9ee295b-7ac6-11ec-a040-a2380e71991a', 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', '1', 1, 1, NULL, '{"field121":"AAA","field122":[1]}', '1', '2022-01-21 22:31:42', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (160, 1, '测试多审批人', 'ed4a3769-7ac6-11ec-a040-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', 1, 1, NULL, '{"field121":"AAA","field122":[1]}', '1', '2022-01-21 22:32:14', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (161, 1, '滔博', '54aa251f-7ac7-11ec-a040-a2380e71991a', 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', '1', 1, 1, NULL, '{"field121":"AAA","field122":[1]}', '1', '2022-01-21 22:35:08', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (162, 1, '滔博', 'bd7dc717-7ac7-11ec-9948-a2380e71991a', 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', '1', 1, 1, NULL, '{"field121":"AAA","field122":[1]}', '1', '2022-01-21 22:38:04', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (163, 1, '测试多审批人', '37d7a55c-7ac8-11ec-a9e2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', 1, 1, NULL, '{"field121":"AAA","field122":[1]}', '1', '2022-01-21 22:41:29', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (164, 1, '测试多审批人', '580a98c2-7ac8-11ec-a9e2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', 1, 1, NULL, '{"field121":"AAA","field122":[1]}', '1', '2022-01-21 22:42:23', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (165, 1, '测试多审批人', '8f021988-7ac8-11ec-a9e2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', 1, 1, NULL, '{"field121":"AAA","field122":[1]}', '1', '2022-01-21 22:43:55', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (166, 1, '测试多审批人', '23615875-7ac9-11ec-aa06-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', 2, 2, '2022-01-22 00:20:51', '{"field121":"AAA","field122":[1]}', '1', '2022-01-21 22:48:04', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (167, 1, '自己审批', '34f51703-7ad6-11ec-abe9-a2380e71991a', 'self:2:3a5a065e-76b1-11ec-9c66-a2380e71991a', '1', 2, 2, '2022-01-22 00:22:02', '{"field121":"AAA","field122":[1]}', '1', '2022-01-22 00:21:37', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (168, 1, '自己审批', 'a413bed4-7ad6-11ec-abe9-a2380e71991a', 'self:2:3a5a065e-76b1-11ec-9c66-a2380e71991a', '1', 2, 4, '2022-01-22 00:24:48', '{"field121":"AAA","field122":[1]}', '1', '2022-01-22 00:24:44', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (169, 1, '滔博', 'c00d2732-7ad6-11ec-abe9-a2380e71991a', 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', '1', 2, 3, '2022-01-22 00:30:01', '{"field121":"AA","field122":[1]}', '1', '2022-01-22 00:25:31', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (170, 1, 'OA 请假', 'a6a007dd-7b6d-11ec-b781-acde48001122', 'oa_leave:2:3c1f0ef1-76b1-11ec-9c66-a2380e71991a', '2', 1, 1, NULL, '{"day":2}', '1', '2022-01-22 18:25:42', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (171, 1, 'OA 请假', '28a5d744-7b75-11ec-a3c8-acde48001122', 'oa_leave:3:1fad3d93-7b75-11ec-a3c8-acde48001122', '2', 2, 2, '2022-01-22 20:31:52', '{"day":2}', '1', '2022-01-22 19:19:26', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (172, 1, 'OA 请假', '75d43fd1-7b7f-11ec-a3c8-acde48001122', 'oa_leave:3:1fad3d93-7b75-11ec-a3c8-acde48001122', '2', 1, 1, NULL, '{"day":4}', '1', '2022-01-22 20:33:11', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (173, 1, 'OA 请假', '9ac0eab4-7b7f-11ec-a3c8-acde48001122', 'oa_leave:4:991f2193-7b7f-11ec-a3c8-acde48001122', '2', 2, 2, '2022-01-22 20:34:33', '{"day":4}', '1', '2022-01-22 20:34:13', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (174, 1, 'OA 请假', '7250cfdf-7b88-11ec-8ef0-acde48001122', 'oa_leave:4:991f2193-7b7f-11ec-a3c8-acde48001122', '2', 1, 1, NULL, '{"day":16}', '1', '2022-01-22 21:37:31', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (175, 1, 'OA 请假', '0699ab3c-7b8a-11ec-8ef0-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '2', 1, 1, NULL, '{"day":21}', '1', '2022-01-22 21:48:49', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (176, 1, 'OA 请假', 'ea957056-7b8d-11ec-b8e2-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '2', 2, 2, '2022-01-22 22:17:00', '{"day":28}', '1', '2022-01-22 22:16:40', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (177, 1, 'OA 请假', '7e093de8-7b8e-11ec-b8e2-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '2', 2, 3, '2022-01-22 22:23:25', '{"day":12}', '1', '2022-01-22 22:20:47', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (178, 1, 'OA 请假', '5354233a-7b91-11ec-8473-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '2', 2, 3, '2022-01-22 22:41:09', '{"day":18}', '1', '2022-01-22 22:41:04', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (179, 1, 'OA 请假', '68ce0834-7b91-11ec-8473-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '2', 2, 3, '2022-01-22 22:43:14', '{"day":31}', '1', '2022-01-22 22:41:40', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (180, 1, 'OA 请假', 'bb23c2b4-7b91-11ec-8473-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '2', 2, 3, NULL, '{"day":18}', '1', '2022-01-22 22:43:58', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (181, 1, '自己审批', '49d3df58-7b98-11ec-b5ee-acde48001122', 'self:2:3a5a065e-76b1-11ec-9c66-a2380e71991a', '1', 2, 4, '2022-01-22 23:39:17', '{"field121":"AAA","field122":[1]}', '1', '2022-01-22 23:30:55', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (182, 1, 'OA 请假', '8884f3e7-7b99-11ec-ba5c-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '2', 2, 3, NULL, '{"day":32}', '1', '2022-01-22 23:39:49', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (183, 1, 'OA 请假', 'a59a5391-7b99-11ec-ba5c-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '2', 2, 2, '2022-01-22 23:40:52', '{"day":1}', '1', '2022-01-22 23:40:38', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (184, 1, 'OA 请假', '03c6c157-7b9a-11ec-a290-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '2', 2, 3, NULL, '{"day":9}', '1', '2022-01-22 23:43:16', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (185, 1, 'OA 请假', '331bc281-7b9a-11ec-a290-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '2', 2, 2, '2022-01-22 23:44:42', '{"day":0}', '1', '2022-01-22 23:44:35', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (186, 1, 'OA 请假', '52ffd28e-7b9a-11ec-a290-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '2', 2, 2, '2022-01-22 23:45:37', '{"day":0}', '1', '2022-01-22 23:45:29', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (187, 1, 'OA 请假', '67c2eaab-7b9a-11ec-a290-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '2', 2, 2, '2022-01-22 23:46:09', '{"day":0}', '1', '2022-01-22 23:46:04', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (188, 1, 'OA 请假', '819442e8-7b9a-11ec-a290-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '2', 2, 2, '2022-01-22 23:46:53', '{"day":0}', '1', '2022-01-22 23:46:47', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (189, 1, 'OA 请假', 'ec45f38f-7b9a-11ec-b03b-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '2', 2, 2, '2022-01-22 23:49:51', '{"day":1}', '1', '2022-01-22 23:49:46', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (190, 1, 'OA 请假', '2152467e-7b9b-11ec-9a1b-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '2', 2, 2, '2022-01-22 23:51:20', '{"day":0}', '1', '2022-01-22 23:51:15', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (191, 1, 'OA 请假', '7317cec6-7b9b-11ec-b5b7-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '2', 1, 1, NULL, '{"day":23}', '1', '2022-01-22 23:53:32', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (192, 1, 'OA 请假', '7470a810-7b9b-11ec-b5b7-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '2', 2, 4, '2022-01-23 00:08:41', '{"day":23}', '1', '2022-01-22 23:53:35', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (193, 1, 'OA 请假', '3ad174fb-7b9d-11ec-8404-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '2', 2, 4, '2022-01-23 00:07:03', '{"day":23}', '1', '2022-01-23 00:06:17', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (194, 1, 'eeee', 'b243fa82-7c06-11ec-9110-acde48001122', 'eee:17:f3aad03b-7ae5-11ec-a69c-a2380e71991a', '1', 1, 1, NULL, '{"field121":"AAA","field122":[1]}', '1', '2022-01-23 12:41:14', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (195, 1, '测试多审批人', 'ecddb286-7c07-11ec-a41d-acde48001122', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', 2, 4, '2022-01-23 12:59:40', '{"field121":"AAA","field122":[1]}', '1', '2022-01-23 12:50:02', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (197, 1, '滔博', '4f676a08-7c09-11ec-b8a1-acde48001122', 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', '1', 1, 1, NULL, '{"field121":"aaa","field122":[1]}', '1', '2022-01-23 12:59:57', '1', '2022-02-19 17:29:20', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (198, 1, 'flowable测试', 'c964c377-97ed-11ec-a2b9-862bc1a4a054', 'flowable_01:1:c0bb5b36-97ed-11ec-a2b9-862bc1a4a054', '1', 2, 2, '2022-02-28 00:53:35', '{"field121":"AAA","field122":[1]}', '1', '2022-02-28 00:53:28', '1', '2022-02-28 00:53:35', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (199, 1, '通用表单', '6be9f198-a787-11ec-96d6-8e557beca7ad', 'common-form:1:7fdfc407-a786-11ec-96d6-8e557beca7ad', '1', 2, 2, '2022-03-19 22:16:00', '{"field101":"2022-03-16","field102":"2022-03-18","field103":1,"field105":"生病了"}', '1', '2022-03-19 21:21:01', '114', '2022-03-19 22:16:00', 0, 1); +INSERT INTO "bpm_process_instance_ext" ("id", "start_user_id", "name", "process_instance_id", "process_definition_id", "category", "status", "result", "end_time", "form_variables", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (200, 1, 'flowable测试', 'da9c5bae-cd5f-11ec-8280-3e2374911326', 'flowable_01:2:d344a0bd-cd5f-11ec-8280-3e2374911326', '1', 2, 2, '2022-05-07 01:13:37', '{"field121":"112","field122":[1]}', '1', '2022-05-07 01:13:32', '1', '2022-05-07 01:13:37', 0, 1); COMMIT; -- ---------------------------- @@ -751,8 +1001,158 @@ COMMENT ON TABLE "bpm_task_assign_rule" IS 'Bpm 任务规则表'; -- Records of bpm_task_assign_rule -- ---------------------------- BEGIN; -INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (0, '2d3151fa-c892-11ec-a15b-3e2374911326', '', 'task01', 30, '[1]', '1', '2022-04-30 22:32:55.005', '1', '2022-04-30 22:32:55.005', 0, 1); -INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (1, '2d3151fa-c892-11ec-a15b-3e2374911326', 'oa_leave:1:934362e3-c892-11ec-a15b-3e2374911326', 'task01', 30, '[1]', '1', '2022-04-30 22:34:00.401', '1', '2022-04-30 22:34:00.401', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (40, '0c1ee1f8-6c95-11ec-88b1-cacd34981f8e', 'leave:9:59689ba0-7284-11ec-965c-a2380e71991a', 'task1', 30, '["1", "103"]', '', '2022-01-11 02:02:17', '', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (41, '0c1ee1f8-6c95-11ec-88b1-cacd34981f8e', '', 'task2', 50, '[1]', '103', '2022-01-13 13:07:05', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (42, '0c1ee1f8-6c95-11ec-88b1-cacd34981f8e', '', 'task1', 10, '[1,2]', '103', '2022-01-13 20:41:28', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (43, '0c1ee1f8-6c95-11ec-88b1-cacd34981f8e', 'leave:11:5ddc9eb0-7483-11ec-b390-a2380e71991a', 'task1', 10, '[1,2]', '103', '2022-01-13 23:13:31', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (44, '0c1ee1f8-6c95-11ec-88b1-cacd34981f8e', 'leave:11:5ddc9eb0-7483-11ec-b390-a2380e71991a', 'task2', 10, '[1]', '103', '2022-01-13 23:13:31', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (45, '1f98df4c-75b7-11ec-b607-a2380e71991a', '', 'task', 50, '[1]', '103', '2022-01-15 11:57:38', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (46, '1f98df4c-75b7-11ec-b607-a2380e71991a', 'test:1:913d7930-75b8-11ec-b607-a2380e71991a', 'task', 10, '[1]', '103', '2022-01-15 12:06:51', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (47, '1f98df4c-75b7-11ec-b607-a2380e71991a', 'test:2:0f0e3986-75ba-11ec-a317-a2380e71991a', 'task', 20, '[109]', '103', '2022-01-15 12:17:32', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (48, '1f98df4c-75b7-11ec-b607-a2380e71991a', 'test:3:8e4df3a5-75bb-11ec-a317-a2380e71991a', 'task', 20, '[103,109]', '103', '2022-01-15 12:28:15', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (49, '1f98df4c-75b7-11ec-b607-a2380e71991a', 'test:4:b86e7d03-75bd-11ec-bf54-a2380e71991a', 'task', 21, '[103,109]', '103', '2022-01-15 12:43:45', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (50, '1f98df4c-75b7-11ec-b607-a2380e71991a', 'test:5:d64bc095-75bd-11ec-bf54-a2380e71991a', 'task', 22, '[1,2,3,4]', '103', '2022-01-15 12:44:35', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (51, '1f98df4c-75b7-11ec-b607-a2380e71991a', 'test:6:ebac9f59-75bd-11ec-bf54-a2380e71991a', 'task', 30, '[1,103]', '103', '2022-01-15 12:45:11', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (52, '1f98df4c-75b7-11ec-b607-a2380e71991a', 'test:7:fc60e5fc-75bd-11ec-bf54-a2380e71991a', 'task', 40, '[110]', '103', '2022-01-15 12:45:39', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (53, '1f98df4c-75b7-11ec-b607-a2380e71991a', 'test:8:12e0a13e-75be-11ec-bf54-a2380e71991a', 'task', 50, '[1]', '103', '2022-01-15 12:46:16', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (54, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', '', 'Activity_05kt1hf', 50, '[10]', '103', '2022-01-15 21:27:10', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (55, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', '', 'Activity_10tl4d8', 50, '[10]', '103', '2022-01-15 21:27:18', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (56, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', '', 'Activity_00wash3', 50, '[10]', '103', '2022-01-15 21:27:26', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (57, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:9:e2658d43-7606-11ec-8cd2-a2380e71991a', 'Activity_05kt1hf', 50, '[10]', '103', '2022-01-15 21:27:28', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (58, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:9:e2658d43-7606-11ec-8cd2-a2380e71991a', 'Activity_10tl4d8', 50, '[20]', '103', '2022-01-15 21:27:28', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (59, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:9:e2658d43-7606-11ec-8cd2-a2380e71991a', 'Activity_00wash3', 50, '[21]', '103', '2022-01-15 21:27:28', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (60, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:10:f3aa05e6-7606-11ec-8cd2-a2380e71991a', 'Activity_05kt1hf', 50, '[10]', '103', '2022-01-15 21:27:57', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (61, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:10:f3aa05e6-7606-11ec-8cd2-a2380e71991a', 'Activity_10tl4d8', 50, '[20]', '103', '2022-01-15 21:27:57', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (62, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:10:f3aa05e6-7606-11ec-8cd2-a2380e71991a', 'Activity_00wash3', 50, '[21]', '103', '2022-01-15 21:27:57', '103', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (63, 'a3d5105e-760b-11ec-9367-a2380e71991a', '', 'Activity_1avi0yr', 30, '[1,103]', '1', '2022-01-15 22:02:24', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (64, 'a3d5105e-760b-11ec-9367-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', 'Activity_1avi0yr', 30, '[1,103]', '1', '2022-01-15 22:02:27', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (65, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:11:536ecba7-761a-11ec-a5c5-a2380e71991a', 'Activity_05kt1hf', 50, '[10]', '1', '2022-01-15 23:46:38', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (66, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:11:536ecba7-761a-11ec-a5c5-a2380e71991a', 'Activity_10tl4d8', 50, '[20]', '1', '2022-01-15 23:46:38', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (67, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:11:536ecba7-761a-11ec-a5c5-a2380e71991a', 'Activity_00wash3', 50, '[21]', '1', '2022-01-15 23:46:38', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (68, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:12:5c91d0ba-761a-11ec-a5c5-a2380e71991a', 'Activity_05kt1hf', 50, '[10]', '1', '2022-01-15 23:46:54', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (69, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:12:5c91d0ba-761a-11ec-a5c5-a2380e71991a', 'Activity_10tl4d8', 50, '[20]', '1', '2022-01-15 23:46:54', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (70, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:12:5c91d0ba-761a-11ec-a5c5-a2380e71991a', 'Activity_00wash3', 50, '[21]', '1', '2022-01-15 23:46:54', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (71, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:13:651e140d-761a-11ec-a5c5-a2380e71991a', 'Activity_05kt1hf', 50, '[10]', '1', '2022-01-15 23:47:08', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (72, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:13:651e140d-761a-11ec-a5c5-a2380e71991a', 'Activity_10tl4d8', 50, '[20]', '1', '2022-01-15 23:47:08', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (73, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:13:651e140d-761a-11ec-a5c5-a2380e71991a', 'Activity_00wash3', 50, '[21]', '1', '2022-01-15 23:47:08', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (74, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:14:c1f049a4-761a-11ec-ba93-a2380e71991a', 'Activity_05kt1hf', 50, '[10]', '1', '2022-01-15 23:49:44', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (75, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:14:c1f049a4-761a-11ec-ba93-a2380e71991a', 'Activity_10tl4d8', 50, '[20]', '1', '2022-01-15 23:49:44', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (76, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:14:c1f049a4-761a-11ec-ba93-a2380e71991a', 'Activity_00wash3', 50, '[21]', '1', '2022-01-15 23:49:44', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (77, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:15:5304ca92-761b-11ec-b05a-a2380e71991a', 'Activity_05kt1hf', 50, '[10]', '1', '2022-01-15 23:53:47', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (78, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:15:5304ca92-761b-11ec-b05a-a2380e71991a', 'Activity_10tl4d8', 50, '[20]', '1', '2022-01-15 23:53:47', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (79, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:15:5304ca92-761b-11ec-b05a-a2380e71991a', 'Activity_00wash3', 50, '[21]', '1', '2022-01-15 23:53:47', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (80, 'e4a1a1ef-7628-11ec-8477-a2380e71991a', '', 'task-01', 50, '[10]', '1', '2022-01-16 01:40:26', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (81, 'e4a1a1ef-7628-11ec-8477-a2380e71991a', '', 'task-22', 50, '[20]', '1', '2022-01-16 01:40:32', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (82, 'e4a1a1ef-7628-11ec-8477-a2380e71991a', '', 'task-23', 50, '[21]', '1', '2022-01-16 01:40:39', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (83, 'e4a1a1ef-7628-11ec-8477-a2380e71991a', '', 'task-21', 30, '[1]', '1', '2022-01-16 01:40:48', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (84, 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'oa_leave:1:482ec033-762a-11ec-8477-a2380e71991a', 'task-01', 50, '[10]', '1', '2022-01-16 01:40:51', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (85, 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'oa_leave:1:482ec033-762a-11ec-8477-a2380e71991a', 'task-22', 50, '[20]', '1', '2022-01-16 01:40:51', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (86, 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'oa_leave:1:482ec033-762a-11ec-8477-a2380e71991a', 'task-23', 50, '[21]', '1', '2022-01-16 01:40:51', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (87, 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'oa_leave:1:482ec033-762a-11ec-8477-a2380e71991a', 'task-21', 20, '[100]', '1', '2022-01-16 01:40:51', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (88, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:16:d83ee859-762d-11ec-9125-a2380e71991a', 'Activity_05kt1hf', 50, '[10]', '1', '2022-01-16 02:06:22', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (89, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:16:d83ee859-762d-11ec-9125-a2380e71991a', 'Activity_10tl4d8', 50, '[20]', '1', '2022-01-16 02:06:22', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (90, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:16:d83ee859-762d-11ec-9125-a2380e71991a', 'Activity_00wash3', 50, '[21]', '1', '2022-01-16 02:06:22', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (91, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:17:04259e68-762e-11ec-9ab0-a2380e71991a', 'Activity_05kt1hf', 50, '[10]', '1', '2022-01-16 02:07:35', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (92, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:17:04259e68-762e-11ec-9ab0-a2380e71991a', 'Activity_10tl4d8', 50, '[20]', '1', '2022-01-16 02:07:35', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (93, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:17:04259e68-762e-11ec-9ab0-a2380e71991a', 'Activity_00wash3', 50, '[21]', '1', '2022-01-16 02:07:35', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (94, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:18:1bb307b1-7633-11ec-957a-a2380e71991a', 'Activity_05kt1hf', 50, '[10]', '1', '2022-01-16 02:44:02', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (95, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:18:1bb307b1-7633-11ec-957a-a2380e71991a', 'Activity_10tl4d8', 50, '[20]', '1', '2022-01-16 02:44:02', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (96, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:18:1bb307b1-7633-11ec-957a-a2380e71991a', 'Activity_00wash3', 50, '[21]', '1', '2022-01-16 02:44:02', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (97, '024b400b-7680-11ec-bc82-a2380e71991a', '', 'Activity_04asu4q', 50, '[10]', '1', '2022-01-16 11:55:04', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (98, '024b400b-7680-11ec-bc82-a2380e71991a', 'self:1:17c042ff-7680-11ec-bc82-a2380e71991a', 'Activity_04asu4q', 50, '[10]', '1', '2022-01-16 11:55:07', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (99, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:19:a401b61a-768b-11ec-afcd-a2380e71991a', 'Activity_05kt1hf', 50, '[10]', '1', '2022-01-16 13:17:47', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (100, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:19:a401b61a-768b-11ec-afcd-a2380e71991a', 'Activity_10tl4d8', 50, '[20]', '1', '2022-01-16 13:17:47', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (101, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:19:a401b61a-768b-11ec-afcd-a2380e71991a', 'Activity_00wash3', 50, '[21]', '1', '2022-01-16 13:17:47', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (102, 'a3d5105e-760b-11ec-9367-a2380e71991a', '', 'Activity_0wdgatv', 50, '[10]', '1', '2022-01-16 13:18:29', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (103, 'a3d5105e-760b-11ec-9367-a2380e71991a', '', 'Activity_1y4q91p', 30, '[1]', '1', '2022-01-16 13:18:41', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (104, 'a3d5105e-760b-11ec-9367-a2380e71991a', 'test_001:2:c680200d-768b-11ec-afcd-a2380e71991a', 'Activity_0wdgatv', 50, '[10]', '1', '2022-01-16 13:18:45', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (105, 'a3d5105e-760b-11ec-9367-a2380e71991a', 'test_001:2:c680200d-768b-11ec-afcd-a2380e71991a', 'Activity_1y4q91p', 30, '[1]', '1', '2022-01-16 13:18:45', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (106, 'a3d5105e-760b-11ec-9367-a2380e71991a', 'test_001:3:4e8e99b2-768c-11ec-afcd-a2380e71991a', 'Activity_0wdgatv', 50, '[10]', '1', '2022-01-16 13:22:33', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (107, 'a3d5105e-760b-11ec-9367-a2380e71991a', 'test_001:3:4e8e99b2-768c-11ec-afcd-a2380e71991a', 'Activity_1y4q91p', 30, '[1]', '1', '2022-01-16 13:22:33', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (108, '024b400b-7680-11ec-bc82-a2380e71991a', 'self:2:3a5a065e-76b1-11ec-9c66-a2380e71991a', 'Activity_04asu4q', 50, '[10]', '1', '2022-01-16 17:46:50', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (109, 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'oa_leave:2:3c1f0ef1-76b1-11ec-9c66-a2380e71991a', 'task-01', 50, '[10]', '1', '2022-01-16 17:46:53', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (110, 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'oa_leave:2:3c1f0ef1-76b1-11ec-9c66-a2380e71991a', 'task-22', 50, '[20]', '1', '2022-01-16 17:46:53', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (111, 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'oa_leave:2:3c1f0ef1-76b1-11ec-9c66-a2380e71991a', 'task-23', 50, '[21]', '1', '2022-01-16 17:46:53', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (112, 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'oa_leave:2:3c1f0ef1-76b1-11ec-9c66-a2380e71991a', 'task-21', 20, '[100]', '1', '2022-01-16 17:46:53', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (113, 'a3d5105e-760b-11ec-9367-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', 'Activity_0wdgatv', 50, '[10]', '1', '2022-01-16 17:46:56', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (114, 'a3d5105e-760b-11ec-9367-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', 'Activity_1y4q91p', 30, '[1]', '1', '2022-01-16 17:46:56', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (115, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:20:3f1c2257-76b1-11ec-9c66-a2380e71991a', 'Activity_05kt1hf', 50, '[10]', '1', '2022-01-16 17:46:58', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (116, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:20:3f1c2257-76b1-11ec-9c66-a2380e71991a', 'Activity_10tl4d8', 50, '[20]', '1', '2022-01-16 17:46:58', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (117, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:20:3f1c2257-76b1-11ec-9c66-a2380e71991a', 'Activity_00wash3', 50, '[21]', '1', '2022-01-16 17:46:58', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (118, '02b756a8-79af-11ec-abb0-a2380e71991a', '', 'Activity_1gndzgr', 50, '[10]', '1', '2022-01-20 13:09:15', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (119, '02b756a8-79af-11ec-abb0-a2380e71991a', '', 'Activity_078i5dd', 50, '[10]', '1', '2022-01-20 13:12:08', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (120, '02b756a8-79af-11ec-abb0-a2380e71991a', '', 'Activity_0dlqjcv', 50, '[10]', '1', '2022-01-20 13:12:15', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (121, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:1:89b300ac-79af-11ec-abb0-a2380e71991a', 'Activity_1gndzgr', 50, '[10]', '1', '2022-01-20 13:12:18', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (122, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:1:89b300ac-79af-11ec-abb0-a2380e71991a', 'Activity_078i5dd', 50, '[10]', '1', '2022-01-20 13:12:18', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (123, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:1:89b300ac-79af-11ec-abb0-a2380e71991a', 'Activity_0dlqjcv', 50, '[10]', '1', '2022-01-20 13:12:18', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (124, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', 'Activity_05kt1hf', 50, '[10]', '1', '2022-01-20 13:21:03', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (125, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', 'Activity_10tl4d8', 50, '[10]', '1', '2022-01-20 13:21:03', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (126, 'a4ef4c7f-7606-11ec-8cd2-a2380e71991a', 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', 'Activity_00wash3', 50, '[10]', '1', '2022-01-20 13:21:03', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (127, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:2:8a7b5672-7ade-11ec-a777-a2380e71991a', 'Activity_1gndzgr', 50, '[10]', '1', '2022-01-22 01:21:17', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (128, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:2:8a7b5672-7ade-11ec-a777-a2380e71991a', 'Activity_078i5dd', 50, '[10]', '1', '2022-01-22 01:21:17', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (129, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:2:8a7b5672-7ade-11ec-a777-a2380e71991a', 'Activity_0dlqjcv', 50, '[10]', '1', '2022-01-22 01:21:17', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (130, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:3:8db9dfa5-7ade-11ec-a777-a2380e71991a', 'Activity_1gndzgr', 50, '[10]', '1', '2022-01-22 01:21:22', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (131, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:3:8db9dfa5-7ade-11ec-a777-a2380e71991a', 'Activity_078i5dd', 50, '[10]', '1', '2022-01-22 01:21:22', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (132, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:3:8db9dfa5-7ade-11ec-a777-a2380e71991a', 'Activity_0dlqjcv', 50, '[10]', '1', '2022-01-22 01:21:22', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (133, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:4:a63e1e68-7ade-11ec-a777-a2380e71991a', 'Activity_1gndzgr', 50, '[10]', '1', '2022-01-22 01:22:03', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (134, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:4:a63e1e68-7ade-11ec-a777-a2380e71991a', 'Activity_078i5dd', 50, '[10]', '1', '2022-01-22 01:22:03', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (135, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:4:a63e1e68-7ade-11ec-a777-a2380e71991a', 'Activity_0dlqjcv', 50, '[10]', '1', '2022-01-22 01:22:03', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (136, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:5:33f2d275-7adf-11ec-93fe-a2380e71991a', 'Activity_1gndzgr', 50, '[10]', '1', '2022-01-22 01:26:01', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (137, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:5:33f2d275-7adf-11ec-93fe-a2380e71991a', 'Activity_078i5dd', 50, '[10]', '1', '2022-01-22 01:26:01', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (138, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:5:33f2d275-7adf-11ec-93fe-a2380e71991a', 'Activity_0dlqjcv', 50, '[10]', '1', '2022-01-22 01:26:01', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (139, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:6:365e0618-7adf-11ec-93fe-a2380e71991a', 'Activity_1gndzgr', 50, '[10]', '1', '2022-01-22 01:26:05', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (140, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:6:365e0618-7adf-11ec-93fe-a2380e71991a', 'Activity_078i5dd', 50, '[10]', '1', '2022-01-22 01:26:05', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (141, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:6:365e0618-7adf-11ec-93fe-a2380e71991a', 'Activity_0dlqjcv', 50, '[10]', '1', '2022-01-22 01:26:05', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (142, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:7:3c5b3a1b-7adf-11ec-93fe-a2380e71991a', 'Activity_1gndzgr', 50, '[10]', '1', '2022-01-22 01:26:15', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (143, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:7:3c5b3a1b-7adf-11ec-93fe-a2380e71991a', 'Activity_078i5dd', 50, '[10]', '1', '2022-01-22 01:26:15', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (144, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:7:3c5b3a1b-7adf-11ec-93fe-a2380e71991a', 'Activity_0dlqjcv', 50, '[10]', '1', '2022-01-22 01:26:15', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (145, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:8:3da2872e-7adf-11ec-93fe-a2380e71991a', 'Activity_1gndzgr', 50, '[10]', '1', '2022-01-22 01:26:17', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (146, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:8:3da2872e-7adf-11ec-93fe-a2380e71991a', 'Activity_078i5dd', 50, '[10]', '1', '2022-01-22 01:26:17', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (147, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:8:3da2872e-7adf-11ec-93fe-a2380e71991a', 'Activity_0dlqjcv', 50, '[10]', '1', '2022-01-22 01:26:17', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (148, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:9:3f0f84b1-7adf-11ec-93fe-a2380e71991a', 'Activity_1gndzgr', 50, '[10]', '1', '2022-01-22 01:26:20', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (149, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:9:3f0f84b1-7adf-11ec-93fe-a2380e71991a', 'Activity_078i5dd', 50, '[10]', '1', '2022-01-22 01:26:20', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (150, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:9:3f0f84b1-7adf-11ec-93fe-a2380e71991a', 'Activity_0dlqjcv', 50, '[10]', '1', '2022-01-22 01:26:20', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (151, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:10:479efc54-7adf-11ec-93fe-a2380e71991a', 'Activity_1gndzgr', 50, '[10]', '1', '2022-01-22 01:26:34', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (152, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:10:479efc54-7adf-11ec-93fe-a2380e71991a', 'Activity_078i5dd', 50, '[10]', '1', '2022-01-22 01:26:34', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (153, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:10:479efc54-7adf-11ec-93fe-a2380e71991a', 'Activity_0dlqjcv', 50, '[10]', '1', '2022-01-22 01:26:34', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (154, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:11:38c6faaa-7ae0-11ec-9d9d-a2380e71991a', 'Activity_1gndzgr', 50, '[10]', '1', '2022-01-22 01:33:19', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (155, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:11:38c6faaa-7ae0-11ec-9d9d-a2380e71991a', 'Activity_078i5dd', 50, '[10]', '1', '2022-01-22 01:33:19', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (156, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:11:38c6faaa-7ae0-11ec-9d9d-a2380e71991a', 'Activity_0dlqjcv', 50, '[10]', '1', '2022-01-22 01:33:19', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (157, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:12:c9c8ddcd-7ae0-11ec-9d9d-a2380e71991a', 'Activity_1gndzgr', 50, '[10]', '1', '2022-01-22 01:37:22', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (158, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:12:c9c8ddcd-7ae0-11ec-9d9d-a2380e71991a', 'Activity_078i5dd', 50, '[10]', '1', '2022-01-22 01:37:22', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (159, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:12:c9c8ddcd-7ae0-11ec-9d9d-a2380e71991a', 'Activity_0dlqjcv', 50, '[10]', '1', '2022-01-22 01:37:22', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (160, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:13:f1aca890-7ae0-11ec-9d9d-a2380e71991a', 'Activity_1gndzgr', 50, '[10]', '1', '2022-01-22 01:38:29', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (161, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:13:f1aca890-7ae0-11ec-9d9d-a2380e71991a', 'Activity_078i5dd', 50, '[10]', '1', '2022-01-22 01:38:29', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (162, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:13:f1aca890-7ae0-11ec-9d9d-a2380e71991a', 'Activity_0dlqjcv', 50, '[10]', '1', '2022-01-22 01:38:29', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (163, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:14:27a560fb-7ae2-11ec-9d9a-a2380e71991a', 'Activity_1gndzgr', 50, '[10]', '1', '2022-01-22 01:47:09', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (164, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:14:27a560fb-7ae2-11ec-9d9a-a2380e71991a', 'Activity_078i5dd', 50, '[10]', '1', '2022-01-22 01:47:09', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (165, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:14:27a560fb-7ae2-11ec-9d9a-a2380e71991a', 'Activity_0dlqjcv', 50, '[10]', '1', '2022-01-22 01:47:09', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (166, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:15:c1906d85-7ae5-11ec-a69c-a2380e71991a', 'Activity_1gndzgr', 50, '[10]', '1', '2022-01-22 02:12:56', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (167, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:15:c1906d85-7ae5-11ec-a69c-a2380e71991a', 'Activity_078i5dd', 50, '[10]', '1', '2022-01-22 02:12:56', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (168, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:15:c1906d85-7ae5-11ec-a69c-a2380e71991a', 'Activity_0dlqjcv', 50, '[10]', '1', '2022-01-22 02:12:56', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (169, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:16:c325da98-7ae5-11ec-a69c-a2380e71991a', 'Activity_1gndzgr', 50, '[10]', '1', '2022-01-22 02:12:58', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (170, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:16:c325da98-7ae5-11ec-a69c-a2380e71991a', 'Activity_078i5dd', 50, '[10]', '1', '2022-01-22 02:12:58', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (171, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:16:c325da98-7ae5-11ec-a69c-a2380e71991a', 'Activity_0dlqjcv', 50, '[10]', '1', '2022-01-22 02:12:58', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (172, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:17:f3aad03b-7ae5-11ec-a69c-a2380e71991a', 'Activity_1gndzgr', 50, '[10]', '1', '2022-01-22 02:14:20', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (173, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:17:f3aad03b-7ae5-11ec-a69c-a2380e71991a', 'Activity_078i5dd', 50, '[10]', '1', '2022-01-22 02:14:20', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (174, '02b756a8-79af-11ec-abb0-a2380e71991a', 'eee:17:f3aad03b-7ae5-11ec-a69c-a2380e71991a', 'Activity_0dlqjcv', 50, '[10]', '1', '2022-01-22 02:14:20', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (175, 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'oa_leave:3:1fad3d93-7b75-11ec-a3c8-acde48001122', 'task-01', 50, '[10]', '1', '2022-01-22 19:19:12', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (176, 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'oa_leave:3:1fad3d93-7b75-11ec-a3c8-acde48001122', 'task-21', 20, '[100]', '1', '2022-01-22 19:19:12', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (177, 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'oa_leave:4:991f2193-7b7f-11ec-a3c8-acde48001122', 'task-01', 50, '[10]', '1', '2022-01-22 20:34:10', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (178, 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'oa_leave:4:991f2193-7b7f-11ec-a3c8-acde48001122', 'task-21', 30, '[1]', '1', '2022-01-22 20:34:10', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (179, 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', 'task-01', 50, '[10]', '1', '2022-01-22 21:48:38', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (180, 'e4a1a1ef-7628-11ec-8477-a2380e71991a', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', 'task-21', 30, '[1]', '1', '2022-01-22 21:48:38', '1', '2022-02-19 17:29:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (181, '4b4909d8-97e7-11ec-8e20-862bc1a4a054', '', 'task01', 50, '[10]', '1', '2022-02-28 00:53:09', '1', '2022-02-28 00:53:09', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (182, '4b4909d8-97e7-11ec-8e20-862bc1a4a054', 'flowable_01:1:c0bb5b36-97ed-11ec-a2b9-862bc1a4a054', 'task01', 50, '[10]', '1', '2022-02-28 00:53:14', '1', '2022-02-28 00:53:14', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (183, '02217e82-a77e-11ec-96d6-8e557beca7ad', '', 'Activity_06rmtz9', 50, '[20]', '1', '2022-03-19 20:58:24', '1', '2022-03-19 20:58:24', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (184, '02217e82-a77e-11ec-96d6-8e557beca7ad', '', 'Activity_1hxzcyl', 22, '[3]', '1', '2022-03-19 20:59:35', '1', '2022-03-19 20:59:35', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (185, '02217e82-a77e-11ec-96d6-8e557beca7ad', 'common-form:1:7fdfc407-a786-11ec-96d6-8e557beca7ad', 'Activity_06rmtz9', 50, '[20]', '1', '2022-03-19 21:14:26', '1', '2022-03-19 21:14:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (186, '02217e82-a77e-11ec-96d6-8e557beca7ad', 'common-form:1:7fdfc407-a786-11ec-96d6-8e557beca7ad', 'Activity_1hxzcyl', 22, '[3]', '1', '2022-03-19 21:14:26', '1', '2022-03-19 21:14:26', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (187, '18348550-a79a-11ec-bf87-8e557beca7ad', 'DEFAULT', 'task-01', 30, '[1]', '1', '2022-05-07 01:12:43', '1', '2022-05-07 01:12:43', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (188, '18348550-a79a-11ec-bf87-8e557beca7ad', 'DEFAULT', 'task-21', 30, '[1]', '1', '2022-05-07 01:12:49', '1', '2022-05-07 01:12:49', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (189, '4b4909d8-97e7-11ec-8e20-862bc1a4a054', 'DEFAULT', 'task01', 30, '[1]', '1', '2022-05-07 01:13:16', '1', '2022-05-07 01:13:16', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (190, '4b4909d8-97e7-11ec-8e20-862bc1a4a054', 'flowable_01:2:d344a0bd-cd5f-11ec-8280-3e2374911326', 'task01', 30, '[1]', '1', '2022-05-07 01:13:19', '1', '2022-05-07 01:13:19', 0, 1); +INSERT INTO "bpm_task_assign_rule" ("id", "model_id", "process_definition_id", "task_definition_key", "type", "options", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (191, '4b4909d8-97e7-11ec-8e20-862bc1a4a054', 'flowable_01:3:4b0eec62-d0e5-11ec-b8b5-3e2374911326', 'task01', 30, '[1]', '1', '2022-05-11 12:46:17', '1', '2022-05-11 12:46:17', 0, 1); COMMIT; -- ---------------------------- @@ -798,7 +1198,139 @@ COMMENT ON TABLE "bpm_task_ext" IS '工作流的流程任务的拓展表'; -- Records of bpm_task_ext -- ---------------------------- BEGIN; -INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (0, 1, 'task01', '0d2f167e-c893-11ec-8a1d-3e2374911326', 2, 'A', '2022-04-30 22:40:30.328', '0d23cbd6-c893-11ec-8a1d-3e2374911326', 'oa_leave:1:934362e3-c892-11ec-a15b-3e2374911326', '1', '2022-04-30 22:37:24.822', '1', '2022-04-30 22:40:30.687', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (79, 1, NULL, '36ea97d6-7157-11ec-8642-a2380e71991a', 2, '通过', NULL, '36e36bdd-7157-11ec-8642-a2380e71991a', 'Process_1641152976334:10:dd62eaef-6c30-11ec-9fc8-cacd34981f8e', '1', '2022-01-09 22:19:54', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (80, 1, NULL, '791e01f6-7207-11ec-af01-a2380e71991a', 2, '通过', NULL, '7917733d-7207-11ec-af01-a2380e71991a', 'Process_1641152976334:10:dd62eaef-6c30-11ec-9fc8-cacd34981f8e', '1', '2022-01-10 19:21:36', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (81, NULL, NULL, 'd15049a8-7207-11ec-a1b3-a2380e71991a', 4, NULL, '2022-01-15 21:59:21', 'd14992df-7207-11ec-a1b3-a2380e71991a', 'Process_1641152976334:10:dd62eaef-6c30-11ec-9fc8-cacd34981f8e', '1', '2022-01-10 19:24:04', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (82, NULL, NULL, '370c4b29-7208-11ec-a594-a2380e71991a', 4, NULL, '2022-01-15 21:59:23', '37056d50-7208-11ec-a594-a2380e71991a', 'Process_1641152976334:10:dd62eaef-6c30-11ec-9fc8-cacd34981f8e', '1', '2022-01-10 19:26:55', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (83, NULL, '任务二', '90cbe90b-7208-11ec-a594-a2380e71991a', 4, NULL, '2022-01-15 21:59:26', '90b5effe-7208-11ec-a594-a2380e71991a', 'gateway_test:4:2e50e9a4-7136-11ec-93f6-a2380e71991a', '1', '2022-01-10 19:29:26', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (84, NULL, '任务一', '90cbe909-7208-11ec-a594-a2380e71991a', 4, NULL, '2022-01-15 21:59:26', '90b5effe-7208-11ec-a594-a2380e71991a', 'gateway_test:4:2e50e9a4-7136-11ec-93f6-a2380e71991a', '1', '2022-01-10 19:29:26', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (85, 1, '审批任务一', '842b1870-7211-11ec-8e38-a2380e71991a', 4, NULL, '2022-01-15 21:59:12', '84285947-7211-11ec-8e38-a2380e71991a', 'AA:3:83a1ac25-720b-11ec-95cb-a2380e71991a', '1', '2022-01-10 20:33:30', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (86, 1, '一级审批', 'e9444561-729d-11ec-abc7-a2380e71991a', 4, NULL, '2022-01-15 21:59:10', 'e93a3338-729d-11ec-abc7-a2380e71991a', 'leave:9:59689ba0-7284-11ec-965c-a2380e71991a', '1', '2022-01-11 13:18:29', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (87, 1, '一级审批', '37c5ed6f-729e-11ec-abc7-a2380e71991a', 4, NULL, '2022-01-15 21:59:07', '37c2e026-729e-11ec-abc7-a2380e71991a', 'leave:9:59689ba0-7284-11ec-965c-a2380e71991a', '1', '2022-01-11 13:20:41', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (88, 103, '一级审批', '61416f3d-729e-11ec-abc7-a2380e71991a', 3, '不通过', '2022-01-15 21:58:22', '613e8904-729e-11ec-abc7-a2380e71991a', 'leave:9:59689ba0-7284-11ec-965c-a2380e71991a', '1', '2022-01-11 13:21:50', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (89, 2, '一级审批', 'fcea15e7-7483-11ec-8645-a2380e71991a', 4, NULL, '2022-01-13 23:20:26', 'fcdfddae-7483-11ec-8645-a2380e71991a', 'leave:11:5ddc9eb0-7483-11ec-b390-a2380e71991a', '103', '2022-01-13 23:17:57', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (90, 2, '一级审批', '42f302b6-7484-11ec-8645-a2380e71991a', 4, NULL, '2022-01-13 23:20:22', '265fa43c-7484-11ec-8645-a2380e71991a', 'leave:11:5ddc9eb0-7483-11ec-b390-a2380e71991a', '103', '2022-01-13 23:19:55', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (91, 1, '一级审批', '476773e2-7484-11ec-8645-a2380e71991a', 3, '不通过', '2022-01-15 21:59:57', '2cb112bf-7484-11ec-8645-a2380e71991a', 'leave:11:5ddc9eb0-7483-11ec-b390-a2380e71991a', '103', '2022-01-13 23:20:02', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (92, 2, '一级审批', '4767c205-7484-11ec-8645-a2380e71991a', 1, NULL, NULL, '38d522d3-7484-11ec-8645-a2380e71991a', 'leave:11:5ddc9eb0-7483-11ec-b390-a2380e71991a', '103', '2022-01-13 23:20:02', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (93, 1, '一级审批', '477e7e66-7484-11ec-8645-a2380e71991a', 3, '不通过', '2022-01-15 21:59:56', '475d139b-7484-11ec-8645-a2380e71991a', 'leave:11:5ddc9eb0-7483-11ec-b390-a2380e71991a', '103', '2022-01-13 23:20:03', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (94, 1, '任务一', '0799c43a-75b9-11ec-b607-a2380e71991a', 4, NULL, '2022-01-15 12:10:18', '078f63f1-75b9-11ec-b607-a2380e71991a', 'test:1:913d7930-75b8-11ec-b607-a2380e71991a', '103', '2022-01-15 12:10:10', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (95, 1, '任务一', 'a4fdfc99-75bd-11ec-bf54-a2380e71991a', 4, NULL, '2022-01-15 21:58:18', 'a4f215b0-75bd-11ec-bf54-a2380e71991a', 'test:3:8e4df3a5-75bb-11ec-a317-a2380e71991a', '103', '2022-01-15 12:43:12', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (96, 104, '任务一', 'c2c3c08d-75bd-11ec-bf54-a2380e71991a', 4, NULL, '2022-01-15 21:58:15', 'c2c10164-75bd-11ec-bf54-a2380e71991a', 'test:4:b86e7d03-75bd-11ec-bf54-a2380e71991a', '103', '2022-01-15 12:44:02', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (97, 105, '任务一', 'dcea64bf-75bd-11ec-bf54-a2380e71991a', 4, NULL, '2022-01-15 21:58:12', 'dce61ef6-75bd-11ec-bf54-a2380e71991a', 'test:5:d64bc095-75bd-11ec-bf54-a2380e71991a', '103', '2022-01-15 12:44:46', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (98, 103, '任务一', 'f19d7753-75bd-11ec-bf54-a2380e71991a', 4, NULL, '2022-01-15 21:58:10', 'f19a6a0a-75bd-11ec-bf54-a2380e71991a', 'test:6:ebac9f59-75bd-11ec-bf54-a2380e71991a', '103', '2022-01-15 12:45:20', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (99, 1, '任务一', '02832d36-75be-11ec-bf54-a2380e71991a', 4, NULL, '2022-01-15 21:58:07', '027ff9dd-75be-11ec-bf54-a2380e71991a', 'test:7:fc60e5fc-75bd-11ec-bf54-a2380e71991a', '103', '2022-01-15 12:45:49', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (100, 103, '任务一', '100e3e00-7607-11ec-8cd2-a2380e71991a', 2, '通过', NULL, '10008257-7607-11ec-8cd2-a2380e71991a', 'test:10:f3aa05e6-7606-11ec-8cd2-a2380e71991a', '103', '2022-01-15 21:28:45', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (101, 103, '任务二', 'a0e12108-7607-11ec-8cd2-a2380e71991a', 2, '通过', NULL, '10008257-7607-11ec-8cd2-a2380e71991a', 'test:10:f3aa05e6-7606-11ec-8cd2-a2380e71991a', '103', '2022-01-15 21:32:48', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (102, 104, '任务三', 'ae546d70-7607-11ec-8cd2-a2380e71991a', 4, NULL, '2022-01-15 21:58:05', '10008257-7607-11ec-8cd2-a2380e71991a', 'test:10:f3aa05e6-7606-11ec-8cd2-a2380e71991a', '103', '2022-01-15 21:33:10', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (103, 103, '我哎审批', 'cafed9fc-760b-11ec-9367-a2380e71991a', 3, '不通过', '2022-01-15 22:28:57', 'caf40483-760b-11ec-9367-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', '2022-01-15 22:02:36', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (104, 1, '我哎审批', '90a11c85-760e-11ec-a415-a2380e71991a', 3, '不通过', '2022-01-15 22:28:51', '9091b32c-760e-11ec-a415-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', '2022-01-15 22:22:27', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (106, 103, '我哎审批', '6338b341-760f-11ec-ad1b-a2380e71991a', 3, '不通过', '2022-01-15 22:28:56', '6325c778-760f-11ec-ad1b-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', '2022-01-15 22:28:20', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (107, 103, '我哎审批', '873c5db1-760f-11ec-ad1b-a2380e71991a', 3, '不通过', '2022-01-15 22:31:04', '873817e8-760f-11ec-ad1b-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', '2022-01-15 22:29:21', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (108, 103, '我哎审批', '0c93a6f4-7610-11ec-9266-a2380e71991a', 3, '不通过', '2022-01-15 23:01:43', '0c843d9b-7610-11ec-9266-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', '2022-01-15 22:33:04', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (109, 103, '我哎审批', '5825f744-7610-11ec-9266-a2380e71991a', 3, '不通过', '2022-01-15 23:01:42', '5822c2eb-7610-11ec-9266-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', '2022-01-15 22:35:11', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (110, 103, '我哎审批', '59c4c835-7612-11ec-8063-a2380e71991a', 3, '不通过', '2022-01-15 23:01:41', '59b537cc-7612-11ec-8063-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', '2022-01-15 22:49:33', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (111, 1, '我哎审批', '1a14b21d-7614-11ec-87b4-a2380e71991a', 4, NULL, '2022-01-15 23:54:05', '1a0bb164-7614-11ec-87b4-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', '2022-01-15 23:02:05', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (112, 1, '我哎审批', '46a4f88d-7615-11ec-87b4-a2380e71991a', 4, NULL, '2022-01-15 23:54:02', '46a21254-7615-11ec-87b4-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', '2022-01-15 23:10:29', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (113, 103, '我哎审批', '57d90efc-761b-11ec-b05a-a2380e71991a', 4, NULL, '2022-01-15 23:54:00', '57ce3983-761b-11ec-b05a-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', '2022-01-15 23:53:55', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (114, 1, '任务一', '8a3a3172-7630-11ec-a535-a2380e71991a', 2, '通过', NULL, '8a2ee6c9-7630-11ec-a535-a2380e71991a', 'test:17:04259e68-762e-11ec-9ab0-a2380e71991a', '1', '2022-01-16 02:25:39', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (115, 1, '任务一', 'e06804a6-767f-11ec-bc82-a2380e71991a', 2, '通过', NULL, 'e05c44cd-767f-11ec-bc82-a2380e71991a', 'test:18:1bb307b1-7633-11ec-957a-a2380e71991a', '1', '2022-01-16 11:53:34', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (116, 1, '哈哈哈哈', '1d275189-7680-11ec-bc82-a2380e71991a', 2, '通过', NULL, '1d249260-7680-11ec-bc82-a2380e71991a', 'self:1:17c042ff-7680-11ec-bc82-a2380e71991a', '1', '2022-01-16 11:55:16', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (117, 103, '我哎审批', '70d54722-768b-11ec-afcd-a2380e71991a', 4, NULL, '2022-01-16 22:58:20', '70ca71a9-768b-11ec-afcd-a2380e71991a', 'test_001:1:c5772412-760b-11ec-9367-a2380e71991a', '1', '2022-01-16 13:16:21', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (118, 1, '1.1', 'cdc05b68-768b-11ec-afcd-a2380e71991a', 2, '通过', NULL, 'cdbd4e1e-768b-11ec-afcd-a2380e71991a', 'test_001:2:c680200d-768b-11ec-afcd-a2380e71991a', '1', '2022-01-16 13:18:57', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (119, 1, '1.2', '53892ad4-768c-11ec-afcd-a2380e71991a', 2, '通过', NULL, '537cceb3-768c-11ec-afcd-a2380e71991a', 'test_001:3:4e8e99b2-768c-11ec-afcd-a2380e71991a', '1', '2022-01-16 13:22:41', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (120, 1, '1.1', '5380ed6e-768c-11ec-afcd-a2380e71991a', 2, '通过', NULL, '537cceb3-768c-11ec-afcd-a2380e71991a', 'test_001:3:4e8e99b2-768c-11ec-afcd-a2380e71991a', '1', '2022-01-16 13:22:41', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (121, 1, '1.2', '363e7d39-76d1-11ec-9c66-a2380e71991a', 2, '通过', NULL, '362b9168-76d1-11ec-9c66-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-16 21:35:47', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (122, 1, '1.1', '3634b933-76d1-11ec-9c66-a2380e71991a', 2, '通过', NULL, '362b9168-76d1-11ec-9c66-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-16 21:35:47', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (123, 1, '1.2', 'c88367bf-76d1-11ec-9c66-a2380e71991a', 2, '通过', NULL, 'c1ca84ce-76d1-11ec-9c66-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-16 21:39:53', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (124, 1, '1.1', 'c87c3bc9-76d1-11ec-9c66-a2380e71991a', 2, '通过', NULL, 'c1ca84ce-76d1-11ec-9c66-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-16 21:39:53', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (125, 1, '1.2', '4da1ed9d-76d2-11ec-9423-a2380e71991a', 2, '通过', NULL, '4b4c16ac-76d2-11ec-9423-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-16 21:43:36', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (126, 1, '1.1', '4d91c0f7-76d2-11ec-9423-a2380e71991a', 2, '通过', NULL, '4b4c16ac-76d2-11ec-9423-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-16 21:43:36', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (127, 104, '任务二', 'b5cb3a35-76dc-11ec-95f2-a2380e71991a', 4, NULL, '2022-01-16 22:58:23', 'e05c44cd-767f-11ec-bc82-a2380e71991a', 'test:18:1bb307b1-7633-11ec-957a-a2380e71991a', '1', '2022-01-16 22:58:06', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (128, 104, '任务二', 'b6a45c2e-76dc-11ec-95f2-a2380e71991a', 4, NULL, '2022-01-16 22:58:25', '8a2ee6c9-7630-11ec-a535-a2380e71991a', 'test:17:04259e68-762e-11ec-9ab0-a2380e71991a', '1', '2022-01-16 22:58:07', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (129, 1, '1.2', 'ddef8f85-76dc-11ec-95f2-a2380e71991a', 2, '通过', NULL, 'db3f3c84-76dc-11ec-95f2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-16 22:59:13', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (130, 1, '1.1', 'dde35a7f-76dc-11ec-95f2-a2380e71991a', 2, '通过', NULL, 'db3f3c84-76dc-11ec-95f2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-16 22:59:13', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (131, 1, '1.2', 'cff54e11-76de-11ec-95f2-a2380e71991a', 2, '通过', '2022-01-16 23:13:15', 'cfe3c1d0-76de-11ec-95f2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-16 23:13:09', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (132, 1, '1.1', 'cfea789b-76de-11ec-95f2-a2380e71991a', 2, 'EEE', '2022-01-17 00:51:06', 'cfe3c1d0-76de-11ec-95f2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-16 23:13:08', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (133, 1, '1.2', '164c2f9a-76e6-11ec-95f2-a2380e71991a', 2, 'A', '2022-01-17 00:35:25', '1642e0b9-76e6-11ec-95f2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-17 00:05:13', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (134, 1, '1.1', '1645ee04-76e6-11ec-95f2-a2380e71991a', 2, 'BBB', '2022-01-17 00:35:32', '1642e0b9-76e6-11ec-95f2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-17 00:05:13', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (135, 1, '1.2', '8bbac286-76ea-11ec-95f2-a2380e71991a', 2, 'AAAA', '2022-01-17 00:37:19', '8bb14c95-76ea-11ec-95f2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-17 00:37:08', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (136, 1, '1.1', '8bb40bc0-76ea-11ec-95f2-a2380e71991a', 3, 'BBB', '2022-01-17 00:37:21', '8bb14c95-76ea-11ec-95f2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-17 00:37:08', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (137, 1, '1.2', '2937eba2-76ed-11ec-95f2-a2380e71991a', 2, '1111', '2022-01-17 00:57:01', '29288241-76ed-11ec-95f2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-17 00:55:51', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (138, 1, '1.1', '292cef1c-76ed-11ec-95f2-a2380e71991a', 2, 'aaaa', '2022-01-17 12:49:45', '29288241-76ed-11ec-95f2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-17 00:55:51', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (139, 103, '1.2', 'ce91ccb0-77aa-11ec-9be9-a2380e71991a', 2, 'AAA', '2022-01-17 23:51:24', 'ce5e126f-77aa-11ec-9be9-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-17 23:33:24', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (140, 103, '1.1', 'ce773fca-77aa-11ec-9be9-a2380e71991a', 2, 'BBB', '2022-01-17 23:51:26', 'ce5e126f-77aa-11ec-9be9-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-17 23:33:23', '103', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (141, 1, '1.2', 'd201e58a-77b8-11ec-bc1a-a2380e71991a', 2, 'AAA', '2022-01-18 01:13:50', 'd1e75899-77b8-11ec-bc1a-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-18 01:13:42', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (142, 1, '1.1', 'd1f625b4-77b8-11ec-bc1a-a2380e71991a', 2, 'AAA', '2022-01-19 08:45:37', 'd1e75899-77b8-11ec-bc1a-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-18 01:13:42', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (143, 1, '任务一', 'f31c6d6b-77f2-11ec-bc1a-a2380e71991a', 2, 'AAA', '2022-01-18 08:10:09', 'f3191202-77f2-11ec-bc1a-a2380e71991a', 'test:20:3f1c2257-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-18 08:09:49', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (144, 104, '任务二', 'ff5f7733-77f2-11ec-bc1a-a2380e71991a', 1, NULL, NULL, 'f3191202-77f2-11ec-bc1a-a2380e71991a', 'test:20:3f1c2257-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-18 08:10:09', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (145, 1, '任务一', '342d7bbb-78c1-11ec-9b4d-a2380e71991a', 2, '恩恩', '2022-01-19 08:46:24', '342453f2-78c1-11ec-9b4d-a2380e71991a', 'test:20:3f1c2257-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-19 08:46:14', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (146, 104, '任务二', '39d64e33-78c1-11ec-9b4d-a2380e71991a', 1, NULL, NULL, '342453f2-78c1-11ec-9b4d-a2380e71991a', 'test:20:3f1c2257-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-19 08:46:24', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (147, 1, '1.2', 'b2c79c0a-78c1-11ec-9b4d-a2380e71991a', 2, 'A', '2022-01-19 08:49:59', 'b2b9b949-78c1-11ec-9b4d-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-19 08:49:47', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (148, 1, '1.1', 'b2be4d34-78c1-11ec-9b4d-a2380e71991a', 3, 'EEE', '2022-01-19 09:13:18', 'b2b9b949-78c1-11ec-9b4d-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-19 08:49:46', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (149, 1, '1.2', '0efced83-78c5-11ec-9b4d-a2380e71991a', 2, 'EEE', '2022-01-19 09:14:15', '0ef30262-78c5-11ec-9b4d-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-19 09:13:50', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (150, 1, '1.1', '0ef636bd-78c5-11ec-9b4d-a2380e71991a', 2, 'EEE', '2022-01-19 09:14:21', '0ef30262-78c5-11ec-9b4d-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-19 09:13:50', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (151, 1, '1.2', '7d8b2a4f-78c7-11ec-9b4d-a2380e71991a', 2, 'bbb', '2022-01-19 09:31:27', '7d80f10e-78c7-11ec-9b4d-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-19 09:31:14', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (152, 1, '1.1', '7d847389-78c7-11ec-9b4d-a2380e71991a', 2, 'aaaa', '2022-01-19 09:31:24', '7d80f10e-78c7-11ec-9b4d-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-19 09:31:14', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (153, 1, '1.2', '07b342ab-78cd-11ec-a731-a2380e71991a', 4, NULL, '2022-01-19 10:11:03', '079d97ba-78cd-11ec-a731-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-19 10:10:53', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (154, 1, '1.1', '07a86d35-78cd-11ec-a731-a2380e71991a', 3, 'BBB', '2022-01-19 10:11:03', '079d97ba-78cd-11ec-a731-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-19 10:10:53', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (155, 1, '申请', '929c0a06-79af-11ec-abb0-a2380e71991a', 2, 'eee', '2022-01-20 13:12:39', '92904a2d-79af-11ec-abb0-a2380e71991a', 'eee:1:89b300ac-79af-11ec-abb0-a2380e71991a', '1', '2022-01-20 13:12:33', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (156, 1, '部门33审批', '9658eb06-79af-11ec-abb0-a2380e71991a', 2, 'qqq', '2022-01-20 13:12:46', '92904a2d-79af-11ec-abb0-a2380e71991a', 'eee:1:89b300ac-79af-11ec-abb0-a2380e71991a', '1', '2022-01-20 13:12:39', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (157, 1, '人事审批', '96519800-79af-11ec-abb0-a2380e71991a', 2, 'wwww', '2022-01-20 13:12:51', '92904a2d-79af-11ec-abb0-a2380e71991a', 'eee:1:89b300ac-79af-11ec-abb0-a2380e71991a', '1', '2022-01-20 13:12:39', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (158, 1, '任务一', 'cac7f66a-79b0-11ec-b2b8-a2380e71991a', 2, 'EEE', '2022-01-20 13:21:22', 'cabc84b1-79b0-11ec-b2b8-a2380e71991a', 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', '1', '2022-01-20 13:21:16', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (159, 1, '任务二', 'ce4cd772-79b0-11ec-b2b8-a2380e71991a', 2, 'ZZZ', '2022-01-20 13:21:26', 'cabc84b1-79b0-11ec-b2b8-a2380e71991a', 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', '1', '2022-01-20 13:21:22', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (160, 1, '任务三', 'd080805a-79b0-11ec-b2b8-a2380e71991a', 2, 'WWW', '2022-01-20 13:21:30', 'cabc84b1-79b0-11ec-b2b8-a2380e71991a', 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', '1', '2022-01-20 13:21:26', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (161, 1, '哈哈哈哈', 'b7ff7774-7a14-11ec-8762-a2380e71991a', 3, 'eee', '2022-01-21 01:16:42', 'b7f3b79b-7a14-11ec-8762-a2380e71991a', 'self:2:3a5a065e-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-21 01:16:35', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (162, 1, '任务一', 'd9fa3754-7ac6-11ec-a040-a2380e71991a', 1, NULL, NULL, 'd9ee295b-7ac6-11ec-a040-a2380e71991a', 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', '1', '2022-01-21 22:31:42', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (163, 1, '1.2', 'ed555b0a-7ac6-11ec-a040-a2380e71991a', 1, NULL, NULL, 'ed4a3769-7ac6-11ec-a040-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-21 22:32:15', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (164, 1, '1.1', 'ed4ef264-7ac6-11ec-a040-a2380e71991a', 1, NULL, NULL, 'ed4a3769-7ac6-11ec-a040-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-21 22:32:15', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (165, 1, '任务一', '54ad8088-7ac7-11ec-a040-a2380e71991a', 1, NULL, NULL, '54aa251f-7ac7-11ec-a040-a2380e71991a', 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', '1', '2022-01-21 22:35:08', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (166, 1, '任务一', 'bd97b7c0-7ac7-11ec-9948-a2380e71991a', 1, NULL, NULL, 'bd7dc717-7ac7-11ec-9948-a2380e71991a', 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', '1', '2022-01-21 22:38:04', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (167, 1, '1.2', '381aa1dd-7ac8-11ec-a9e2-a2380e71991a', 1, NULL, NULL, '37d7a55c-7ac8-11ec-a9e2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-21 22:41:29', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (168, 1, '1.1', '37f95e37-7ac8-11ec-a9e2-a2380e71991a', 1, NULL, NULL, '37d7a55c-7ac8-11ec-a9e2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-21 22:41:29', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (169, 1, '1.2', '58154733-7ac8-11ec-a9e2-a2380e71991a', 1, NULL, NULL, '580a98c2-7ac8-11ec-a9e2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-21 22:42:23', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (170, 1, '1.1', '580e1b3d-7ac8-11ec-a9e2-a2380e71991a', 1, NULL, NULL, '580a98c2-7ac8-11ec-a9e2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-21 22:42:23', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (171, 1, '1.2', '8f0d1619-7ac8-11ec-a9e2-a2380e71991a', 1, NULL, NULL, '8f021988-7ac8-11ec-a9e2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-21 22:43:55', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (172, 1, '1.1', '8f059c03-7ac8-11ec-a9e2-a2380e71991a', 1, NULL, NULL, '8f021988-7ac8-11ec-a9e2-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-21 22:43:55', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (173, 1, '1.2', '2377edc6-7ac9-11ec-aa06-a2380e71991a', 2, 'A', '2022-01-22 00:20:48', '23615875-7ac9-11ec-aa06-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-21 22:48:04', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (174, 1, '1.1', '236c5500-7ac9-11ec-aa06-a2380e71991a', 2, 'A', '2022-01-22 00:20:51', '23615875-7ac9-11ec-aa06-a2380e71991a', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-21 22:48:04', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (175, 1, '哈哈哈哈', '34fb7fac-7ad6-11ec-abe9-a2380e71991a', 2, 'AAA', '2022-01-22 00:22:02', '34f51703-7ad6-11ec-abe9-a2380e71991a', 'self:2:3a5a065e-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-22 00:21:37', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (176, 1, '哈哈哈哈', 'a4178f6d-7ad6-11ec-abe9-a2380e71991a', 4, NULL, '2022-01-22 00:24:48', 'a413bed4-7ad6-11ec-abe9-a2380e71991a', 'self:2:3a5a065e-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-22 00:24:44', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (177, 1, '任务一', 'c010347b-7ad6-11ec-abe9-a2380e71991a', 3, 'EEE', '2022-01-22 00:30:01', 'c00d2732-7ad6-11ec-abe9-a2380e71991a', 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', '1', '2022-01-22 00:25:31', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (178, 1, '一级审批', 'a6aba0a4-7b6d-11ec-b781-acde48001122', 1, NULL, NULL, 'a6a007dd-7b6d-11ec-b781-acde48001122', 'oa_leave:2:3c1f0ef1-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-22 18:25:42', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (179, 1, '一级审批', '28aed7fb-7b75-11ec-a3c8-acde48001122', 2, 'EEE', '2022-01-22 20:31:52', '28a5d744-7b75-11ec-a3c8-acde48001122', 'oa_leave:3:1fad3d93-7b75-11ec-a3c8-acde48001122', '1', '2022-01-22 19:19:27', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (180, 1, '一级审批', '75d72608-7b7f-11ec-a3c8-acde48001122', 1, NULL, NULL, '75d43fd1-7b7f-11ec-a3c8-acde48001122', 'oa_leave:3:1fad3d93-7b75-11ec-a3c8-acde48001122', '1', '2022-01-22 20:33:11', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (181, 1, '一级审批', '9ac3d0eb-7b7f-11ec-a3c8-acde48001122', 2, 'EEE', '2022-01-22 20:34:25', '9ac0eab4-7b7f-11ec-a3c8-acde48001122', 'oa_leave:4:991f2193-7b7f-11ec-a3c8-acde48001122', '1', '2022-01-22 20:34:13', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (182, 1, '二级审批', 'a23fb5b1-7b7f-11ec-a3c8-acde48001122', 2, 'CCC', '2022-01-22 20:34:33', '9ac0eab4-7b7f-11ec-a3c8-acde48001122', 'oa_leave:4:991f2193-7b7f-11ec-a3c8-acde48001122', '1', '2022-01-22 20:34:25', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (183, 1, '一级审批', '725a1eb6-7b88-11ec-8ef0-acde48001122', 1, NULL, NULL, '7250cfdf-7b88-11ec-8ef0-acde48001122', 'oa_leave:4:991f2193-7b7f-11ec-a3c8-acde48001122', '1', '2022-01-22 21:37:31', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (184, 1, '一级审批', '069c6a63-7b8a-11ec-8ef0-acde48001122', 1, NULL, NULL, '0699ab3c-7b8a-11ec-8ef0-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 21:48:49', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (185, 1, '一级审批', 'eaa01ebd-7b8d-11ec-b8e2-acde48001122', 2, 'AAA', '2022-01-22 22:16:53', 'ea957056-7b8d-11ec-b8e2-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 22:16:40', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (186, 1, '二级审批', 'f24cfe93-7b8d-11ec-b8e2-acde48001122', 2, 'EEE', '2022-01-22 22:16:56', 'ea957056-7b8d-11ec-b8e2-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 22:16:53', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (187, 1, '一级审批', '7e0bd5ff-7b8e-11ec-b8e2-acde48001122', 3, 'EEE', '2022-01-22 22:21:14', '7e093de8-7b8e-11ec-b8e2-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 22:20:47', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (188, 1, '一级审批', '535dc031-7b91-11ec-8473-acde48001122', 3, 'EEE', '2022-01-22 22:41:09', '5354233a-7b91-11ec-8473-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 22:41:04', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (189, 1, '一级审批', '68d13c8b-7b91-11ec-8473-acde48001122', 2, '1111', '2022-01-22 22:41:46', '68ce0834-7b91-11ec-8473-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 22:41:40', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (190, 1, '二级审批', '6c5ad881-7b91-11ec-8473-acde48001122', 3, 'EEE', '2022-01-22 22:41:57', '68ce0834-7b91-11ec-8473-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 22:41:46', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (191, 1, '一级审批', 'bb265acb-7b91-11ec-8473-acde48001122', 3, 'eeee', '2022-01-22 22:44:07', 'bb23c2b4-7b91-11ec-8473-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 22:43:58', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (192, 1, '哈哈哈哈', '49dd7c51-7b98-11ec-b5ee-acde48001122', 4, NULL, '2022-01-22 23:39:10', '49d3df58-7b98-11ec-b5ee-acde48001122', 'self:2:3a5a065e-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-22 23:30:55', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (193, 1, '一级审批', '888c6dfe-7b99-11ec-ba5c-acde48001122', 3, 'eee', '2022-01-22 23:39:59', '8884f3e7-7b99-11ec-ba5c-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 23:39:49', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (194, 1, '一级审批', 'a59c9d88-7b99-11ec-ba5c-acde48001122', 2, 'AAAA', '2022-01-22 23:40:49', 'a59a5391-7b99-11ec-ba5c-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 23:40:38', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (195, 1, '一级审批', '03d1219e-7b9a-11ec-a290-acde48001122', 3, 'BBB', '2022-01-22 23:43:29', '03c6c157-7b9a-11ec-a290-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 23:43:16', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (196, 1, '一级审批', '331e3388-7b9a-11ec-a290-acde48001122', 2, 'EEE', '2022-01-22 23:44:40', '331bc281-7b9a-11ec-a290-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 23:44:35', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (197, 1, '一级审批', '53026aa5-7b9a-11ec-a290-acde48001122', 2, 'AAA', '2022-01-22 23:45:37', '52ffd28e-7b9a-11ec-a290-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 23:45:29', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (198, 1, '一级审批', '67c534a2-7b9a-11ec-a290-acde48001122', 2, 'EEEE', '2022-01-22 23:46:09', '67c2eaab-7b9a-11ec-a290-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 23:46:04', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (199, 1, '一级审批', '8196daff-7b9a-11ec-a290-acde48001122', 2, 'eee', '2022-01-22 23:46:53', '819442e8-7b9a-11ec-a290-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 23:46:47', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (200, 1, '一级审批', 'ec507ae6-7b9a-11ec-b03b-acde48001122', 2, 'AAA', '2022-01-22 23:49:51', 'ec45f38f-7b9a-11ec-b03b-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 23:49:46', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (201, 1, '一级审批', '215cf4e5-7b9b-11ec-9a1b-acde48001122', 2, 'aaa', '2022-01-22 23:51:20', '2152467e-7b9b-11ec-9a1b-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 23:51:15', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (202, 1, '一级审批', '73211d9d-7b9b-11ec-b5b7-acde48001122', 1, NULL, NULL, '7317cec6-7b9b-11ec-b5b7-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 23:53:32', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (203, 1, '一级审批', '74736737-7b9b-11ec-b5b7-acde48001122', 4, NULL, '2022-01-23 00:08:41', '7470a810-7b9b-11ec-b5b7-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-22 23:53:35', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (204, 1, '一级审批', '3adac3d2-7b9d-11ec-8404-acde48001122', 4, NULL, '2022-01-23 00:07:03', '3ad174fb-7b9d-11ec-8404-acde48001122', 'oa_leave:5:004b710b-7b8a-11ec-8ef0-acde48001122', '1', '2022-01-23 00:06:17', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (205, 1, '申请', 'b25363db-7c06-11ec-9110-acde48001122', 1, NULL, NULL, 'b243fa82-7c06-11ec-9110-acde48001122', 'eee:17:f3aad03b-7ae5-11ec-a69c-a2380e71991a', '1', '2022-01-23 12:41:14', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (206, 1, '1.2', 'ee7cbc97-7c07-11ec-a41d-acde48001122', 4, NULL, '2022-01-23 12:59:40', 'ecddb286-7c07-11ec-a41d-acde48001122', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-23 12:50:05', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (207, 1, '1.1', 'ee67adf1-7c07-11ec-a41d-acde48001122', 4, NULL, '2022-01-23 12:59:40', 'ecddb286-7c07-11ec-a41d-acde48001122', 'test_001:4:3dbe6714-76b1-11ec-9c66-a2380e71991a', '1', '2022-01-23 12:50:05', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (209, 1, '任务一', '4f6fce81-7c09-11ec-b8a1-acde48001122', 1, NULL, NULL, '4f676a08-7c09-11ec-b8a1-acde48001122', 'test:21:c2cd44b0-79b0-11ec-b2b8-a2380e71991a', '1', '2022-01-23 12:59:57', '1', '2022-02-19 17:29:32', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (210, 1, 'task01', 'c97146a4-97ed-11ec-a2b9-862bc1a4a054', 2, '嗯嗯嗯', '2022-02-28 00:53:35', 'c964c377-97ed-11ec-a2b9-862bc1a4a054', 'flowable_01:1:c0bb5b36-97ed-11ec-a2b9-862bc1a4a054', '1', '2022-02-28 00:53:28', '1', '2022-02-28 00:53:35', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (211, 104, '部门领导审批', '6bf71106-a787-11ec-96d6-8e557beca7ad', 2, '关注【芋道源码】公众号', '2022-03-19 22:00:45', '6be9f198-a787-11ec-96d6-8e557beca7ad', 'common-form:1:7fdfc407-a786-11ec-96d6-8e557beca7ad', '1', '2022-03-19 21:21:02', '104', '2022-03-19 22:00:45', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (212, 114, 'HR 审批', 'f8beb356-a78c-11ec-bf87-8e557beca7ad', 2, '不错!', '2022-03-19 22:16:00', '6be9f198-a787-11ec-96d6-8e557beca7ad', 'common-form:1:7fdfc407-a786-11ec-96d6-8e557beca7ad', '104', '2022-03-19 22:00:45', '114', '2022-03-19 22:16:00', 0, 1); +INSERT INTO "bpm_task_ext" ("id", "assignee_user_id", "name", "task_id", "result", "reason", "end_time", "process_instance_id", "process_definition_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (213, 1, 'task01', 'daa7cd6b-cd5f-11ec-8280-3e2374911326', 2, '23231', '2022-05-07 01:13:37', 'da9c5bae-cd5f-11ec-8280-3e2374911326', 'flowable_01:2:d344a0bd-cd5f-11ec-8280-3e2374911326', '1', '2022-05-07 01:13:32', '1', '2022-05-07 01:13:37', 0, 1); COMMIT; -- ---------------------------- @@ -836,6 +1368,7 @@ COMMENT ON TABLE "bpm_user_group" IS '用户组'; -- Records of bpm_user_group -- ---------------------------- BEGIN; +INSERT INTO "bpm_user_group" ("id", "name", "description", "member_user_ids", "status", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (110, '测试组', '哈哈哈哈', '[1]', 0, '1', '2022-01-14 13:54:13', '1', '2022-02-19 17:29:39', 0, 1); COMMIT; -- ---------------------------- @@ -1011,19 +1544,19 @@ CREATE TABLE "infra_codegen_column" ( "column_name" varchar(200) COLLATE "pg_catalog"."default" NOT NULL, "data_type" varchar(100) COLLATE "pg_catalog"."default" NOT NULL, "column_comment" varchar(500) COLLATE "pg_catalog"."default" NOT NULL, - "nullable" varchar(1) COLLATE "pg_catalog"."default" NOT NULL, - "primary_key" varchar(1) COLLATE "pg_catalog"."default" NOT NULL, - "auto_increment" char(1) COLLATE "pg_catalog"."default" NOT NULL, + "nullable" bool NOT NULL, + "primary_key" bool NOT NULL, + "auto_increment" bool NOT NULL, "ordinal_position" int4 NOT NULL, "java_type" varchar(32) COLLATE "pg_catalog"."default" NOT NULL, "java_field" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, "dict_type" varchar(200) COLLATE "pg_catalog"."default", - "example" varchar(64) COLLATE "pg_catalog"."default", - "create_operation" varchar(1) COLLATE "pg_catalog"."default" NOT NULL, - "update_operation" varchar(1) COLLATE "pg_catalog"."default" NOT NULL, - "list_operation" varchar(1) COLLATE "pg_catalog"."default" NOT NULL, + "example" varchar(255) COLLATE "pg_catalog"."default", + "create_operation" bool NOT NULL, + "update_operation" bool NOT NULL, + "list_operation" bool NOT NULL, "list_operation_condition" varchar(32) COLLATE "pg_catalog"."default" NOT NULL, - "list_operation_result" varchar(1) COLLATE "pg_catalog"."default" NOT NULL, + "list_operation_result" bool NOT NULL, "html_type" varchar(32) COLLATE "pg_catalog"."default" NOT NULL, "creator" varchar(64) COLLATE "pg_catalog"."default", "create_time" timestamp(6) NOT NULL, @@ -1126,7 +1659,7 @@ CREATE TABLE "infra_config" ( "name" varchar(100) COLLATE "pg_catalog"."default" NOT NULL, "config_key" varchar(100) COLLATE "pg_catalog"."default" NOT NULL, "value" varchar(500) COLLATE "pg_catalog"."default" NOT NULL, - "visible" varchar(1) COLLATE "pg_catalog"."default" NOT NULL, + "visible" varchar(5) COLLATE "pg_catalog"."default" NOT NULL, "remark" varchar(500) COLLATE "pg_catalog"."default", "creator" varchar(64) COLLATE "pg_catalog"."default", "create_time" timestamp(6) NOT NULL, @@ -1243,7 +1776,7 @@ CREATE TABLE "infra_file_config" ( "name" varchar(63) COLLATE "pg_catalog"."default" NOT NULL, "storage" int2 NOT NULL, "remark" varchar(255) COLLATE "pg_catalog"."default", - "master" varchar(1) COLLATE "pg_catalog"."default" NOT NULL, + "master" bool NOT NULL, "config" varchar(4096) COLLATE "pg_catalog"."default" NOT NULL, "creator" varchar(64) COLLATE "pg_catalog"."default", "create_time" timestamp(6) NOT NULL, @@ -1269,9 +1802,9 @@ COMMENT ON TABLE "infra_file_config" IS '文件配置表'; -- Records of infra_file_config -- ---------------------------- BEGIN; -INSERT INTO "infra_file_config" ("id", "name", "storage", "remark", "master", "config", "creator", "create_time", "updater", "update_time", "deleted") VALUES (4, '数据库', 1, '我是数据库', '0', '{"@class":"cn.iocoder.yudao.framework.file.core.client.db.DBFileClientConfig","domain":"http://127.0.0.1:48080"}', '1', '2022-03-15 23:56:24', '1', '2022-03-26 21:39:26', 0); -INSERT INTO "infra_file_config" ("id", "name", "storage", "remark", "master", "config", "creator", "create_time", "updater", "update_time", "deleted") VALUES (5, '本地磁盘', 10, '测试下本地存储', '0', '{"@class":"cn.iocoder.yudao.framework.file.core.client.local.LocalFileClientConfig","basePath":"/Users/yunai/file_test","domain":"http://127.0.0.1:48080"}', '1', '2022-03-15 23:57:00', '1', '2022-03-26 21:39:26', 0); -INSERT INTO "infra_file_config" ("id", "name", "storage", "remark", "master", "config", "creator", "create_time", "updater", "update_time", "deleted") VALUES (11, 'S3 - 七牛云', 20, NULL, '1', '{"@class":"cn.iocoder.yudao.framework.file.core.client.s3.S3FileClientConfig","endpoint":"s3-cn-south-1.qiniucs.com","domain":"http://test.yudao.iocoder.cn","bucket":"ruoyi-vue-pro","accessKey":"b7yvuhBSAGjmtPhMFcn9iMOxUOY_I06cA_p0ZUx8","accessSecret":"kXM1l5ia1RvSX3QaOEcwI3RLz3Y2rmNszWonKZtP"}', '1', '2022-03-19 18:00:03', '1', '2022-03-26 21:39:26', 0); +INSERT INTO "infra_file_config" ("id", "name", "storage", "remark", "master", "config", "creator", "create_time", "updater", "update_time", "deleted") VALUES (4, '数据库', 1, '我是数据库', 'f', '{"@class":"cn.iocoder.yudao.framework.file.core.client.db.DBFileClientConfig","domain":"http://127.0.0.1:48080"}', '1', '2022-03-15 23:56:24', '1', '2022-03-26 21:39:26', 0); +INSERT INTO "infra_file_config" ("id", "name", "storage", "remark", "master", "config", "creator", "create_time", "updater", "update_time", "deleted") VALUES (5, '本地磁盘', 10, '测试下本地存储', 'f', '{"@class":"cn.iocoder.yudao.framework.file.core.client.local.LocalFileClientConfig","basePath":"/Users/yunai/file_test","domain":"http://127.0.0.1:48080"}', '1', '2022-03-15 23:57:00', '1', '2022-03-26 21:39:26', 0); +INSERT INTO "infra_file_config" ("id", "name", "storage", "remark", "master", "config", "creator", "create_time", "updater", "update_time", "deleted") VALUES (11, 'S3 - 七牛云', 20, NULL, 't', '{"@class":"cn.iocoder.yudao.framework.file.core.client.s3.S3FileClientConfig","endpoint":"s3-cn-south-1.qiniucs.com","domain":"http://test.yudao.iocoder.cn","bucket":"ruoyi-vue-pro","accessKey":"b7yvuhBSAGjmtPhMFcn9iMOxUOY_I06cA_p0ZUx8","accessSecret":"kXM1l5ia1RvSX3QaOEcwI3RLz3Y2rmNszWonKZtP"}', '1', '2022-03-19 18:00:03', '1', '2022-05-26 00:03:47.17', 0); COMMIT; -- ---------------------------- @@ -1348,7 +1881,7 @@ COMMENT ON TABLE "infra_job" IS '定时任务表'; -- Records of infra_job -- ---------------------------- BEGIN; -INSERT INTO "infra_job" ("id", "name", "status", "handler_name", "handler_param", "cron_expression", "retry_count", "retry_interval", "monitor_timeout", "creator", "create_time", "updater", "update_time", "deleted") VALUES (2, '用户 Session 超时 Job', 1, 'userSessionTimeoutJob', NULL, '0 * * * * ? *', 3, 2000, 0, '1', '2022-04-30 21:51:00.454', '1', '2022-04-30 22:22:06.037', 0); +INSERT INTO "infra_job" ("id", "name", "status", "handler_name", "handler_param", "cron_expression", "retry_count", "retry_interval", "monitor_timeout", "creator", "create_time", "updater", "update_time", "deleted") VALUES (5, '支付通知 Job', 2, 'payNotifyJob', NULL, '* * * * * ?', 0, 0, 0, '1', '2021-10-27 08:34:42', '1', '2022-04-03 20:35:25', 0); COMMIT; -- ---------------------------- @@ -1942,7 +2475,6 @@ CREATE TABLE "qrtz_cron_triggers" ( -- Records of qrtz_cron_triggers -- ---------------------------- BEGIN; -INSERT INTO "qrtz_cron_triggers" ("sched_name", "trigger_name", "trigger_group", "cron_expression", "time_zone_id") VALUES ('schedulerName', 'userSessionTimeoutJob', 'DEFAULT', '0 * * * * ? *', 'Asia/Shanghai'); COMMIT; -- ---------------------------- @@ -2291,9 +2823,7 @@ INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "st INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "status", "color_type", "css_class", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (79, 2, '手动编辑', '2', 'system_error_code_type', 0, 'primary', '', NULL, '1', '2021-04-21 00:07:14', '1', '2022-02-16 13:57:24', 0); INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "status", "color_type", "css_class", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (80, 100, '账号登录', '100', 'system_login_type', 0, 'primary', '', '账号登录', '1', '2021-10-06 00:52:02', '1', '2022-02-16 13:11:34', 0); INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "status", "color_type", "css_class", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (81, 101, '社交登录', '101', 'system_login_type', 0, 'info', '', '社交登录', '1', '2021-10-06 00:52:17', '1', '2022-02-16 13:11:40', 0); -INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "status", "color_type", "css_class", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (82, 102, 'Mock 登录', '102', 'system_login_type', 0, 'danger', '', 'Mock 登录', '1', '2021-10-06 00:52:32', '1', '2022-02-16 13:11:44', 0); INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "status", "color_type", "css_class", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (83, 200, '主动登出', '200', 'system_login_type', 0, 'primary', '', '主动登出', '1', '2021-10-06 00:52:58', '1', '2022-02-16 13:11:49', 0); -INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "status", "color_type", "css_class", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (84, 201, '超时登出', '201', 'system_login_type', 0, 'info', '', '超时登出', '1', '2021-10-06 00:53:17', '1', '2022-02-16 13:11:53', 0); INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "status", "color_type", "css_class", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (85, 202, '强制登出', '202', 'system_login_type', 0, 'danger', '', '强制退出', '1', '2021-10-06 00:53:41', '1', '2022-02-16 13:11:57', 0); INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "status", "color_type", "css_class", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (86, 0, '病假', '1', 'bpm_oa_leave_type', 0, 'primary', '', NULL, '1', '2021-09-21 22:35:28', '1', '2022-02-16 10:00:41', 0); INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "status", "color_type", "css_class", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (87, 1, '事假', '2', 'bpm_oa_leave_type', 0, 'info', '', NULL, '1', '2021-09-21 22:36:11', '1', '2022-02-16 10:00:49', 0); @@ -2355,6 +2885,12 @@ INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "st INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "status", "color_type", "css_class", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1152, 11, 'FTP 服务器', '11', 'infra_file_storage', 0, 'default', '', NULL, '1', '2022-03-15 00:26:06', '1', '2022-03-15 00:26:10', 0); INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "status", "color_type", "css_class", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1153, 12, 'SFTP 服务器', '12', 'infra_file_storage', 0, 'default', '', NULL, '1', '2022-03-15 00:26:22', '1', '2022-03-15 00:26:22', 0); INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "status", "color_type", "css_class", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1154, 20, 'S3 对象存储', '20', 'infra_file_storage', 0, 'default', '', NULL, '1', '2022-03-15 00:26:31', '1', '2022-03-15 00:26:45', 0); +INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "status", "color_type", "css_class", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1155, 103, '短信登录', '103', 'system_login_type', 0, 'default', '', NULL, '1', '2022-05-09 23:57:58', '1', '2022-05-09 23:58:09', 0); +INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "status", "color_type", "css_class", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1156, 1, 'password', 'password', 'system_oauth2_grant_type', 0, 'default', '', '密码模式', '1', '2022-05-12 00:22:05', '1', '2022-05-11 16:26:01', 0); +INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "status", "color_type", "css_class", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1157, 2, 'authorization_code', 'authorization_code', 'system_oauth2_grant_type', 0, 'primary', '', '授权码模式', '1', '2022-05-12 00:22:59', '1', '2022-05-11 16:26:02', 0); +INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "status", "color_type", "css_class", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1158, 3, 'implicit', 'implicit', 'system_oauth2_grant_type', 0, 'success', '', '简化模式', '1', '2022-05-12 00:23:40', '1', '2022-05-11 16:26:05', 0); +INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "status", "color_type", "css_class", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1159, 4, 'client_credentials', 'client_credentials', 'system_oauth2_grant_type', 0, 'default', '', '客户端模式', '1', '2022-05-12 00:23:51', '1', '2022-05-11 16:26:08', 0); +INSERT INTO "system_dict_data" ("id", "sort", "label", "value", "dict_type", "status", "color_type", "css_class", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1160, 5, 'refresh_token', 'refresh_token', 'system_oauth2_grant_type', 0, 'info', '', '刷新模式', '1', '2022-05-12 00:24:02', '1', '2022-05-11 16:26:11', 0); COMMIT; -- ---------------------------- @@ -2429,6 +2965,7 @@ INSERT INTO "system_dict_type" ("id", "name", "type", "status", "remark", "creat INSERT INTO "system_dict_type" ("id", "name", "type", "status", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (144, '代码生成的场景枚举', 'infra_codegen_scene', 0, '代码生成的场景枚举', '1', '2022-02-02 13:14:45', '1', '2022-03-10 16:33:46', 0); INSERT INTO "system_dict_type" ("id", "name", "type", "status", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (145, '角色类型', 'system_role_type', 0, '角色类型', '1', '2022-02-16 13:01:46', '1', '2022-02-16 13:01:46', 0); INSERT INTO "system_dict_type" ("id", "name", "type", "status", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (146, '文件存储器', 'infra_file_storage', 0, '文件存储器', '1', '2022-03-15 00:24:38', '1', '2022-03-15 00:24:38', 0); +INSERT INTO "system_dict_type" ("id", "name", "type", "status", "remark", "creator", "create_time", "updater", "update_time", "deleted") VALUES (147, 'OAuth 2.0 授权类型', 'system_oauth2_grant_type', 0, 'OAuth 2.0 授权类型(模式)', '1', '2022-05-12 00:20:52', '1', '2022-05-11 16:25:49', 0); COMMIT; -- ---------------------------- @@ -2528,8 +3065,8 @@ CREATE TABLE "system_menu" ( "icon" varchar(100) COLLATE "pg_catalog"."default", "component" varchar(255) COLLATE "pg_catalog"."default", "status" int2 NOT NULL, - "visible" varchar(1) COLLATE "pg_catalog"."default" NOT NULL, - "keep_alive" varchar(1) COLLATE "pg_catalog"."default" NOT NULL, + "visible" bool NOT NULL, + "keep_alive" bool NOT NULL, "creator" varchar(64) COLLATE "pg_catalog"."default", "create_time" timestamp(6) NOT NULL, "updater" varchar(64) COLLATE "pg_catalog"."default", @@ -2560,230 +3097,236 @@ COMMENT ON TABLE "system_menu" IS '菜单权限表'; -- Records of system_menu -- ---------------------------- BEGIN; -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1, '系统管理', '', 1, 10, 0, '/system', 'system', NULL, 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (2, '基础设施', '', 1, 20, 0, '/infra', 'monitor', NULL, 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (5, 'OA 示例', '', 1, 40, 1185, 'oa', 'people', NULL, 0, '1', '1', 'admin', '2021-09-20 16:26:19', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (100, '用户管理', 'system:user:list', 2, 1, 1, 'user', 'user', 'system/user/index', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (101, '角色管理', '', 2, 2, 1, 'role', 'peoples', 'system/role/index', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (102, '菜单管理', '', 2, 3, 1, 'menu', 'tree-table', 'system/menu/index', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (103, '部门管理', '', 2, 4, 1, 'dept', 'tree', 'system/dept/index', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (104, '岗位管理', '', 2, 5, 1, 'post', 'post', 'system/post/index', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (105, '字典管理', '', 2, 6, 1, 'dict', 'dict', 'system/dict/index', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (106, '配置管理', '', 2, 6, 2, 'config', 'edit', 'infra/config/index', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (107, '通知公告', '', 2, 8, 1, 'notice', 'message', 'system/notice/index', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (108, '审计日志', '', 1, 9, 1, 'log', 'log', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (109, '在线用户', 'system:user-session:list', 2, 10, 1, 'user-session', 'online', 'system/session/index', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (110, '定时任务', '', 2, 12, 2, 'job', 'job', 'infra/job/index', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (111, 'MySQL 监控', '', 2, 9, 2, 'druid', 'druid', 'infra/druid/index', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (112, 'Java 监控', '', 2, 11, 2, 'admin-server', 'server', 'infra/server/index', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (113, 'Redis 监控', '', 2, 10, 2, 'redis', 'redis', 'infra/redis/index', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (114, '表单构建', 'infra:build:list', 2, 2, 2, 'build', 'build', 'infra/build/index', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (115, '代码生成', 'infra:codegen:query', 2, 1, 2, 'codegen', 'code', 'infra/codegen/index', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (116, '系统接口', 'infra:swagger:list', 2, 3, 2, 'swagger', 'swagger', 'infra/swagger/index', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (500, '操作日志', '', 2, 1, 108, 'operate-log', 'form', 'system/operatelog/index', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (501, '登录日志', '', 2, 2, 108, 'login-log', 'logininfor', 'system/loginlog/index', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1001, '用户查询', 'system:user:query', 3, 1, 100, '', '#', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1002, '用户新增', 'system:user:create', 3, 2, 100, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1003, '用户修改', 'system:user:update', 3, 3, 100, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1004, '用户删除', 'system:user:delete', 3, 4, 100, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1005, '用户导出', 'system:user:export', 3, 5, 100, '', '#', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1006, '用户导入', 'system:user:import', 3, 6, 100, '', '#', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1007, '重置密码', 'system:user:update-password', 3, 7, 100, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1008, '角色查询', 'system:role:query', 3, 1, 101, '', '#', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1009, '角色新增', 'system:role:create', 3, 2, 101, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1010, '角色修改', 'system:role:update', 3, 3, 101, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1011, '角色删除', 'system:role:delete', 3, 4, 101, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1012, '角色导出', 'system:role:export', 3, 5, 101, '', '#', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1013, '菜单查询', 'system:menu:query', 3, 1, 102, '', '#', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1014, '菜单新增', 'system:menu:create', 3, 2, 102, '', '#', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1015, '菜单修改', 'system:menu:update', 3, 3, 102, '', '#', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1016, '菜单删除', 'system:menu:delete', 3, 4, 102, '', '#', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1017, '部门查询', 'system:dept:query', 3, 1, 103, '', '#', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1018, '部门新增', 'system:dept:create', 3, 2, 103, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1019, '部门修改', 'system:dept:update', 3, 3, 103, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1020, '部门删除', 'system:dept:delete', 3, 4, 103, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1021, '岗位查询', 'system:post:query', 3, 1, 104, '', '#', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1022, '岗位新增', 'system:post:create', 3, 2, 104, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1023, '岗位修改', 'system:post:update', 3, 3, 104, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1024, '岗位删除', 'system:post:delete', 3, 4, 104, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1025, '岗位导出', 'system:post:export', 3, 5, 104, '', '#', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1026, '字典查询', 'system:dict:query', 3, 1, 105, '#', '#', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1027, '字典新增', 'system:dict:create', 3, 2, 105, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1028, '字典修改', 'system:dict:update', 3, 3, 105, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1029, '字典删除', 'system:dict:delete', 3, 4, 105, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1030, '字典导出', 'system:dict:export', 3, 5, 105, '#', '#', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1031, '配置查询', 'infra:config:query', 3, 1, 106, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1032, '配置新增', 'infra:config:create', 3, 2, 106, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1033, '配置修改', 'infra:config:update', 3, 3, 106, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1034, '配置删除', 'infra:config:delete', 3, 4, 106, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1035, '配置导出', 'infra:config:export', 3, 5, 106, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1036, '公告查询', 'system:notice:query', 3, 1, 107, '#', '#', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1037, '公告新增', 'system:notice:create', 3, 2, 107, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1038, '公告修改', 'system:notice:update', 3, 3, 107, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1039, '公告删除', 'system:notice:delete', 3, 4, 107, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1040, '操作查询', 'system:operate-log:query', 3, 1, 500, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1042, '日志导出', 'system:operate-log:export', 3, 2, 500, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1043, '登录查询', 'system:login-log:query', 3, 1, 501, '#', '#', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1045, '日志导出', 'system:login-log:export', 3, 3, 501, '#', '#', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1046, '在线查询', 'system:user-session:list', 3, 1, 109, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1048, '单条强退', 'system:user-session:delete', 3, 3, 109, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1050, '任务新增', 'infra:job:create', 3, 2, 110, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1051, '任务修改', 'infra:job:update', 3, 3, 110, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1052, '任务删除', 'infra:job:delete', 3, 4, 110, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1053, '状态修改', 'infra:job:update', 3, 5, 110, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1054, '任务导出', 'infra:job:export', 3, 7, 110, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1056, '生成修改', 'infra:codegen:update', 3, 2, 115, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1057, '生成删除', 'infra:codegen:delete', 3, 3, 115, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1058, '导入代码', 'infra:codegen:create', 3, 2, 115, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1059, '预览代码', 'infra:codegen:preview', 3, 4, 115, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1060, '生成代码', 'infra:codegen:download', 3, 5, 115, '', '', '', 0, '1', '1', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1063, '设置角色菜单权限', 'system:permission:assign-role-menu', 3, 6, 101, '', '', '', 0, '1', '1', '', '2021-01-06 17:53:44', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1064, '设置角色数据权限', 'system:permission:assign-role-data-scope', 3, 7, 101, '', '', '', 0, '1', '1', '', '2021-01-06 17:56:31', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1065, '设置用户角色', 'system:permission:assign-user-role', 3, 8, 101, '', '', '', 0, '1', '1', '', '2021-01-07 10:23:28', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1066, '获得 Redis 监控信息', 'infra:redis:get-monitor-info', 3, 1, 113, '', '', '', 0, '1', '1', '', '2021-01-26 01:02:31', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1067, '获得 Redis Key 列表', 'infra:redis:get-key-list', 3, 2, 113, '', '', '', 0, '1', '1', '', '2021-01-26 01:02:52', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1070, '代码生成示例', 'infra:test-demo:query', 2, 1, 2, 'test-demo', 'validCode', 'infra/testDemo/index', 0, '1', '1', '', '2021-02-06 12:42:49', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1071, '测试示例表创建', 'infra:test-demo:create', 3, 1, 1070, '', '', '', 0, '1', '1', '', '2021-02-06 12:42:49', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1072, '测试示例表更新', 'infra:test-demo:update', 3, 2, 1070, '', '', '', 0, '1', '1', '', '2021-02-06 12:42:49', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1073, '测试示例表删除', 'infra:test-demo:delete', 3, 3, 1070, '', '', '', 0, '1', '1', '', '2021-02-06 12:42:49', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1074, '测试示例表导出', 'infra:test-demo:export', 3, 4, 1070, '', '', '', 0, '1', '1', '', '2021-02-06 12:42:49', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1075, '任务触发', 'infra:job:trigger', 3, 8, 110, '', '', '', 0, '1', '1', '', '2021-02-07 13:03:10', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1076, '数据库文档', '', 2, 4, 2, 'db-doc', 'table', 'infra/dbDoc/index', 0, '1', '1', '', '2021-02-08 01:41:47', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1077, '监控平台', '', 2, 13, 2, 'skywalking', 'eye-open', 'infra/skywalking/index', 0, '1', '1', '', '2021-02-08 20:41:31', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1078, '访问日志', '', 2, 1, 1083, 'api-access-log', 'log', 'infra/apiAccessLog/index', 0, '1', '1', '', '2021-02-26 01:32:59', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1082, '日志导出', 'infra:api-access-log:export', 3, 2, 1078, '', '', '', 0, '1', '1', '', '2021-02-26 01:32:59', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1083, 'API 日志', '', 2, 8, 2, 'log', 'log', NULL, 0, '1', '1', '', '2021-02-26 02:18:24', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1084, '错误日志', 'infra:api-error-log:query', 2, 2, 1083, 'api-error-log', 'log', 'infra/apiErrorLog/index', 0, '1', '1', '', '2021-02-26 07:53:20', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1085, '日志处理', 'infra:api-error-log:update-status', 3, 2, 1084, '', '', '', 0, '1', '1', '', '2021-02-26 07:53:20', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1086, '日志导出', 'infra:api-error-log:export', 3, 3, 1084, '', '', '', 0, '1', '1', '', '2021-02-26 07:53:20', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1087, '任务查询', 'infra:job:query', 3, 1, 110, '', '', '', 0, '1', '1', '1', '2021-03-10 01:26:19', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1088, '日志查询', 'infra:api-access-log:query', 3, 1, 1078, '', '', '', 0, '1', '1', '1', '2021-03-10 01:28:04', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1089, '日志查询', 'infra:api-error-log:query', 3, 1, 1084, '', '', '', 0, '1', '1', '1', '2021-03-10 01:29:09', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1090, '文件列表', '', 2, 5, 1243, 'file', 'upload', 'infra/file/index', 0, '1', '1', '', '2021-03-12 20:16:20', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1091, '文件查询', 'infra:file:query', 3, 1, 1090, '', '', '', 0, '1', '1', '', '2021-03-12 20:16:20', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1092, '文件删除', 'infra:file:delete', 3, 4, 1090, '', '', '', 0, '1', '1', '', '2021-03-12 20:16:20', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1093, '短信管理', '', 1, 11, 1, 'sms', 'validCode', NULL, 0, '1', '1', '1', '2021-04-05 01:10:16', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1094, '短信渠道', '', 2, 0, 1093, 'sms-channel', 'phone', 'system/sms/smsChannel', 0, '1', '1', '', '2021-04-01 11:07:15', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1095, '短信渠道查询', 'system:sms-channel:query', 3, 1, 1094, '', '', '', 0, '1', '1', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1096, '短信渠道创建', 'system:sms-channel:create', 3, 2, 1094, '', '', '', 0, '1', '1', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1097, '短信渠道更新', 'system:sms-channel:update', 3, 3, 1094, '', '', '', 0, '1', '1', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1098, '短信渠道删除', 'system:sms-channel:delete', 3, 4, 1094, '', '', '', 0, '1', '1', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1100, '短信模板', '', 2, 1, 1093, 'sms-template', 'phone', 'system/sms/smsTemplate', 0, '1', '1', '', '2021-04-01 17:35:17', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1101, '短信模板查询', 'system:sms-template:query', 3, 1, 1100, '', '', '', 0, '1', '1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1102, '短信模板创建', 'system:sms-template:create', 3, 2, 1100, '', '', '', 0, '1', '1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1103, '短信模板更新', 'system:sms-template:update', 3, 3, 1100, '', '', '', 0, '1', '1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1104, '短信模板删除', 'system:sms-template:delete', 3, 4, 1100, '', '', '', 0, '1', '1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1105, '短信模板导出', 'system:sms-template:export', 3, 5, 1100, '', '', '', 0, '1', '1', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1106, '发送测试短信', 'system:sms-template:send-sms', 3, 6, 1100, '', '', '', 0, '1', '1', '1', '2021-04-11 00:26:40', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1107, '短信日志', '', 2, 2, 1093, 'sms-log', 'phone', 'system/sms/smsLog', 0, '1', '1', '', '2021-04-11 08:37:05', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1108, '短信日志查询', 'system:sms-log:query', 3, 1, 1107, '', '', '', 0, '1', '1', '', '2021-04-11 08:37:05', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1109, '短信日志导出', 'system:sms-log:export', 3, 5, 1107, '', '', '', 0, '1', '1', '', '2021-04-11 08:37:05', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1110, '错误码管理', '', 2, 12, 1, 'error-code', 'code', 'system/errorCode/index', 0, '1', '1', '', '2021-04-13 21:46:42', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1111, '错误码查询', 'system:error-code:query', 3, 1, 1110, '', '', '', 0, '1', '1', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1112, '错误码创建', 'system:error-code:create', 3, 2, 1110, '', '', '', 0, '1', '1', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1113, '错误码更新', 'system:error-code:update', 3, 3, 1110, '', '', '', 0, '1', '1', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1114, '错误码删除', 'system:error-code:delete', 3, 4, 1110, '', '', '', 0, '1', '1', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1115, '错误码导出', 'system:error-code:export', 3, 5, 1110, '', '', '', 0, '1', '1', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1117, '支付管理', '', 1, 11, 0, '/pay', 'money', NULL, 0, '1', '1', '1', '2021-12-25 16:43:41', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1118, '请假查询', '', 2, 0, 5, 'leave', 'user', 'bpm/oa/leave/index', 0, '1', '1', '', '2021-09-20 08:51:03', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1119, '请假申请查询', 'bpm:oa-leave:query', 3, 1, 1118, '', '', '', 0, '1', '1', '', '2021-09-20 08:51:03', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1120, '请假申请创建', 'bpm:oa-leave:create', 3, 2, 1118, '', '', '', 0, '1', '1', '', '2021-09-20 08:51:03', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1126, '应用信息', '', 2, 1, 1117, 'app', 'table', 'pay/app/index', 0, '1', '1', '', '2021-11-10 01:13:30', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1127, '支付应用信息查询', 'pay:app:query', 3, 1, 1126, '', '', '', 0, '1', '1', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1128, '支付应用信息创建', 'pay:app:create', 3, 2, 1126, '', '', '', 0, '1', '1', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1129, '支付应用信息更新', 'pay:app:update', 3, 3, 1126, '', '', '', 0, '1', '1', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1130, '支付应用信息删除', 'pay:app:delete', 3, 4, 1126, '', '', '', 0, '1', '1', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1131, '支付应用信息导出', 'pay:app:export', 3, 5, 1126, '', '', '', 0, '1', '1', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1132, '秘钥解析', 'pay:channel:parsing', 3, 6, 1129, '', '', '', 0, '1', '1', '1', '2021-11-08 15:15:47', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1133, '支付商户信息查询', 'pay:merchant:query', 3, 1, 1132, '', '', '', 0, '1', '1', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1134, '支付商户信息创建', 'pay:merchant:create', 3, 2, 1132, '', '', '', 0, '1', '1', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1135, '支付商户信息更新', 'pay:merchant:update', 3, 3, 1132, '', '', '', 0, '1', '1', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1136, '支付商户信息删除', 'pay:merchant:delete', 3, 4, 1132, '', '', '', 0, '1', '1', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1137, '支付商户信息导出', 'pay:merchant:export', 3, 5, 1132, '', '', '', 0, '1', '1', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1138, '租户列表', '', 2, 0, 1224, 'list', 'peoples', 'system/tenant/index', 0, '1', '1', '', '2021-12-14 12:31:43', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1139, '租户查询', 'system:tenant:query', 3, 1, 1138, '', '', '', 0, '1', '1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1140, '租户创建', 'system:tenant:create', 3, 2, 1138, '', '', '', 0, '1', '1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1141, '租户更新', 'system:tenant:update', 3, 3, 1138, '', '', '', 0, '1', '1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1142, '租户删除', 'system:tenant:delete', 3, 4, 1138, '', '', '', 0, '1', '1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1143, '租户导出', 'system:tenant:export', 3, 5, 1138, '', '', '', 0, '1', '1', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1150, '秘钥解析', '', 3, 6, 1129, '', '', '', 0, '1', '1', '1', '2021-11-08 15:15:47', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1161, '退款订单', '', 2, 3, 1117, 'refund', 'order', 'pay/refund/index', 0, '1', '1', '', '2021-12-25 08:29:07', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1162, '退款订单查询', 'pay:refund:query', 3, 1, 1161, '', '', '', 0, '1', '1', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1163, '退款订单创建', 'pay:refund:create', 3, 2, 1161, '', '', '', 0, '1', '1', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1164, '退款订单更新', 'pay:refund:update', 3, 3, 1161, '', '', '', 0, '1', '1', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1165, '退款订单删除', 'pay:refund:delete', 3, 4, 1161, '', '', '', 0, '1', '1', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1166, '退款订单导出', 'pay:refund:export', 3, 5, 1161, '', '', '', 0, '1', '1', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1173, '支付订单', '', 2, 2, 1117, 'order', 'pay', 'pay/order/index', 0, '1', '1', '', '2021-12-25 08:49:43', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1174, '支付订单查询', 'pay:order:query', 3, 1, 1173, '', '', '', 0, '1', '1', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1175, '支付订单创建', 'pay:order:create', 3, 2, 1173, '', '', '', 0, '1', '1', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1176, '支付订单更新', 'pay:order:update', 3, 3, 1173, '', '', '', 0, '1', '1', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1177, '支付订单删除', 'pay:order:delete', 3, 4, 1173, '', '', '', 0, '1', '1', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1178, '支付订单导出', 'pay:order:export', 3, 5, 1173, '', '', '', 0, '1', '1', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1179, '商户信息', '', 2, 0, 1117, 'merchant', 'merchant', 'pay/merchant/index', 0, '1', '1', '', '2021-12-25 09:01:44', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1180, '支付商户信息查询', 'pay:merchant:query', 3, 1, 1179, '', '', '', 0, '1', '1', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1181, '支付商户信息创建', 'pay:merchant:create', 3, 2, 1179, '', '', '', 0, '1', '1', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1182, '支付商户信息更新', 'pay:merchant:update', 3, 3, 1179, '', '', '', 0, '1', '1', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1183, '支付商户信息删除', '', 3, 4, 1179, '', '', '', 0, '1', '1', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1184, '支付商户信息导出', 'pay:merchant:export', 3, 5, 1179, '', '', '', 0, '1', '1', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1185, '工作流程', '', 1, 50, 0, '/bpm', 'tool', NULL, 0, '1', '1', '1', '2021-12-30 20:26:36', '103', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1186, '流程管理', '', 1, 10, 1185, 'manager', 'nested', NULL, 0, '1', '1', '1', '2021-12-30 20:28:30', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1187, '流程表单', '', 2, 0, 1186, 'form', 'form', 'bpm/form/index', 0, '1', '1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1188, '表单查询', 'bpm:form:query', 3, 1, 1187, '', '', '', 0, '1', '1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1189, '表单创建', 'bpm:form:create', 3, 2, 1187, '', '', '', 0, '1', '1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1190, '表单更新', 'bpm:form:update', 3, 3, 1187, '', '', '', 0, '1', '1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1191, '表单删除', 'bpm:form:delete', 3, 4, 1187, '', '', '', 0, '1', '1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1192, '表单导出', 'bpm:form:export', 3, 5, 1187, '', '', '', 0, '1', '1', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1193, '流程模型', '', 2, 5, 1186, 'model', 'guide', 'bpm/model/index', 0, '1', '1', '1', '2021-12-31 23:24:58', '103', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1194, '模型查询', 'bpm:model:query', 3, 1, 1193, '', '', '', 0, '1', '1', '1', '2022-01-03 19:01:10', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1195, '模型创建', 'bpm:model:create', 3, 2, 1193, '', '', '', 0, '1', '1', '1', '2022-01-03 19:01:24', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1196, '模型导入', 'bpm:model:import', 3, 3, 1193, '', '', '', 0, '1', '1', '1', '2022-01-03 19:01:35', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1197, '模型更新', 'bpm:model:update', 3, 4, 1193, '', '', '', 0, '1', '1', '1', '2022-01-03 19:02:28', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1198, '模型删除', 'bpm:model:delete', 3, 5, 1193, '', '', '', 0, '1', '1', '1', '2022-01-03 19:02:43', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1199, '模型发布', 'bpm:model:deploy', 3, 6, 1193, '', '', '', 0, '1', '1', '1', '2022-01-03 19:03:24', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1200, '任务管理', '', 1, 20, 1185, 'task', 'cascader', NULL, 0, '1', '1', '1', '2022-01-07 23:51:48', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1201, '我的流程', '', 2, 0, 1200, 'my', 'people', 'bpm/processInstance/index', 0, '1', '1', '', '2022-01-07 15:53:44', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1202, '流程实例的查询', 'bpm:process-instance:query', 3, 1, 1201, '', '', '', 0, '1', '1', '', '2022-01-07 15:53:44', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1207, '待办任务', '', 2, 10, 1200, 'todo', 'eye-open', 'bpm/task/todo', 0, '1', '1', '1', '2022-01-08 10:33:37', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1208, '已办任务', '', 2, 20, 1200, 'done', 'eye', 'bpm/task/done', 0, '1', '1', '1', '2022-01-08 10:34:13', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1209, '用户分组', '', 2, 2, 1186, 'user-group', 'people', 'bpm/group/index', 0, '1', '1', '', '2022-01-14 02:14:20', '103', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1210, '用户组查询', 'bpm:user-group:query', 3, 1, 1209, '', '', '', 0, '1', '1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1211, '用户组创建', 'bpm:user-group:create', 3, 2, 1209, '', '', '', 0, '1', '1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1212, '用户组更新', 'bpm:user-group:update', 3, 3, 1209, '', '', '', 0, '1', '1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1213, '用户组删除', 'bpm:user-group:delete', 3, 4, 1209, '', '', '', 0, '1', '1', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1215, '流程定义查询', 'bpm:process-definition:query', 3, 10, 1193, '', '', '', 0, '1', '1', '1', '2022-01-23 00:21:43', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1216, '流程任务分配规则查询', 'bpm:task-assign-rule:query', 3, 20, 1193, '', '', '', 0, '1', '1', '1', '2022-01-23 00:26:53', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1217, '流程任务分配规则创建', 'bpm:task-assign-rule:create', 3, 21, 1193, '', '', '', 0, '1', '1', '1', '2022-01-23 00:28:15', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1218, '流程任务分配规则更新', 'bpm:task-assign-rule:update', 3, 22, 1193, '', '', '', 0, '1', '1', '1', '2022-01-23 00:28:41', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1219, '流程实例的创建', 'bpm:process-instance:create', 3, 2, 1201, '', '', '', 0, '1', '1', '1', '2022-01-23 00:36:15', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1220, '流程实例的取消', 'bpm:process-instance:cancel', 3, 3, 1201, '', '', '', 0, '1', '1', '1', '2022-01-23 00:36:33', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1221, '流程任务的查询', 'bpm:task:query', 3, 1, 1207, '', '', '', 0, '1', '1', '1', '2022-01-23 00:38:52', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1222, '流程任务的更新', 'bpm:task:update', 3, 2, 1207, '', '', '', 0, '1', '1', '1', '2022-01-23 00:39:24', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1224, '租户管理', '', 2, 0, 1, 'tenant', 'peoples', NULL, 0, '1', '1', '1', '2022-02-20 01:41:13', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1225, '租户套餐', '', 2, 0, 1224, 'package', 'eye', 'system/tenantPackage/index', 0, '1', '1', '', '2022-02-19 17:44:06', '1', '2022-04-21 01:21:25', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1226, '租户套餐查询', 'system:tenant-package:query', 3, 1, 1225, '', '', '', 0, '1', '1', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1227, '租户套餐创建', 'system:tenant-package:create', 3, 2, 1225, '', '', '', 0, '1', '1', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1228, '租户套餐更新', 'system:tenant-package:update', 3, 3, 1225, '', '', '', 0, '1', '1', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1229, '租户套餐删除', 'system:tenant-package:delete', 3, 4, 1225, '', '', '', 0, '1', '1', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1237, '文件配置', '', 2, 0, 1243, 'file-config', 'config', 'infra/fileConfig/index', 0, '1', '1', '', '2022-03-15 14:35:28', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1238, '文件配置查询', 'infra:file-config:query', 3, 1, 1237, '', '', '', 0, '1', '1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1239, '文件配置创建', 'infra:file-config:create', 3, 2, 1237, '', '', '', 0, '1', '1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1240, '文件配置更新', 'infra:file-config:update', 3, 3, 1237, '', '', '', 0, '1', '1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1241, '文件配置删除', 'infra:file-config:delete', 3, 4, 1237, '', '', '', 0, '1', '1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1242, '文件配置导出', 'infra:file-config:export', 3, 5, 1237, '', '', '', 0, '1', '1', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1243, '文件管理', '', 2, 5, 2, 'file', 'download', NULL, 0, '1', '1', '1', '2022-03-16 23:47:40', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1247, '敏感词管理', '', 2, 13, 1, 'sensitive-word', 'education', 'system/sensitiveWord/index', 0, '1', '1', '', '2022-04-07 16:55:03', '1', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1248, '敏感词查询', 'system:sensitive-word:query', 3, 1, 1247, '', '', '', 0, '1', '1', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1249, '敏感词创建', 'system:sensitive-word:create', 3, 2, 1247, '', '', '', 0, '1', '1', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1250, '敏感词更新', 'system:sensitive-word:update', 3, 3, 1247, '', '', '', 0, '1', '1', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1251, '敏感词删除', 'system:sensitive-word:delete', 3, 4, 1247, '', '', '', 0, '1', '1', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1252, '敏感词导出', 'system:sensitive-word:export', 3, 5, 1247, '', '', '', 0, '1', '1', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1254, '作者动态', '', 1, 0, 0, 'https://www.iocoder.cn', 'people', NULL, 0, '1', '1', '1', '2022-04-23 01:03:15', '1', '2022-04-23 01:03:15', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1255, '数据源配置', '', 2, 1, 2, 'data-source-config', 'rate', 'infra/dataSourceConfig/index', 0, '1', '1', '', '2022-04-27 14:37:32', '1', '2022-04-27 22:42:06', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1256, '数据源配置查询', 'infra:data-source-config:query', 3, 1, 1255, '', '', '', 0, '1', '1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1257, '数据源配置创建', 'infra:data-source-config:create', 3, 2, 1255, '', '', '', 0, '1', '1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1258, '数据源配置更新', 'infra:data-source-config:update', 3, 3, 1255, '', '', '', 0, '1', '1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1259, '数据源配置删除', 'infra:data-source-config:delete', 3, 4, 1255, '', '', '', 0, '1', '1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', 0); -INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1260, '数据源配置导出', 'infra:data-source-config:export', 3, 5, 1255, '', '', '', 0, '1', '1', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (2, '基础设施', '', 1, 20, 0, '/infra', 'monitor', NULL, 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (5, 'OA 示例', '', 1, 40, 1185, 'oa', 'people', NULL, 0, 't', 't', 'admin', '2021-09-20 16:26:19', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (100, '用户管理', 'system:user:list', 2, 1, 1, 'user', 'user', 'system/user/index', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (101, '角色管理', '', 2, 2, 1, 'role', 'peoples', 'system/role/index', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (102, '菜单管理', '', 2, 3, 1, 'menu', 'tree-table', 'system/menu/index', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (103, '部门管理', '', 2, 4, 1, 'dept', 'tree', 'system/dept/index', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (104, '岗位管理', '', 2, 5, 1, 'post', 'post', 'system/post/index', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (105, '字典管理', '', 2, 6, 1, 'dict', 'dict', 'system/dict/index', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (106, '配置管理', '', 2, 6, 2, 'config', 'edit', 'infra/config/index', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (107, '通知公告', '', 2, 8, 1, 'notice', 'message', 'system/notice/index', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (108, '审计日志', '', 1, 9, 1, 'log', 'log', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (109, '令牌管理', '', 2, 2, 1261, 'token', 'online', 'system/oauth2/token/index', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-05-11 23:31:42', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (110, '定时任务', '', 2, 12, 2, 'job', 'job', 'infra/job/index', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (111, 'MySQL 监控', '', 2, 9, 2, 'druid', 'druid', 'infra/druid/index', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (112, 'Java 监控', '', 2, 11, 2, 'admin-server', 'server', 'infra/server/index', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (113, 'Redis 监控', '', 2, 10, 2, 'redis', 'redis', 'infra/redis/index', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (114, '表单构建', 'infra:build:list', 2, 2, 2, 'build', 'build', 'infra/build/index', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (115, '代码生成', 'infra:codegen:query', 2, 1, 2, 'codegen', 'code', 'infra/codegen/index', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (116, '系统接口', 'infra:swagger:list', 2, 3, 2, 'swagger', 'swagger', 'infra/swagger/index', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (500, '操作日志', '', 2, 1, 108, 'operate-log', 'form', 'system/operatelog/index', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (501, '登录日志', '', 2, 2, 108, 'login-log', 'logininfor', 'system/loginlog/index', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1001, '用户查询', 'system:user:query', 3, 1, 100, '', '#', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1002, '用户新增', 'system:user:create', 3, 2, 100, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1003, '用户修改', 'system:user:update', 3, 3, 100, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1004, '用户删除', 'system:user:delete', 3, 4, 100, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1005, '用户导出', 'system:user:export', 3, 5, 100, '', '#', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1006, '用户导入', 'system:user:import', 3, 6, 100, '', '#', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1007, '重置密码', 'system:user:update-password', 3, 7, 100, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1008, '角色查询', 'system:role:query', 3, 1, 101, '', '#', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1009, '角色新增', 'system:role:create', 3, 2, 101, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1010, '角色修改', 'system:role:update', 3, 3, 101, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1011, '角色删除', 'system:role:delete', 3, 4, 101, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1012, '角色导出', 'system:role:export', 3, 5, 101, '', '#', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1013, '菜单查询', 'system:menu:query', 3, 1, 102, '', '#', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1014, '菜单新增', 'system:menu:create', 3, 2, 102, '', '#', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1015, '菜单修改', 'system:menu:update', 3, 3, 102, '', '#', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1016, '菜单删除', 'system:menu:delete', 3, 4, 102, '', '#', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1017, '部门查询', 'system:dept:query', 3, 1, 103, '', '#', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1018, '部门新增', 'system:dept:create', 3, 2, 103, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1019, '部门修改', 'system:dept:update', 3, 3, 103, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1020, '部门删除', 'system:dept:delete', 3, 4, 103, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1021, '岗位查询', 'system:post:query', 3, 1, 104, '', '#', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1022, '岗位新增', 'system:post:create', 3, 2, 104, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1023, '岗位修改', 'system:post:update', 3, 3, 104, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1024, '岗位删除', 'system:post:delete', 3, 4, 104, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1025, '岗位导出', 'system:post:export', 3, 5, 104, '', '#', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1026, '字典查询', 'system:dict:query', 3, 1, 105, '#', '#', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1027, '字典新增', 'system:dict:create', 3, 2, 105, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1028, '字典修改', 'system:dict:update', 3, 3, 105, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1029, '字典删除', 'system:dict:delete', 3, 4, 105, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1030, '字典导出', 'system:dict:export', 3, 5, 105, '#', '#', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1031, '配置查询', 'infra:config:query', 3, 1, 106, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1032, '配置新增', 'infra:config:create', 3, 2, 106, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1033, '配置修改', 'infra:config:update', 3, 3, 106, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1034, '配置删除', 'infra:config:delete', 3, 4, 106, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1035, '配置导出', 'infra:config:export', 3, 5, 106, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1036, '公告查询', 'system:notice:query', 3, 1, 107, '#', '#', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1037, '公告新增', 'system:notice:create', 3, 2, 107, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1038, '公告修改', 'system:notice:update', 3, 3, 107, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1039, '公告删除', 'system:notice:delete', 3, 4, 107, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1040, '操作查询', 'system:operate-log:query', 3, 1, 500, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1042, '日志导出', 'system:operate-log:export', 3, 2, 500, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1043, '登录查询', 'system:login-log:query', 3, 1, 501, '#', '#', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1045, '日志导出', 'system:login-log:export', 3, 3, 501, '#', '#', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1046, '令牌列表', 'system:oauth2-token:page', 3, 1, 109, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-05-09 23:54:42', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1048, '令牌删除', 'system:oauth2-token:delete', 3, 2, 109, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-05-09 23:54:53', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1050, '任务新增', 'infra:job:create', 3, 2, 110, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1051, '任务修改', 'infra:job:update', 3, 3, 110, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1052, '任务删除', 'infra:job:delete', 3, 4, 110, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1053, '状态修改', 'infra:job:update', 3, 5, 110, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1054, '任务导出', 'infra:job:export', 3, 7, 110, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1056, '生成修改', 'infra:codegen:update', 3, 2, 115, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1057, '生成删除', 'infra:codegen:delete', 3, 3, 115, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1058, '导入代码', 'infra:codegen:create', 3, 2, 115, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1059, '预览代码', 'infra:codegen:preview', 3, 4, 115, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1060, '生成代码', 'infra:codegen:download', 3, 5, 115, '', '', '', 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1063, '设置角色菜单权限', 'system:permission:assign-role-menu', 3, 6, 101, '', '', '', 0, 't', 't', '', '2021-01-06 17:53:44', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1064, '设置角色数据权限', 'system:permission:assign-role-data-scope', 3, 7, 101, '', '', '', 0, 't', 't', '', '2021-01-06 17:56:31', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1065, '设置用户角色', 'system:permission:assign-user-role', 3, 8, 101, '', '', '', 0, 't', 't', '', '2021-01-07 10:23:28', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1066, '获得 Redis 监控信息', 'infra:redis:get-monitor-info', 3, 1, 113, '', '', '', 0, 't', 't', '', '2021-01-26 01:02:31', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1067, '获得 Redis Key 列表', 'infra:redis:get-key-list', 3, 2, 113, '', '', '', 0, 't', 't', '', '2021-01-26 01:02:52', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1070, '代码生成示例', 'infra:test-demo:query', 2, 1, 2, 'test-demo', 'validCode', 'infra/testDemo/index', 0, 't', 't', '', '2021-02-06 12:42:49', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1071, '测试示例表创建', 'infra:test-demo:create', 3, 1, 1070, '', '', '', 0, 't', 't', '', '2021-02-06 12:42:49', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1072, '测试示例表更新', 'infra:test-demo:update', 3, 2, 1070, '', '', '', 0, 't', 't', '', '2021-02-06 12:42:49', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1073, '测试示例表删除', 'infra:test-demo:delete', 3, 3, 1070, '', '', '', 0, 't', 't', '', '2021-02-06 12:42:49', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1074, '测试示例表导出', 'infra:test-demo:export', 3, 4, 1070, '', '', '', 0, 't', 't', '', '2021-02-06 12:42:49', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1075, '任务触发', 'infra:job:trigger', 3, 8, 110, '', '', '', 0, 't', 't', '', '2021-02-07 13:03:10', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1076, '数据库文档', '', 2, 4, 2, 'db-doc', 'table', 'infra/dbDoc/index', 0, 't', 't', '', '2021-02-08 01:41:47', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1077, '监控平台', '', 2, 13, 2, 'skywalking', 'eye-open', 'infra/skywalking/index', 0, 't', 't', '', '2021-02-08 20:41:31', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1078, '访问日志', '', 2, 1, 1083, 'api-access-log', 'log', 'infra/apiAccessLog/index', 0, 't', 't', '', '2021-02-26 01:32:59', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1082, '日志导出', 'infra:api-access-log:export', 3, 2, 1078, '', '', '', 0, 't', 't', '', '2021-02-26 01:32:59', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1083, 'API 日志', '', 2, 8, 2, 'log', 'log', NULL, 0, 't', 't', '', '2021-02-26 02:18:24', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1084, '错误日志', 'infra:api-error-log:query', 2, 2, 1083, 'api-error-log', 'log', 'infra/apiErrorLog/index', 0, 't', 't', '', '2021-02-26 07:53:20', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1085, '日志处理', 'infra:api-error-log:update-status', 3, 2, 1084, '', '', '', 0, 't', 't', '', '2021-02-26 07:53:20', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1086, '日志导出', 'infra:api-error-log:export', 3, 3, 1084, '', '', '', 0, 't', 't', '', '2021-02-26 07:53:20', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1087, '任务查询', 'infra:job:query', 3, 1, 110, '', '', '', 0, 't', 't', '1', '2021-03-10 01:26:19', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1088, '日志查询', 'infra:api-access-log:query', 3, 1, 1078, '', '', '', 0, 't', 't', '1', '2021-03-10 01:28:04', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1089, '日志查询', 'infra:api-error-log:query', 3, 1, 1084, '', '', '', 0, 't', 't', '1', '2021-03-10 01:29:09', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1090, '文件列表', '', 2, 5, 1243, 'file', 'upload', 'infra/file/index', 0, 't', 't', '', '2021-03-12 20:16:20', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1091, '文件查询', 'infra:file:query', 3, 1, 1090, '', '', '', 0, 't', 't', '', '2021-03-12 20:16:20', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1092, '文件删除', 'infra:file:delete', 3, 4, 1090, '', '', '', 0, 't', 't', '', '2021-03-12 20:16:20', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1093, '短信管理', '', 1, 11, 1, 'sms', 'validCode', NULL, 0, 't', 't', '1', '2021-04-05 01:10:16', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1094, '短信渠道', '', 2, 0, 1093, 'sms-channel', 'phone', 'system/sms/smsChannel', 0, 't', 't', '', '2021-04-01 11:07:15', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1095, '短信渠道查询', 'system:sms-channel:query', 3, 1, 1094, '', '', '', 0, 't', 't', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1096, '短信渠道创建', 'system:sms-channel:create', 3, 2, 1094, '', '', '', 0, 't', 't', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1097, '短信渠道更新', 'system:sms-channel:update', 3, 3, 1094, '', '', '', 0, 't', 't', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1098, '短信渠道删除', 'system:sms-channel:delete', 3, 4, 1094, '', '', '', 0, 't', 't', '', '2021-04-01 11:07:15', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1100, '短信模板', '', 2, 1, 1093, 'sms-template', 'phone', 'system/sms/smsTemplate', 0, 't', 't', '', '2021-04-01 17:35:17', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1101, '短信模板查询', 'system:sms-template:query', 3, 1, 1100, '', '', '', 0, 't', 't', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1102, '短信模板创建', 'system:sms-template:create', 3, 2, 1100, '', '', '', 0, 't', 't', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1103, '短信模板更新', 'system:sms-template:update', 3, 3, 1100, '', '', '', 0, 't', 't', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1104, '短信模板删除', 'system:sms-template:delete', 3, 4, 1100, '', '', '', 0, 't', 't', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1105, '短信模板导出', 'system:sms-template:export', 3, 5, 1100, '', '', '', 0, 't', 't', '', '2021-04-01 17:35:17', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1106, '发送测试短信', 'system:sms-template:send-sms', 3, 6, 1100, '', '', '', 0, 't', 't', '1', '2021-04-11 00:26:40', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1107, '短信日志', '', 2, 2, 1093, 'sms-log', 'phone', 'system/sms/smsLog', 0, 't', 't', '', '2021-04-11 08:37:05', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1108, '短信日志查询', 'system:sms-log:query', 3, 1, 1107, '', '', '', 0, 't', 't', '', '2021-04-11 08:37:05', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1109, '短信日志导出', 'system:sms-log:export', 3, 5, 1107, '', '', '', 0, 't', 't', '', '2021-04-11 08:37:05', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1110, '错误码管理', '', 2, 12, 1, 'error-code', 'code', 'system/errorCode/index', 0, 't', 't', '', '2021-04-13 21:46:42', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1111, '错误码查询', 'system:error-code:query', 3, 1, 1110, '', '', '', 0, 't', 't', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1112, '错误码创建', 'system:error-code:create', 3, 2, 1110, '', '', '', 0, 't', 't', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1113, '错误码更新', 'system:error-code:update', 3, 3, 1110, '', '', '', 0, 't', 't', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1114, '错误码删除', 'system:error-code:delete', 3, 4, 1110, '', '', '', 0, 't', 't', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1115, '错误码导出', 'system:error-code:export', 3, 5, 1110, '', '', '', 0, 't', 't', '', '2021-04-13 21:46:42', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1118, '请假查询', '', 2, 0, 5, 'leave', 'user', 'bpm/oa/leave/index', 0, 't', 't', '', '2021-09-20 08:51:03', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1119, '请假申请查询', 'bpm:oa-leave:query', 3, 1, 1118, '', '', '', 0, 't', 't', '', '2021-09-20 08:51:03', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1120, '请假申请创建', 'bpm:oa-leave:create', 3, 2, 1118, '', '', '', 0, 't', 't', '', '2021-09-20 08:51:03', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1126, '应用信息', '', 2, 1, 1117, 'app', 'table', 'pay/app/index', 0, 't', 't', '', '2021-11-10 01:13:30', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1127, '支付应用信息查询', 'pay:app:query', 3, 1, 1126, '', '', '', 0, 't', 't', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1128, '支付应用信息创建', 'pay:app:create', 3, 2, 1126, '', '', '', 0, 't', 't', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1129, '支付应用信息更新', 'pay:app:update', 3, 3, 1126, '', '', '', 0, 't', 't', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1130, '支付应用信息删除', 'pay:app:delete', 3, 4, 1126, '', '', '', 0, 't', 't', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1131, '支付应用信息导出', 'pay:app:export', 3, 5, 1126, '', '', '', 0, 't', 't', '', '2021-11-10 01:13:31', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1132, '秘钥解析', 'pay:channel:parsing', 3, 6, 1129, '', '', '', 0, 't', 't', '1', '2021-11-08 15:15:47', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1133, '支付商户信息查询', 'pay:merchant:query', 3, 1, 1132, '', '', '', 0, 't', 't', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1134, '支付商户信息创建', 'pay:merchant:create', 3, 2, 1132, '', '', '', 0, 't', 't', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1135, '支付商户信息更新', 'pay:merchant:update', 3, 3, 1132, '', '', '', 0, 't', 't', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1136, '支付商户信息删除', 'pay:merchant:delete', 3, 4, 1132, '', '', '', 0, 't', 't', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1137, '支付商户信息导出', 'pay:merchant:export', 3, 5, 1132, '', '', '', 0, 't', 't', '', '2021-11-10 01:13:41', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1138, '租户列表', '', 2, 0, 1224, 'list', 'peoples', 'system/tenant/index', 0, 't', 't', '', '2021-12-14 12:31:43', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1139, '租户查询', 'system:tenant:query', 3, 1, 1138, '', '', '', 0, 't', 't', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1140, '租户创建', 'system:tenant:create', 3, 2, 1138, '', '', '', 0, 't', 't', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1141, '租户更新', 'system:tenant:update', 3, 3, 1138, '', '', '', 0, 't', 't', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1142, '租户删除', 'system:tenant:delete', 3, 4, 1138, '', '', '', 0, 't', 't', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1143, '租户导出', 'system:tenant:export', 3, 5, 1138, '', '', '', 0, 't', 't', '', '2021-12-14 12:31:44', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1150, '秘钥解析', '', 3, 6, 1129, '', '', '', 0, 't', 't', '1', '2021-11-08 15:15:47', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1161, '退款订单', '', 2, 3, 1117, 'refund', 'order', 'pay/refund/index', 0, 't', 't', '', '2021-12-25 08:29:07', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1162, '退款订单查询', 'pay:refund:query', 3, 1, 1161, '', '', '', 0, 't', 't', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1163, '退款订单创建', 'pay:refund:create', 3, 2, 1161, '', '', '', 0, 't', 't', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1164, '退款订单更新', 'pay:refund:update', 3, 3, 1161, '', '', '', 0, 't', 't', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1165, '退款订单删除', 'pay:refund:delete', 3, 4, 1161, '', '', '', 0, 't', 't', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1166, '退款订单导出', 'pay:refund:export', 3, 5, 1161, '', '', '', 0, 't', 't', '', '2021-12-25 08:29:07', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1173, '支付订单', '', 2, 2, 1117, 'order', 'pay', 'pay/order/index', 0, 't', 't', '', '2021-12-25 08:49:43', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1174, '支付订单查询', 'pay:order:query', 3, 1, 1173, '', '', '', 0, 't', 't', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1175, '支付订单创建', 'pay:order:create', 3, 2, 1173, '', '', '', 0, 't', 't', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1176, '支付订单更新', 'pay:order:update', 3, 3, 1173, '', '', '', 0, 't', 't', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1177, '支付订单删除', 'pay:order:delete', 3, 4, 1173, '', '', '', 0, 't', 't', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1178, '支付订单导出', 'pay:order:export', 3, 5, 1173, '', '', '', 0, 't', 't', '', '2021-12-25 08:49:43', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1179, '商户信息', '', 2, 0, 1117, 'merchant', 'merchant', 'pay/merchant/index', 0, 't', 't', '', '2021-12-25 09:01:44', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1180, '支付商户信息查询', 'pay:merchant:query', 3, 1, 1179, '', '', '', 0, 't', 't', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1181, '支付商户信息创建', 'pay:merchant:create', 3, 2, 1179, '', '', '', 0, 't', 't', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1182, '支付商户信息更新', 'pay:merchant:update', 3, 3, 1179, '', '', '', 0, 't', 't', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1183, '支付商户信息删除', '', 3, 4, 1179, '', '', '', 0, 't', 't', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1184, '支付商户信息导出', 'pay:merchant:export', 3, 5, 1179, '', '', '', 0, 't', 't', '', '2021-12-25 09:01:44', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1185, '工作流程', '', 1, 50, 0, '/bpm', 'tool', NULL, 0, 't', 't', '1', '2021-12-30 20:26:36', '103', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1186, '流程管理', '', 1, 10, 1185, 'manager', 'nested', NULL, 0, 't', 't', '1', '2021-12-30 20:28:30', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1187, '流程表单', '', 2, 0, 1186, 'form', 'form', 'bpm/form/index', 0, 't', 't', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1188, '表单查询', 'bpm:form:query', 3, 1, 1187, '', '', '', 0, 't', 't', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1189, '表单创建', 'bpm:form:create', 3, 2, 1187, '', '', '', 0, 't', 't', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1190, '表单更新', 'bpm:form:update', 3, 3, 1187, '', '', '', 0, 't', 't', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1191, '表单删除', 'bpm:form:delete', 3, 4, 1187, '', '', '', 0, 't', 't', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1192, '表单导出', 'bpm:form:export', 3, 5, 1187, '', '', '', 0, 't', 't', '', '2021-12-30 12:38:22', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1193, '流程模型', '', 2, 5, 1186, 'model', 'guide', 'bpm/model/index', 0, 't', 't', '1', '2021-12-31 23:24:58', '103', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1194, '模型查询', 'bpm:model:query', 3, 1, 1193, '', '', '', 0, 't', 't', '1', '2022-01-03 19:01:10', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1195, '模型创建', 'bpm:model:create', 3, 2, 1193, '', '', '', 0, 't', 't', '1', '2022-01-03 19:01:24', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1196, '模型导入', 'bpm:model:import', 3, 3, 1193, '', '', '', 0, 't', 't', '1', '2022-01-03 19:01:35', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1197, '模型更新', 'bpm:model:update', 3, 4, 1193, '', '', '', 0, 't', 't', '1', '2022-01-03 19:02:28', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1198, '模型删除', 'bpm:model:delete', 3, 5, 1193, '', '', '', 0, 't', 't', '1', '2022-01-03 19:02:43', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1199, '模型发布', 'bpm:model:deploy', 3, 6, 1193, '', '', '', 0, 't', 't', '1', '2022-01-03 19:03:24', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1200, '任务管理', '', 1, 20, 1185, 'task', 'cascader', NULL, 0, 't', 't', '1', '2022-01-07 23:51:48', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1201, '我的流程', '', 2, 0, 1200, 'my', 'people', 'bpm/processInstance/index', 0, 't', 't', '', '2022-01-07 15:53:44', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1202, '流程实例的查询', 'bpm:process-instance:query', 3, 1, 1201, '', '', '', 0, 't', 't', '', '2022-01-07 15:53:44', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1207, '待办任务', '', 2, 10, 1200, 'todo', 'eye-open', 'bpm/task/todo', 0, 't', 't', '1', '2022-01-08 10:33:37', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1208, '已办任务', '', 2, 20, 1200, 'done', 'eye', 'bpm/task/done', 0, 't', 't', '1', '2022-01-08 10:34:13', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1209, '用户分组', '', 2, 2, 1186, 'user-group', 'people', 'bpm/group/index', 0, 't', 't', '', '2022-01-14 02:14:20', '103', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1210, '用户组查询', 'bpm:user-group:query', 3, 1, 1209, '', '', '', 0, 't', 't', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1211, '用户组创建', 'bpm:user-group:create', 3, 2, 1209, '', '', '', 0, 't', 't', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1212, '用户组更新', 'bpm:user-group:update', 3, 3, 1209, '', '', '', 0, 't', 't', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1213, '用户组删除', 'bpm:user-group:delete', 3, 4, 1209, '', '', '', 0, 't', 't', '', '2022-01-14 02:14:20', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1215, '流程定义查询', 'bpm:process-definition:query', 3, 10, 1193, '', '', '', 0, 't', 't', '1', '2022-01-23 00:21:43', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1216, '流程任务分配规则查询', 'bpm:task-assign-rule:query', 3, 20, 1193, '', '', '', 0, 't', 't', '1', '2022-01-23 00:26:53', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1217, '流程任务分配规则创建', 'bpm:task-assign-rule:create', 3, 21, 1193, '', '', '', 0, 't', 't', '1', '2022-01-23 00:28:15', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1218, '流程任务分配规则更新', 'bpm:task-assign-rule:update', 3, 22, 1193, '', '', '', 0, 't', 't', '1', '2022-01-23 00:28:41', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1219, '流程实例的创建', 'bpm:process-instance:create', 3, 2, 1201, '', '', '', 0, 't', 't', '1', '2022-01-23 00:36:15', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1220, '流程实例的取消', 'bpm:process-instance:cancel', 3, 3, 1201, '', '', '', 0, 't', 't', '1', '2022-01-23 00:36:33', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1221, '流程任务的查询', 'bpm:task:query', 3, 1, 1207, '', '', '', 0, 't', 't', '1', '2022-01-23 00:38:52', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1222, '流程任务的更新', 'bpm:task:update', 3, 2, 1207, '', '', '', 0, 't', 't', '1', '2022-01-23 00:39:24', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1224, '租户管理', '', 2, 0, 1, 'tenant', 'peoples', NULL, 0, 't', 't', '1', '2022-02-20 01:41:13', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1225, '租户套餐', '', 2, 0, 1224, 'package', 'eye', 'system/tenantPackage/index', 0, 't', 't', '', '2022-02-19 17:44:06', '1', '2022-04-21 01:21:25', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1226, '租户套餐查询', 'system:tenant-package:query', 3, 1, 1225, '', '', '', 0, 't', 't', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1227, '租户套餐创建', 'system:tenant-package:create', 3, 2, 1225, '', '', '', 0, 't', 't', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1228, '租户套餐更新', 'system:tenant-package:update', 3, 3, 1225, '', '', '', 0, 't', 't', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1229, '租户套餐删除', 'system:tenant-package:delete', 3, 4, 1225, '', '', '', 0, 't', 't', '', '2022-02-19 17:44:06', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1237, '文件配置', '', 2, 0, 1243, 'file-config', 'config', 'infra/fileConfig/index', 0, 't', 't', '', '2022-03-15 14:35:28', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1238, '文件配置查询', 'infra:file-config:query', 3, 1, 1237, '', '', '', 0, 't', 't', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1239, '文件配置创建', 'infra:file-config:create', 3, 2, 1237, '', '', '', 0, 't', 't', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1240, '文件配置更新', 'infra:file-config:update', 3, 3, 1237, '', '', '', 0, 't', 't', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1241, '文件配置删除', 'infra:file-config:delete', 3, 4, 1237, '', '', '', 0, 't', 't', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1242, '文件配置导出', 'infra:file-config:export', 3, 5, 1237, '', '', '', 0, 't', 't', '', '2022-03-15 14:35:28', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1243, '文件管理', '', 2, 5, 2, 'file', 'download', NULL, 0, 't', 't', '1', '2022-03-16 23:47:40', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1247, '敏感词管理', '', 2, 13, 1, 'sensitive-word', 'education', 'system/sensitiveWord/index', 0, 't', 't', '', '2022-04-07 16:55:03', '1', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1248, '敏感词查询', 'system:sensitive-word:query', 3, 1, 1247, '', '', '', 0, 't', 't', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1249, '敏感词创建', 'system:sensitive-word:create', 3, 2, 1247, '', '', '', 0, 't', 't', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1250, '敏感词更新', 'system:sensitive-word:update', 3, 3, 1247, '', '', '', 0, 't', 't', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1251, '敏感词删除', 'system:sensitive-word:delete', 3, 4, 1247, '', '', '', 0, 't', 't', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1252, '敏感词导出', 'system:sensitive-word:export', 3, 5, 1247, '', '', '', 0, 't', 't', '', '2022-04-07 16:55:03', '', '2022-04-20 17:03:10', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1254, '作者动态', '', 1, 0, 0, 'https://www.iocoder.cn', 'people', NULL, 0, 't', 't', '1', '2022-04-23 01:03:15', '1', '2022-04-23 01:03:15', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1255, '数据源配置', '', 2, 1, 2, 'data-source-config', 'rate', 'infra/dataSourceConfig/index', 0, 't', 't', '', '2022-04-27 14:37:32', '1', '2022-04-27 22:42:06', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1256, '数据源配置查询', 'infra:data-source-config:query', 3, 1, 1255, '', '', '', 0, 't', 't', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1257, '数据源配置创建', 'infra:data-source-config:create', 3, 2, 1255, '', '', '', 0, 't', 't', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1258, '数据源配置更新', 'infra:data-source-config:update', 3, 3, 1255, '', '', '', 0, 't', 't', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1259, '数据源配置删除', 'infra:data-source-config:delete', 3, 4, 1255, '', '', '', 0, 't', 't', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1260, '数据源配置导出', 'infra:data-source-config:export', 3, 5, 1255, '', '', '', 0, 't', 't', '', '2022-04-27 14:37:32', '', '2022-04-27 14:37:32', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1261, 'OAuth 2.0', '', 1, 10, 1, 'oauth2', 'people', NULL, 0, 't', 't', '1', '2022-05-09 23:38:17', '1', '2022-05-11 23:51:46', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1263, '应用管理', '', 2, 0, 1261, 'oauth2/application', 'tool', 'system/oauth2/client/index', 0, 't', 't', '', '2022-05-10 16:26:33', '1', '2022-05-11 23:31:36', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1264, '客户端查询', 'system:oauth2-client:query', 3, 1, 1263, '', '', '', 0, 't', 't', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:06', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1265, '客户端创建', 'system:oauth2-client:create', 3, 2, 1263, '', '', '', 0, 't', 't', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:23', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1266, '客户端更新', 'system:oauth2-client:update', 3, 3, 1263, '', '', '', 0, 't', 't', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:28', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1267, '客户端删除', 'system:oauth2-client:delete', 3, 4, 1263, '', '', '', 0, 't', 't', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:33', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1117, '支付管理', '', 1, 11, 0, '/pay', 'money', NULL, 0, 't', 't', '1', '2021-12-25 16:43:41', '1', '2022-05-13 01:02:25.244', 0); +INSERT INTO "system_menu" ("id", "name", "permission", "type", "sort", "parent_id", "path", "icon", "component", "status", "visible", "keep_alive", "creator", "create_time", "updater", "update_time", "deleted") VALUES (1, '系统管理', '', 1, 10, 0, '/system', 'system', NULL, 0, 't', 't', 'admin', '2021-01-05 17:03:48', '1', '2022-05-13 01:02:57.073', 0); COMMIT; -- ---------------------------- @@ -2821,11 +3364,240 @@ COMMENT ON TABLE "system_notice" IS '通知公告表'; -- Records of system_notice -- ---------------------------- BEGIN; -INSERT INTO "system_notice" ("id", "title", "content", "type", "status", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (1, '温馨提醒:2018-07-01 若依新版本发布啦', '

新版本内容133

', 2, 0, 'admin', '2021-01-05 17:03:48', '1', '2022-02-15 19:47:20', 0, 1); -INSERT INTO "system_notice" ("id", "title", "content", "type", "status", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (2, '维护通知:2018-07-01 若依系统凌晨维护', '维护内容', 1, 0, 'admin', '2021-01-05 17:03:48', '', '2021-12-15 05:02:22', 0, 1); +INSERT INTO "system_notice" ("id", "title", "content", "type", "status", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (1, '芋道的公众', '

新版本内容133

', 1, 0, 'admin', '2021-01-05 17:03:48', '1', '2022-05-04 21:00:20', 0, 1); +INSERT INTO "system_notice" ("id", "title", "content", "type", "status", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (2, '维护通知:2018-07-01 若依系统凌晨维护', '

维护内容

', 2, 1, 'admin', '2021-01-05 17:03:48', '1', '2022-05-11 12:34:24', 0, 1); INSERT INTO "system_notice" ("id", "title", "content", "type", "status", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (4, '我是测试标题', '

哈哈哈哈123

', 1, 0, '110', '2022-02-22 01:01:25', '110', '2022-02-22 01:01:46', 0, 121); COMMIT; +-- ---------------------------- +-- Table structure for system_oauth2_access_token +-- ---------------------------- +DROP TABLE IF EXISTS "system_oauth2_access_token"; +CREATE TABLE "system_oauth2_access_token" ( + "id" int8 NOT NULL, + "user_id" int8 NOT NULL, + "access_token" varchar(255) COLLATE "pg_catalog"."default" NOT NULL, + "refresh_token" varchar(32) COLLATE "pg_catalog"."default" NOT NULL, + "user_type" int2 NOT NULL, + "client_id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL, + "expires_time" timestamp(6) NOT NULL, + "creator" varchar(64) COLLATE "pg_catalog"."default", + "create_time" timestamp(6) NOT NULL, + "updater" varchar(64) COLLATE "pg_catalog"."default", + "update_time" timestamp(6) NOT NULL, + "deleted" int2 NOT NULL DEFAULT 0, + "tenant_id" int8 NOT NULL, + "scopes" varchar(255) COLLATE "pg_catalog"."default" DEFAULT ''::character varying +) +; +COMMENT ON COLUMN "system_oauth2_access_token"."id" IS '编号'; +COMMENT ON COLUMN "system_oauth2_access_token"."user_id" IS '用户编号'; +COMMENT ON COLUMN "system_oauth2_access_token"."access_token" IS '访问令牌'; +COMMENT ON COLUMN "system_oauth2_access_token"."refresh_token" IS '刷新令牌'; +COMMENT ON COLUMN "system_oauth2_access_token"."user_type" IS '用户类型'; +COMMENT ON COLUMN "system_oauth2_access_token"."client_id" IS '客户端编号'; +COMMENT ON COLUMN "system_oauth2_access_token"."expires_time" IS '过期时间'; +COMMENT ON COLUMN "system_oauth2_access_token"."creator" IS '创建者'; +COMMENT ON COLUMN "system_oauth2_access_token"."create_time" IS '创建时间'; +COMMENT ON COLUMN "system_oauth2_access_token"."updater" IS '更新者'; +COMMENT ON COLUMN "system_oauth2_access_token"."update_time" IS '更新时间'; +COMMENT ON COLUMN "system_oauth2_access_token"."deleted" IS '是否删除'; +COMMENT ON COLUMN "system_oauth2_access_token"."tenant_id" IS '租户编号'; +COMMENT ON COLUMN "system_oauth2_access_token"."scopes" IS '授权范围'; +COMMENT ON TABLE "system_oauth2_access_token" IS '刷新令牌'; + +-- ---------------------------- +-- Records of system_oauth2_access_token +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for system_oauth2_approve +-- ---------------------------- +DROP TABLE IF EXISTS "system_oauth2_approve"; +CREATE TABLE "system_oauth2_approve" ( + "id" int8 NOT NULL, + "user_id" int8 NOT NULL, + "user_type" int2 NOT NULL, + "client_id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL, + "scope" varchar(255) COLLATE "pg_catalog"."default" NOT NULL, + "approved" bool NOT NULL, + "expires_time" timestamp(6) NOT NULL, + "creator" varchar(64) COLLATE "pg_catalog"."default", + "create_time" timestamp(6) NOT NULL, + "updater" varchar(64) COLLATE "pg_catalog"."default", + "update_time" timestamp(6) NOT NULL, + "deleted" int2 NOT NULL DEFAULT 0, + "tenant_id" int8 NOT NULL +) +; +COMMENT ON COLUMN "system_oauth2_approve"."id" IS '编号'; +COMMENT ON COLUMN "system_oauth2_approve"."user_id" IS '用户编号'; +COMMENT ON COLUMN "system_oauth2_approve"."user_type" IS '用户类型'; +COMMENT ON COLUMN "system_oauth2_approve"."client_id" IS '客户端编号'; +COMMENT ON COLUMN "system_oauth2_approve"."scope" IS '授权范围'; +COMMENT ON COLUMN "system_oauth2_approve"."approved" IS '是否接受'; +COMMENT ON COLUMN "system_oauth2_approve"."expires_time" IS '过期时间'; +COMMENT ON COLUMN "system_oauth2_approve"."creator" IS '创建者'; +COMMENT ON COLUMN "system_oauth2_approve"."create_time" IS '创建时间'; +COMMENT ON COLUMN "system_oauth2_approve"."updater" IS '更新者'; +COMMENT ON COLUMN "system_oauth2_approve"."update_time" IS '更新时间'; +COMMENT ON COLUMN "system_oauth2_approve"."deleted" IS '是否删除'; +COMMENT ON COLUMN "system_oauth2_approve"."tenant_id" IS '租户编号'; +COMMENT ON TABLE "system_oauth2_approve" IS 'OAuth2 批准表'; + +-- ---------------------------- +-- Records of system_oauth2_approve +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for system_oauth2_client +-- ---------------------------- +DROP TABLE IF EXISTS "system_oauth2_client"; +CREATE TABLE "system_oauth2_client" ( + "id" int8 NOT NULL, + "client_id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL, + "secret" varchar(255) COLLATE "pg_catalog"."default" NOT NULL, + "name" varchar(255) COLLATE "pg_catalog"."default" NOT NULL, + "logo" varchar(255) COLLATE "pg_catalog"."default" NOT NULL, + "description" varchar(255) COLLATE "pg_catalog"."default", + "status" int2 NOT NULL, + "access_token_validity_seconds" int4 NOT NULL, + "refresh_token_validity_seconds" int4 NOT NULL, + "redirect_uris" varchar(255) COLLATE "pg_catalog"."default" NOT NULL, + "authorized_grant_types" varchar(255) COLLATE "pg_catalog"."default" NOT NULL, + "scopes" varchar(255) COLLATE "pg_catalog"."default", + "authorities" varchar(255) COLLATE "pg_catalog"."default", + "resource_ids" varchar(255) COLLATE "pg_catalog"."default", + "additional_information" varchar(4096) COLLATE "pg_catalog"."default", + "creator" varchar(64) COLLATE "pg_catalog"."default", + "create_time" timestamp(6) NOT NULL, + "updater" varchar(64) COLLATE "pg_catalog"."default", + "update_time" timestamp(6) NOT NULL, + "deleted" int2 NOT NULL DEFAULT 0, + "auto_approve_scopes" varchar(255) COLLATE "pg_catalog"."default" +) +; +COMMENT ON COLUMN "system_oauth2_client"."id" IS '编号'; +COMMENT ON COLUMN "system_oauth2_client"."client_id" IS '客户端编号'; +COMMENT ON COLUMN "system_oauth2_client"."secret" IS '客户端密钥'; +COMMENT ON COLUMN "system_oauth2_client"."name" IS '应用名'; +COMMENT ON COLUMN "system_oauth2_client"."logo" IS '应用图标'; +COMMENT ON COLUMN "system_oauth2_client"."description" IS '应用描述'; +COMMENT ON COLUMN "system_oauth2_client"."status" IS '状态'; +COMMENT ON COLUMN "system_oauth2_client"."access_token_validity_seconds" IS '访问令牌的有效期'; +COMMENT ON COLUMN "system_oauth2_client"."refresh_token_validity_seconds" IS '刷新令牌的有效期'; +COMMENT ON COLUMN "system_oauth2_client"."redirect_uris" IS '可重定向的 URI 地址'; +COMMENT ON COLUMN "system_oauth2_client"."authorized_grant_types" IS '授权类型'; +COMMENT ON COLUMN "system_oauth2_client"."scopes" IS '授权范围'; +COMMENT ON COLUMN "system_oauth2_client"."authorities" IS '权限'; +COMMENT ON COLUMN "system_oauth2_client"."resource_ids" IS '资源'; +COMMENT ON COLUMN "system_oauth2_client"."additional_information" IS '附加信息'; +COMMENT ON COLUMN "system_oauth2_client"."creator" IS '创建者'; +COMMENT ON COLUMN "system_oauth2_client"."create_time" IS '创建时间'; +COMMENT ON COLUMN "system_oauth2_client"."updater" IS '更新者'; +COMMENT ON COLUMN "system_oauth2_client"."update_time" IS '更新时间'; +COMMENT ON COLUMN "system_oauth2_client"."deleted" IS '是否删除'; +COMMENT ON COLUMN "system_oauth2_client"."auto_approve_scopes" IS '自动通过的授权范围'; +COMMENT ON TABLE "system_oauth2_client" IS 'OAuth2 客户端表'; + +-- ---------------------------- +-- Records of system_oauth2_client +-- ---------------------------- +BEGIN; +INSERT INTO "system_oauth2_client" ("id", "client_id", "secret", "name", "logo", "description", "status", "access_token_validity_seconds", "refresh_token_validity_seconds", "redirect_uris", "authorized_grant_types", "scopes", "authorities", "resource_ids", "additional_information", "creator", "create_time", "updater", "update_time", "deleted", "auto_approve_scopes") VALUES (1, 'default', 'admin123', '芋道源码', 'http://test.yudao.iocoder.cn/a5e2e244368878a366b516805a4aabf1.png', '我是描述', 0, 180, 8640, '["https://www.iocoder.cn","https://doc.iocoder.cn"]', '["password","authorization_code","implicit","refresh_token"]', '["user.read","user.write"]', '["system:user:query"]', '[]', '{}', '1', '2022-05-11 21:47:12', '1', '2022-05-12 01:00:20', 0, NULL); +INSERT INTO "system_oauth2_client" ("id", "client_id", "secret", "name", "logo", "description", "status", "access_token_validity_seconds", "refresh_token_validity_seconds", "redirect_uris", "authorized_grant_types", "scopes", "authorities", "resource_ids", "additional_information", "creator", "create_time", "updater", "update_time", "deleted", "auto_approve_scopes") VALUES (40, 'test', 'test2', 'biubiu', 'http://test.yudao.iocoder.cn/277a899d573723f1fcdfb57340f00379.png', NULL, 0, 1800, 43200, '["https://www.iocoder.cn"]', '["password","authorization_code","implicit"]', '[]', '[]', '[]', '{}', '1', '2022-05-12 00:28:20', '1', '2022-05-25 23:45:33.005', 0, '[]'); +COMMIT; + +-- ---------------------------- +-- Table structure for system_oauth2_code +-- ---------------------------- +DROP TABLE IF EXISTS "system_oauth2_code"; +CREATE TABLE "system_oauth2_code" ( + "id" int8 NOT NULL, + "user_id" int8 NOT NULL, + "user_type" int2 NOT NULL, + "code" varchar(32) COLLATE "pg_catalog"."default" NOT NULL, + "client_id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL, + "scopes" varchar(255) COLLATE "pg_catalog"."default", + "expires_time" timestamp(6) NOT NULL, + "redirect_uri" varchar(255) COLLATE "pg_catalog"."default", + "state" varchar(255) COLLATE "pg_catalog"."default", + "creator" varchar(64) COLLATE "pg_catalog"."default", + "create_time" timestamp(6) NOT NULL, + "updater" varchar(64) COLLATE "pg_catalog"."default", + "update_time" timestamp(6) NOT NULL, + "deleted" int2 NOT NULL DEFAULT 0, + "tenant_id" int8 NOT NULL +) +; +COMMENT ON COLUMN "system_oauth2_code"."id" IS '编号'; +COMMENT ON COLUMN "system_oauth2_code"."user_id" IS '用户编号'; +COMMENT ON COLUMN "system_oauth2_code"."user_type" IS '用户类型'; +COMMENT ON COLUMN "system_oauth2_code"."code" IS '授权码'; +COMMENT ON COLUMN "system_oauth2_code"."client_id" IS '客户端编号'; +COMMENT ON COLUMN "system_oauth2_code"."scopes" IS '授权范围'; +COMMENT ON COLUMN "system_oauth2_code"."expires_time" IS '过期时间'; +COMMENT ON COLUMN "system_oauth2_code"."redirect_uri" IS '可重定向的 URI 地址'; +COMMENT ON COLUMN "system_oauth2_code"."state" IS '状态'; +COMMENT ON COLUMN "system_oauth2_code"."creator" IS '创建者'; +COMMENT ON COLUMN "system_oauth2_code"."create_time" IS '创建时间'; +COMMENT ON COLUMN "system_oauth2_code"."updater" IS '更新者'; +COMMENT ON COLUMN "system_oauth2_code"."update_time" IS '更新时间'; +COMMENT ON COLUMN "system_oauth2_code"."deleted" IS '是否删除'; +COMMENT ON COLUMN "system_oauth2_code"."tenant_id" IS '租户编号'; +COMMENT ON TABLE "system_oauth2_code" IS 'OAuth2 授权码表'; + +-- ---------------------------- +-- Records of system_oauth2_code +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for system_oauth2_refresh_token +-- ---------------------------- +DROP TABLE IF EXISTS "system_oauth2_refresh_token"; +CREATE TABLE "system_oauth2_refresh_token" ( + "id" int8 NOT NULL, + "user_id" int8 NOT NULL, + "refresh_token" varchar(32) COLLATE "pg_catalog"."default" NOT NULL, + "user_type" int2 NOT NULL, + "client_id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL, + "expires_time" timestamp(6) NOT NULL, + "creator" varchar(64) COLLATE "pg_catalog"."default", + "create_time" timestamp(6) NOT NULL, + "updater" varchar(64) COLLATE "pg_catalog"."default", + "update_time" timestamp(6) NOT NULL, + "deleted" int2 NOT NULL DEFAULT 0, + "tenant_id" int8 NOT NULL, + "scopes" varchar(255) COLLATE "pg_catalog"."default" DEFAULT ''::character varying +) +; +COMMENT ON COLUMN "system_oauth2_refresh_token"."id" IS '编号'; +COMMENT ON COLUMN "system_oauth2_refresh_token"."user_id" IS '用户编号'; +COMMENT ON COLUMN "system_oauth2_refresh_token"."refresh_token" IS '刷新令牌'; +COMMENT ON COLUMN "system_oauth2_refresh_token"."user_type" IS '用户类型'; +COMMENT ON COLUMN "system_oauth2_refresh_token"."client_id" IS '客户端编号'; +COMMENT ON COLUMN "system_oauth2_refresh_token"."expires_time" IS '过期时间'; +COMMENT ON COLUMN "system_oauth2_refresh_token"."creator" IS '创建者'; +COMMENT ON COLUMN "system_oauth2_refresh_token"."create_time" IS '创建时间'; +COMMENT ON COLUMN "system_oauth2_refresh_token"."updater" IS '更新者'; +COMMENT ON COLUMN "system_oauth2_refresh_token"."update_time" IS '更新时间'; +COMMENT ON COLUMN "system_oauth2_refresh_token"."deleted" IS '是否删除'; +COMMENT ON COLUMN "system_oauth2_refresh_token"."tenant_id" IS '租户编号'; +COMMENT ON COLUMN "system_oauth2_refresh_token"."scopes" IS '授权范围'; +COMMENT ON TABLE "system_oauth2_refresh_token" IS '刷新令牌'; + +-- ---------------------------- +-- Records of system_oauth2_refresh_token +-- ---------------------------- +BEGIN; +COMMIT; + -- ---------------------------- -- Table structure for system_operate_log -- ---------------------------- @@ -2932,7 +3704,7 @@ COMMENT ON TABLE "system_post" IS '岗位信息表'; BEGIN; INSERT INTO "system_post" ("id", "code", "name", "sort", "status", "remark", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (1, 'ceo', '董事长', 1, 0, '', 'admin', '2021-01-06 17:03:48', '1', '2022-04-19 16:53:39', 0, 1); INSERT INTO "system_post" ("id", "code", "name", "sort", "status", "remark", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (2, 'se', '项目经理', 2, 0, '', 'admin', '2021-01-05 17:03:48', '1', '2021-12-12 10:47:47', 0, 1); -INSERT INTO "system_post" ("id", "code", "name", "sort", "status", "remark", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (4, 'user', '普通员工', 4, 0, '111', 'admin', '2021-01-05 17:03:48', '1', '2022-04-20 00:59:35', 0, 1); +INSERT INTO "system_post" ("id", "code", "name", "sort", "status", "remark", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (4, 'user', '普通员工', 4, 0, '111', 'admin', '2021-01-05 17:03:48', '1', '2022-05-04 22:46:35', 0, 1); COMMIT; -- ---------------------------- @@ -3303,7 +4075,7 @@ CREATE TABLE "system_sms_code" ( "create_ip" varchar(15) COLLATE "pg_catalog"."default" NOT NULL, "scene" int2 NOT NULL, "today_index" int2 NOT NULL, - "used" int2 NOT NULL, + "used" bool NOT NULL, "used_time" timestamp(6), "used_ip" varchar(255) COLLATE "pg_catalog"."default", "creator" varchar(64) COLLATE "pg_catalog"."default", @@ -3461,9 +4233,9 @@ INSERT INTO "system_sms_template" ("id", "type", "status", "code", "name", "cont INSERT INTO "system_sms_template" ("id", "type", "status", "code", "name", "content", "params", "remark", "api_template_id", "channel_id", "channel_code", "creator", "create_time", "updater", "update_time", "deleted") VALUES (7, 3, 0, 'test-04', '测试下', '老鸡{name},牛逼{code}', '["name","code"]', NULL, 'suibian', 4, 'DEBUG_DING_TALK', '1', '2021-04-13 00:29:53', '1', '2021-04-14 00:30:38', 0); INSERT INTO "system_sms_template" ("id", "type", "status", "code", "name", "content", "params", "remark", "api_template_id", "channel_id", "channel_code", "creator", "create_time", "updater", "update_time", "deleted") VALUES (8, 1, 0, 'user-sms-login', '前台用户短信登录', '您的验证码是{code}', '["code"]', NULL, '4372216', 1, 'YUN_PIAN', '1', '2021-10-11 08:10:00', '1', '2021-10-11 08:10:00', 0); INSERT INTO "system_sms_template" ("id", "type", "status", "code", "name", "content", "params", "remark", "api_template_id", "channel_id", "channel_code", "creator", "create_time", "updater", "update_time", "deleted") VALUES (9, 2, 0, 'bpm_task_assigned', '【工作流】任务被分配', '您收到了一条新的待办任务:{processInstanceName}-{taskName},申请人:{startUserNickname},处理链接:{detailUrl}', '["processInstanceName","taskName","startUserNickname","detailUrl"]', NULL, 'suibian', 4, 'DEBUG_DING_TALK', '1', '2022-01-21 22:31:19', '1', '2022-01-22 00:03:36', 0); +INSERT INTO "system_sms_template" ("id", "type", "status", "code", "name", "content", "params", "remark", "api_template_id", "channel_id", "channel_code", "creator", "create_time", "updater", "update_time", "deleted") VALUES (10, 2, 0, 'bpm_process_instance_reject', '【工作流】流程被不通过', '您的流程被审批不通过:{processInstanceName},原因:{reason},查看链接:{detailUrl}', '["processInstanceName","reason","detailUrl"]', NULL, 'suibian', 4, 'DEBUG_DING_TALK', '1', '2022-01-22 00:03:31', '1', '2022-05-01 12:33:14', 0); INSERT INTO "system_sms_template" ("id", "type", "status", "code", "name", "content", "params", "remark", "api_template_id", "channel_id", "channel_code", "creator", "create_time", "updater", "update_time", "deleted") VALUES (11, 2, 0, 'bpm_process_instance_approve', '【工作流】流程被通过', '您的流程被审批通过:{processInstanceName},查看链接:{detailUrl}', '["processInstanceName","detailUrl"]', NULL, 'suibian', 4, 'DEBUG_DING_TALK', '1', '2022-01-22 00:04:31', '1', '2022-03-27 20:32:21', 0); INSERT INTO "system_sms_template" ("id", "type", "status", "code", "name", "content", "params", "remark", "api_template_id", "channel_id", "channel_code", "creator", "create_time", "updater", "update_time", "deleted") VALUES (12, 2, 0, 'demo', '演示模板', '我就是测试一下下', '[]', NULL, 'biubiubiu', 6, 'DEBUG_DING_TALK', '1', '2022-04-10 23:22:49', '1', '2022-04-10 23:22:49', 0); -INSERT INTO "system_sms_template" ("id", "type", "status", "code", "name", "content", "params", "remark", "api_template_id", "channel_id", "channel_code", "creator", "create_time", "updater", "update_time", "deleted") VALUES (10, 2, 0, 'bpm_process_instance_reject', '【工作流】流程被不通过', '您的流程被审批不通过:{processInstanceName},原因:{reason},查看链接:{detailUrl}', '["processInstanceName","reason","detailUrl"]', NULL, 'suibian', 4, 'DEBUG_DING_TALK', '1', '2022-01-22 00:03:31', '1', '2022-01-22 00:24:31', 0); INSERT INTO "system_sms_template" ("id", "type", "status", "code", "name", "content", "params", "remark", "api_template_id", "channel_id", "channel_code", "creator", "create_time", "updater", "update_time", "deleted") VALUES (13, 1, 0, 'admin-sms-login', '后台用户短信登录', '您的验证码是{code}', '["code"]', '', '4372216', 1, 'YUN_PIAN', '1', '2021-10-11 08:10:00', '1', '2021-10-11 08:10:00', 0); COMMIT; @@ -3702,12 +4474,12 @@ COMMENT ON TABLE "system_user_role" IS '用户和角色关联表'; -- Records of system_user_role -- ---------------------------- BEGIN; -INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (1, 1, 1, '', NULL, '', NULL, 0, 1); -INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (2, 2, 2, '', NULL, '', NULL, 0, 1); -INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (4, 100, 101, '', NULL, '', NULL, 0, 1); -INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (5, 100, 1, '', NULL, '', NULL, 0, 1); -INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (6, 100, 2, '', NULL, '', NULL, 0, 1); -INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (7, 104, 101, '', NULL, '', NULL, 0, 1); +INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (1, 1, 1, '', '2022-01-11 13:19:45', '', '2022-05-12 12:35:17', 0, 1); +INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (2, 2, 2, '', '2022-01-11 13:19:45', '', '2022-05-12 12:35:13', 0, 1); +INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (4, 100, 101, '', '2022-01-11 13:19:45', '', '2022-05-12 12:35:13', 0, 1); +INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (5, 100, 1, '', '2022-01-11 13:19:45', '', '2022-05-12 12:35:12', 0, 1); +INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (6, 100, 2, '', '2022-01-11 13:19:45', '', '2022-05-12 12:35:11', 0, 1); +INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (7, 104, 101, '', '2022-01-11 13:19:45', '', '2022-05-12 12:35:11', 0, 1); INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (10, 103, 1, '1', '2022-01-11 13:19:45', '1', '2022-01-11 13:19:45', 0, 1); INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (11, 107, 106, '1', '2022-02-20 22:59:33', '1', '2022-02-20 22:59:33', 0, 118); INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (12, 108, 107, '1', '2022-02-20 23:00:50', '1', '2022-02-20 23:00:50', 0, 119); @@ -3716,21 +4488,28 @@ INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_t INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (15, 111, 110, '110', '2022-02-23 13:14:38', '110', '2022-02-23 13:14:38', 0, 121); INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (16, 113, 111, '1', '2022-03-07 21:37:58', '1', '2022-03-07 21:37:58', 0, 122); INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (17, 114, 101, '1', '2022-03-19 21:51:13', '1', '2022-03-19 21:51:13', 0, 1); +INSERT INTO "system_user_role" ("id", "user_id", "role_id", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (18, 1, 2, '1', '2022-05-12 20:39:29', '1', '2022-05-12 20:39:29', 0, 1); COMMIT; -- ---------------------------- --- Table structure for system_user_session +-- Table structure for system_users -- ---------------------------- -DROP TABLE IF EXISTS "system_user_session"; -CREATE TABLE "system_user_session" ( +DROP TABLE IF EXISTS "system_users"; +CREATE TABLE "system_users" ( "id" int8 NOT NULL, - "token" varchar(32) COLLATE "pg_catalog"."default" NOT NULL, - "user_id" int8 NOT NULL, - "user_type" int2 NOT NULL, - "session_timeout" timestamp(6) NOT NULL, "username" varchar(30) COLLATE "pg_catalog"."default" NOT NULL, - "user_ip" varchar(50) COLLATE "pg_catalog"."default" NOT NULL, - "user_agent" varchar(512) COLLATE "pg_catalog"."default" NOT NULL, + "password" varchar(100) COLLATE "pg_catalog"."default" NOT NULL, + "nickname" varchar(30) COLLATE "pg_catalog"."default" NOT NULL, + "remark" varchar(500) COLLATE "pg_catalog"."default", + "dept_id" int8, + "post_ids" varchar(255) COLLATE "pg_catalog"."default", + "email" varchar(50) COLLATE "pg_catalog"."default", + "mobile" varchar(11) COLLATE "pg_catalog"."default", + "sex" int2, + "avatar" varchar(100) COLLATE "pg_catalog"."default", + "status" int2 NOT NULL, + "login_ip" varchar(50) COLLATE "pg_catalog"."default", + "login_date" timestamp(6), "creator" varchar(64) COLLATE "pg_catalog"."default", "create_time" timestamp(6) NOT NULL, "updater" varchar(64) COLLATE "pg_catalog"."default", @@ -3739,18 +4518,794 @@ CREATE TABLE "system_user_session" ( "tenant_id" int8 NOT NULL DEFAULT 0 ) ; -COMMENT ON COLUMN "system_user_session"."id" IS '会话编号'; -COMMENT ON COLUMN "system_user_session"."token" IS 'Token 令牌'; -COMMENT ON COLUMN "system_user_session"."user_id" IS '用户编号'; -COMMENT ON COLUMN "system_user_session"."user_type" IS '用户类型'; -COMMENT ON COLUMN "system_user_session"."session_timeout" IS '会话超时时间'; -COMMENT ON COLUMN "system_user_session"."username" IS '用户账号'; -COMMENT ON COLUMN "system_user_session"."user_ip" IS '用户 IP'; -COMMENT ON COLUMN "system_user_session"."user_agent" IS '浏览器 UA'; -COMMENT ON COLUMN "system_user_session"."creator" IS '创建者'; -COMMENT ON COLUMN "system_user_session"."create_time" IS '创建时间'; -COMMENT ON COLUMN "system_user_session"."updater" IS '更新者'; -COMMENT ON COLUMN "system_user_session"."update_time" IS '更新时间'; -COMMENT ON COLUMN "system_user_session"."deleted" IS '是否删除'; -COMMENT ON COLUMN "system_user_session"."tenant_id" IS '租户编号'; -COMMENT ON TABLE "system_user_session" IS '用户在线 Session'; +COMMENT ON COLUMN "system_users"."id" IS '用户ID'; +COMMENT ON COLUMN "system_users"."username" IS '用户账号'; +COMMENT ON COLUMN "system_users"."password" IS '密码'; +COMMENT ON COLUMN "system_users"."nickname" IS '用户昵称'; +COMMENT ON COLUMN "system_users"."remark" IS '备注'; +COMMENT ON COLUMN "system_users"."dept_id" IS '部门ID'; +COMMENT ON COLUMN "system_users"."post_ids" IS '岗位编号数组'; +COMMENT ON COLUMN "system_users"."email" IS '用户邮箱'; +COMMENT ON COLUMN "system_users"."mobile" IS '手机号码'; +COMMENT ON COLUMN "system_users"."sex" IS '用户性别'; +COMMENT ON COLUMN "system_users"."avatar" IS '头像地址'; +COMMENT ON COLUMN "system_users"."status" IS '帐号状态(0正常 1停用)'; +COMMENT ON COLUMN "system_users"."login_ip" IS '最后登录IP'; +COMMENT ON COLUMN "system_users"."login_date" IS '最后登录时间'; +COMMENT ON COLUMN "system_users"."creator" IS '创建者'; +COMMENT ON COLUMN "system_users"."create_time" IS '创建时间'; +COMMENT ON COLUMN "system_users"."updater" IS '更新者'; +COMMENT ON COLUMN "system_users"."update_time" IS '更新时间'; +COMMENT ON COLUMN "system_users"."deleted" IS '是否删除'; +COMMENT ON COLUMN "system_users"."tenant_id" IS '租户编号'; +COMMENT ON TABLE "system_users" IS '用户信息表'; + +-- ---------------------------- +-- Records of system_users +-- ---------------------------- +BEGIN; +INSERT INTO "system_users" ("id", "username", "password", "nickname", "remark", "dept_id", "post_ids", "email", "mobile", "sex", "avatar", "status", "login_ip", "login_date", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (100, 'yudao', '$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', '芋道', '不要吓我', 104, '[1]', 'yudao@iocoder.cn', '15601691300', 1, '', 1, '', NULL, '', '2021-01-07 09:07:17', '104', '2021-12-16 09:26:10', 0, 1); +INSERT INTO "system_users" ("id", "username", "password", "nickname", "remark", "dept_id", "post_ids", "email", "mobile", "sex", "avatar", "status", "login_ip", "login_date", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (103, 'yuanma', '$2a$10$wWoPT7sqriM2O1YXRL.je.GiL538OR6ZTN8aQZr9JAGdnpCH2tpYe', '源码', NULL, 106, NULL, 'yuanma@iocoder.cn', '15601701300', 0, '', 0, '127.0.0.1', '2022-01-18 00:33:40', '', '2021-01-13 23:50:35', NULL, '2022-01-18 00:33:40', 0, 1); +INSERT INTO "system_users" ("id", "username", "password", "nickname", "remark", "dept_id", "post_ids", "email", "mobile", "sex", "avatar", "status", "login_ip", "login_date", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (104, 'test', '$2a$10$e5RpuDCC0GYSt0Hvd2.CjujIXwgGct4SnXi6dVGxdgFsnqgEryk5a', '测试号', NULL, 107, '[]', '111@qq.com', '15601691200', 1, '', 0, '127.0.0.1', '2022-03-19 21:46:19', '', '2021-01-21 02:13:53', NULL, '2022-03-19 21:46:19', 0, 1); +INSERT INTO "system_users" ("id", "username", "password", "nickname", "remark", "dept_id", "post_ids", "email", "mobile", "sex", "avatar", "status", "login_ip", "login_date", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (107, 'admin107', '$2a$10$dYOOBKMO93v/.ReCqzyFg.o67Tqk.bbc2bhrpyBGkIw9aypCtr2pm', '芋艿', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '', NULL, '1', '2022-02-20 22:59:33', '1', '2022-02-27 08:26:51', 0, 118); +INSERT INTO "system_users" ("id", "username", "password", "nickname", "remark", "dept_id", "post_ids", "email", "mobile", "sex", "avatar", "status", "login_ip", "login_date", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (108, 'admin108', '$2a$10$y6mfvKoNYL1GXWak8nYwVOH.kCWqjactkzdoIDgiKl93WN3Ejg.Lu', '芋艿', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '', NULL, '1', '2022-02-20 23:00:50', '1', '2022-02-27 08:26:53', 0, 119); +INSERT INTO "system_users" ("id", "username", "password", "nickname", "remark", "dept_id", "post_ids", "email", "mobile", "sex", "avatar", "status", "login_ip", "login_date", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (109, 'admin109', '$2a$10$JAqvH0tEc0I7dfDVBI7zyuB4E3j.uH6daIjV53.vUS6PknFkDJkuK', '芋艿', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '', NULL, '1', '2022-02-20 23:11:50', '1', '2022-02-27 08:26:56', 0, 120); +INSERT INTO "system_users" ("id", "username", "password", "nickname", "remark", "dept_id", "post_ids", "email", "mobile", "sex", "avatar", "status", "login_ip", "login_date", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (110, 'admin110', '$2a$10$qYxoXs0ogPHgYllyEneYde9xcCW5hZgukrxeXZ9lmLhKse8TK6IwW', '小王', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '127.0.0.1', '2022-02-23 19:36:28', '1', '2022-02-22 00:56:14', NULL, '2022-02-27 08:26:59', 0, 121); +INSERT INTO "system_users" ("id", "username", "password", "nickname", "remark", "dept_id", "post_ids", "email", "mobile", "sex", "avatar", "status", "login_ip", "login_date", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (111, 'test', '$2a$10$mExveopHUx9Q4QiLtAzhDeH3n4/QlNLzEsM4AqgxKrU.ciUZDXZCy', '测试用户', NULL, NULL, '[]', '', '', 0, '', 0, '', NULL, '110', '2022-02-23 13:14:33', '110', '2022-02-23 13:14:33', 0, 121); +INSERT INTO "system_users" ("id", "username", "password", "nickname", "remark", "dept_id", "post_ids", "email", "mobile", "sex", "avatar", "status", "login_ip", "login_date", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (112, 'newobject', '$2a$10$jh5MsR.ud/gKe3mVeUp5t.nEXGDSmHyv5OYjWQwHO8wlGmMSI9Twy', '新对象', NULL, NULL, '[]', '', '', 0, '', 0, '', NULL, '1', '2022-02-23 19:08:03', '1', '2022-02-23 19:08:03', 0, 1); +INSERT INTO "system_users" ("id", "username", "password", "nickname", "remark", "dept_id", "post_ids", "email", "mobile", "sex", "avatar", "status", "login_ip", "login_date", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (113, 'aoteman', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道', NULL, NULL, NULL, '', '15601691300', 0, '', 0, '127.0.0.1', '2022-03-19 18:38:51', '1', '2022-03-07 21:37:58', NULL, '2022-03-19 18:38:51', 0, 122); +INSERT INTO "system_users" ("id", "username", "password", "nickname", "remark", "dept_id", "post_ids", "email", "mobile", "sex", "avatar", "status", "login_ip", "login_date", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (114, 'hrmgr', '$2a$10$TR4eybBioGRhBmDBWkqWLO6NIh3mzYa8KBKDDB5woiGYFVlRAi.fu', 'hr 小姐姐', NULL, NULL, '[3]', '', '', 0, '', 0, '127.0.0.1', '2022-03-19 22:15:43', '1', '2022-03-19 21:50:58', NULL, '2022-03-19 22:15:43', 0, 1); +INSERT INTO "system_users" ("id", "username", "password", "nickname", "remark", "dept_id", "post_ids", "email", "mobile", "sex", "avatar", "status", "login_ip", "login_date", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (115, 'aotemane', '$2a$10$/WCwGHu1eq0wOVDd/u8HweJ0gJCHyLS6T7ndCqI8UXZAQom1etk2e', '1', '11', 100, '[]', '', '', 0, '', 0, '', NULL, '1', '2022-04-30 02:55:43', '1', '2022-04-30 02:55:43', 0, 1); +INSERT INTO "system_users" ("id", "username", "password", "nickname", "remark", "dept_id", "post_ids", "email", "mobile", "sex", "avatar", "status", "login_ip", "login_date", "creator", "create_time", "updater", "update_time", "deleted", "tenant_id") VALUES (1, 'admin', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道源码', '管理员', 103, '[1]', 'aoteman@126.com', '15612345678', 1, 'http://test.yudao.iocoder.cn/48934f2f-92d4-4250-b917-d10d2b262c6a', 0, '127.0.0.1', '2022-05-25 23:44:33.003', 'admin', '2021-01-05 17:03:47', NULL, '2022-05-25 23:44:33.003', 0, 1); +COMMIT; + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- +ALTER SEQUENCE "act_evt_log_log_nr__seq" +OWNED BY "act_evt_log"."log_nr_"; +SELECT setval('"act_evt_log_log_nr__seq"', 1, false); + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- +ALTER SEQUENCE "act_hi_tsk_log_id__seq" +OWNED BY "act_hi_tsk_log"."id_"; +SELECT setval('"act_hi_tsk_log_id__seq"', 1, false); + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- +SELECT setval('"bpm_oa_leave_seq"', 1, true); + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- +SELECT setval('"bpm_task_assign_rule_seq"', 1, true); + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- +SELECT setval('"infra_api_access_log_seq"', 537, true); + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- +SELECT setval('"infra_api_error_log_seq"', 73, true); + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- +SELECT setval('"infra_job_log_seq"', 1, true); + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- +SELECT setval('"infra_job_seq"', 2, true); + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- +SELECT setval('"system_error_code_seq"', 186, true); + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- +SELECT setval('"system_login_log_seq"', 23, true); + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- +SELECT setval('"system_oauth2_access_token_seq"', 11, true); + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- +SELECT setval('"system_oauth2_approve_seq"', 4, true); + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- +SELECT setval('"system_oauth2_client_seq"', 1, false); + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- +SELECT setval('"system_oauth2_code_seq"', 4, true); + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- +SELECT setval('"system_oauth2_refresh_token_seq"', 1, true); + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- +SELECT setval('"system_operate_log_seq"', 44, true); + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- +SELECT setval('"system_sms_log_seq"', 1, true); + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Alter sequences owned by +-- ---------------------------- + +-- ---------------------------- +-- Primary Key structure for table bpm_form +-- ---------------------------- +ALTER TABLE "bpm_form" ADD CONSTRAINT "bpm_form_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table bpm_oa_leave +-- ---------------------------- +ALTER TABLE "bpm_oa_leave" ADD CONSTRAINT "bpm_oa_leave_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table bpm_process_definition_ext +-- ---------------------------- +ALTER TABLE "bpm_process_definition_ext" ADD CONSTRAINT "bpm_process_definition_ext_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table bpm_process_instance_ext +-- ---------------------------- +ALTER TABLE "bpm_process_instance_ext" ADD CONSTRAINT "bpm_process_instance_ext_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table bpm_task_assign_rule +-- ---------------------------- +ALTER TABLE "bpm_task_assign_rule" ADD CONSTRAINT "bpm_task_assign_rule_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table bpm_task_ext +-- ---------------------------- +ALTER TABLE "bpm_task_ext" ADD CONSTRAINT "bpm_task_ext_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table bpm_user_group +-- ---------------------------- +ALTER TABLE "bpm_user_group" ADD CONSTRAINT "bpm_user_group_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table infra_api_access_log +-- ---------------------------- +ALTER TABLE "infra_api_access_log" ADD CONSTRAINT "infra_api_access_log_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table infra_api_error_log +-- ---------------------------- +ALTER TABLE "infra_api_error_log" ADD CONSTRAINT "infra_api_error_log_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table infra_codegen_column +-- ---------------------------- +ALTER TABLE "infra_codegen_column" ADD CONSTRAINT "infra_codegen_column_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table infra_codegen_table +-- ---------------------------- +ALTER TABLE "infra_codegen_table" ADD CONSTRAINT "infra_codegen_table_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table infra_config +-- ---------------------------- +ALTER TABLE "infra_config" ADD CONSTRAINT "infra_config_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table infra_data_source_config +-- ---------------------------- +ALTER TABLE "infra_data_source_config" ADD CONSTRAINT "infra_data_source_config_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table infra_file +-- ---------------------------- +ALTER TABLE "infra_file" ADD CONSTRAINT "infra_file_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table infra_file_config +-- ---------------------------- +ALTER TABLE "infra_file_config" ADD CONSTRAINT "infra_file_config_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table infra_file_content +-- ---------------------------- +ALTER TABLE "infra_file_content" ADD CONSTRAINT "infra_file_content_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table infra_job +-- ---------------------------- +ALTER TABLE "infra_job" ADD CONSTRAINT "infra_job_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table infra_job_log +-- ---------------------------- +ALTER TABLE "infra_job_log" ADD CONSTRAINT "infra_job_log_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table infra_test_demo +-- ---------------------------- +ALTER TABLE "infra_test_demo" ADD CONSTRAINT "infra_test_demo_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Indexes structure for table member_user +-- ---------------------------- +CREATE UNIQUE INDEX "uk_mobile" ON "member_user" USING btree ( + "mobile" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST +); +COMMENT ON INDEX "uk_mobile" IS '手机号'; + +-- ---------------------------- +-- Primary Key structure for table member_user +-- ---------------------------- +ALTER TABLE "member_user" ADD CONSTRAINT "member_user_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table pay_app +-- ---------------------------- +ALTER TABLE "pay_app" ADD CONSTRAINT "pay_app_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table pay_channel +-- ---------------------------- +ALTER TABLE "pay_channel" ADD CONSTRAINT "pay_channel_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table pay_merchant +-- ---------------------------- +ALTER TABLE "pay_merchant" ADD CONSTRAINT "pay_merchant_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table pay_notify_log +-- ---------------------------- +ALTER TABLE "pay_notify_log" ADD CONSTRAINT "pay_notify_log_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table pay_notify_task +-- ---------------------------- +ALTER TABLE "pay_notify_task" ADD CONSTRAINT "pay_notify_task_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table pay_order +-- ---------------------------- +ALTER TABLE "pay_order" ADD CONSTRAINT "pay_order_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table pay_order_extension +-- ---------------------------- +ALTER TABLE "pay_order_extension" ADD CONSTRAINT "pay_order_extension_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table pay_refund +-- ---------------------------- +ALTER TABLE "pay_refund" ADD CONSTRAINT "pay_refund_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table qrtz_blob_triggers +-- ---------------------------- +ALTER TABLE "qrtz_blob_triggers" ADD CONSTRAINT "qrtz_blob_triggers_pkey" PRIMARY KEY ("sched_name", "trigger_name", "trigger_group"); + +-- ---------------------------- +-- Primary Key structure for table qrtz_calendars +-- ---------------------------- +ALTER TABLE "qrtz_calendars" ADD CONSTRAINT "qrtz_calendars_pkey" PRIMARY KEY ("sched_name", "calendar_name"); + +-- ---------------------------- +-- Primary Key structure for table qrtz_cron_triggers +-- ---------------------------- +ALTER TABLE "qrtz_cron_triggers" ADD CONSTRAINT "qrtz_cron_triggers_pkey" PRIMARY KEY ("sched_name", "trigger_name", "trigger_group"); + +-- ---------------------------- +-- Indexes structure for table qrtz_fired_triggers +-- ---------------------------- +CREATE INDEX "idx_qrtz_ft_inst_job_req_rcvry" ON "qrtz_fired_triggers" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "instance_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "requests_recovery" "pg_catalog"."bool_ops" ASC NULLS LAST +); +CREATE INDEX "idx_qrtz_ft_j_g" ON "qrtz_fired_triggers" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "job_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "job_group" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST +); +CREATE INDEX "idx_qrtz_ft_jg" ON "qrtz_fired_triggers" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "job_group" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST +); +CREATE INDEX "idx_qrtz_ft_t_g" ON "qrtz_fired_triggers" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "trigger_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "trigger_group" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST +); +CREATE INDEX "idx_qrtz_ft_tg" ON "qrtz_fired_triggers" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "trigger_group" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST +); +CREATE INDEX "idx_qrtz_ft_trig_inst_name" ON "qrtz_fired_triggers" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "instance_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST +); + +-- ---------------------------- +-- Primary Key structure for table qrtz_fired_triggers +-- ---------------------------- +ALTER TABLE "qrtz_fired_triggers" ADD CONSTRAINT "qrtz_fired_triggers_pkey" PRIMARY KEY ("sched_name", "entry_id"); + +-- ---------------------------- +-- Indexes structure for table qrtz_job_details +-- ---------------------------- +CREATE INDEX "idx_qrtz_j_grp" ON "qrtz_job_details" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "job_group" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST +); +CREATE INDEX "idx_qrtz_j_req_recovery" ON "qrtz_job_details" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "requests_recovery" "pg_catalog"."bool_ops" ASC NULLS LAST +); + +-- ---------------------------- +-- Primary Key structure for table qrtz_job_details +-- ---------------------------- +ALTER TABLE "qrtz_job_details" ADD CONSTRAINT "qrtz_job_details_pkey" PRIMARY KEY ("sched_name", "job_name", "job_group"); + +-- ---------------------------- +-- Primary Key structure for table qrtz_locks +-- ---------------------------- +ALTER TABLE "qrtz_locks" ADD CONSTRAINT "qrtz_locks_pkey" PRIMARY KEY ("sched_name", "lock_name"); + +-- ---------------------------- +-- Primary Key structure for table qrtz_paused_trigger_grps +-- ---------------------------- +ALTER TABLE "qrtz_paused_trigger_grps" ADD CONSTRAINT "qrtz_paused_trigger_grps_pkey" PRIMARY KEY ("sched_name", "trigger_group"); + +-- ---------------------------- +-- Primary Key structure for table qrtz_scheduler_state +-- ---------------------------- +ALTER TABLE "qrtz_scheduler_state" ADD CONSTRAINT "qrtz_scheduler_state_pkey" PRIMARY KEY ("sched_name", "instance_name"); + +-- ---------------------------- +-- Primary Key structure for table qrtz_simple_triggers +-- ---------------------------- +ALTER TABLE "qrtz_simple_triggers" ADD CONSTRAINT "qrtz_simple_triggers_pkey" PRIMARY KEY ("sched_name", "trigger_name", "trigger_group"); + +-- ---------------------------- +-- Primary Key structure for table qrtz_simprop_triggers +-- ---------------------------- +ALTER TABLE "qrtz_simprop_triggers" ADD CONSTRAINT "qrtz_simprop_triggers_pkey" PRIMARY KEY ("sched_name", "trigger_name", "trigger_group"); + +-- ---------------------------- +-- Indexes structure for table qrtz_triggers +-- ---------------------------- +CREATE INDEX "idx_qrtz_t_c" ON "qrtz_triggers" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "calendar_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST +); +CREATE INDEX "idx_qrtz_t_g" ON "qrtz_triggers" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "trigger_group" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST +); +CREATE INDEX "idx_qrtz_t_j" ON "qrtz_triggers" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "job_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "job_group" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST +); +CREATE INDEX "idx_qrtz_t_jg" ON "qrtz_triggers" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "job_group" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST +); +CREATE INDEX "idx_qrtz_t_n_g_state" ON "qrtz_triggers" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "trigger_group" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "trigger_state" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST +); +CREATE INDEX "idx_qrtz_t_n_state" ON "qrtz_triggers" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "trigger_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "trigger_group" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "trigger_state" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST +); +CREATE INDEX "idx_qrtz_t_next_fire_time" ON "qrtz_triggers" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "next_fire_time" "pg_catalog"."int8_ops" ASC NULLS LAST +); +CREATE INDEX "idx_qrtz_t_nft_misfire" ON "qrtz_triggers" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "misfire_instr" "pg_catalog"."int2_ops" ASC NULLS LAST, + "next_fire_time" "pg_catalog"."int8_ops" ASC NULLS LAST +); +CREATE INDEX "idx_qrtz_t_nft_st" ON "qrtz_triggers" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "trigger_state" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "next_fire_time" "pg_catalog"."int8_ops" ASC NULLS LAST +); +CREATE INDEX "idx_qrtz_t_nft_st_misfire" ON "qrtz_triggers" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "misfire_instr" "pg_catalog"."int2_ops" ASC NULLS LAST, + "next_fire_time" "pg_catalog"."int8_ops" ASC NULLS LAST, + "trigger_state" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST +); +CREATE INDEX "idx_qrtz_t_nft_st_misfire_grp" ON "qrtz_triggers" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "misfire_instr" "pg_catalog"."int2_ops" ASC NULLS LAST, + "next_fire_time" "pg_catalog"."int8_ops" ASC NULLS LAST, + "trigger_group" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "trigger_state" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST +); +CREATE INDEX "idx_qrtz_t_state" ON "qrtz_triggers" USING btree ( + "sched_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "trigger_state" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST +); + +-- ---------------------------- +-- Primary Key structure for table qrtz_triggers +-- ---------------------------- +ALTER TABLE "qrtz_triggers" ADD CONSTRAINT "qrtz_triggers_pkey" PRIMARY KEY ("sched_name", "trigger_name", "trigger_group"); + +-- ---------------------------- +-- Primary Key structure for table system_dept +-- ---------------------------- +ALTER TABLE "system_dept" ADD CONSTRAINT "system_dept_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_dict_data +-- ---------------------------- +ALTER TABLE "system_dict_data" ADD CONSTRAINT "system_dict_data_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Indexes structure for table system_dict_type +-- ---------------------------- +CREATE UNIQUE INDEX "dict_type" ON "system_dict_type" USING btree ( + "type" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST +); + +-- ---------------------------- +-- Primary Key structure for table system_dict_type +-- ---------------------------- +ALTER TABLE "system_dict_type" ADD CONSTRAINT "system_dict_type_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_error_code +-- ---------------------------- +ALTER TABLE "system_error_code" ADD CONSTRAINT "system_error_code_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_login_log +-- ---------------------------- +ALTER TABLE "system_login_log" ADD CONSTRAINT "system_login_log_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_menu +-- ---------------------------- +ALTER TABLE "system_menu" ADD CONSTRAINT "system_menu_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_notice +-- ---------------------------- +ALTER TABLE "system_notice" ADD CONSTRAINT "system_notice_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_oauth2_access_token +-- ---------------------------- +ALTER TABLE "system_oauth2_access_token" ADD CONSTRAINT "system_oauth2_access_token_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_oauth2_approve +-- ---------------------------- +ALTER TABLE "system_oauth2_approve" ADD CONSTRAINT "system_oauth2_approve_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_oauth2_client +-- ---------------------------- +ALTER TABLE "system_oauth2_client" ADD CONSTRAINT "system_oauth2_client_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_oauth2_code +-- ---------------------------- +ALTER TABLE "system_oauth2_code" ADD CONSTRAINT "system_oauth2_code_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_oauth2_refresh_token +-- ---------------------------- +ALTER TABLE "system_oauth2_refresh_token" ADD CONSTRAINT "system_oauth2_refresh_token_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_operate_log +-- ---------------------------- +ALTER TABLE "system_operate_log" ADD CONSTRAINT "system_operate_log_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_post +-- ---------------------------- +ALTER TABLE "system_post" ADD CONSTRAINT "system_post_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_role +-- ---------------------------- +ALTER TABLE "system_role" ADD CONSTRAINT "system_role_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_role_menu +-- ---------------------------- +ALTER TABLE "system_role_menu" ADD CONSTRAINT "system_role_menu_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_sensitive_word +-- ---------------------------- +ALTER TABLE "system_sensitive_word" ADD CONSTRAINT "system_sensitive_word_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_sms_channel +-- ---------------------------- +ALTER TABLE "system_sms_channel" ADD CONSTRAINT "system_sms_channel_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Indexes structure for table system_sms_code +-- ---------------------------- +CREATE INDEX "idx_mobile" ON "system_sms_code" USING btree ( + "mobile" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST +); +COMMENT ON INDEX "idx_mobile" IS '手机号'; + +-- ---------------------------- +-- Primary Key structure for table system_sms_code +-- ---------------------------- +ALTER TABLE "system_sms_code" ADD CONSTRAINT "system_sms_code_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_sms_log +-- ---------------------------- +ALTER TABLE "system_sms_log" ADD CONSTRAINT "system_sms_log_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_sms_template +-- ---------------------------- +ALTER TABLE "system_sms_template" ADD CONSTRAINT "system_sms_template_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_social_user +-- ---------------------------- +ALTER TABLE "system_social_user" ADD CONSTRAINT "system_social_user_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_social_user_bind +-- ---------------------------- +ALTER TABLE "system_social_user_bind" ADD CONSTRAINT "system_social_user_bind_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_tenant +-- ---------------------------- +ALTER TABLE "system_tenant" ADD CONSTRAINT "system_tenant_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_tenant_package +-- ---------------------------- +ALTER TABLE "system_tenant_package" ADD CONSTRAINT "system_tenant_package_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_user_post +-- ---------------------------- +ALTER TABLE "system_user_post" ADD CONSTRAINT "system_user_post_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Primary Key structure for table system_user_role +-- ---------------------------- +ALTER TABLE "system_user_role" ADD CONSTRAINT "system_user_role_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Indexes structure for table system_users +-- ---------------------------- +CREATE UNIQUE INDEX "idx_username" ON "system_users" USING btree ( + "username" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST, + "update_time" "pg_catalog"."timestamp_ops" ASC NULLS LAST, + "tenant_id" "pg_catalog"."int8_ops" ASC NULLS LAST +); + +-- ---------------------------- +-- Primary Key structure for table system_users +-- ---------------------------- +ALTER TABLE "system_users" ADD CONSTRAINT "system_user_pkey" PRIMARY KEY ("id"); + +-- ---------------------------- +-- Foreign Keys structure for table qrtz_blob_triggers +-- ---------------------------- +ALTER TABLE "qrtz_blob_triggers" ADD CONSTRAINT "qrtz_blob_triggers_sched_name_trigger_name_trigger_group_fkey" 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; + +-- ---------------------------- +-- Foreign Keys structure for table qrtz_cron_triggers +-- ---------------------------- +ALTER TABLE "qrtz_cron_triggers" ADD CONSTRAINT "qrtz_cron_triggers_sched_name_trigger_name_trigger_group_fkey" 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; + +-- ---------------------------- +-- Foreign Keys structure for table qrtz_simple_triggers +-- ---------------------------- +ALTER TABLE "qrtz_simple_triggers" ADD CONSTRAINT "qrtz_simple_triggers_sched_name_trigger_name_trigger_group_fkey" 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; + +-- ---------------------------- +-- Foreign Keys structure for table qrtz_simprop_triggers +-- ---------------------------- +ALTER TABLE "qrtz_simprop_triggers" ADD CONSTRAINT "qrtz_simprop_triggers_sched_name_trigger_name_trigger_grou_fkey" 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; + +-- ---------------------------- +-- Foreign Keys structure for table qrtz_triggers +-- ---------------------------- +ALTER TABLE "qrtz_triggers" ADD CONSTRAINT "qrtz_triggers_sched_name_job_name_job_group_fkey" 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; diff --git a/sql/sqlserver/ruoyi-vue-pro.sql b/sql/sqlserver/ruoyi-vue-pro.sql index 13fd83253d..0b649b12c3 100644 --- a/sql/sqlserver/ruoyi-vue-pro.sql +++ b/sql/sqlserver/ruoyi-vue-pro.sql @@ -12,7 +12,7 @@ Target Server Version : 15004198 File Encoding : 65001 - Date: 02/05/2022 17:53:51 + Date: 26/05/2022 01:01:02 */ @@ -5591,15 +5591,9 @@ GO INSERT INTO [dbo].[system_dict_data] ([id], [sort], [label], [value], [dict_type], [status], [color_type], [css_class], [remark], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'81', N'101', N'社交登录', N'101', N'system_login_type', N'0', N'info', N'', N'社交登录', N'1', N'2021-10-06 00:52:17.0000000', N'1', N'2022-02-16 13:11:40.0000000', N'0') GO -INSERT INTO [dbo].[system_dict_data] ([id], [sort], [label], [value], [dict_type], [status], [color_type], [css_class], [remark], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'82', N'102', N'Mock 登录', N'102', N'system_login_type', N'0', N'danger', N'', N'Mock 登录', N'1', N'2021-10-06 00:52:32.0000000', N'1', N'2022-02-16 13:11:44.0000000', N'0') -GO - INSERT INTO [dbo].[system_dict_data] ([id], [sort], [label], [value], [dict_type], [status], [color_type], [css_class], [remark], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'83', N'200', N'主动登出', N'200', N'system_login_type', N'0', N'primary', N'', N'主动登出', N'1', N'2021-10-06 00:52:58.0000000', N'1', N'2022-02-16 13:11:49.0000000', N'0') GO -INSERT INTO [dbo].[system_dict_data] ([id], [sort], [label], [value], [dict_type], [status], [color_type], [css_class], [remark], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'84', N'201', N'超时登出', N'201', N'system_login_type', N'0', N'info', N'', N'超时登出', N'1', N'2021-10-06 00:53:17.0000000', N'1', N'2022-02-16 13:11:53.0000000', N'0') -GO - INSERT INTO [dbo].[system_dict_data] ([id], [sort], [label], [value], [dict_type], [status], [color_type], [css_class], [remark], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'85', N'202', N'强制登出', N'202', N'system_login_type', N'0', N'danger', N'', N'强制退出', N'1', N'2021-10-06 00:53:41.0000000', N'1', N'2022-02-16 13:11:57.0000000', N'0') GO @@ -5783,6 +5777,24 @@ GO INSERT INTO [dbo].[system_dict_data] ([id], [sort], [label], [value], [dict_type], [status], [color_type], [css_class], [remark], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1154', N'20', N'S3 对象存储', N'20', N'infra_file_storage', N'0', N'default', N'', NULL, N'1', N'2022-03-15 00:26:31.0000000', N'1', N'2022-03-15 00:26:45.0000000', N'0') GO +INSERT INTO [dbo].[system_dict_data] ([id], [sort], [label], [value], [dict_type], [status], [color_type], [css_class], [remark], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1155', N'103', N'短信登录', N'103', N'system_login_type', N'0', N'default', N'', NULL, N'1', N'2022-05-09 23:57:58.0000000', N'1', N'2022-05-09 23:58:09.0000000', N'0') +GO + +INSERT INTO [dbo].[system_dict_data] ([id], [sort], [label], [value], [dict_type], [status], [color_type], [css_class], [remark], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1156', N'1', N'password', N'password', N'system_oauth2_grant_type', N'0', N'default', N'', N'密码模式', N'1', N'2022-05-12 00:22:05.0000000', N'1', N'2022-05-11 16:26:01.0000000', N'0') +GO + +INSERT INTO [dbo].[system_dict_data] ([id], [sort], [label], [value], [dict_type], [status], [color_type], [css_class], [remark], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1157', N'2', N'authorization_code', N'authorization_code', N'system_oauth2_grant_type', N'0', N'primary', N'', N'授权码模式', N'1', N'2022-05-12 00:22:59.0000000', N'1', N'2022-05-11 16:26:02.0000000', N'0') +GO + +INSERT INTO [dbo].[system_dict_data] ([id], [sort], [label], [value], [dict_type], [status], [color_type], [css_class], [remark], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1158', N'3', N'implicit', N'implicit', N'system_oauth2_grant_type', N'0', N'success', N'', N'简化模式', N'1', N'2022-05-12 00:23:40.0000000', N'1', N'2022-05-11 16:26:05.0000000', N'0') +GO + +INSERT INTO [dbo].[system_dict_data] ([id], [sort], [label], [value], [dict_type], [status], [color_type], [css_class], [remark], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1159', N'4', N'client_credentials', N'client_credentials', N'system_oauth2_grant_type', N'0', N'default', N'', N'客户端模式', N'1', N'2022-05-12 00:23:51.0000000', N'1', N'2022-05-11 16:26:08.0000000', N'0') +GO + +INSERT INTO [dbo].[system_dict_data] ([id], [sort], [label], [value], [dict_type], [status], [color_type], [css_class], [remark], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1160', N'5', N'refresh_token', N'refresh_token', N'system_oauth2_grant_type', N'0', N'info', N'', N'刷新模式', N'1', N'2022-05-12 00:24:02.0000000', N'1', N'2022-05-11 16:26:11.0000000', N'0') +GO + SET IDENTITY_INSERT [dbo].[system_dict_data] OFF GO @@ -6017,6 +6029,9 @@ GO INSERT INTO [dbo].[system_dict_type] ([id], [name], [type], [status], [remark], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'146', N'文件存储器', N'infra_file_storage', N'0', N'文件存储器', N'1', N'2022-03-15 00:24:38.0000000', N'1', N'2022-03-15 00:24:38.0000000', N'0') GO +INSERT INTO [dbo].[system_dict_type] ([id], [name], [type], [status], [remark], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'147', N'OAuth 2.0 授权类型', N'system_oauth2_grant_type', N'0', N'OAuth 2.0 授权类型(模式)', N'1', N'2022-05-12 00:20:52.0000000', N'1', N'2022-05-11 16:25:49.0000000', N'0') +GO + SET IDENTITY_INSERT [dbo].[system_dict_type] OFF GO @@ -6472,13 +6487,13 @@ GO SET IDENTITY_INSERT [dbo].[system_menu] ON GO -INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1', N'系统管理', N'', N'1', N'10', N'0', N'/system', N'system', NULL, N'0', N'1', N'1', N'admin', N'2021-01-05 17:03:48.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1', N'系统管理', N'', N'1', N'10', N'0', N'/system', N'system', N'', N'0', N'1', N'1', N'admin', N'2021-01-05 17:03:48.0000000', N'1', N'2022-05-12 18:11:34.0000000', N'0') GO -INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'2', N'基础设施', N'', N'1', N'20', N'0', N'/infra', N'monitor', NULL, N'0', N'1', N'1', N'admin', N'2021-01-05 17:03:48.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'2', N'基础设施', N'', N'1', N'20', N'0', N'/infra', N'monitor', N'', N'0', N'1', N'1', N'admin', N'2021-01-05 17:03:48.0000000', N'1', N'2022-05-12 18:11:34.0000000', N'0') GO -INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'5', N'OA 示例', N'', N'1', N'40', N'1185', N'oa', N'people', NULL, N'0', N'1', N'1', N'admin', N'2021-09-20 16:26:19.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'5', N'OA 示例', N'', N'1', N'40', N'1185', N'oa', N'people', N'', N'0', N'1', N'1', N'admin', N'2021-09-20 16:26:19.0000000', N'1', N'2022-05-12 18:11:34.0000000', N'0') GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'100', N'用户管理', N'system:user:list', N'2', N'1', N'1', N'user', N'user', N'system/user/index', N'0', N'1', N'1', N'admin', N'2021-01-05 17:03:48.0000000', N'', N'2022-04-20 17:03:10.0000000', N'0') @@ -6508,7 +6523,7 @@ GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'108', N'审计日志', N'', N'1', N'9', N'1', N'log', N'log', N'', N'0', N'1', N'1', N'admin', N'2021-01-05 17:03:48.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') GO -INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'109', N'在线用户', N'system:user-session:list', N'2', N'10', N'1', N'user-session', N'online', N'system/session/index', N'0', N'1', N'1', N'admin', N'2021-01-05 17:03:48.0000000', N'', N'2022-04-20 17:03:10.0000000', N'0') +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'109', N'令牌管理', N'', N'2', N'2', N'1261', N'token', N'online', N'system/oauth2/token/index', N'0', N'1', N'1', N'admin', N'2021-01-05 17:03:48.0000000', N'1', N'2022-05-11 23:31:42.0000000', N'0') GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'110', N'定时任务', N'', N'2', N'12', N'2', N'job', N'job', N'infra/job/index', N'0', N'1', N'1', N'admin', N'2021-01-05 17:03:48.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') @@ -6667,10 +6682,10 @@ GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1045', N'日志导出', N'system:login-log:export', N'3', N'3', N'501', N'#', N'#', N'', N'0', N'1', N'1', N'admin', N'2021-01-05 17:03:48.0000000', N'', N'2022-04-20 17:03:10.0000000', N'0') GO -INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1046', N'在线查询', N'system:user-session:list', N'3', N'1', N'109', N'', N'', N'', N'0', N'1', N'1', N'admin', N'2021-01-05 17:03:48.0000000', N'', N'2022-04-20 17:03:10.0000000', N'0') +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1046', N'令牌列表', N'system:oauth2-token:page', N'3', N'1', N'109', N'', N'', N'', N'0', N'1', N'1', N'admin', N'2021-01-05 17:03:48.0000000', N'1', N'2022-05-09 23:54:42.0000000', N'0') GO -INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1048', N'单条强退', N'system:user-session:delete', N'3', N'3', N'109', N'', N'', N'', N'0', N'1', N'1', N'admin', N'2021-01-05 17:03:48.0000000', N'', N'2022-04-20 17:03:10.0000000', N'0') +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1048', N'令牌删除', N'system:oauth2-token:delete', N'3', N'2', N'109', N'', N'', N'', N'0', N'1', N'1', N'admin', N'2021-01-05 17:03:48.0000000', N'1', N'2022-05-09 23:54:53.0000000', N'0') GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1050', N'任务新增', N'infra:job:create', N'3', N'2', N'110', N'', N'', N'', N'0', N'1', N'1', N'admin', N'2021-01-05 17:03:48.0000000', N'', N'2022-04-20 17:03:10.0000000', N'0') @@ -6748,7 +6763,7 @@ GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1082', N'日志导出', N'infra:api-access-log:export', N'3', N'2', N'1078', N'', N'', N'', N'0', N'1', N'1', N'', N'2021-02-26 01:32:59.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') GO -INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1083', N'API 日志', N'', N'2', N'8', N'2', N'log', N'log', NULL, N'0', N'1', N'1', N'', N'2021-02-26 02:18:24.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1083', N'API 日志', N'', N'2', N'8', N'2', N'log', N'log', N'', N'0', N'1', N'1', N'', N'2021-02-26 02:18:24.0000000', N'1', N'2022-05-12 18:11:34.0000000', N'0') GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1084', N'错误日志', N'infra:api-error-log:query', N'2', N'2', N'1083', N'api-error-log', N'log', N'infra/apiErrorLog/index', N'0', N'1', N'1', N'', N'2021-02-26 07:53:20.0000000', N'', N'2022-04-20 17:03:10.0000000', N'0') @@ -6778,7 +6793,7 @@ GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1092', N'文件删除', N'infra:file:delete', N'3', N'4', N'1090', N'', N'', N'', N'0', N'1', N'1', N'', N'2021-03-12 20:16:20.0000000', N'', N'2022-04-20 17:03:10.0000000', N'0') GO -INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1093', N'短信管理', N'', N'1', N'11', N'1', N'sms', N'validCode', NULL, N'0', N'1', N'1', N'1', N'2021-04-05 01:10:16.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1093', N'短信管理', N'', N'1', N'11', N'1', N'sms', N'validCode', N'', N'0', N'1', N'1', N'1', N'2021-04-05 01:10:16.0000000', N'1', N'2022-05-12 18:11:34.0000000', N'0') GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1094', N'短信渠道', N'', N'2', N'0', N'1093', N'sms-channel', N'phone', N'system/sms/smsChannel', N'0', N'1', N'1', N'', N'2021-04-01 11:07:15.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') @@ -6844,7 +6859,7 @@ GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1115', N'错误码导出', N'system:error-code:export', N'3', N'5', N'1110', N'', N'', N'', N'0', N'1', N'1', N'', N'2021-04-13 21:46:42.0000000', N'', N'2022-04-20 17:03:10.0000000', N'0') GO -INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1117', N'支付管理', N'', N'1', N'11', N'0', N'/pay', N'money', NULL, N'0', N'1', N'1', N'1', N'2021-12-25 16:43:41.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1117', N'支付管理', N'', N'1', N'11', N'0', N'/pay', N'money', N'', N'0', N'1', N'1', N'1', N'2021-12-25 16:43:41.0000000', N'1', N'2022-05-12 18:11:34.0000000', N'0') GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1118', N'请假查询', N'', N'2', N'0', N'5', N'leave', N'user', N'bpm/oa/leave/index', N'0', N'1', N'1', N'', N'2021-09-20 08:51:03.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') @@ -6967,10 +6982,10 @@ GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1184', N'支付商户信息导出', N'pay:merchant:export', N'3', N'5', N'1179', N'', N'', N'', N'0', N'1', N'1', N'', N'2021-12-25 09:01:44.0000000', N'', N'2022-04-20 17:03:10.0000000', N'0') GO -INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1185', N'工作流程', N'', N'1', N'50', N'0', N'/bpm', N'tool', NULL, N'0', N'1', N'1', N'1', N'2021-12-30 20:26:36.0000000', N'103', N'2022-04-20 17:03:10.0000000', N'0') +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1185', N'工作流程', N'', N'1', N'50', N'0', N'/bpm', N'tool', N'', N'0', N'1', N'1', N'1', N'2021-12-30 20:26:36.0000000', N'103', N'2022-05-12 18:11:34.0000000', N'0') GO -INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1186', N'流程管理', N'', N'1', N'10', N'1185', N'manager', N'nested', NULL, N'0', N'1', N'1', N'1', N'2021-12-30 20:28:30.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1186', N'流程管理', N'', N'1', N'10', N'1185', N'manager', N'nested', N'', N'0', N'1', N'1', N'1', N'2021-12-30 20:28:30.0000000', N'1', N'2022-05-12 18:11:34.0000000', N'0') GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1187', N'流程表单', N'', N'2', N'0', N'1186', N'form', N'form', N'bpm/form/index', N'0', N'1', N'1', N'', N'2021-12-30 12:38:22.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') @@ -7012,7 +7027,7 @@ GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1199', N'模型发布', N'bpm:model:deploy', N'3', N'6', N'1193', N'', N'', N'', N'0', N'1', N'1', N'1', N'2022-01-03 19:03:24.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') GO -INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1200', N'任务管理', N'', N'1', N'20', N'1185', N'task', N'cascader', NULL, N'0', N'1', N'1', N'1', N'2022-01-07 23:51:48.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1200', N'任务管理', N'', N'1', N'20', N'1185', N'task', N'cascader', N'', N'0', N'1', N'1', N'1', N'2022-01-07 23:51:48.0000000', N'1', N'2022-05-12 18:11:34.0000000', N'0') GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1201', N'我的流程', N'', N'2', N'0', N'1200', N'my', N'people', N'bpm/processInstance/index', N'0', N'1', N'1', N'', N'2022-01-07 15:53:44.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') @@ -7066,7 +7081,7 @@ GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1222', N'流程任务的更新', N'bpm:task:update', N'3', N'2', N'1207', N'', N'', N'', N'0', N'1', N'1', N'1', N'2022-01-23 00:39:24.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') GO -INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1224', N'租户管理', N'', N'2', N'0', N'1', N'tenant', N'peoples', NULL, N'0', N'1', N'1', N'1', N'2022-02-20 01:41:13.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1224', N'租户管理', N'', N'2', N'0', N'1', N'tenant', N'peoples', N'', N'0', N'1', N'1', N'1', N'2022-02-20 01:41:13.0000000', N'1', N'2022-05-12 18:11:34.0000000', N'0') GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1225', N'租户套餐', N'', N'2', N'0', N'1224', N'package', N'eye', N'system/tenantPackage/index', N'0', N'1', N'1', N'', N'2022-02-19 17:44:06.0000000', N'1', N'2022-04-21 01:21:25.0000000', N'0') @@ -7102,7 +7117,7 @@ GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1242', N'文件配置导出', N'infra:file-config:export', N'3', N'5', N'1237', N'', N'', N'', N'0', N'1', N'1', N'', N'2022-03-15 14:35:28.0000000', N'', N'2022-04-20 17:03:10.0000000', N'0') GO -INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1243', N'文件管理', N'', N'2', N'5', N'2', N'file', N'download', NULL, N'0', N'1', N'1', N'1', N'2022-03-16 23:47:40.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1243', N'文件管理', N'', N'2', N'5', N'2', N'file', N'download', N'', N'0', N'1', N'1', N'1', N'2022-03-16 23:47:40.0000000', N'1', N'2022-05-12 18:11:34.0000000', N'0') GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1247', N'敏感词管理', N'', N'2', N'13', N'1', N'sensitive-word', N'education', N'system/sensitiveWord/index', N'0', N'1', N'1', N'', N'2022-04-07 16:55:03.0000000', N'1', N'2022-04-20 17:03:10.0000000', N'0') @@ -7123,7 +7138,7 @@ GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1252', N'敏感词导出', N'system:sensitive-word:export', N'3', N'5', N'1247', N'', N'', N'', N'0', N'1', N'1', N'', N'2022-04-07 16:55:03.0000000', N'', N'2022-04-20 17:03:10.0000000', N'0') GO -INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1254', N'作者动态', N'', N'1', N'0', N'0', N'https://www.iocoder.cn', N'people', NULL, N'0', N'1', N'1', N'1', N'2022-04-23 01:03:15.0000000', N'1', N'2022-05-02 02:32:12.6190000', N'0') +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1254', N'作者动态', N'', N'1', N'0', N'0', N'https://www.iocoder.cn', N'people', N'', N'0', N'1', N'1', N'1', N'2022-04-23 01:03:15.0000000', N'1', N'2022-05-12 18:11:34.0000000', N'0') GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1255', N'数据源配置', N'', N'2', N'1', N'2', N'data-source-config', N'rate', N'infra/dataSourceConfig/index', N'0', N'1', N'1', N'', N'2022-04-27 14:37:32.0000000', N'1', N'2022-04-27 22:42:06.0000000', N'0') @@ -7144,6 +7159,24 @@ GO INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1260', N'数据源配置导出', N'infra:data-source-config:export', N'3', N'5', N'1255', N'', N'', N'', N'0', N'1', N'1', N'', N'2022-04-27 14:37:32.0000000', N'', N'2022-04-27 14:37:32.0000000', N'0') GO +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1261', N'OAuth 2.0', N'', N'1', N'10', N'1', N'oauth2', N'people', N'', N'0', N'1', N'1', N'1', N'2022-05-09 23:38:17.0000000', N'1', N'2022-05-12 18:11:34.0000000', N'0') +GO + +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1263', N'应用管理', N'', N'2', N'0', N'1261', N'oauth2/application', N'tool', N'system/oauth2/client/index', N'0', N'1', N'1', N'', N'2022-05-10 16:26:33.0000000', N'1', N'2022-05-11 23:31:36.0000000', N'0') +GO + +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1264', N'客户端查询', N'system:oauth2-client:query', N'3', N'1', N'1263', N'', N'', N'', N'0', N'1', N'1', N'', N'2022-05-10 16:26:33.0000000', N'1', N'2022-05-11 00:31:06.0000000', N'0') +GO + +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1265', N'客户端创建', N'system:oauth2-client:create', N'3', N'2', N'1263', N'', N'', N'', N'0', N'1', N'1', N'', N'2022-05-10 16:26:33.0000000', N'1', N'2022-05-11 00:31:23.0000000', N'0') +GO + +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1266', N'客户端更新', N'system:oauth2-client:update', N'3', N'3', N'1263', N'', N'', N'', N'0', N'1', N'1', N'', N'2022-05-10 16:26:33.0000000', N'1', N'2022-05-11 00:31:28.0000000', N'0') +GO + +INSERT INTO [dbo].[system_menu] ([id], [name], [permission], [type], [sort], [parent_id], [path], [icon], [component], [status], [visible], [keep_alive], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1267', N'客户端删除', N'system:oauth2-client:delete', N'3', N'4', N'1263', N'', N'', N'', N'0', N'1', N'1', N'', N'2022-05-10 16:26:33.0000000', N'1', N'2022-05-11 00:31:33.0000000', N'0') +GO + SET IDENTITY_INSERT [dbo].[system_menu] OFF GO @@ -7285,6 +7318,802 @@ COMMIT GO +-- ---------------------------- +-- Table structure for system_oauth2_access_token +-- ---------------------------- +IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[system_oauth2_access_token]') AND type IN ('U')) + DROP TABLE [dbo].[system_oauth2_access_token] +GO + +CREATE TABLE [dbo].[system_oauth2_access_token] ( + [id] bigint IDENTITY(1,1) NOT NULL, + [user_id] bigint NOT NULL, + [access_token] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [refresh_token] nvarchar(32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [user_type] tinyint NOT NULL, + [client_id] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [expires_time] datetime2(7) NOT NULL, + [creator] nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [create_time] datetime2(7) NOT NULL, + [updater] nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [update_time] datetime2(7) NOT NULL, + [deleted] bit DEFAULT 0 NOT NULL, + [tenant_id] bigint DEFAULT 0 NOT NULL, + [scopes] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS DEFAULT '' NULL +) +GO + +ALTER TABLE [dbo].[system_oauth2_access_token] SET (LOCK_ESCALATION = TABLE) +GO + +EXEC sp_addextendedproperty +'MS_Description', N'编号', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_access_token', +'COLUMN', N'id' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'用户编号', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_access_token', +'COLUMN', N'user_id' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'访问令牌', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_access_token', +'COLUMN', N'access_token' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'刷新令牌', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_access_token', +'COLUMN', N'refresh_token' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'用户类型', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_access_token', +'COLUMN', N'user_type' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'客户端编号', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_access_token', +'COLUMN', N'client_id' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'过期时间', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_access_token', +'COLUMN', N'expires_time' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'创建者', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_access_token', +'COLUMN', N'creator' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'创建时间', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_access_token', +'COLUMN', N'create_time' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'更新者', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_access_token', +'COLUMN', N'updater' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'更新时间', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_access_token', +'COLUMN', N'update_time' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'是否删除', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_access_token', +'COLUMN', N'deleted' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'租户编号', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_access_token', +'COLUMN', N'tenant_id' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'授权范围', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_access_token', +'COLUMN', N'scopes' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'刷新令牌', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_access_token' +GO + + +-- ---------------------------- +-- Records of system_oauth2_access_token +-- ---------------------------- +BEGIN TRANSACTION +GO + +SET IDENTITY_INSERT [dbo].[system_oauth2_access_token] ON +GO + +SET IDENTITY_INSERT [dbo].[system_oauth2_access_token] OFF +GO + +COMMIT +GO + + +-- ---------------------------- +-- Table structure for system_oauth2_approve +-- ---------------------------- +IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[system_oauth2_approve]') AND type IN ('U')) + DROP TABLE [dbo].[system_oauth2_approve] +GO + +CREATE TABLE [dbo].[system_oauth2_approve] ( + [id] bigint IDENTITY(1,1) NOT NULL, + [user_id] bigint NOT NULL, + [user_type] tinyint NOT NULL, + [client_id] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [scope] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [approved] varchar(1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [expires_time] datetime2(7) NOT NULL, + [creator] nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [create_time] datetime2(7) NOT NULL, + [updater] nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [update_time] datetime2(7) NOT NULL, + [deleted] bit DEFAULT 0 NOT NULL, + [tenant_id] bigint NOT NULL +) +GO + +ALTER TABLE [dbo].[system_oauth2_approve] SET (LOCK_ESCALATION = TABLE) +GO + +EXEC sp_addextendedproperty +'MS_Description', N'编号', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_approve', +'COLUMN', N'id' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'用户编号', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_approve', +'COLUMN', N'user_id' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'用户类型', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_approve', +'COLUMN', N'user_type' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'客户端编号', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_approve', +'COLUMN', N'client_id' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'授权范围', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_approve', +'COLUMN', N'scope' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'是否接受', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_approve', +'COLUMN', N'approved' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'过期时间', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_approve', +'COLUMN', N'expires_time' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'创建者', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_approve', +'COLUMN', N'creator' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'创建时间', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_approve', +'COLUMN', N'create_time' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'更新者', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_approve', +'COLUMN', N'updater' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'更新时间', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_approve', +'COLUMN', N'update_time' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'是否删除', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_approve', +'COLUMN', N'deleted' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'租户编号', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_approve', +'COLUMN', N'tenant_id' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'OAuth2 批准表', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_approve' +GO + + +-- ---------------------------- +-- Records of system_oauth2_approve +-- ---------------------------- +BEGIN TRANSACTION +GO + +SET IDENTITY_INSERT [dbo].[system_oauth2_approve] ON +GO + +SET IDENTITY_INSERT [dbo].[system_oauth2_approve] OFF +GO + +COMMIT +GO + + +-- ---------------------------- +-- Table structure for system_oauth2_client +-- ---------------------------- +IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[system_oauth2_client]') AND type IN ('U')) + DROP TABLE [dbo].[system_oauth2_client] +GO + +CREATE TABLE [dbo].[system_oauth2_client] ( + [id] bigint IDENTITY(1,1) NOT NULL, + [client_id] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [secret] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [name] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [logo] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [description] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [status] tinyint NOT NULL, + [access_token_validity_seconds] int NOT NULL, + [refresh_token_validity_seconds] int NOT NULL, + [redirect_uris] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [auto_approve_scopes] nvarchar(max) COLLATE SQL_Latin1_General_CP1_CI_AS DEFAULT '' NOT NULL, + [authorized_grant_types] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [scopes] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS DEFAULT '' NULL, + [authorities] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [resource_ids] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [additional_information] nvarchar(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [creator] nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [create_time] datetime2(7) NOT NULL, + [updater] nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [update_time] datetime2(7) NOT NULL, + [deleted] bit DEFAULT 0 NOT NULL +) +GO + +ALTER TABLE [dbo].[system_oauth2_client] SET (LOCK_ESCALATION = TABLE) +GO + +EXEC sp_addextendedproperty +'MS_Description', N'编号', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'id' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'客户端编号', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'client_id' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'客户端密钥', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'secret' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'应用名', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'name' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'应用图标', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'logo' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'应用描述', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'description' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'状态', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'status' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'访问令牌的有效期', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'access_token_validity_seconds' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'刷新令牌的有效期', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'refresh_token_validity_seconds' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'可重定向的 URI 地址', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'redirect_uris' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'自动通过的授权范围', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'auto_approve_scopes' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'授权类型', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'authorized_grant_types' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'授权范围', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'scopes' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'权限', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'authorities' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'资源', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'resource_ids' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'附加信息', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'additional_information' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'创建者', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'creator' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'创建时间', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'create_time' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'更新者', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'updater' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'更新时间', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'update_time' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'是否删除', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client', +'COLUMN', N'deleted' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'OAuth2 客户端表', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_client' +GO + + +-- ---------------------------- +-- Records of system_oauth2_client +-- ---------------------------- +BEGIN TRANSACTION +GO + +SET IDENTITY_INSERT [dbo].[system_oauth2_client] ON +GO + +INSERT INTO [dbo].[system_oauth2_client] ([id], [client_id], [secret], [name], [logo], [description], [status], [access_token_validity_seconds], [refresh_token_validity_seconds], [redirect_uris], [auto_approve_scopes], [authorized_grant_types], [scopes], [authorities], [resource_ids], [additional_information], [creator], [create_time], [updater], [update_time], [deleted]) VALUES (N'1', N'default', N'admin123', N'芋道源码', N'http://test.yudao.iocoder.cn/a5e2e244368878a366b516805a4aabf1.png', N'我是描述', N'0', N'180', N'8640', N'["https://www.iocoder.cn","https://doc.iocoder.cn"]', N'', N'["password","authorization_code","implicit","refresh_token"]', N'["user.read", "user.write"]', N'["system:user:query"]', N'[]', N'{}', N'1', N'2022-05-11 21:47:12.0000000', N'1', N'2022-05-13 10:50:16.9620000', N'0') +GO + +SET IDENTITY_INSERT [dbo].[system_oauth2_client] OFF +GO + +COMMIT +GO + + +-- ---------------------------- +-- Table structure for system_oauth2_code +-- ---------------------------- +IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[system_oauth2_code]') AND type IN ('U')) + DROP TABLE [dbo].[system_oauth2_code] +GO + +CREATE TABLE [dbo].[system_oauth2_code] ( + [id] bigint IDENTITY(1,1) NOT NULL, + [user_id] bigint NOT NULL, + [user_type] tinyint NOT NULL, + [code] nvarchar(32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [client_id] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [scopes] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [expires_time] datetime2(7) NOT NULL, + [redirect_uri] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [state] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS DEFAULT '' NOT NULL, + [creator] nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [create_time] datetime2(7) NOT NULL, + [updater] nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [update_time] datetime2(7) NOT NULL, + [deleted] bit DEFAULT 0 NOT NULL, + [tenant_id] bigint NOT NULL +) +GO + +ALTER TABLE [dbo].[system_oauth2_code] SET (LOCK_ESCALATION = TABLE) +GO + +EXEC sp_addextendedproperty +'MS_Description', N'编号', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_code', +'COLUMN', N'id' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'用户编号', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_code', +'COLUMN', N'user_id' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'用户类型', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_code', +'COLUMN', N'user_type' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'授权码', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_code', +'COLUMN', N'code' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'客户端编号', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_code', +'COLUMN', N'client_id' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'授权范围', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_code', +'COLUMN', N'scopes' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'过期时间', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_code', +'COLUMN', N'expires_time' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'可重定向的 URI 地址', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_code', +'COLUMN', N'redirect_uri' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'状态', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_code', +'COLUMN', N'state' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'创建者', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_code', +'COLUMN', N'creator' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'创建时间', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_code', +'COLUMN', N'create_time' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'更新者', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_code', +'COLUMN', N'updater' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'更新时间', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_code', +'COLUMN', N'update_time' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'是否删除', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_code', +'COLUMN', N'deleted' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'租户编号', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_code', +'COLUMN', N'tenant_id' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'OAuth2 授权码表', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_code' +GO + + +-- ---------------------------- +-- Records of system_oauth2_code +-- ---------------------------- +BEGIN TRANSACTION +GO + +SET IDENTITY_INSERT [dbo].[system_oauth2_code] ON +GO + +SET IDENTITY_INSERT [dbo].[system_oauth2_code] OFF +GO + +COMMIT +GO + + +-- ---------------------------- +-- Table structure for system_oauth2_refresh_token +-- ---------------------------- +IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[system_oauth2_refresh_token]') AND type IN ('U')) + DROP TABLE [dbo].[system_oauth2_refresh_token] +GO + +CREATE TABLE [dbo].[system_oauth2_refresh_token] ( + [id] bigint IDENTITY(1,1) NOT NULL, + [user_id] bigint NOT NULL, + [refresh_token] nvarchar(32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [user_type] tinyint NOT NULL, + [client_id] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, + [expires_time] datetime2(7) NOT NULL, + [creator] nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [create_time] datetime2(7) NOT NULL, + [updater] nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [update_time] datetime2(7) NOT NULL, + [deleted] bit DEFAULT 0 NOT NULL, + [tenant_id] bigint NOT NULL, + [scopes] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS DEFAULT '' NULL +) +GO + +ALTER TABLE [dbo].[system_oauth2_refresh_token] SET (LOCK_ESCALATION = TABLE) +GO + +EXEC sp_addextendedproperty +'MS_Description', N'编号', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_refresh_token', +'COLUMN', N'id' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'用户编号', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_refresh_token', +'COLUMN', N'user_id' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'刷新令牌', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_refresh_token', +'COLUMN', N'refresh_token' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'用户类型', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_refresh_token', +'COLUMN', N'user_type' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'客户端编号', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_refresh_token', +'COLUMN', N'client_id' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'过期时间', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_refresh_token', +'COLUMN', N'expires_time' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'创建者', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_refresh_token', +'COLUMN', N'creator' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'创建时间', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_refresh_token', +'COLUMN', N'create_time' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'更新者', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_refresh_token', +'COLUMN', N'updater' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'更新时间', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_refresh_token', +'COLUMN', N'update_time' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'是否删除', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_refresh_token', +'COLUMN', N'deleted' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'租户编号', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_refresh_token', +'COLUMN', N'tenant_id' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'授权范围', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_refresh_token', +'COLUMN', N'scopes' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'刷新令牌', +'SCHEMA', N'dbo', +'TABLE', N'system_oauth2_refresh_token' +GO + + +-- ---------------------------- +-- Records of system_oauth2_refresh_token +-- ---------------------------- +BEGIN TRANSACTION +GO + +SET IDENTITY_INSERT [dbo].[system_oauth2_refresh_token] ON +GO + +SET IDENTITY_INSERT [dbo].[system_oauth2_refresh_token] OFF +GO + +COMMIT +GO + + -- ---------------------------- -- Table structure for system_operate_log -- ---------------------------- @@ -7855,28 +8684,21 @@ IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[sy GO CREATE TABLE [dbo].[system_role_menu] ( - [id] bigint IDENTITY(1,1) NOT NULL, [role_id] bigint NOT NULL, [menu_id] bigint NOT NULL, [creator] nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [create_time] datetime2(7) NOT NULL, [updater] nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [update_time] datetime2(7) NOT NULL, - [tenant_id] bigint NOT NULL, - [deleted] bit DEFAULT 0 NOT NULL + [tenant_id] bigint DEFAULT 0 NOT NULL, + [deleted] bit DEFAULT 0 NOT NULL, + [id] bigint IDENTITY(1,1) NOT NULL ) GO ALTER TABLE [dbo].[system_role_menu] SET (LOCK_ESCALATION = TABLE) GO -EXEC sp_addextendedproperty -'MS_Description', N'自增编号', -'SCHEMA', N'dbo', -'TABLE', N'system_role_menu', -'COLUMN', N'id' -GO - EXEC sp_addextendedproperty 'MS_Description', N'角色ID', 'SCHEMA', N'dbo', @@ -7933,6 +8755,13 @@ EXEC sp_addextendedproperty 'COLUMN', N'deleted' GO +EXEC sp_addextendedproperty +'MS_Description', N'自增编号', +'SCHEMA', N'dbo', +'TABLE', N'system_role_menu', +'COLUMN', N'id' +GO + EXEC sp_addextendedproperty 'MS_Description', N'角色和菜单关联表', 'SCHEMA', N'dbo', @@ -7949,577 +8778,577 @@ GO SET IDENTITY_INSERT [dbo].[system_role_menu] ON GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'263', N'109', N'1', N'1', N'2022-02-22 00:56:14.0000000', N'1', N'2022-02-22 00:56:14.0000000', N'121', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'109', N'1', N'1', N'2022-02-22 00:56:14.0000000', N'1', N'2022-02-22 00:56:14.0000000', N'121', N'0', N'1') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'434', N'2', N'1', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'1', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'2') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'454', N'2', N'1093', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'1093', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'3') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'455', N'2', N'1094', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'1094', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'4') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'460', N'2', N'1100', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'1100', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'5') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'467', N'2', N'1107', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'1107', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'6') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'470', N'2', N'1110', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'1110', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'7') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'476', N'2', N'1117', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'1117', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'8') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'477', N'2', N'100', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'100', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'9') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'478', N'2', N'101', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'101', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'10') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'479', N'2', N'102', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'102', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'11') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'480', N'2', N'1126', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'1126', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'12') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'481', N'2', N'103', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'103', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'13') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'483', N'2', N'104', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'104', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'14') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'485', N'2', N'105', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'105', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'15') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'488', N'2', N'107', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'107', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'16') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'490', N'2', N'108', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'108', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'17') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'492', N'2', N'109', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'109', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'18') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'498', N'2', N'1138', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'1138', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'19') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'523', N'2', N'1224', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'1224', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'20') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'524', N'2', N'1225', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'1225', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'21') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'541', N'2', N'500', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'500', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'22') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'543', N'2', N'501', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'501', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'2022-02-22 13:09:12.0000000', N'1', N'0', N'23') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'675', N'2', N'2', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'2', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0', N'24') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'689', N'2', N'1077', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'1077', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0', N'25') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'690', N'2', N'1078', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'1078', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0', N'26') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'692', N'2', N'1083', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'1083', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0', N'27') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'693', N'2', N'1084', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'1084', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0', N'28') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'699', N'2', N'1090', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'1090', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0', N'29') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'703', N'2', N'106', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'106', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0', N'30') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'704', N'2', N'110', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'110', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0', N'31') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'705', N'2', N'111', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'111', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0', N'32') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'706', N'2', N'112', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'112', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0', N'33') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'707', N'2', N'113', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'2', N'113', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'2022-02-22 13:16:57.0000000', N'1', N'0', N'34') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1296', N'110', N'1', N'110', N'2022-02-23 00:23:55.0000000', N'110', N'2022-02-23 00:23:55.0000000', N'121', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'110', N'1', N'110', N'2022-02-23 00:23:55.0000000', N'110', N'2022-02-23 00:23:55.0000000', N'121', N'0', N'35') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1486', N'109', N'103', N'1', N'2022-02-23 19:32:14.0000000', N'1', N'2022-02-23 19:32:14.0000000', N'121', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'109', N'103', N'1', N'2022-02-23 19:32:14.0000000', N'1', N'2022-02-23 19:32:14.0000000', N'121', N'0', N'36') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1487', N'109', N'104', N'1', N'2022-02-23 19:32:14.0000000', N'1', N'2022-02-23 19:32:14.0000000', N'121', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'109', N'104', N'1', N'2022-02-23 19:32:14.0000000', N'1', N'2022-02-23 19:32:14.0000000', N'121', N'0', N'37') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1489', N'1', N'1', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'1', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'38') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1490', N'1', N'2', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'2', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'39') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1494', N'1', N'1077', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'1077', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'40') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1495', N'1', N'1078', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'1078', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'41') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1496', N'1', N'1083', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'1083', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'42') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1497', N'1', N'1084', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'1084', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'43') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1498', N'1', N'1090', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'1090', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'44') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1499', N'1', N'1093', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'1093', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'45') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1500', N'1', N'1094', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'1094', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'46') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1501', N'1', N'1100', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'1100', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'47') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1502', N'1', N'1107', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'1107', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'48') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1503', N'1', N'1110', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'1110', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'49') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1505', N'1', N'1117', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'1117', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'50') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1506', N'1', N'100', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'100', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'51') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1507', N'1', N'101', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'101', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'52') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1508', N'1', N'102', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'102', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'53') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1509', N'1', N'1126', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'1126', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'54') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1510', N'1', N'103', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'103', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'55') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1511', N'1', N'104', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'104', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'56') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1512', N'1', N'105', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'105', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'57') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1513', N'1', N'106', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'106', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'58') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1514', N'1', N'107', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'107', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'59') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1515', N'1', N'108', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'108', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'60') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1516', N'1', N'109', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'109', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'61') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1517', N'1', N'110', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'110', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'62') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1518', N'1', N'111', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'111', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'63') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1519', N'1', N'112', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'112', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'64') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1520', N'1', N'113', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'113', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'65') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1522', N'1', N'1138', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'1138', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'66') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1525', N'1', N'1224', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'1224', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'67') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1526', N'1', N'1225', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'1225', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'68') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1527', N'1', N'500', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'500', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'69') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1528', N'1', N'501', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'1', N'501', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'2022-02-23 20:03:57.0000000', N'1', N'0', N'70') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1529', N'109', N'1024', N'1', N'2022-02-23 20:30:14.0000000', N'1', N'2022-02-23 20:30:14.0000000', N'121', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'109', N'1024', N'1', N'2022-02-23 20:30:14.0000000', N'1', N'2022-02-23 20:30:14.0000000', N'121', N'0', N'71') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1530', N'109', N'1025', N'1', N'2022-02-23 20:30:14.0000000', N'1', N'2022-02-23 20:30:14.0000000', N'121', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'109', N'1025', N'1', N'2022-02-23 20:30:14.0000000', N'1', N'2022-02-23 20:30:14.0000000', N'121', N'0', N'72') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1536', N'109', N'1017', N'1', N'2022-02-23 20:30:14.0000000', N'1', N'2022-02-23 20:30:14.0000000', N'121', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'109', N'1017', N'1', N'2022-02-23 20:30:14.0000000', N'1', N'2022-02-23 20:30:14.0000000', N'121', N'0', N'73') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1537', N'109', N'1018', N'1', N'2022-02-23 20:30:14.0000000', N'1', N'2022-02-23 20:30:14.0000000', N'121', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'109', N'1018', N'1', N'2022-02-23 20:30:14.0000000', N'1', N'2022-02-23 20:30:14.0000000', N'121', N'0', N'74') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1538', N'109', N'1019', N'1', N'2022-02-23 20:30:14.0000000', N'1', N'2022-02-23 20:30:14.0000000', N'121', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'109', N'1019', N'1', N'2022-02-23 20:30:14.0000000', N'1', N'2022-02-23 20:30:14.0000000', N'121', N'0', N'75') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1539', N'109', N'1020', N'1', N'2022-02-23 20:30:14.0000000', N'1', N'2022-02-23 20:30:14.0000000', N'121', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'109', N'1020', N'1', N'2022-02-23 20:30:14.0000000', N'1', N'2022-02-23 20:30:14.0000000', N'121', N'0', N'76') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1540', N'109', N'1021', N'1', N'2022-02-23 20:30:14.0000000', N'1', N'2022-02-23 20:30:14.0000000', N'121', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'109', N'1021', N'1', N'2022-02-23 20:30:14.0000000', N'1', N'2022-02-23 20:30:14.0000000', N'121', N'0', N'77') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1541', N'109', N'1022', N'1', N'2022-02-23 20:30:14.0000000', N'1', N'2022-02-23 20:30:14.0000000', N'121', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'109', N'1022', N'1', N'2022-02-23 20:30:14.0000000', N'1', N'2022-02-23 20:30:14.0000000', N'121', N'0', N'78') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1542', N'109', N'1023', N'1', N'2022-02-23 20:30:14.0000000', N'1', N'2022-02-23 20:30:14.0000000', N'121', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'109', N'1023', N'1', N'2022-02-23 20:30:14.0000000', N'1', N'2022-02-23 20:30:14.0000000', N'121', N'0', N'79') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1576', N'111', N'1024', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'111', N'1024', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0', N'80') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1577', N'111', N'1025', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'111', N'1025', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0', N'81') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1578', N'111', N'1', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'111', N'1', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0', N'82') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1584', N'111', N'103', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'111', N'103', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0', N'83') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1585', N'111', N'104', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'111', N'104', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0', N'84') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1587', N'111', N'1017', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'111', N'1017', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0', N'85') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1588', N'111', N'1018', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'111', N'1018', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0', N'86') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1589', N'111', N'1019', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'111', N'1019', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0', N'87') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1590', N'111', N'1020', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'111', N'1020', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0', N'88') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1591', N'111', N'1021', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'111', N'1021', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0', N'89') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1592', N'111', N'1022', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'111', N'1022', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0', N'90') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1593', N'111', N'1023', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'111', N'1023', N'1', N'2022-03-07 21:37:58.0000000', N'1', N'2022-03-07 21:37:58.0000000', N'122', N'0', N'91') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1594', N'109', N'102', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'121', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'109', N'102', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'121', N'0', N'92') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1595', N'109', N'1013', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'121', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'109', N'1013', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'121', N'0', N'93') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1596', N'109', N'1014', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'121', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'109', N'1014', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'121', N'0', N'94') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1597', N'109', N'1015', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'121', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'109', N'1015', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'121', N'0', N'95') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1598', N'109', N'1016', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'121', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'109', N'1016', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'121', N'0', N'96') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1599', N'111', N'102', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'122', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'111', N'102', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'122', N'0', N'97') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1600', N'111', N'1013', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'122', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'111', N'1013', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'122', N'0', N'98') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1601', N'111', N'1014', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'122', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'111', N'1014', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'122', N'0', N'99') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1602', N'111', N'1015', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'122', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'111', N'1015', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'122', N'0', N'100') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1603', N'111', N'1016', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'122', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'111', N'1016', N'1', N'2022-03-19 18:39:13.0000000', N'1', N'2022-03-19 18:39:13.0000000', N'122', N'0', N'101') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1604', N'101', N'1216', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1216', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'102') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1605', N'101', N'1217', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1217', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'103') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1606', N'101', N'1218', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1218', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'104') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1607', N'101', N'1219', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1219', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'105') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1608', N'101', N'1220', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1220', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'106') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1609', N'101', N'1221', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1221', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'107') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1610', N'101', N'5', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'5', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'108') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1611', N'101', N'1222', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1222', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'109') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1612', N'101', N'1118', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1118', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'110') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1613', N'101', N'1119', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1119', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'111') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1614', N'101', N'1120', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1120', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'112') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1615', N'101', N'1185', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1185', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'113') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1616', N'101', N'1186', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1186', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'114') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1617', N'101', N'1187', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1187', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'115') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1618', N'101', N'1188', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1188', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'116') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1619', N'101', N'1189', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1189', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'117') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1620', N'101', N'1190', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1190', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'118') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1621', N'101', N'1191', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1191', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'119') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1622', N'101', N'1192', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1192', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'120') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1623', N'101', N'1193', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1193', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'121') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1624', N'101', N'1194', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1194', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'122') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1625', N'101', N'1195', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1195', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'123') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1626', N'101', N'1196', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1196', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'124') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1627', N'101', N'1197', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1197', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'125') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1628', N'101', N'1198', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1198', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'126') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1629', N'101', N'1199', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1199', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'127') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1630', N'101', N'1200', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1200', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'128') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1631', N'101', N'1201', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1201', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'129') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1632', N'101', N'1202', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1202', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'130') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1633', N'101', N'1207', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1207', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'131') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1634', N'101', N'1208', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1208', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'132') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1635', N'101', N'1209', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1209', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'133') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1636', N'101', N'1210', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1210', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'134') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1637', N'101', N'1211', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1211', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'135') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1638', N'101', N'1212', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1212', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'136') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1639', N'101', N'1213', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1213', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'137') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1640', N'101', N'1215', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1215', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'2022-03-19 21:45:52.0000000', N'1', N'0', N'138') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1641', N'101', N'2', N'1', N'2022-04-01 22:21:24.0000000', N'1', N'2022-04-01 22:21:24.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'2', N'1', N'2022-04-01 22:21:24.0000000', N'1', N'2022-04-01 22:21:24.0000000', N'1', N'0', N'139') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1642', N'101', N'1031', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1031', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'140') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1643', N'101', N'1032', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1032', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'141') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1644', N'101', N'1033', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1033', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'142') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1645', N'101', N'1034', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1034', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'143') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1646', N'101', N'1035', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1035', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'144') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1647', N'101', N'1050', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1050', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'145') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1648', N'101', N'1051', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1051', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'146') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1649', N'101', N'1052', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1052', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'147') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1650', N'101', N'1053', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1053', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'148') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1651', N'101', N'1054', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1054', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'149') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1652', N'101', N'1056', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1056', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'150') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1653', N'101', N'1057', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1057', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'151') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1654', N'101', N'1058', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1058', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'152') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1655', N'101', N'1059', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1059', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'153') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1656', N'101', N'1060', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1060', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'154') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1657', N'101', N'1066', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1066', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'155') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1658', N'101', N'1067', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1067', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'156') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1659', N'101', N'1070', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1070', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'157') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1660', N'101', N'1071', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1071', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'158') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1661', N'101', N'1072', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1072', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'159') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1662', N'101', N'1073', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1073', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'160') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1663', N'101', N'1074', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1074', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'161') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1664', N'101', N'1075', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1075', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'162') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1665', N'101', N'1076', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1076', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'163') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1666', N'101', N'1077', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1077', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'164') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1667', N'101', N'1078', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1078', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'165') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1668', N'101', N'1082', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1082', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'166') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1669', N'101', N'1083', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1083', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'167') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1670', N'101', N'1084', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1084', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'168') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1671', N'101', N'1085', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1085', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'169') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1672', N'101', N'1086', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1086', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'170') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1673', N'101', N'1087', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1087', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'171') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1674', N'101', N'1088', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1088', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'172') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1675', N'101', N'1089', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1089', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'173') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1676', N'101', N'1090', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1090', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'174') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1677', N'101', N'1091', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1091', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'175') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1678', N'101', N'1092', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1092', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'176') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1679', N'101', N'1237', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1237', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'177') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1680', N'101', N'1238', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1238', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'178') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1681', N'101', N'1239', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1239', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'179') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1682', N'101', N'1240', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1240', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'180') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1683', N'101', N'1241', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1241', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'181') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1684', N'101', N'1242', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1242', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'182') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1685', N'101', N'1243', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'1243', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'183') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1687', N'101', N'106', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'106', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'184') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1688', N'101', N'110', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'110', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'185') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1689', N'101', N'111', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'111', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'186') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1690', N'101', N'112', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'112', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'187') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1691', N'101', N'113', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'113', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'188') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1692', N'101', N'114', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'114', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'189') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1693', N'101', N'115', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'115', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'190') GO -INSERT INTO [dbo].[system_role_menu] ([id], [role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1694', N'101', N'116', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0') +INSERT INTO [dbo].[system_role_menu] ([role_id], [menu_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted], [id]) VALUES (N'101', N'116', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'2022-04-01 22:21:37.0000000', N'1', N'0', N'191') GO SET IDENTITY_INSERT [dbo].[system_role_menu] OFF @@ -10222,22 +11051,22 @@ GO SET IDENTITY_INSERT [dbo].[system_user_role] ON GO -INSERT INTO [dbo].[system_user_role] ([id], [user_id], [role_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1', N'1', N'1', N'', NULL, N'', NULL, N'1', N'0') +INSERT INTO [dbo].[system_user_role] ([id], [user_id], [role_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1', N'1', N'1', N'', N'2022-01-11 13:19:45.0000000', N'', N'2022-01-11 13:19:45.0000000', N'1', N'0') GO -INSERT INTO [dbo].[system_user_role] ([id], [user_id], [role_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'2', N'2', N'2', N'', NULL, N'', NULL, N'1', N'0') +INSERT INTO [dbo].[system_user_role] ([id], [user_id], [role_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'2', N'2', N'2', N'', N'2022-01-11 13:19:45.0000000', N'', N'2022-01-11 13:19:45.0000000', N'1', N'0') GO -INSERT INTO [dbo].[system_user_role] ([id], [user_id], [role_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'4', N'100', N'101', N'', NULL, N'', NULL, N'1', N'0') +INSERT INTO [dbo].[system_user_role] ([id], [user_id], [role_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'4', N'100', N'101', N'', N'2022-01-11 13:19:45.0000000', N'', N'2022-01-11 13:19:45.0000000', N'1', N'0') GO -INSERT INTO [dbo].[system_user_role] ([id], [user_id], [role_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'5', N'100', N'1', N'', NULL, N'', NULL, N'1', N'0') +INSERT INTO [dbo].[system_user_role] ([id], [user_id], [role_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'5', N'100', N'1', N'', N'2022-01-11 13:19:45.0000000', N'', N'2022-01-11 13:19:45.0000000', N'1', N'0') GO -INSERT INTO [dbo].[system_user_role] ([id], [user_id], [role_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'6', N'100', N'2', N'', NULL, N'', NULL, N'1', N'0') +INSERT INTO [dbo].[system_user_role] ([id], [user_id], [role_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'6', N'100', N'2', N'', N'2022-01-11 13:19:45.0000000', N'', N'2022-01-11 13:19:45.0000000', N'1', N'0') GO -INSERT INTO [dbo].[system_user_role] ([id], [user_id], [role_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'7', N'104', N'101', N'', NULL, N'', NULL, N'1', N'0') +INSERT INTO [dbo].[system_user_role] ([id], [user_id], [role_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'7', N'104', N'101', N'', N'2022-01-11 13:19:45.0000000', N'', N'2022-01-11 13:19:45.0000000', N'1', N'0') GO INSERT INTO [dbo].[system_user_role] ([id], [user_id], [role_id], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'10', N'103', N'1', N'1', N'2022-01-11 13:19:45.0000000', N'1', N'2022-01-11 13:19:45.0000000', N'1', N'0') @@ -10271,155 +11100,6 @@ COMMIT GO --- ---------------------------- --- Table structure for system_user_session --- ---------------------------- -IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[system_user_session]') AND type IN ('U')) - DROP TABLE [dbo].[system_user_session] -GO - -CREATE TABLE [dbo].[system_user_session] ( - [id] bigint IDENTITY(1,1) NOT NULL, - [token] nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [user_id] bigint NOT NULL, - [user_type] tinyint NOT NULL, - [session_timeout] datetime2(7) NOT NULL, - [username] nvarchar(30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [user_ip] nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [user_agent] nvarchar(512) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [creator] nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [create_time] datetime2(7) NOT NULL, - [updater] nvarchar(64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [update_time] datetime2(7) NOT NULL, - [tenant_id] bigint NOT NULL, - [deleted] bit DEFAULT 0 NOT NULL -) -GO - -ALTER TABLE [dbo].[system_user_session] SET (LOCK_ESCALATION = TABLE) -GO - -EXEC sp_addextendedproperty -'MS_Description', N'ID 编号', -'SCHEMA', N'dbo', -'TABLE', N'system_user_session', -'COLUMN', N'id' -GO - -EXEC sp_addextendedproperty -'MS_Description', N'Token 编号', -'SCHEMA', N'dbo', -'TABLE', N'system_user_session', -'COLUMN', N'token' -GO - -EXEC sp_addextendedproperty -'MS_Description', N'用户编号', -'SCHEMA', N'dbo', -'TABLE', N'system_user_session', -'COLUMN', N'user_id' -GO - -EXEC sp_addextendedproperty -'MS_Description', N'用户类型', -'SCHEMA', N'dbo', -'TABLE', N'system_user_session', -'COLUMN', N'user_type' -GO - -EXEC sp_addextendedproperty -'MS_Description', N'会话超时时间', -'SCHEMA', N'dbo', -'TABLE', N'system_user_session', -'COLUMN', N'session_timeout' -GO - -EXEC sp_addextendedproperty -'MS_Description', N'用户账号', -'SCHEMA', N'dbo', -'TABLE', N'system_user_session', -'COLUMN', N'username' -GO - -EXEC sp_addextendedproperty -'MS_Description', N'用户 IP', -'SCHEMA', N'dbo', -'TABLE', N'system_user_session', -'COLUMN', N'user_ip' -GO - -EXEC sp_addextendedproperty -'MS_Description', N'浏览器 UA', -'SCHEMA', N'dbo', -'TABLE', N'system_user_session', -'COLUMN', N'user_agent' -GO - -EXEC sp_addextendedproperty -'MS_Description', N'创建者', -'SCHEMA', N'dbo', -'TABLE', N'system_user_session', -'COLUMN', N'creator' -GO - -EXEC sp_addextendedproperty -'MS_Description', N'创建时间', -'SCHEMA', N'dbo', -'TABLE', N'system_user_session', -'COLUMN', N'create_time' -GO - -EXEC sp_addextendedproperty -'MS_Description', N'更新者', -'SCHEMA', N'dbo', -'TABLE', N'system_user_session', -'COLUMN', N'updater' -GO - -EXEC sp_addextendedproperty -'MS_Description', N'更新时间', -'SCHEMA', N'dbo', -'TABLE', N'system_user_session', -'COLUMN', N'update_time' -GO - -EXEC sp_addextendedproperty -'MS_Description', N'租户编号', -'SCHEMA', N'dbo', -'TABLE', N'system_user_session', -'COLUMN', N'tenant_id' -GO - -EXEC sp_addextendedproperty -'MS_Description', N'是否删除', -'SCHEMA', N'dbo', -'TABLE', N'system_user_session', -'COLUMN', N'deleted' -GO - -EXEC sp_addextendedproperty -'MS_Description', N'用户在线 Session', -'SCHEMA', N'dbo', -'TABLE', N'system_user_session' -GO - - --- ---------------------------- --- Records of system_user_session --- ---------------------------- -BEGIN TRANSACTION -GO - -SET IDENTITY_INSERT [dbo].[system_user_session] ON -GO - -SET IDENTITY_INSERT [dbo].[system_user_session] OFF -GO - -COMMIT -GO - - -- ---------------------------- -- Table structure for system_users -- ---------------------------- @@ -10610,10 +11290,10 @@ GO SET IDENTITY_INSERT [dbo].[system_users] ON GO -INSERT INTO [dbo].[system_users] ([id], [username], [password], [nickname], [remark], [dept_id], [post_ids], [email], [mobile], [sex], [avatar], [status], [login_ip], [login_date], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1', N'admin', N'$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', N'芋道源码', N'管理员', N'103', N'[1]', N'aoteman@126.com', N'15612345678', N'1', N'http://test.yudao.iocoder.cn/48934f2f-92d4-4250-b917-d10d2b262c6a', N'0', N'127.0.0.1', N'2022-05-02 17:16:18.5800000', N'admin', N'2021-01-05 17:03:47.0000000', N'1', N'2022-05-02 17:18:53.7370000', N'1', N'0') +INSERT INTO [dbo].[system_users] ([id], [username], [password], [nickname], [remark], [dept_id], [post_ids], [email], [mobile], [sex], [avatar], [status], [login_ip], [login_date], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'1', N'admin', N'$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', N'芋道源码', N'管理员', N'103', N'[1]', N'aoteman@126.com', N'15612345678', N'1', N'http://test.yudao.iocoder.cn/48934f2f-92d4-4250-b917-d10d2b262c6a', N'0', N'127.0.0.1', N'2022-05-26 00:51:15.3820000', N'admin', N'2021-01-05 17:03:47.0000000', NULL, N'2022-05-26 00:51:15.3870000', N'1', N'0') GO -INSERT INTO [dbo].[system_users] ([id], [username], [password], [nickname], [remark], [dept_id], [post_ids], [email], [mobile], [sex], [avatar], [status], [login_ip], [login_date], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'100', N'yudao', N'$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', N'芋道', N'不要吓我', N'104', N'[1]', N'yudao@iocoder.cn', N'15601691300', N'1', N'', N'1', N'', NULL, N'', N'2021-01-07 09:07:17.0000000', N'104', N'2021-12-16 09:26:10.0000000', N'1', N'0') +INSERT INTO [dbo].[system_users] ([id], [username], [password], [nickname], [remark], [dept_id], [post_ids], [email], [mobile], [sex], [avatar], [status], [login_ip], [login_date], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'100', N'yudao', N'$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', N'芋道', N'不要吓我', N'104', N'[1]', N'yudao@iocoder.cn', N'15601691300', N'1', N'', N'1', N'127.0.0.1', N'2022-05-03 16:49:24.6860000', N'', N'2021-01-07 09:07:17.0000000', NULL, N'2022-05-03 16:49:24.6860000', N'1', N'0') GO INSERT INTO [dbo].[system_users] ([id], [username], [password], [nickname], [remark], [dept_id], [post_ids], [email], [mobile], [sex], [avatar], [status], [login_ip], [login_date], [creator], [create_time], [updater], [update_time], [tenant_id], [deleted]) VALUES (N'103', N'yuanma', N'$2a$10$wWoPT7sqriM2O1YXRL.je.GiL538OR6ZTN8aQZr9JAGdnpCH2tpYe', N'源码', NULL, N'106', NULL, N'yuanma@iocoder.cn', N'15601701300', N'0', N'', N'0', N'127.0.0.1', N'2022-01-18 00:33:40.0000000', N'', N'2021-01-13 23:50:35.0000000', NULL, N'2022-01-18 00:33:40.0000000', N'1', N'0') @@ -10909,7 +11589,7 @@ GO -- ---------------------------- -- Auto increment value for infra_api_access_log -- ---------------------------- -DBCC CHECKIDENT ('[dbo].[infra_api_access_log]', RESEED, 40316) +DBCC CHECKIDENT ('[dbo].[infra_api_access_log]', RESEED, 40615) GO @@ -10925,7 +11605,7 @@ GO -- ---------------------------- -- Auto increment value for infra_api_error_log -- ---------------------------- -DBCC CHECKIDENT ('[dbo].[infra_api_error_log]', RESEED, 2014) +DBCC CHECKIDENT ('[dbo].[infra_api_error_log]', RESEED, 2021) GO @@ -11236,7 +11916,7 @@ GO -- ---------------------------- -- Auto increment value for system_dict_data -- ---------------------------- -DBCC CHECKIDENT ('[dbo].[system_dict_data]', RESEED, 1154) +DBCC CHECKIDENT ('[dbo].[system_dict_data]', RESEED, 1160) GO @@ -11252,7 +11932,7 @@ GO -- ---------------------------- -- Auto increment value for system_dict_type -- ---------------------------- -DBCC CHECKIDENT ('[dbo].[system_dict_type]', RESEED, 146) +DBCC CHECKIDENT ('[dbo].[system_dict_type]', RESEED, 147) GO @@ -11268,7 +11948,7 @@ GO -- ---------------------------- -- Auto increment value for system_error_code -- ---------------------------- -DBCC CHECKIDENT ('[dbo].[system_error_code]', RESEED, 15452) +DBCC CHECKIDENT ('[dbo].[system_error_code]', RESEED, 15466) GO @@ -11284,7 +11964,7 @@ GO -- ---------------------------- -- Auto increment value for system_login_log -- ---------------------------- -DBCC CHECKIDENT ('[dbo].[system_login_log]', RESEED, 9) +DBCC CHECKIDENT ('[dbo].[system_login_log]', RESEED, 24) GO @@ -11300,7 +11980,7 @@ GO -- ---------------------------- -- Auto increment value for system_menu -- ---------------------------- -DBCC CHECKIDENT ('[dbo].[system_menu]', RESEED, 1260) +DBCC CHECKIDENT ('[dbo].[system_menu]', RESEED, 1267) GO @@ -11329,10 +12009,72 @@ ON [PRIMARY] GO +-- ---------------------------- +-- Auto increment value for system_oauth2_access_token +-- ---------------------------- +DBCC CHECKIDENT ('[dbo].[system_oauth2_access_token]', RESEED, 5) +GO + + +-- ---------------------------- +-- Auto increment value for system_oauth2_approve +-- ---------------------------- +DBCC CHECKIDENT ('[dbo].[system_oauth2_approve]', RESEED, 2) +GO + + +-- ---------------------------- +-- Primary Key structure for table system_oauth2_approve +-- ---------------------------- +ALTER TABLE [dbo].[system_oauth2_approve] ADD CONSTRAINT [PK__system_o__3213E83F7CC08ED6] PRIMARY KEY CLUSTERED ([id]) +WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) +ON [PRIMARY] +GO + + +-- ---------------------------- +-- Auto increment value for system_oauth2_client +-- ---------------------------- +DBCC CHECKIDENT ('[dbo].[system_oauth2_client]', RESEED, 1) +GO + + +-- ---------------------------- +-- Auto increment value for system_oauth2_code +-- ---------------------------- +DBCC CHECKIDENT ('[dbo].[system_oauth2_code]', RESEED, 4) +GO + + +-- ---------------------------- +-- Primary Key structure for table system_oauth2_code +-- ---------------------------- +ALTER TABLE [dbo].[system_oauth2_code] ADD CONSTRAINT [PK__system_o__3213E83F38C13543] PRIMARY KEY CLUSTERED ([id]) +WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) +ON [PRIMARY] +GO + + +-- ---------------------------- +-- Auto increment value for system_oauth2_refresh_token +-- ---------------------------- +DBCC CHECKIDENT ('[dbo].[system_oauth2_refresh_token]', RESEED, 3) +GO + + +-- ---------------------------- +-- Primary Key structure for table system_oauth2_refresh_token +-- ---------------------------- +ALTER TABLE [dbo].[system_oauth2_refresh_token] ADD CONSTRAINT [PK__system_o__3213E83FCFB541CC] PRIMARY KEY CLUSTERED ([id]) +WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) +ON [PRIMARY] +GO + + -- ---------------------------- -- Auto increment value for system_operate_log -- ---------------------------- -DBCC CHECKIDENT ('[dbo].[system_operate_log]', RESEED, 17) +DBCC CHECKIDENT ('[dbo].[system_operate_log]', RESEED, 19) GO @@ -11380,14 +12122,14 @@ GO -- ---------------------------- -- Auto increment value for system_role_menu -- ---------------------------- -DBCC CHECKIDENT ('[dbo].[system_role_menu]', RESEED, 1694) +DBCC CHECKIDENT ('[dbo].[system_role_menu]', RESEED, 191) GO -- ---------------------------- -- Primary Key structure for table system_role_menu -- ---------------------------- -ALTER TABLE [dbo].[system_role_menu] ADD CONSTRAINT [PK__system_r__3213E83F3C38A7EE] PRIMARY KEY CLUSTERED ([id]) +ALTER TABLE [dbo].[system_role_menu] ADD CONSTRAINT [PK__system_r__3213E83F6F1E4A9B] PRIMARY KEY CLUSTERED ([id]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO @@ -11428,7 +12170,7 @@ GO -- ---------------------------- -- Auto increment value for system_sms_code -- ---------------------------- -DBCC CHECKIDENT ('[dbo].[system_sms_code]', RESEED, 466) +DBCC CHECKIDENT ('[dbo].[system_sms_code]', RESEED, 470) GO @@ -11444,7 +12186,7 @@ GO -- ---------------------------- -- Auto increment value for system_sms_log -- ---------------------------- -DBCC CHECKIDENT ('[dbo].[system_sms_log]', RESEED, 2) +DBCC CHECKIDENT ('[dbo].[system_sms_log]', RESEED, 6) GO @@ -11569,22 +12311,6 @@ ON [PRIMARY] GO --- ---------------------------- --- Auto increment value for system_user_session --- ---------------------------- -DBCC CHECKIDENT ('[dbo].[system_user_session]', RESEED, 1) -GO - - --- ---------------------------- --- Primary Key structure for table system_user_session --- ---------------------------- -ALTER TABLE [dbo].[system_user_session] ADD CONSTRAINT [PK__system_u__3213E83F42C4B10F] PRIMARY KEY CLUSTERED ([id]) -WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) -ON [PRIMARY] -GO - - -- ---------------------------- -- Auto increment value for system_users -- ---------------------------- diff --git a/yudao-dependencies/pom.xml b/yudao-dependencies/pom.xml index 5a7e152aec..37a2c8a1b7 100644 --- a/yudao-dependencies/pom.xml +++ b/yudao-dependencies/pom.xml @@ -22,7 +22,6 @@ 1.5.22 2.5 - 5.1.46 1.2.8 3.4.3.4 3.5.2 @@ -76,12 +75,6 @@ ${spring.boot.version} pom import - - - mysql - mysql-connector-java - - @@ -179,11 +172,6 @@ ${revision} - - mysql - mysql-connector-java - ${mysql.version} - com.alibaba druid-spring-boot-starter diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/collection/CollectionUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/collection/CollectionUtils.java index 1ea74ee29b..6b83bb3d6c 100644 --- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/collection/CollectionUtils.java +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/collection/CollectionUtils.java @@ -54,6 +54,13 @@ public class CollectionUtils { return from.stream().map(func).filter(Objects::nonNull).collect(Collectors.toList()); } + public static List convertList(Collection from, Function func, Predicate filter) { + if (CollUtil.isEmpty(from)) { + return new ArrayList<>(); + } + return from.stream().filter(filter).map(func).filter(Objects::nonNull).collect(Collectors.toList()); + } + public static Set convertSet(Collection from, Function func) { if (CollUtil.isEmpty(from)) { return new HashSet<>(); @@ -61,6 +68,13 @@ public class CollectionUtils { return from.stream().map(func).filter(Objects::nonNull).collect(Collectors.toSet()); } + public static Set convertSet(Collection from, Function func, Predicate filter) { + if (CollUtil.isEmpty(from)) { + return new HashSet<>(); + } + return from.stream().filter(filter).map(func).filter(Objects::nonNull).collect(Collectors.toSet()); + } + public static Map convertMap(Collection from, Function keyFunc) { if (CollUtil.isEmpty(from)) { return new HashMap<>(); diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/http/HttpUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/http/HttpUtils.java index 2eb4f34eb7..d36b2c3089 100644 --- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/http/HttpUtils.java +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/http/HttpUtils.java @@ -1,10 +1,18 @@ package cn.iocoder.yudao.framework.common.util.http; +import cn.hutool.core.codec.Base64; import cn.hutool.core.map.TableMap; import cn.hutool.core.net.url.UrlBuilder; import cn.hutool.core.util.ReflectUtil; +import cn.hutool.core.util.StrUtil; +import org.springframework.util.StringUtils; +import org.springframework.web.util.UriComponents; +import org.springframework.web.util.UriComponentsBuilder; +import javax.servlet.http.HttpServletRequest; +import java.net.URI; import java.nio.charset.Charset; +import java.util.Map; /** * HTTP 工具类 @@ -25,4 +33,94 @@ public class HttpUtils { return builder.build(); } + private String append(String base, Map query, boolean fragment) { + return append(base, query, null, fragment); + } + + /** + * 拼接 URL + * + * copy from Spring Security OAuth2 的 AuthorizationEndpoint 类的 append 方法 + * + * @param base 基础 URL + * @param query 查询参数 + * @param keys query 的 key,对应的原本的 key 的映射。例如说 query 里有个 key 是 xx,实际它的 key 是 extra_xx,则通过 keys 里添加这个映射 + * @param fragment URL 的 fragment,即拼接到 # 中 + * @return 拼接后的 URL + */ + public static String append(String base, Map query, Map keys, boolean fragment) { + UriComponentsBuilder template = UriComponentsBuilder.newInstance(); + UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(base); + URI redirectUri; + try { + // assume it's encoded to start with (if it came in over the wire) + redirectUri = builder.build(true).toUri(); + } catch (Exception e) { + // ... but allow client registrations to contain hard-coded non-encoded values + redirectUri = builder.build().toUri(); + builder = UriComponentsBuilder.fromUri(redirectUri); + } + template.scheme(redirectUri.getScheme()).port(redirectUri.getPort()).host(redirectUri.getHost()) + .userInfo(redirectUri.getUserInfo()).path(redirectUri.getPath()); + + if (fragment) { + StringBuilder values = new StringBuilder(); + if (redirectUri.getFragment() != null) { + String append = redirectUri.getFragment(); + values.append(append); + } + for (String key : query.keySet()) { + if (values.length() > 0) { + values.append("&"); + } + String name = key; + if (keys != null && keys.containsKey(key)) { + name = keys.get(key); + } + values.append(name).append("={").append(key).append("}"); + } + if (values.length() > 0) { + template.fragment(values.toString()); + } + UriComponents encoded = template.build().expand(query).encode(); + builder.fragment(encoded.getFragment()); + } else { + for (String key : query.keySet()) { + String name = key; + if (keys != null && keys.containsKey(key)) { + name = keys.get(key); + } + template.queryParam(name, "{" + key + "}"); + } + template.fragment(redirectUri.getFragment()); + UriComponents encoded = template.build().expand(query).encode(); + builder.query(encoded.getQuery()); + } + return builder.build().toUriString(); + } + + public static String[] obtainBasicAuthorization(HttpServletRequest request) { + String clientId; + String clientSecret; + // 先从 Header 中获取 + String authorization = request.getHeader("Authorization"); + authorization = StrUtil.subAfter(authorization, "Basic ", true); + if (StringUtils.hasText(authorization)) { + authorization = Base64.decodeStr(authorization); + clientId = StrUtil.subBefore(authorization, ":", false); + clientSecret = StrUtil.subAfter(authorization, ":", false); + // 再从 Param 中获取 + } else { + clientId = request.getParameter("client_id"); + clientSecret = request.getParameter("client_secret"); + } + + // 如果两者非空,则返回 + if (StrUtil.isNotEmpty(clientId) && StrUtil.isNotEmpty(clientSecret)) { + return new String[]{clientId, clientSecret}; + } + return null; + } + + } diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/JsonUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/JsonUtils.java index 21dc101f92..2a46edf6a3 100644 --- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/JsonUtils.java +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/JsonUtils.java @@ -113,8 +113,7 @@ public class JsonUtils { } } - // TODO @Li:和上面的风格保持一致哈。parseTree - public static JsonNode readTree(String text) { + public static JsonNode parseTree(String text) { try { return objectMapper.readTree(text); } catch (IOException e) { @@ -123,7 +122,7 @@ public class JsonUtils { } } - public static JsonNode readTree(byte[] text) { + public static JsonNode parseTree(byte[] text) { try { return objectMapper.readTree(text); } catch (IOException e) { @@ -132,4 +131,8 @@ public class JsonUtils { } } + public static boolean isJson(String text) { + return JSONUtil.isJson(text); + } + } diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/string/StrUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/string/StrUtils.java index e81a52204b..3f79ceea61 100644 --- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/string/StrUtils.java +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/string/StrUtils.java @@ -1,9 +1,9 @@ package cn.iocoder.yudao.framework.common.util.string; -import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; -import java.util.Map; +import java.util.Collection; /** * 字符串工具类 @@ -17,21 +17,24 @@ public class StrUtils { } /** - * 指定字符串的 - * @param str - * @param replaceMap - * @return + * 给定字符串是否以任何一个字符串开始 + * 给定字符串和数组为空都返回 false + * + * @param str 给定字符串 + * @param prefixes 需要检测的开始字符串 + * @since 3.0.6 */ - public static String replace(String str, Map replaceMap) { - assert StrUtil.isNotBlank(str); - if (ObjectUtil.isEmpty(replaceMap)) { - return str; + public static boolean startWithAny(String str, Collection prefixes) { + if (StrUtil.isEmpty(str) || ArrayUtil.isEmpty(prefixes)) { + return false; } - String result = null; - for (String key : replaceMap.keySet()) { - result = str.replace(key, replaceMap.get(key)); + + for (CharSequence suffix : prefixes) { + if (StrUtil.startWith(str, suffix, false)) { + return true; + } } - return result; + return false; } } diff --git a/yudao-framework/yudao-spring-boot-starter-biz-data-permission/pom.xml b/yudao-framework/yudao-spring-boot-starter-biz-data-permission/pom.xml index 802ff1904e..09e878688b 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-data-permission/pom.xml +++ b/yudao-framework/yudao-spring-boot-starter-biz-data-permission/pom.xml @@ -34,6 +34,13 @@ yudao-spring-boot-starter-mybatis + + + cn.iocoder.boot + yudao-module-system-api + ${revision} + + cn.iocoder.boot diff --git a/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/config/YudaoDeptDataPermissionAutoConfiguration.java b/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/config/YudaoDeptDataPermissionAutoConfiguration.java index b66c176744..92da456ee3 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/config/YudaoDeptDataPermissionAutoConfiguration.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/config/YudaoDeptDataPermissionAutoConfiguration.java @@ -1,9 +1,9 @@ package cn.iocoder.yudao.framework.datapermission.config; -import cn.iocoder.yudao.framework.datapermission.core.dept.rule.DeptDataPermissionRule; -import cn.iocoder.yudao.framework.datapermission.core.dept.rule.DeptDataPermissionRuleCustomizer; -import cn.iocoder.yudao.framework.datapermission.core.dept.service.DeptDataPermissionFrameworkService; +import cn.iocoder.yudao.framework.datapermission.core.rule.dept.DeptDataPermissionRule; +import cn.iocoder.yudao.framework.datapermission.core.rule.dept.DeptDataPermissionRuleCustomizer; import cn.iocoder.yudao.framework.security.core.LoginUser; +import cn.iocoder.yudao.module.system.api.permission.PermissionApi; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.context.annotation.Bean; @@ -18,14 +18,14 @@ import java.util.List; */ @Configuration @ConditionalOnClass(LoginUser.class) -@ConditionalOnBean(value = {DeptDataPermissionFrameworkService.class, DeptDataPermissionRuleCustomizer.class}) +@ConditionalOnBean(value = {PermissionApi.class, DeptDataPermissionRuleCustomizer.class}) public class YudaoDeptDataPermissionAutoConfiguration { @Bean - public DeptDataPermissionRule deptDataPermissionRule(DeptDataPermissionFrameworkService service, + public DeptDataPermissionRule deptDataPermissionRule(PermissionApi permissionApi, List customizers) { // 创建 DeptDataPermissionRule 对象 - DeptDataPermissionRule rule = new DeptDataPermissionRule(service); + DeptDataPermissionRule rule = new DeptDataPermissionRule(permissionApi); // 补全表配置 customizers.forEach(customizer -> customizer.customize(rule)); return rule; diff --git a/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/dept/service/DeptDataPermissionFrameworkService.java b/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/dept/service/DeptDataPermissionFrameworkService.java deleted file mode 100644 index 3ee6167550..0000000000 --- a/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/dept/service/DeptDataPermissionFrameworkService.java +++ /dev/null @@ -1,22 +0,0 @@ -package cn.iocoder.yudao.framework.datapermission.core.dept.service; - -import cn.iocoder.yudao.framework.datapermission.core.dept.service.dto.DeptDataPermissionRespDTO; -import cn.iocoder.yudao.framework.security.core.LoginUser; - -/** - * 基于部门的数据权限 Framework Service 接口 - * 目前的实现类是 SysPermissionServiceImpl 类 - * - * @author 芋道源码 - */ -public interface DeptDataPermissionFrameworkService { - - /** - * 获得登陆用户的部门数据权限 - * - * @param loginUser 登陆用户 - * @return 部门数据权限 - */ - DeptDataPermissionRespDTO getDeptDataPermission(LoginUser loginUser); - -} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/dept/rule/DeptDataPermissionRule.java b/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java similarity index 81% rename from yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/dept/rule/DeptDataPermissionRule.java rename to yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java index ed9168ba06..7f9a74a613 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/dept/rule/DeptDataPermissionRule.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java @@ -1,9 +1,9 @@ -package cn.iocoder.yudao.framework.datapermission.core.dept.rule; +package cn.iocoder.yudao.framework.datapermission.core.rule.dept; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import cn.iocoder.yudao.framework.datapermission.core.dept.service.DeptDataPermissionFrameworkService; -import cn.iocoder.yudao.framework.datapermission.core.dept.service.dto.DeptDataPermissionRespDTO; +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.json.JsonUtils; import cn.iocoder.yudao.framework.datapermission.core.rule.DataPermissionRule; @@ -11,9 +11,10 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import cn.iocoder.yudao.module.system.api.permission.PermissionApi; +import cn.iocoder.yudao.module.system.api.permission.dto.DeptDataPermissionRespDTO; import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; import lombok.AllArgsConstructor; -import lombok.Getter; import lombok.extern.slf4j.Slf4j; import net.sf.jsqlparser.expression.Alias; import net.sf.jsqlparser.expression.Expression; @@ -50,12 +51,17 @@ import java.util.Set; @Slf4j public class DeptDataPermissionRule implements DataPermissionRule { + /** + * LoginUser 的 Context 缓存 Key + */ + protected static final String CONTEXT_KEY = DeptDataPermissionRule.class.getSimpleName(); + private static final String DEPT_COLUMN_NAME = "dept_id"; private static final String USER_COLUMN_NAME = "user_id"; static final Expression EXPRESSION_NULL = new NullValue(); - private final DeptDataPermissionFrameworkService deptDataPermissionService; + private final PermissionApi permissionApi; /** * 基于部门的表字段配置 @@ -90,13 +96,23 @@ public class DeptDataPermissionRule implements DataPermissionRule { if (loginUser == null) { return null; } + // 只有管理员类型的用户,才进行数据权限的处理 + if (ObjectUtil.notEqual(loginUser.getUserType(), UserTypeEnum.ADMIN.getValue())) { + return null; + } // 获得数据权限 - DeptDataPermissionRespDTO deptDataPermission = deptDataPermissionService.getDeptDataPermission(loginUser); + DeptDataPermissionRespDTO deptDataPermission = loginUser.getContext(CONTEXT_KEY, DeptDataPermissionRespDTO.class); + // 从上下文中拿不到,则调用逻辑进行获取 if (deptDataPermission == null) { - log.error("[getExpression][LoginUser({}) 获取数据权限为 null]", JsonUtils.toJsonString(loginUser)); - throw new NullPointerException(String.format("LoginUser(%d) Table(%s/%s) 未返回数据权限", - loginUser.getId(), tableName, tableAlias.getName())); + deptDataPermission = permissionApi.getDeptDataPermission(loginUser.getId()); + if (deptDataPermission == null) { + log.error("[getExpression][LoginUser({}) 获取数据权限为 null]", JsonUtils.toJsonString(loginUser)); + throw new NullPointerException(String.format("LoginUser(%d) Table(%s/%s) 未返回数据权限", + loginUser.getId(), tableName, tableAlias.getName())); + } + // 添加到上下文中,避免重复计算 + loginUser.setContext(CONTEXT_KEY, deptDataPermission); } // 情况一,如果是 ALL 可查看全部,则无需拼接条件 @@ -111,8 +127,8 @@ public class DeptDataPermissionRule implements DataPermissionRule { } // 情况三,拼接 Dept 和 User 的条件,最后组合 - Expression deptExpression = this.buildDeptExpression(tableName,tableAlias, deptDataPermission.getDeptIds()); - Expression userExpression = this.buildUserExpression(tableName, tableAlias, deptDataPermission.getSelf(), loginUser.getId()); + Expression deptExpression = buildDeptExpression(tableName,tableAlias, deptDataPermission.getDeptIds()); + Expression userExpression = buildUserExpression(tableName, tableAlias, deptDataPermission.getSelf(), loginUser.getId()); if (deptExpression == null && userExpression == null) { // TODO 芋艿:获得不到条件的时候,暂时不抛出异常,而是不返回数据 log.warn("[getExpression][LoginUser({}) Table({}/{}) DeptDataPermission({}) 构建的条件为空]", diff --git a/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/dept/rule/DeptDataPermissionRuleCustomizer.java b/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/rule/dept/DeptDataPermissionRuleCustomizer.java similarity index 89% rename from yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/dept/rule/DeptDataPermissionRuleCustomizer.java rename to yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/rule/dept/DeptDataPermissionRuleCustomizer.java index 5341ee5e4d..e5e4f578cf 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/dept/rule/DeptDataPermissionRuleCustomizer.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/rule/dept/DeptDataPermissionRuleCustomizer.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.framework.datapermission.core.dept.rule; +package cn.iocoder.yudao.framework.datapermission.core.rule.dept; /** * {@link DeptDataPermissionRule} 的自定义配置接口 diff --git a/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/dept/package-info.java b/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/rule/dept/package-info.java similarity index 52% rename from yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/dept/package-info.java rename to yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/rule/dept/package-info.java index 20daa85c55..66e9326801 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/dept/package-info.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/rule/dept/package-info.java @@ -3,4 +3,4 @@ * * @author 芋道源码 */ -package cn.iocoder.yudao.framework.datapermission.core.dept; +package cn.iocoder.yudao.framework.datapermission.core.rule.dept; diff --git a/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/test/java/cn/iocoder/yudao/framework/datapermission/core/dept/rule/DeptDataPermissionRuleTest.java b/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/test/java/cn/iocoder/yudao/framework/datapermission/core/rule/dept/DeptDataPermissionRuleTest.java similarity index 79% rename from yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/test/java/cn/iocoder/yudao/framework/datapermission/core/dept/rule/DeptDataPermissionRuleTest.java rename to yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/test/java/cn/iocoder/yudao/framework/datapermission/core/rule/dept/DeptDataPermissionRuleTest.java index 7282c1816e..a50e2382f5 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/test/java/cn/iocoder/yudao/framework/datapermission/core/dept/rule/DeptDataPermissionRuleTest.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/test/java/cn/iocoder/yudao/framework/datapermission/core/rule/dept/DeptDataPermissionRuleTest.java @@ -1,10 +1,11 @@ -package cn.iocoder.yudao.framework.datapermission.core.dept.rule; +package cn.iocoder.yudao.framework.datapermission.core.rule.dept; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ReflectUtil; +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.util.collection.SetUtils; -import cn.iocoder.yudao.framework.datapermission.core.dept.service.DeptDataPermissionFrameworkService; -import cn.iocoder.yudao.framework.datapermission.core.dept.service.dto.DeptDataPermissionRespDTO; +import cn.iocoder.yudao.module.system.api.permission.PermissionApi; +import cn.iocoder.yudao.module.system.api.permission.dto.DeptDataPermissionRespDTO; import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest; @@ -18,7 +19,7 @@ import org.mockito.MockedStatic; import java.util.Map; -import static cn.iocoder.yudao.framework.datapermission.core.dept.rule.DeptDataPermissionRule.EXPRESSION_NULL; +import static cn.iocoder.yudao.framework.datapermission.core.rule.dept.DeptDataPermissionRule.EXPRESSION_NULL; import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString; import static org.junit.jupiter.api.Assertions.*; @@ -37,7 +38,7 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest { private DeptDataPermissionRule rule; @Mock - private DeptDataPermissionFrameworkService deptDataPermissionFrameworkService; + private PermissionApi permissionApi; @BeforeEach @SuppressWarnings("unchecked") @@ -69,7 +70,8 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest { String tableName = "t_user"; Alias tableAlias = new Alias("u"); // mock 方法 - LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L)); + LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L) + .setUserType(UserTypeEnum.ADMIN.getValue())); securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser); // 调用 @@ -88,16 +90,18 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest { String tableName = "t_user"; Alias tableAlias = new Alias("u"); // mock 方法(LoginUser) - LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L)); + LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L) + .setUserType(UserTypeEnum.ADMIN.getValue())); securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser); // mock 方法(DeptDataPermissionRespDTO) DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO().setAll(true); - when(deptDataPermissionFrameworkService.getDeptDataPermission(same(loginUser))).thenReturn(deptDataPermission); + when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(deptDataPermission); // 调用 Expression expression = rule.getExpression(tableName, tableAlias); // 断言 assertNull(expression); + assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DeptDataPermissionRespDTO.class)); } } @@ -109,16 +113,18 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest { String tableName = "t_user"; Alias tableAlias = new Alias("u"); // mock 方法(LoginUser) - LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L)); + LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L) + .setUserType(UserTypeEnum.ADMIN.getValue())); securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser); // mock 方法(DeptDataPermissionRespDTO) DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO(); - when(deptDataPermissionFrameworkService.getDeptDataPermission(same(loginUser))).thenReturn(deptDataPermission); + when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(deptDataPermission); // 调用 Expression expression = rule.getExpression(tableName, tableAlias); // 断言 assertEquals("null = null", expression.toString()); + assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DeptDataPermissionRespDTO.class)); } } @@ -130,17 +136,19 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest { String tableName = "t_user"; Alias tableAlias = new Alias("u"); // mock 方法(LoginUser) - LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L)); + LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L) + .setUserType(UserTypeEnum.ADMIN.getValue())); securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser); // mock 方法(DeptDataPermissionRespDTO) DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO() .setDeptIds(SetUtils.asSet(10L, 20L)).setSelf(true); - when(deptDataPermissionFrameworkService.getDeptDataPermission(same(loginUser))).thenReturn(deptDataPermission); + when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(deptDataPermission); // 调用 Expression expression = rule.getExpression(tableName, tableAlias); // 断言 assertSame(EXPRESSION_NULL, expression); + assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DeptDataPermissionRespDTO.class)); } } @@ -152,12 +160,13 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest { String tableName = "t_user"; Alias tableAlias = new Alias("u"); // mock 方法(LoginUser) - LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L)); + LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L) + .setUserType(UserTypeEnum.ADMIN.getValue())); securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser); // mock 方法(DeptDataPermissionRespDTO) DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO() .setSelf(true); - when(deptDataPermissionFrameworkService.getDeptDataPermission(same(loginUser))).thenReturn(deptDataPermission); + when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(deptDataPermission); // 添加 user 字段配置 rule.addUserColumn("t_user", "id"); @@ -165,6 +174,7 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest { Expression expression = rule.getExpression(tableName, tableAlias); // 断言 assertEquals("u.id = 1", expression.toString()); + assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DeptDataPermissionRespDTO.class)); } } @@ -176,12 +186,13 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest { String tableName = "t_user"; Alias tableAlias = new Alias("u"); // mock 方法(LoginUser) - LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L)); + LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L) + .setUserType(UserTypeEnum.ADMIN.getValue())); securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser); // mock 方法(DeptDataPermissionRespDTO) DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO() .setDeptIds(CollUtil.newLinkedHashSet(10L, 20L)); - when(deptDataPermissionFrameworkService.getDeptDataPermission(same(loginUser))).thenReturn(deptDataPermission); + when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(deptDataPermission); // 添加 dept 字段配置 rule.addDeptColumn("t_user", "dept_id"); @@ -189,6 +200,7 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest { Expression expression = rule.getExpression(tableName, tableAlias); // 断言 assertEquals("u.dept_id IN (10, 20)", expression.toString()); + assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DeptDataPermissionRespDTO.class)); } } @@ -200,12 +212,13 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest { String tableName = "t_user"; Alias tableAlias = new Alias("u"); // mock 方法(LoginUser) - LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L)); + LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L) + .setUserType(UserTypeEnum.ADMIN.getValue())); securityFrameworkUtilsMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser); // mock 方法(DeptDataPermissionRespDTO) DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO() .setDeptIds(CollUtil.newLinkedHashSet(10L, 20L)).setSelf(true); - when(deptDataPermissionFrameworkService.getDeptDataPermission(same(loginUser))).thenReturn(deptDataPermission); + when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(deptDataPermission); // 添加 user 字段配置 rule.addUserColumn("t_user", "id"); // 添加 dept 字段配置 @@ -215,6 +228,7 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest { Expression expression = rule.getExpression(tableName, tableAlias); // 断言 assertEquals("u.dept_id IN (10, 20) OR u.id = 1", expression.toString()); + assertSame(deptDataPermission, loginUser.getContext(DeptDataPermissionRule.CONTEXT_KEY, DeptDataPermissionRespDTO.class)); } } diff --git a/yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/core/web/TenantContextWebFilter.java b/yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/core/web/TenantContextWebFilter.java index ec159e0ecb..272419c097 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/core/web/TenantContextWebFilter.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/core/web/TenantContextWebFilter.java @@ -1,7 +1,7 @@ package cn.iocoder.yudao.framework.tenant.core.web; -import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; +import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; import org.springframework.web.filter.OncePerRequestFilter; import javax.servlet.FilterChain; @@ -24,9 +24,9 @@ public class TenantContextWebFilter extends OncePerRequestFilter { protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException { // 设置 - String tenantId = request.getHeader(HEADER_TENANT_ID); - if (StrUtil.isNotEmpty(tenantId)) { - TenantContextHolder.setTenantId(Long.valueOf(tenantId)); + Long tenantId = WebFrameworkUtils.getTenantId(request); + if (tenantId != null) { + TenantContextHolder.setTenantId(tenantId); } try { chain.doFilter(request, response); diff --git a/yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/ftp/FtpFileClient.java b/yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/ftp/FtpFileClient.java index d50bc8501a..4ad345bdcd 100644 --- a/yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/ftp/FtpFileClient.java +++ b/yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/ftp/FtpFileClient.java @@ -27,9 +27,11 @@ public class FtpFileClient extends AbstractFileClient { @Override protected void doInit() { - // 补全风格。例如说 Linux 是 /,Windows 是 \ - if (!config.getBasePath().endsWith(File.separator)) { - config.setBasePath(config.getBasePath() + File.separator); + // 把配置的 \ 替换成 /, 如果路径配置 \a\test, 替换成 /a/test, 替换方法已经处理 null 情况 + config.setBasePath(StrUtil.replace(config.getBasePath(), StrUtil.BACKSLASH, StrUtil.SLASH)); + // ftp的路径是 / 结尾 + if (!config.getBasePath().endsWith(StrUtil.SLASH)) { + config.setBasePath(config.getBasePath() + StrUtil.SLASH); } // 初始化 Ftp 对象 this.ftp = new Ftp(config.getHost(), config.getPort(), config.getUsername(), config.getPassword(), @@ -42,6 +44,7 @@ public class FtpFileClient extends AbstractFileClient { String filePath = getFilePath(path); String fileName = FileUtil.getName(filePath); String dir = StrUtil.removeSuffix(filePath, fileName); + ftp.reconnectIfTimeout(); boolean success = ftp.upload(dir, fileName, new ByteArrayInputStream(content)); if (!success) { throw new FtpException(StrUtil.format("上传文件到目标目录 ({}) 失败", filePath)); @@ -53,6 +56,7 @@ public class FtpFileClient extends AbstractFileClient { @Override public void delete(String path) { String filePath = getFilePath(path); + ftp.reconnectIfTimeout(); ftp.delFile(filePath); } @@ -60,8 +64,9 @@ public class FtpFileClient extends AbstractFileClient { public byte[] getContent(String path) { String filePath = getFilePath(path); String fileName = FileUtil.getName(filePath); - String dir = StrUtil.removeSuffix(path, fileName); + String dir = StrUtil.removeSuffix(filePath, fileName); ByteArrayOutputStream out = new ByteArrayOutputStream(); + ftp.reconnectIfTimeout(); ftp.download(dir, fileName, out); return out.toByteArray(); } @@ -70,4 +75,4 @@ public class FtpFileClient extends AbstractFileClient { return config.getBasePath() + path; } -} +} \ No newline at end of file diff --git a/yudao-framework/yudao-spring-boot-starter-mybatis/pom.xml b/yudao-framework/yudao-spring-boot-starter-mybatis/pom.xml index 2d48df3673..5567cedc7c 100644 --- a/yudao-framework/yudao-spring-boot-starter-mybatis/pom.xml +++ b/yudao-framework/yudao-spring-boot-starter-mybatis/pom.xml @@ -58,6 +58,14 @@ com.baomidou dynamic-datasource-spring-boot-starter + + + + com.github.ulisesbocchio + jasypt-spring-boot-starter + true + + diff --git a/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/type/EncryptTypeHandler.java b/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/type/EncryptTypeHandler.java new file mode 100644 index 0000000000..f5d5a8fd1e --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/type/EncryptTypeHandler.java @@ -0,0 +1,70 @@ +package cn.iocoder.yudao.framework.mybatis.core.type; + +import cn.hutool.core.lang.Assert; +import cn.hutool.extra.spring.SpringUtil; +import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; +import org.jasypt.encryption.StringEncryptor; + +import java.sql.CallableStatement; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +/** + * 字段字段的 TypeHandler 实现类,基于 {@link StringEncryptor} 实现 + * 可通过 jasypt.encryptor.password 配置项,设置密钥 + * + * @author 芋道源码 + */ +public class EncryptTypeHandler extends BaseTypeHandler { + + private static StringEncryptor encryptor; + + @Override + public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException { + ps.setString(i, getEncryptor().encrypt(parameter)); + } + + @Override + public String getNullableResult(ResultSet rs, String columnName) throws SQLException { + String value = rs.getString(columnName); + return decrypt(value); + } + + @Override + public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException { + String value = rs.getString(columnIndex); + return decrypt(value); + } + + @Override + public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { + String value = cs.getString(columnIndex); + return decrypt(value); + } + + private static String decrypt(String value) { + if (value == null) { + return null; + } + return getEncryptor().decrypt(value); + } + + public static String encrypt(String rawValue) { + if (rawValue == null) { + return null; + } + return getEncryptor().encrypt(rawValue); + } + + private static StringEncryptor getEncryptor() { + if (encryptor != null) { + return encryptor; + } + encryptor = SpringUtil.getBean(StringEncryptor.class); + Assert.notNull(encryptor, "StringEncryptor 不能为空"); + return encryptor; + } + +} diff --git a/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/type/StringLiSTTypeHandler.java b/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/type/StringListTypeHandler.java similarity index 96% rename from yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/type/StringLiSTTypeHandler.java rename to yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/type/StringListTypeHandler.java index f9811c4181..598a15ef7f 100644 --- a/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/type/StringLiSTTypeHandler.java +++ b/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/type/StringListTypeHandler.java @@ -21,7 +21,7 @@ import java.util.List; */ @MappedJdbcTypes(JdbcType.VARCHAR) @MappedTypes(List.class) -public class StringLiSTTypeHandler implements TypeHandler> { +public class StringListTypeHandler implements TypeHandler> { private static final String COMMA = ","; diff --git a/yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/lock4j/config/YudaoLock4jConfiguration.java b/yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/lock4j/config/YudaoLock4jConfiguration.java index 4919bf7c29..00cf23fb52 100644 --- a/yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/lock4j/config/YudaoLock4jConfiguration.java +++ b/yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/lock4j/config/YudaoLock4jConfiguration.java @@ -1,12 +1,15 @@ package cn.iocoder.yudao.framework.lock4j.config; import cn.hutool.core.util.ClassUtil; +import com.baomidou.lock.spring.boot.autoconfigure.LockAutoConfiguration; import cn.iocoder.yudao.framework.lock4j.core.DefaultLockFailureStrategy; import cn.iocoder.yudao.framework.lock4j.core.Lock4jRedisKeyConstants; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration +@AutoConfigureBefore(LockAutoConfiguration.class) public class YudaoLock4jConfiguration { static { diff --git a/yudao-framework/yudao-spring-boot-starter-security/pom.xml b/yudao-framework/yudao-spring-boot-starter-security/pom.xml index ba33598c51..4e32a6c7c5 100644 --- a/yudao-framework/yudao-spring-boot-starter-security/pom.xml +++ b/yudao-framework/yudao-spring-boot-starter-security/pom.xml @@ -44,18 +44,11 @@ spring-boot-starter-security - + - org.activiti - activiti-engine - 7.1.0.M6 - - - * - * - - - true + cn.iocoder.boot + yudao-module-system-api + ${revision} diff --git a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/SecurityProperties.java b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/SecurityProperties.java index 537463e949..a9373cd9c2 100644 --- a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/SecurityProperties.java +++ b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/SecurityProperties.java @@ -6,7 +6,6 @@ import org.springframework.validation.annotation.Validated; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; -import java.time.Duration; @ConfigurationProperties(prefix = "yudao.security") @Validated @@ -18,18 +17,6 @@ public class SecurityProperties { */ @NotEmpty(message = "Token Header 不能为空") private String tokenHeader; - /** - * Token 过期时间 - */ - @NotNull(message = "Token 过期时间不能为空") - private Duration tokenTimeout; - /** - * Session 过期时间 - * - * 当 User 用户超过当前时间未操作,则 Session 会过期 - */ - @NotNull(message = "Session 过期时间不能为空") - private Duration sessionTimeout; /** * mock 模式的开关 diff --git a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/YudaoSecurityAutoConfiguration.java b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/YudaoSecurityAutoConfiguration.java index 1db4797d4c..c5f2ef0333 100644 --- a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/YudaoSecurityAutoConfiguration.java +++ b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/YudaoSecurityAutoConfiguration.java @@ -1,15 +1,15 @@ package cn.iocoder.yudao.framework.security.config; import cn.iocoder.yudao.framework.security.core.aop.PreAuthenticatedAspect; -import cn.iocoder.yudao.framework.security.core.authentication.MultiUserDetailsAuthenticationProvider; import cn.iocoder.yudao.framework.security.core.context.TransmittableThreadLocalSecurityContextHolderStrategy; import cn.iocoder.yudao.framework.security.core.filter.TokenAuthenticationFilter; import cn.iocoder.yudao.framework.security.core.handler.AccessDeniedHandlerImpl; import cn.iocoder.yudao.framework.security.core.handler.AuthenticationEntryPointImpl; -import cn.iocoder.yudao.framework.security.core.handler.LogoutSuccessHandlerImpl; -import cn.iocoder.yudao.framework.security.core.service.SecurityAuthFrameworkService; -import cn.iocoder.yudao.framework.web.config.WebProperties; +import cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkService; +import cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkServiceImpl; import cn.iocoder.yudao.framework.web.core.handler.GlobalExceptionHandler; +import cn.iocoder.yudao.module.system.api.auth.OAuth2TokenApi; +import cn.iocoder.yudao.module.system.api.permission.PermissionApi; import org.springframework.beans.factory.config.MethodInvokingFactoryBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; @@ -19,10 +19,8 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.access.AccessDeniedHandler; -import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; import javax.annotation.Resource; -import java.util.List; /** * Spring Security 自动配置类,主要用于相关组件的配置 @@ -63,14 +61,6 @@ public class YudaoSecurityAutoConfiguration { return new AccessDeniedHandlerImpl(); } - /** - * 退出处理类 Bean - */ - @Bean - public LogoutSuccessHandler logoutSuccessHandler(MultiUserDetailsAuthenticationProvider authenticationProvider) { - return new LogoutSuccessHandlerImpl(securityProperties, authenticationProvider); - } - /** * Spring Security 加密器 * 考虑到安全性,这里采用 BCryptPasswordEncoder 加密器 @@ -86,19 +76,14 @@ public class YudaoSecurityAutoConfiguration { * Token 认证过滤器 Bean */ @Bean - public TokenAuthenticationFilter authenticationTokenFilter(MultiUserDetailsAuthenticationProvider authenticationProvider, - GlobalExceptionHandler globalExceptionHandler) { - return new TokenAuthenticationFilter(securityProperties, authenticationProvider, globalExceptionHandler); + public TokenAuthenticationFilter authenticationTokenFilter(GlobalExceptionHandler globalExceptionHandler, + OAuth2TokenApi oauth2TokenApi) { + return new TokenAuthenticationFilter(securityProperties, globalExceptionHandler, oauth2TokenApi); } - /** - * 身份验证的 Provider Bean,通过它实现账号 + 密码的认证 - */ - @Bean - public MultiUserDetailsAuthenticationProvider authenticationProvider( - List securityFrameworkServices, - WebProperties webProperties, PasswordEncoder passwordEncoder) { - return new MultiUserDetailsAuthenticationProvider(securityFrameworkServices, webProperties, passwordEncoder); + @Bean("ss") // 使用 Spring Security 的缩写,方便食用 + public SecurityFrameworkService securityFrameworkService(PermissionApi permissionApi) { + return new SecurityFrameworkServiceImpl(permissionApi); } /** diff --git a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/YudaoWebSecurityConfigurerAdapter.java b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/YudaoWebSecurityConfigurerAdapter.java index 0c0dd3278f..61edba6e80 100644 --- a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/YudaoWebSecurityConfigurerAdapter.java +++ b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/YudaoWebSecurityConfigurerAdapter.java @@ -1,7 +1,5 @@ package cn.iocoder.yudao.framework.security.config; -import cn.hutool.core.util.StrUtil; -import cn.iocoder.yudao.framework.security.core.authentication.MultiUserDetailsAuthenticationProvider; import cn.iocoder.yudao.framework.security.core.filter.TokenAuthenticationFilter; import cn.iocoder.yudao.framework.web.config.WebProperties; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -9,7 +7,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpMethod; import org.springframework.security.authentication.AuthenticationManager; -import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @@ -17,7 +14,6 @@ import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.access.AccessDeniedHandler; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; -import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; import javax.annotation.Resource; import java.util.List; @@ -34,8 +30,6 @@ public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdap @Resource private WebProperties webProperties; - @Resource - private MultiUserDetailsAuthenticationProvider authenticationProvider; /** * 认证失败处理类 Bean */ @@ -46,11 +40,6 @@ public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdap */ @Resource private AccessDeniedHandler accessDeniedHandler; - /** - * 退出处理类 Bean - */ - @Resource - private LogoutSuccessHandler logoutSuccessHandler; /** * Token 认证过滤器 Bean */ @@ -76,14 +65,6 @@ public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdap return super.authenticationManagerBean(); } - /** - * 身份认证接口 - */ - @Override - protected void configure(AuthenticationManagerBuilder auth) throws Exception { - auth.authenticationProvider(authenticationProvider); - } - /** * 配置 URL 的安全配置 * @@ -114,11 +95,8 @@ public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdap .headers().frameOptions().disable().and() // 一堆自定义的 Spring Security 处理器 .exceptionHandling().authenticationEntryPoint(authenticationEntryPoint) - .accessDeniedHandler(accessDeniedHandler).and() - // 登出地址的配置 - .logout().logoutSuccessHandler(logoutSuccessHandler).logoutRequestMatcher(request -> // 匹配多种用户类型的登出 - StrUtil.equalsAny(request.getRequestURI(), buildAdminApi("/system/logout"), - buildAppApi("/member/logout"))); + .accessDeniedHandler(accessDeniedHandler); + // 登录、登录暂时不使用 Spring Security 的拓展点,主要考虑一方面拓展多用户、多种登录方式相对复杂,一方面用户的学习成本较高 // 设置每个请求的权限 httpSecurity @@ -140,11 +118,7 @@ public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdap // 添加 JWT Filter httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class); } - - private String buildAdminApi(String url) { - return webProperties.getAdminApi().getPrefix() + url; - } - + private String buildAppApi(String url) { return webProperties.getAppApi().getPrefix() + url; } diff --git a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/LoginUser.java b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/LoginUser.java index 84c7f94c4d..50523ca0a8 100644 --- a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/LoginUser.java +++ b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/LoginUser.java @@ -1,14 +1,13 @@ package cn.iocoder.yudao.framework.security.core; import cn.hutool.core.map.MapUtil; -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.core.userdetails.UserDetails; -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * 登录用户信息 @@ -16,7 +15,7 @@ import java.util.*; * @author 芋道源码 */ @Data -public class LoginUser implements UserDetails { +public class LoginUser { /** * 用户编号 @@ -28,38 +27,14 @@ public class LoginUser implements UserDetails { * 关联 {@link UserTypeEnum} */ private Integer userType; - /** - * 最后更新时间 - */ - private Date updateTime; - - /** - * 用户名 - */ - private String username; - /** - * 密码 - */ - private String password; - /** - * 状态 - */ - private Integer status; /** * 租户编号 */ private Long tenantId; - - // ========== UserTypeEnum.ADMIN 独有字段 ========== - // TODO 芋艿:可以通过定义一个 Map exts 的方式,去除管理员的字段。不过这样会导致系统比较复杂,所以暂时不去掉先; /** - * 角色编号数组 + * 授权范围 */ - private Set roleIds; - /** - * 部门编号 - */ - private Long deptId; + private List scopes; // ========== 上下文 ========== /** @@ -70,49 +45,6 @@ public class LoginUser implements UserDetails { @JsonIgnore private Map context; - @Override - @JsonIgnore// 避免序列化 - public String getPassword() { - return password; - } - - @Override - public String getUsername() { - return username; - } - - @Override - @JsonIgnore// 避免序列化 - public boolean isEnabled() { - return CommonStatusEnum.ENABLE.getStatus().equals(status); - } - - @Override - @JsonIgnore// 避免序列化 - public Collection getAuthorities() { - return new HashSet<>(); - } - - @Override - @JsonIgnore// 避免序列化 - public boolean isAccountNonExpired() { - return true; // 返回 true,不依赖 Spring Security 判断 - } - - @Override - @JsonIgnore// 避免序列化 - public boolean isAccountNonLocked() { - return true; // 返回 true,不依赖 Spring Security 判断 - } - - @Override - @JsonIgnore// 避免序列化 - public boolean isCredentialsNonExpired() { - return true; // 返回 true,不依赖 Spring Security 判断 - } - - // ========== 上下文 ========== - public void setContext(String key, Object value) { if (context == null) { context = new HashMap<>(); diff --git a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/authentication/MultiUserDetailsAuthenticationProvider.java b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/authentication/MultiUserDetailsAuthenticationProvider.java deleted file mode 100644 index dc8533f964..0000000000 --- a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/authentication/MultiUserDetailsAuthenticationProvider.java +++ /dev/null @@ -1,149 +0,0 @@ -package cn.iocoder.yudao.framework.security.core.authentication; - -import cn.hutool.core.lang.Assert; -import cn.hutool.core.util.StrUtil; -import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; -import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.yudao.framework.security.core.service.SecurityAuthFrameworkService; -import cn.iocoder.yudao.framework.web.config.WebProperties; -import org.springframework.security.authentication.AuthenticationProvider; -import org.springframework.security.authentication.BadCredentialsException; -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; -import org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider; -import org.springframework.security.core.AuthenticationException; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.crypto.password.PasswordEncoder; - -import javax.servlet.http.HttpServletRequest; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 支持多用户类型的 AuthenticationProvider 实现类 - * - * 为什么不用 {@link org.springframework.security.authentication.ProviderManager} 呢? - * 原因是,需要每个用户类型实现对应的 {@link AuthenticationProvider} + authentication,略显麻烦。实际,也是可以实现的。 - * - * 另外,额外支持 verifyTokenAndRefresh 校验令牌、logout 登出、mockLogin 模拟登陆等操作。 - * 实际上,它就是 {@link SecurityAuthFrameworkService} 定义的三个接口。 - * 因为需要支持多种类型,所以需要根据请求的 URL,判断出对应的用户类型,从而使用对应的 SecurityAuthFrameworkService 是吸纳 - * - * @see cn.iocoder.yudao.framework.common.enums.UserTypeEnum - * @author 芋道源码 - */ -public class MultiUserDetailsAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider { - - private final Map services = new HashMap<>(); - - private final WebProperties properties; - - private final PasswordEncoder passwordEncoder; - - public MultiUserDetailsAuthenticationProvider(List serviceList, - WebProperties properties, PasswordEncoder passwordEncoder) { - serviceList.forEach(service -> services.put(service.getUserType(), service)); - this.properties = properties; - this.passwordEncoder = passwordEncoder; - } - - // ========== AuthenticationProvider 相关 ========== - - @Override - protected UserDetails retrieveUser(String username, UsernamePasswordAuthenticationToken authentication) - throws AuthenticationException { - // 执行用户的加载 - return selectService(authentication).loadUserByUsername(username); - } - - private SecurityAuthFrameworkService selectService(UsernamePasswordAuthenticationToken authentication) { - // 第一步,获得用户类型 - UserTypeEnum userType = getUserType(authentication); - // 第二步,获得 SecurityAuthFrameworkService - SecurityAuthFrameworkService service = services.get(userType); - Assert.notNull(service, "用户类型({}) 找不到 SecurityAuthFrameworkService 实现类", userType); - return service; - } - - private UserTypeEnum getUserType(UsernamePasswordAuthenticationToken authentication) { - Assert.isInstanceOf(MultiUsernamePasswordAuthenticationToken.class, authentication); - MultiUsernamePasswordAuthenticationToken multiAuthentication = (MultiUsernamePasswordAuthenticationToken) authentication; - UserTypeEnum userType = multiAuthentication.getUserType(); - Assert.notNull(userType, "用户类型不能为空"); - return userType; - } - - @Override // copy 自 DaoAuthenticationProvider 的 additionalAuthenticationChecks 方法 - protected void additionalAuthenticationChecks(UserDetails userDetails, UsernamePasswordAuthenticationToken authentication) - throws AuthenticationException { - // 校验 credentials - if (authentication.getCredentials() == null) { - this.logger.debug("Failed to authenticate since no credentials provided"); - throw new BadCredentialsException(this.messages.getMessage( - "AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials")); - } - // 校验 password - String presentedPassword = authentication.getCredentials().toString(); - if (!this.passwordEncoder.matches(presentedPassword, userDetails.getPassword())) { - this.logger.debug("Failed to authenticate since password does not match stored value"); - throw new BadCredentialsException(this.messages.getMessage( - "AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials")); - } - } - - // ========== SecurityAuthFrameworkService 相关 ========== - - /** - * 校验 token 的有效性,并获取用户信息 - * 通过后,刷新 token 的过期时间 - * - * @param request 请求 - * @param token token - * @return 用户信息 - */ - public LoginUser verifyTokenAndRefresh(HttpServletRequest request, String token) { - return selectService(request).verifyTokenAndRefresh(token); - } - - /** - * 模拟指定用户编号的 LoginUser - * - * @param request 请求 - * @param userId 用户编号 - * @return 登录用户 - */ - public LoginUser mockLogin(HttpServletRequest request, Long userId) { - return selectService(request).mockLogin(userId); - } - - /** - * 基于 token 退出登录 - * - * @param request 请求 - * @param token token - */ - public void logout(HttpServletRequest request, String token) { - selectService(request).logout(token); - } - - private SecurityAuthFrameworkService selectService(HttpServletRequest request) { - // 第一步,获得用户类型 - UserTypeEnum userType = getUserType(request); - // 第二步,获得 SecurityAuthFrameworkService - SecurityAuthFrameworkService service = services.get(userType); - Assert.notNull(service, "URI({}) 用户类型({}) 找不到 SecurityAuthFrameworkService 实现类", - request.getRequestURI(), userType); - return service; - } - - private UserTypeEnum getUserType(HttpServletRequest request) { - if (request.getRequestURI().startsWith(properties.getAdminApi().getPrefix())) { - return UserTypeEnum.ADMIN; - } - if (request.getRequestURI().startsWith(properties.getAppApi().getPrefix())) { - return UserTypeEnum.MEMBER; - } - throw new IllegalArgumentException(StrUtil.format("URI({}) 找不到匹配的用户类型", request.getRequestURI())); - } - -} diff --git a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/authentication/MultiUsernamePasswordAuthenticationToken.java b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/authentication/MultiUsernamePasswordAuthenticationToken.java deleted file mode 100644 index f0bc8dfac4..0000000000 --- a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/authentication/MultiUsernamePasswordAuthenticationToken.java +++ /dev/null @@ -1,43 +0,0 @@ -package cn.iocoder.yudao.framework.security.core.authentication; - -import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; -import lombok.Getter; -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; -import org.springframework.security.core.GrantedAuthority; - -import java.util.Collection; - -/** - * 支持多用户的 UsernamePasswordAuthenticationToken 实现类 - * - * @author 芋道源码 - */ -@Getter -public class MultiUsernamePasswordAuthenticationToken extends UsernamePasswordAuthenticationToken { - - /** - * 用户类型 - */ - private UserTypeEnum userType; - - public MultiUsernamePasswordAuthenticationToken(Object principal, Object credentials) { - super(principal, credentials); - } - - public MultiUsernamePasswordAuthenticationToken(Object principal, Object credentials, - Collection authorities) { - super(principal, credentials, authorities); - } - - public MultiUsernamePasswordAuthenticationToken(Object principal, Object credentials, UserTypeEnum userType) { - super(principal, credentials); - this.userType = userType; - } - - public MultiUsernamePasswordAuthenticationToken(Object principal, Object credentials, - Collection authorities, UserTypeEnum userType) { - super(principal, credentials, authorities); - this.userType = userType; - } - -} diff --git a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/filter/TokenAuthenticationFilter.java b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/filter/TokenAuthenticationFilter.java index 0908560c8a..e593240042 100644 --- a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/filter/TokenAuthenticationFilter.java +++ b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/filter/TokenAuthenticationFilter.java @@ -1,14 +1,19 @@ package cn.iocoder.yudao.framework.security.core.filter; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.framework.common.exception.ServiceException; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; import cn.iocoder.yudao.framework.security.config.SecurityProperties; import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.yudao.framework.security.core.authentication.MultiUserDetailsAuthenticationProvider; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.framework.web.core.handler.GlobalExceptionHandler; +import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; +import cn.iocoder.yudao.module.system.api.auth.OAuth2TokenApi; +import cn.iocoder.yudao.module.system.api.auth.dto.OAuth2AccessTokenCheckRespDTO; import lombok.RequiredArgsConstructor; +import org.springframework.security.access.AccessDeniedException; import org.springframework.web.filter.OncePerRequestFilter; import javax.servlet.FilterChain; @@ -28,24 +33,26 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter { private final SecurityProperties securityProperties; - private final MultiUserDetailsAuthenticationProvider authenticationProvider; - private final GlobalExceptionHandler globalExceptionHandler; + private final OAuth2TokenApi oauth2TokenApi; + @Override @SuppressWarnings("NullableProblems") protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException { String token = SecurityFrameworkUtils.obtainAuthorization(request, securityProperties.getTokenHeader()); if (StrUtil.isNotEmpty(token)) { + Integer userType = WebFrameworkUtils.getLoginUserType(request); try { - // 验证 token 有效性 - LoginUser loginUser = authenticationProvider.verifyTokenAndRefresh(request, token); - // 模拟 Login 功能,方便日常开发调试 + // 1.1 基于 token 构建登录用户 + LoginUser loginUser = buildLoginUserByToken(token, userType); + // 1.2 模拟 Login 功能,方便日常开发调试 if (loginUser == null) { - loginUser = mockLoginUser(request, token); + loginUser = mockLoginUser(request, token, userType); } - // 设置当前用户 + + // 2. 设置当前用户 if (loginUser != null) { SecurityFrameworkUtils.setLoginUser(loginUser, request); } @@ -60,6 +67,25 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter { chain.doFilter(request, response); } + private LoginUser buildLoginUserByToken(String token, Integer userType) { + try { + OAuth2AccessTokenCheckRespDTO accessToken = oauth2TokenApi.checkAccessToken(token); + if (accessToken == null) { + return null; + } + // 用户类型不匹配,无权限 + if (ObjectUtil.notEqual(accessToken.getUserType(), userType)) { + throw new AccessDeniedException("错误的用户类型"); + } + // 构建登录用户 + return new LoginUser().setId(accessToken.getUserId()).setUserType(accessToken.getUserType()) + .setTenantId(accessToken.getTenantId()).setScopes(accessToken.getScopes()); + } catch (ServiceException serviceException) { + // 校验 Token 不通过时,考虑到一些接口是无需登录的,所以直接返回 null 即可 + return null; + } + } + /** * 模拟登录用户,方便日常开发调试 * @@ -67,9 +93,10 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter { * * @param request 请求 * @param token 模拟的 token,格式为 {@link SecurityProperties#getMockSecret()} + 用户编号 + * @param userType 用户类型 * @return 模拟的 LoginUser */ - private LoginUser mockLoginUser(HttpServletRequest request, String token) { + private LoginUser mockLoginUser(HttpServletRequest request, String token, Integer userType) { if (!securityProperties.getMockEnable()) { return null; } @@ -77,8 +104,10 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter { if (!token.startsWith(securityProperties.getMockSecret())) { return null; } + // 构建模拟用户 Long userId = Long.valueOf(token.substring(securityProperties.getMockSecret().length())); - return authenticationProvider.mockLogin(request, userId); + return new LoginUser().setId(userId).setUserType(userType) + .setTenantId(WebFrameworkUtils.getTenantId(request)); } } diff --git a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/handler/LogoutSuccessHandlerImpl.java b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/handler/LogoutSuccessHandlerImpl.java deleted file mode 100644 index 1a642304ca..0000000000 --- a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/handler/LogoutSuccessHandlerImpl.java +++ /dev/null @@ -1,40 +0,0 @@ -package cn.iocoder.yudao.framework.security.core.handler; - -import cn.hutool.core.util.StrUtil; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; -import cn.iocoder.yudao.framework.security.config.SecurityProperties; -import cn.iocoder.yudao.framework.security.core.authentication.MultiUserDetailsAuthenticationProvider; -import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; -import lombok.AllArgsConstructor; -import org.springframework.security.core.Authentication; -import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - - -/** - * 自定义退出处理器 - * - * @author ruoyi - */ -@AllArgsConstructor -public class LogoutSuccessHandlerImpl implements LogoutSuccessHandler { - - private final SecurityProperties securityProperties; - - private final MultiUserDetailsAuthenticationProvider authenticationProvider; - - @Override - public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) { - // 执行退出 - String token = SecurityFrameworkUtils.obtainAuthorization(request, securityProperties.getTokenHeader()); - if (StrUtil.isNotBlank(token)) { - authenticationProvider.logout(request, token); - } - // 返回成功 - ServletUtils.writeJSON(response, CommonResult.success(null)); - } - -} diff --git a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/service/SecurityAuthFrameworkService.java b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/service/SecurityAuthFrameworkService.java deleted file mode 100644 index 1f76e161f8..0000000000 --- a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/service/SecurityAuthFrameworkService.java +++ /dev/null @@ -1,45 +0,0 @@ -package cn.iocoder.yudao.framework.security.core.service; - -import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; -import cn.iocoder.yudao.framework.security.core.LoginUser; -import org.springframework.security.core.userdetails.UserDetailsService; - -/** - * Security 框架 Auth Service 接口,定义不同用户类型的 {@link UserTypeEnum} 需要实现的方法 - * - * @author 芋道源码 - */ -public interface SecurityAuthFrameworkService extends UserDetailsService { - - /** - * 校验 token 的有效性,并获取用户信息 - * 通过后,刷新 token 的过期时间 - * - * @param token token - * @return 用户信息 - */ - LoginUser verifyTokenAndRefresh(String token); - - /** - * 模拟指定用户编号的 LoginUser - * - * @param userId 用户编号 - * @return 登录用户 - */ - LoginUser mockLogin(Long userId); - - /** - * 基于 token 退出登录 - * - * @param token token - */ - void logout(String token); - - /** - * 获得用户类型。每个用户类型,对应一个 SecurityAuthFrameworkService 实现类。 - * - * @return 用户类型 - */ - UserTypeEnum getUserType(); - -} diff --git a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/service/SecurityPermissionFrameworkService.java b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/service/SecurityFrameworkService.java similarity index 64% rename from yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/service/SecurityPermissionFrameworkService.java rename to yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/service/SecurityFrameworkService.java index 75f11b1757..bf2f7f31f1 100644 --- a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/service/SecurityPermissionFrameworkService.java +++ b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/service/SecurityFrameworkService.java @@ -1,11 +1,11 @@ package cn.iocoder.yudao.framework.security.core.service; /** - * Security 框架 Permission Service 接口,定义 security 组件需要的功能 + * Security 框架 Service 接口,定义权限相关的校验操作 * * @author 芋道源码 */ -public interface SecurityPermissionFrameworkService { +public interface SecurityFrameworkService { /** * 判断是否有权限 @@ -41,4 +41,19 @@ public interface SecurityPermissionFrameworkService { */ boolean hasAnyRoles(String... roles); + /** + * 判断是否有授权 + * + * @param scope 授权 + * @return 是否 + */ + boolean hasScope(String scope); + + /** + * 判断是否有授权范围,任一一个即可 + * + * @param scope 授权范围数组 + * @return 是否 + */ + boolean hasAnyScopes(String... scope); } diff --git a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/service/SecurityFrameworkServiceImpl.java b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/service/SecurityFrameworkServiceImpl.java new file mode 100644 index 0000000000..78caadea27 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/service/SecurityFrameworkServiceImpl.java @@ -0,0 +1,57 @@ +package cn.iocoder.yudao.framework.security.core.service; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.security.core.LoginUser; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import cn.iocoder.yudao.module.system.api.permission.PermissionApi; +import lombok.AllArgsConstructor; + +import java.util.Arrays; + +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; + +/** + * 默认的 {@link SecurityFrameworkService} 实现类 + * + * @author 芋道源码 + */ +@AllArgsConstructor +public class SecurityFrameworkServiceImpl implements SecurityFrameworkService { + + private final PermissionApi permissionApi; + + @Override + public boolean hasPermission(String permission) { + return hasAnyPermissions(permission); + } + + @Override + public boolean hasAnyPermissions(String... permissions) { + return permissionApi.hasAnyPermissions(getLoginUserId(), permissions); + } + + @Override + public boolean hasRole(String role) { + return hasAnyRoles(role); + } + + @Override + public boolean hasAnyRoles(String... roles) { + return permissionApi.hasAnyRoles(getLoginUserId(), roles); + } + + @Override + public boolean hasScope(String scope) { + return hasAnyScopes(scope); + } + + @Override + public boolean hasAnyScopes(String... scope) { + LoginUser user = SecurityFrameworkUtils.getLoginUser(); + if (user == null) { + return false; + } + return CollUtil.containsAny(user.getScopes(), Arrays.asList(scope)); + } + +} diff --git a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/SecurityFrameworkUtils.java b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/SecurityFrameworkUtils.java index 562c6ed9f6..5dc17b626e 100644 --- a/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/SecurityFrameworkUtils.java +++ b/yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/SecurityFrameworkUtils.java @@ -11,7 +11,7 @@ import org.springframework.security.web.authentication.WebAuthenticationDetailsS import org.springframework.util.StringUtils; import javax.servlet.http.HttpServletRequest; -import java.util.Set; +import java.util.Collections; /** * 安全服务工具类 @@ -20,6 +20,8 @@ import java.util.Set; */ public class SecurityFrameworkUtils { + public static final String AUTHORIZATION_BEARER = "Bearer"; + private SecurityFrameworkUtils() {} /** @@ -34,7 +36,7 @@ public class SecurityFrameworkUtils { if (!StringUtils.hasText(authorization)) { return null; } - int index = authorization.indexOf("Bearer "); + int index = authorization.indexOf(AUTHORIZATION_BEARER + " "); if (index == -1) { // 未找到 return null; } @@ -79,17 +81,6 @@ public class SecurityFrameworkUtils { return loginUser != null ? loginUser.getId() : null; } - /** - * 获得当前用户的角色编号数组 - * - * @return 角色编号数组 - */ - @Nullable - public static Set getLoginUserRoleIds() { - LoginUser loginUser = getLoginUser(); - return loginUser != null ? loginUser.getRoleIds() : null; - } - /** * 设置当前用户 * @@ -110,7 +101,7 @@ public class SecurityFrameworkUtils { private static Authentication buildAuthentication(LoginUser loginUser, HttpServletRequest request) { // 创建 UsernamePasswordAuthenticationToken 对象 UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken( - loginUser, null, loginUser.getAuthorities()); + loginUser, null, Collections.emptyList()); authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); return authenticationToken; } diff --git a/yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/util/RandomUtils.java b/yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/util/RandomUtils.java index aa2f18c768..d2703a0e7b 100644 --- a/yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/util/RandomUtils.java +++ b/yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/util/RandomUtils.java @@ -2,13 +2,16 @@ package cn.iocoder.yudao.framework.test.core.util; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.util.collection.SetUtils; import uk.co.jemos.podam.api.PodamFactory; import uk.co.jemos.podam.api.PodamFactoryImpl; import java.lang.reflect.Type; -import java.util.*; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Set; import java.util.function.Consumer; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -22,7 +25,6 @@ public class RandomUtils { private static final int RANDOM_STRING_LENGTH = 10; - private static final Set TINYINT_FIELDS = SetUtils.asSet("type", "category"); private static final int TINYINT_MAX = 127; private static final int RANDOM_DATE_MAX = 30; @@ -41,9 +43,10 @@ public class RandomUtils { if (attributeMetadata.getAttributeName().equals("status")) { return RandomUtil.randomEle(CommonStatusEnum.values()).getStatus(); } - // 针对部分字段,使用 tinyint 范围 - if (TINYINT_FIELDS.contains(attributeMetadata.getAttributeName())) { - return RandomUtil.randomInt(1, TINYINT_MAX + 1); + // 如果是 type、status 结尾的字段,返回 tinyint 范围 + if (StrUtil.endWithAnyIgnoreCase(attributeMetadata.getAttributeName(), + "type", "status", "category", "scope")) { + return RandomUtil.randomInt(0, TINYINT_MAX + 1); } return RandomUtil.randomInt(); }); diff --git a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/config/YudaoWebAutoConfiguration.java b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/config/YudaoWebAutoConfiguration.java index a6f932dd07..a7c5b7a535 100644 --- a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/config/YudaoWebAutoConfiguration.java +++ b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/config/YudaoWebAutoConfiguration.java @@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.web.core.filter.DemoFilter; import cn.iocoder.yudao.framework.web.core.filter.XssFilter; import cn.iocoder.yudao.framework.web.core.handler.GlobalExceptionHandler; import cn.iocoder.yudao.framework.web.core.handler.GlobalResponseBodyHandler; +import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; @@ -65,6 +66,13 @@ public class YudaoWebAutoConfiguration implements WebMvcConfigurer { return new GlobalResponseBodyHandler(); } + @Bean + @SuppressWarnings("InstantiationOfUtilityClass") + public WebFrameworkUtils webFrameworkUtils(WebProperties webProperties) { + // 由于 WebFrameworkUtils 需要使用到 webProperties 属性,所以注册为一个 Bean + return new WebFrameworkUtils(webProperties); + } + // ========== Filter 相关 ========== /** diff --git a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/util/WebFrameworkUtils.java b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/util/WebFrameworkUtils.java index 273f34072d..f5ac676faf 100644 --- a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/util/WebFrameworkUtils.java +++ b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/util/WebFrameworkUtils.java @@ -1,7 +1,9 @@ package cn.iocoder.yudao.framework.web.core.util; +import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.web.config.WebProperties; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -21,16 +23,43 @@ public class WebFrameworkUtils { private static final String REQUEST_ATTRIBUTE_COMMON_RESULT = "common_result"; + private static final String HEADER_TENANT_ID = "tenant-id"; + + private static WebProperties properties; + + public WebFrameworkUtils(WebProperties webProperties) { + WebFrameworkUtils.properties = webProperties; + } + + /** + * 获得租户编号,从 header 中 + * 考虑到其它 framework 组件也会使用到租户编号,所以不得不放在 WebFrameworkUtils 统一提供 + * + * @param request 请求 + * @return 租户编号 + */ + public static Long getTenantId(HttpServletRequest request) { + String tenantId = request.getHeader(HEADER_TENANT_ID); + return StrUtil.isNotEmpty(tenantId) ? Long.valueOf(tenantId) : null; + } + public static void setLoginUserId(ServletRequest request, Long userId) { request.setAttribute(REQUEST_ATTRIBUTE_LOGIN_USER_ID, userId); } + /** + * 设置用户类型 + * + * @param request 请求 + * @param userType 用户类型 + */ public static void setLoginUserType(ServletRequest request, Integer userType) { request.setAttribute(REQUEST_ATTRIBUTE_LOGIN_USER_TYPE, userType); } /** * 获得当前用户的编号,从请求中 + * 注意:该方法仅限于 framework 框架使用!!! * * @param request 请求 * @return 用户编号 @@ -43,7 +72,8 @@ public class WebFrameworkUtils { } /** - * 获得当前用户的类型,从请求中 + * 获得当前用户的类型 + * 注意:该方法仅限于 web 相关的 framework 组件使用!!! * * @param request 请求 * @return 用户编号 @@ -52,7 +82,19 @@ public class WebFrameworkUtils { if (request == null) { return null; } - return (Integer) request.getAttribute(REQUEST_ATTRIBUTE_LOGIN_USER_TYPE); + // 1. 优先,从 Attribute 中获取 + Integer userType = (Integer) request.getAttribute(REQUEST_ATTRIBUTE_LOGIN_USER_TYPE); + if (userType != null) { + return userType; + } + // 2. 其次,基于 URL 前缀的约定 + if (request.getRequestURI().startsWith(properties.getAdminApi().getPrefix())) { + return UserTypeEnum.ADMIN.getValue(); + } + if (request.getRequestURI().startsWith(properties.getAppApi().getPrefix())) { + return UserTypeEnum.MEMBER.getValue(); + } + return null; } public static Integer getLoginUserType() { diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java index 952effedd4..4500133ede 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java @@ -1,15 +1,12 @@ package cn.iocoder.yudao.module.infra.controller.admin.file; -import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FilePageReqVO; import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FileRespVO; -import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.UploadRespVO; import cn.iocoder.yudao.module.infra.convert.file.FileConvert; import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileDO; import cn.iocoder.yudao.module.infra.service.file.FileService; @@ -46,20 +43,10 @@ public class FileController { @ApiImplicitParam(name = "file", value = "文件附件", required = true, dataTypeClass = MultipartFile.class), @ApiImplicitParam(name = "path", value = "文件路径", example = "yudaoyuanma.png", dataTypeClass = String.class) }) - public CommonResult uploadFile(@RequestParam("file") MultipartFile file, - @RequestParam(value = "path", required = false) String path) - throws Exception { - // 如果路径没传, 系统生成随机路径 - if (StrUtil.isBlank(path)) { - // TODO 生成带日期的路径, 目前 #getFileContent 不支持 - path = IdUtil.fastSimpleUUID() + StrUtil.DOT + FileUtil.extName(file.getOriginalFilename()); - } - String fileUrl = fileService.createFile(path, IoUtil.readBytes(file.getInputStream())); - // 返回结果 - UploadRespVO uploadRespVO = new UploadRespVO(); - uploadRespVO.setFileName(file.getOriginalFilename()); - uploadRespVO.setFileUrl(fileUrl); - return success(uploadRespVO); + @OperateLog(logArgs = false) // 上传文件,没有记录操作日志的必要 + public CommonResult uploadFile(@RequestParam("file") MultipartFile file, + @RequestParam(value = "path", required = false) String path) throws Exception { + return success(fileService.createFile(path, IoUtil.readBytes(file.getInputStream()))); } @DeleteMapping("/delete") diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/db/DataSourceConfigDO.java b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/db/DataSourceConfigDO.java index 9b4c360848..138babe52d 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/db/DataSourceConfigDO.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/db/DataSourceConfigDO.java @@ -1,7 +1,9 @@ package cn.iocoder.yudao.module.infra.dal.dataobject.db; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.framework.mybatis.core.type.EncryptTypeHandler; import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -10,7 +12,7 @@ import lombok.Data; * * @author 芋道源码 */ -@TableName("infra_data_source_config") +@TableName(value = "infra_data_source_config", autoResultMap = true) @KeySequence("infra_data_source_config_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data public class DataSourceConfigDO extends BaseDO { @@ -40,6 +42,7 @@ public class DataSourceConfigDO extends BaseDO { /** * 密码 */ + @TableField(typeHandler = EncryptTypeHandler.class) private String password; } diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/CodegenServiceImpl.java b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/CodegenServiceImpl.java index 8b96db03df..333dbefa64 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/CodegenServiceImpl.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/CodegenServiceImpl.java @@ -206,7 +206,7 @@ public class CodegenServiceImpl implements CodegenService { public Map generationCodes(Long tableId) { // 校验是否已经存在 CodegenTableDO table = codegenTableMapper.selectById(tableId); - if (codegenTableMapper.selectById(tableId) == null) { + if (table == null) { throw exception(CODEGEN_TABLE_NOT_EXISTS); } List columns = codegenColumnMapper.selectListByTableId(tableId); diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/db/DataSourceConfigServiceImpl.java b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/db/DataSourceConfigServiceImpl.java index acc8faa1c7..f2fd0a408a 100755 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/db/DataSourceConfigServiceImpl.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/db/DataSourceConfigServiceImpl.java @@ -8,7 +8,6 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.db.DataSourceConfigDO; import cn.iocoder.yudao.module.infra.dal.mysql.db.DataSourceConfigMapper; import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty; import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties; -import org.jasypt.encryption.StringEncryptor; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -32,9 +31,6 @@ public class DataSourceConfigServiceImpl implements DataSourceConfigService { @Resource private DataSourceConfigMapper dataSourceConfigMapper; - @Resource - private StringEncryptor stringEncryptor; - @Resource private DynamicDataSourceProperties dynamicDataSourceProperties; @@ -44,7 +40,6 @@ public class DataSourceConfigServiceImpl implements DataSourceConfigService { checkConnectionOK(dataSourceConfig); // 插入 - dataSourceConfig.setPassword(stringEncryptor.encrypt(createReqVO.getPassword())); dataSourceConfigMapper.insert(dataSourceConfig); // 返回 return dataSourceConfig.getId(); @@ -58,7 +53,6 @@ public class DataSourceConfigServiceImpl implements DataSourceConfigService { checkConnectionOK(updateObj); // 更新 - updateObj.setPassword(stringEncryptor.encrypt(updateObj.getPassword())); dataSourceConfigMapper.updateById(updateObj); } @@ -83,12 +77,7 @@ public class DataSourceConfigServiceImpl implements DataSourceConfigService { return buildMasterDataSourceConfig(); } // 从 DB 中读取 - DataSourceConfigDO dataSourceConfig = dataSourceConfigMapper.selectById(id); - try { - dataSourceConfig.setPassword(stringEncryptor.decrypt(dataSourceConfig.getPassword())); - } catch (Exception ignore) { // 解码失败,则不解码 - } - return dataSourceConfig; + return dataSourceConfigMapper.selectById(id); } @Override diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java index 66af402e0d..fc3eedbacf 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java @@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.infra.service.file; import cn.hutool.core.io.FileTypeUtil; import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.digest.DigestUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.file.core.client.FileClient; import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FilePageReqVO; @@ -36,6 +38,12 @@ public class FileServiceImpl implements FileService { @Override public String createFile(String path, byte[] content) throws Exception { + // 计算默认的 path 名 + String type = FileTypeUtil.getType(new ByteArrayInputStream(content), path); + if (StrUtil.isEmpty(path)) { + path = DigestUtil.md5Hex(content) + '.' + type; + } + // 上传到文件存储器 FileClient client = fileConfigService.getMasterFileClient(); Assert.notNull(client, "客户端(master) 不能为空"); @@ -46,7 +54,7 @@ public class FileServiceImpl implements FileService { file.setConfigId(client.getId()); file.setPath(path); file.setUrl(url); - file.setType(FileTypeUtil.getType(new ByteArrayInputStream(content))); + file.setType(type); file.setSize(content.length); fileMapper.insert(file); return url; diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/java/dal/do.vm b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/java/dal/do.vm index 238e3140d9..5c22e388a1 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/java/dal/do.vm +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/java/dal/do.vm @@ -30,7 +30,7 @@ public class ${table.className}DO extends BaseDO { #end */ #if (${column.primaryKey})##处理主键 - @TableId#if (${column.javaType} == 'String')type = IdType.INPUT)#end + @TableId#if (${column.javaType} == 'String')(type = IdType.INPUT)#end #end private ${column.javaType} ${column.javaField}; #end diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/sql/sql.vm b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/sql/sql.vm index e00e465af6..0edbdc1eea 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/sql/sql.vm +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/sql/sql.vm @@ -9,6 +9,7 @@ VALUES ( ); -- 按钮父菜单ID +-- 暂时只支持 MySQL。如果你是 Oracle、PostgreSQL、SQLServer 的话,需要手动修改 @parentId 的部分的代码 SELECT @parentId := LAST_INSERT_ID(); -- 按钮 SQL diff --git a/yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/DefaultDatabaseQueryTest.java b/yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/DefaultDatabaseQueryTest.java index 0f1a9dcce3..41b1dae330 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/DefaultDatabaseQueryTest.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/DefaultDatabaseQueryTest.java @@ -27,8 +27,8 @@ public class DefaultDatabaseQueryTest { if (StrUtil.startWithAny(tableInfo.getName().toLowerCase(), "act_", "flw_", "qrtz_")) { continue; } -// System.out.println(String.format("CREATE SEQUENCE %s_seq MINVALUE 0;", tableInfo.getName())); - System.out.println(String.format("DELETE FROM %s WHERE deleted = '1';", tableInfo.getName())); + System.out.println(String.format("CREATE SEQUENCE %s_seq MINVALUE 1;", tableInfo.getName())); +// System.out.println(String.format("DELETE FROM %s WHERE deleted = '1';", tableInfo.getName())); } System.out.println(tableInfos.size()); System.out.println(System.currentTimeMillis() - time); diff --git a/yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/db/DataSourceConfigServiceImplTest.java b/yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/db/DataSourceConfigServiceImplTest.java index c66e92b79a..c23edf537e 100755 --- a/yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/db/DataSourceConfigServiceImplTest.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/db/DataSourceConfigServiceImplTest.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.infra.service.db; +import cn.hutool.core.util.ReflectUtil; +import cn.iocoder.yudao.framework.mybatis.core.type.EncryptTypeHandler; import cn.iocoder.yudao.framework.mybatis.core.util.JdbcUtils; import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigCreateReqVO; @@ -8,8 +10,10 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.db.DataSourceConfigDO; import cn.iocoder.yudao.module.infra.dal.mysql.db.DataSourceConfigMapper; import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties; import org.jasypt.encryption.StringEncryptor; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.MockedStatic; +import org.mockito.stubbing.Answer; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; @@ -21,7 +25,10 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.DATA_SOURCE_CONFIG_NOT_EXISTS; import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.when; /** * {@link DataSourceConfigServiceImpl} 的单元测试类 @@ -43,13 +50,20 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest { @MockBean private DynamicDataSourceProperties dynamicDataSourceProperties; + @BeforeEach + public void setUp() { + // mock 一个空实现的 StringEncryptor,避免 EncryptTypeHandler 报错 + ReflectUtil.setFieldValue(EncryptTypeHandler.class, "encryptor", stringEncryptor); + when(stringEncryptor.encrypt(anyString())).then((Answer) invocation -> invocation.getArgument(0)); + when(stringEncryptor.decrypt(anyString())).then((Answer) invocation -> invocation.getArgument(0)); + } + @Test public void testCreateDataSourceConfig_success() { try (MockedStatic databaseUtilsMock = mockStatic(JdbcUtils.class)) { // 准备参数 DataSourceConfigCreateReqVO reqVO = randomPojo(DataSourceConfigCreateReqVO.class); // mock 方法 - when(stringEncryptor.encrypt(eq(reqVO.getPassword()))).thenReturn("123456"); databaseUtilsMock.when(() -> JdbcUtils.isConnectionOK(eq(reqVO.getUrl()), eq(reqVO.getUsername()), eq(reqVO.getPassword()))).thenReturn(true); @@ -59,8 +73,7 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest { assertNotNull(dataSourceConfigId); // 校验记录的属性是否正确 DataSourceConfigDO dataSourceConfig = dataSourceConfigMapper.selectById(dataSourceConfigId); - assertPojoEquals(reqVO, dataSourceConfig, "password"); - assertEquals("123456", dataSourceConfig.getPassword()); + assertPojoEquals(reqVO, dataSourceConfig); } } @@ -75,7 +88,7 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest { o.setId(dbDataSourceConfig.getId()); // 设置更新的 ID }); // mock 方法 - when(stringEncryptor.encrypt(eq(reqVO.getPassword()))).thenReturn("123456"); +// when(stringEncryptor.encrypt(eq(reqVO.getPassword()))).thenReturn("123456"); databaseUtilsMock.when(() -> JdbcUtils.isConnectionOK(eq(reqVO.getUrl()), eq(reqVO.getUsername()), eq(reqVO.getPassword()))).thenReturn(true); @@ -83,8 +96,7 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest { dataSourceConfigService.updateDataSourceConfig(reqVO); // 校验是否更新正确 DataSourceConfigDO dataSourceConfig = dataSourceConfigMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, dataSourceConfig, "password"); - assertEquals("123456", dataSourceConfig.getPassword()); + assertPojoEquals(reqVO, dataSourceConfig); } } @@ -120,4 +132,16 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest { assertServiceException(() -> dataSourceConfigService.deleteDataSourceConfig(id), DATA_SOURCE_CONFIG_NOT_EXISTS); } + @Test // 测试使用 password 查询,可以查询到数据 + public void testSelectPassword() { + // mock 数据 + DataSourceConfigDO dbDataSourceConfig = randomPojo(DataSourceConfigDO.class); + dataSourceConfigMapper.insert(dbDataSourceConfig);// @Sql: 先插入出一条存在的数据 + + // 调用 + DataSourceConfigDO result = dataSourceConfigMapper.selectOne(DataSourceConfigDO::getPassword, + EncryptTypeHandler.encrypt(dbDataSourceConfig.getPassword())); + System.out.println(result); + } + } diff --git a/yudao-module-infra/yudao-module-infra-biz/src/test/resources/sql/create_tables.sql b/yudao-module-infra/yudao-module-infra-biz/src/test/resources/sql/create_tables.sql index 53d8594fe7..c60230a4c0 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/test/resources/sql/create_tables.sql +++ b/yudao-module-infra/yudao-module-infra-biz/src/test/resources/sql/create_tables.sql @@ -1,12 +1,12 @@ CREATE TABLE IF NOT EXISTS "infra_config" ( "id" bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "group" varchar(50) NOT NULL, + "category" varchar(50) NOT NULL, "type" tinyint NOT NULL, "name" varchar(100) NOT NULL DEFAULT '', - "key" varchar(100) NOT NULL DEFAULT '', + "config_key" varchar(100) NOT NULL DEFAULT '', "value" varchar(500) NOT NULL DEFAULT '', - "sensitive" bit NOT NULL, + "visible" bit NOT NULL, "remark" varchar(500) DEFAULT NULL, "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java index 57821c43a4..2529ae4fd6 100644 --- a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java @@ -17,7 +17,6 @@ public interface ErrorCodeConstants { // ========== AUTH 模块 1004003000 ========== ErrorCode AUTH_LOGIN_BAD_CREDENTIALS = new ErrorCode(1004003000, "登录失败,账号密码不正确"); ErrorCode AUTH_LOGIN_USER_DISABLED = new ErrorCode(1004003001, "登录失败,账号被禁用"); - ErrorCode AUTH_LOGIN_FAIL_UNKNOWN = new ErrorCode(1004003002, "登录失败"); // 登录失败的兜底,未知原因 ErrorCode AUTH_TOKEN_EXPIRED = new ErrorCode(1004003004, "Token 已经过期"); ErrorCode AUTH_THIRD_LOGIN_NOT_BIND = new ErrorCode(1004003005, "未绑定账号,需要进行绑定"); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/AppAuthController.http b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/AppAuthController.http index 7a10c77541..b1704f55d4 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/AppAuthController.http +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/AppAuthController.http @@ -1,5 +1,5 @@ ### 请求 /login 接口 => 成功 -POST {{appApi}}/member/login +POST {{appApi}}/member/auth/login Content-Type: application/json tenant-id: {{appTenentId}} @@ -19,7 +19,7 @@ tenant-id: {{appTenentId}} } ### 请求 /sms-login 接口 => 成功 -POST {{appApi}}/member/sms-login +POST {{appApi}}/member/auth/sms-login Content-Type: application/json tenant-id: {{appTenentId}} @@ -29,7 +29,12 @@ tenant-id: {{appTenentId}} } ### 请求 /logout 接口 => 成功 -POST {{appApi}}/member/logout +POST {{appApi}}/member/auth/logout Content-Type: application/json Authorization: Bearer c1b76bdaf2c146c581caa4d7fd81ee66 tenant-id: {{appTenentId}} + +### 请求 /auth/refresh-token 接口 => 成功 +POST {{appApi}}/member/auth/refresh-token?refreshToken=bc43d929094849a28b3a69f6e6940d70 +Content-Type: application/json +tenant-id: {{appTenentId}} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/AppAuthController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/AppAuthController.java index 3a78b39774..6532f7acaf 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/AppAuthController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/AppAuthController.java @@ -1,7 +1,11 @@ package cn.iocoder.yudao.module.member.controller.app.auth; +import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import cn.iocoder.yudao.framework.security.config.SecurityProperties; import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.module.member.controller.app.auth.vo.*; import cn.iocoder.yudao.module.member.service.auth.MemberAuthService; import io.swagger.annotations.Api; @@ -13,11 +17,10 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP; -import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getUserAgent; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; @Api(tags = "用户 APP - 认证") @@ -30,19 +33,39 @@ public class AppAuthController { @Resource private MemberAuthService authService; + @Resource + private SecurityProperties securityProperties; + @PostMapping("/login") @ApiOperation("使用手机 + 密码登录") public CommonResult login(@RequestBody @Valid AppAuthLoginReqVO reqVO) { - String token = authService.login(reqVO, getClientIP(), getUserAgent()); - return success(AppAuthLoginRespVO.builder().token(token).build()); + return success(authService.login(reqVO)); } + @PostMapping("/logout") + @ApiOperation("登出系统") + public CommonResult logout(HttpServletRequest request) { + String token = SecurityFrameworkUtils.obtainAuthorization(request, securityProperties.getTokenHeader()); + if (StrUtil.isNotBlank(token)) { + authService.logout(token); + } + return success(true); + } + + @PostMapping("/refresh-token") + @ApiOperation("刷新令牌") + @ApiImplicitParam(name = "refreshToken", value = "刷新令牌", required = true, dataTypeClass = String.class) + @OperateLog(enable = false) // 避免 Post 请求被记录操作日志 + public CommonResult refreshToken(@RequestParam("refreshToken") String refreshToken) { + return success(authService.refreshToken(refreshToken)); + } + + // ========== 短信登录相关 ========== + @PostMapping("/sms-login") @ApiOperation("使用手机 + 验证码登录") public CommonResult smsLogin(@RequestBody @Valid AppAuthSmsLoginReqVO reqVO) { - String token = authService.smsLogin(reqVO, getClientIP(), getUserAgent()); - // 返回结果 - return success(AppAuthLoginRespVO.builder().token(token).build()); + return success(authService.smsLogin(reqVO)); } @PostMapping("/send-sms-code") @@ -83,16 +106,14 @@ public class AppAuthController { @PostMapping("/social-quick-login") @ApiOperation(value = "社交快捷登录,使用 code 授权码", notes = "适合未登录的用户,但是社交账号已绑定用户") - public CommonResult socialLogin(@RequestBody @Valid AppAuthSocialQuickLoginReqVO reqVO) { - String token = authService.socialQuickLogin(reqVO, getClientIP(), getUserAgent()); - return success(AppAuthLoginRespVO.builder().token(token).build()); + public CommonResult socialQuickLogin(@RequestBody @Valid AppAuthSocialQuickLoginReqVO reqVO) { + return success(authService.socialQuickLogin(reqVO)); } @PostMapping("/social-bind-login") @ApiOperation(value = "社交绑定登录,使用 手机号 + 手机验证码", notes = "适合未登录的用户,进行登录 + 绑定") - public CommonResult socialLogin2(@RequestBody @Valid AppAuthSocialBindLoginReqVO reqVO) { - String token = authService.socialBindLogin(reqVO, getClientIP(), getUserAgent()); - return success(AppAuthLoginRespVO.builder().token(token).build()); + public CommonResult socialBindLogin(@RequestBody @Valid AppAuthSocialBindLoginReqVO reqVO) { + return success(authService.socialBindLogin(reqVO)); } } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/vo/AppAuthLoginRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/vo/AppAuthLoginRespVO.java index 07ad43118e..a633730712 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/vo/AppAuthLoginRespVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/vo/AppAuthLoginRespVO.java @@ -7,14 +7,25 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -@ApiModel("用户 APP - 手机密码登录 Response VO") +import java.util.Date; + +@ApiModel("用户 APP - 登录 Response VO") @Data @NoArgsConstructor @AllArgsConstructor @Builder public class AppAuthLoginRespVO { - @ApiModelProperty(value = "token", required = true, example = "yudaoyuanma") - private String token; + @ApiModelProperty(value = "用户编号", required = true, example = "1024") + private Long userId; + + @ApiModelProperty(value = "访问令牌", required = true, example = "happy") + private String accessToken; + + @ApiModelProperty(value = "刷新令牌", required = true, example = "nice") + private String refreshToken; + + @ApiModelProperty(value = "过期时间", required = true) + private Date expiresTime; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/auth/AuthConvert.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/auth/AuthConvert.java index a15555df1b..5a44d76bd8 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/auth/AuthConvert.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/auth/AuthConvert.java @@ -1,17 +1,14 @@ package cn.iocoder.yudao.module.member.convert.auth; -import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; -import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.module.member.controller.app.auth.vo.*; import cn.iocoder.yudao.module.member.controller.app.social.vo.AppSocialUserUnbindReqVO; -import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; +import cn.iocoder.yudao.module.system.api.auth.dto.OAuth2AccessTokenRespDTO; import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeSendReqDTO; import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeUseReqDTO; import cn.iocoder.yudao.module.system.api.social.dto.SocialUserBindReqDTO; import cn.iocoder.yudao.module.system.api.social.dto.SocialUserUnbindReqDTO; import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum; import org.mapstruct.Mapper; -import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; @Mapper @@ -19,14 +16,6 @@ public interface AuthConvert { AuthConvert INSTANCE = Mappers.getMapper(AuthConvert.class); - @Mapping(source = "mobile", target = "username") - LoginUser convert0(MemberUserDO bean); - - default LoginUser convert(MemberUserDO bean) { - // 目的,为了设置 UserTypeEnum.MEMBER.getValue() - return convert0(bean).setUserType(UserTypeEnum.MEMBER.getValue()); - } - SocialUserBindReqDTO convert(Long userId, Integer userType, AppAuthSocialBindLoginReqVO reqVO); SocialUserBindReqDTO convert(Long userId, Integer userType, AppAuthSocialQuickLoginReqVO reqVO); SocialUserUnbindReqDTO convert(Long userId, Integer userType, AppSocialUserUnbindReqVO reqVO); @@ -35,4 +24,6 @@ public interface AuthConvert { SmsCodeUseReqDTO convert(AppAuthResetPasswordReqVO reqVO, SmsSceneEnum scene, String usedIp); SmsCodeUseReqDTO convert(AppAuthSmsLoginReqVO reqVO, Integer scene, String usedIp); + AppAuthLoginRespVO convert(OAuth2AccessTokenRespDTO bean); + } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/framework/package-info.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/framework/package-info.java new file mode 100644 index 0000000000..02d61331af --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/framework/package-info.java @@ -0,0 +1,6 @@ +/** + * 属于 system 模块的 framework 封装 + * + * @author 芋道源码 + */ +package cn.iocoder.yudao.module.member.framework; diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/framework/security/config/SecurityConfiguration.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/framework/security/config/SecurityConfiguration.java new file mode 100644 index 0000000000..c284b35d6d --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/framework/security/config/SecurityConfiguration.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.member.framework.security.config; + +import cn.iocoder.yudao.framework.security.config.AuthorizeRequestsCustomizer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer; + +/** + * Member 模块的 Security 配置 + */ +@Configuration("memberSecurityConfiguration") +public class SecurityConfiguration { + + @Bean("memberAuthorizeRequestsCustomizer") + public AuthorizeRequestsCustomizer authorizeRequestsCustomizer() { + return new AuthorizeRequestsCustomizer() { + + @Override + public void customize(ExpressionUrlAuthorizationConfigurer.ExpressionInterceptUrlRegistry registry) { + // 登录的接口 + registry.antMatchers(buildAdminApi("/member/auth/logout")).permitAll(); + } + + }; + } + +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/framework/security/core/package-info.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/framework/security/core/package-info.java new file mode 100644 index 0000000000..3abf5630f8 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/framework/security/core/package-info.java @@ -0,0 +1,4 @@ +/** + * 占位 + */ +package cn.iocoder.yudao.module.member.framework.security.core; diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthService.java index f7aae6ed89..ded1922179 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthService.java @@ -1,6 +1,5 @@ package cn.iocoder.yudao.module.member.service.auth; -import cn.iocoder.yudao.framework.security.core.service.SecurityAuthFrameworkService; import cn.iocoder.yudao.module.member.controller.app.auth.vo.*; import javax.validation.Valid; @@ -12,47 +11,46 @@ import javax.validation.Valid; * * @author 芋道源码 */ -public interface MemberAuthService extends SecurityAuthFrameworkService { +public interface MemberAuthService { /** * 手机 + 密码登录 * * @param reqVO 登录信息 - * @param userIp 用户 IP - * @param userAgent 用户 UA - * @return 身份令牌,使用 JWT 方式 + * @return 登录结果 */ - String login(@Valid AppAuthLoginReqVO reqVO, String userIp, String userAgent); + AppAuthLoginRespVO login(@Valid AppAuthLoginReqVO reqVO); + + /** + * 基于 token 退出登录 + * + * @param token token + */ + void logout(String token); /** * 手机 + 验证码登陆 * * @param reqVO 登陆信息 - * @param userIp 用户 IP - * @param userAgent 用户 UA - * @return 身份令牌,使用 JWT 方式 + * @return 登录结果 */ - String smsLogin(@Valid AppAuthSmsLoginReqVO reqVO, String userIp, String userAgent); + AppAuthLoginRespVO smsLogin(@Valid AppAuthSmsLoginReqVO reqVO); /** * 社交登录,使用 code 授权码 * * @param reqVO 登录信息 - * @param userIp 用户 IP - * @param userAgent 用户 UA - * @return 身份令牌,使用 JWT 方式 + * @return 登录结果 */ - String socialQuickLogin(@Valid AppAuthSocialQuickLoginReqVO reqVO, String userIp, String userAgent); + AppAuthLoginRespVO socialQuickLogin(@Valid AppAuthSocialQuickLoginReqVO reqVO); /** * 社交登录,使用 手机号 + 手机验证码 * * @param reqVO 登录信息 - * @param userIp 用户 IP - * @param userAgent 用户 UA - * @return 身份令牌,使用 JWT 方式 + * @return 登录结果 */ - String socialBindLogin(@Valid AppAuthSocialBindLoginReqVO reqVO, String userIp, String userAgent); + AppAuthLoginRespVO socialBindLogin(@Valid AppAuthSocialBindLoginReqVO reqVO); /** * 获得社交认证 URL @@ -84,4 +82,11 @@ public interface MemberAuthService extends SecurityAuthFrameworkService { */ void sendSmsCode(Long userId, AppAuthSmsSendReqVO reqVO); + /** + * 刷新访问令牌 + * + * @param refreshToken 刷新令牌 + * @return 登录结果 + */ + AppAuthLoginRespVO refreshToken(String refreshToken); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthServiceImpl.java index 5c2788df97..5911d81c38 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthServiceImpl.java @@ -1,35 +1,29 @@ package cn.iocoder.yudao.module.member.service.auth; import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; -import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.yudao.framework.security.core.authentication.MultiUsernamePasswordAuthenticationToken; import cn.iocoder.yudao.module.member.controller.app.auth.vo.*; import cn.iocoder.yudao.module.member.convert.auth.AuthConvert; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper; import cn.iocoder.yudao.module.member.service.user.MemberUserService; -import cn.iocoder.yudao.module.system.api.auth.UserSessionApi; +import cn.iocoder.yudao.module.system.api.auth.OAuth2TokenApi; +import cn.iocoder.yudao.module.system.api.auth.dto.OAuth2AccessTokenCreateReqDTO; +import cn.iocoder.yudao.module.system.api.auth.dto.OAuth2AccessTokenRespDTO; import cn.iocoder.yudao.module.system.api.logger.LoginLogApi; import cn.iocoder.yudao.module.system.api.logger.dto.LoginLogCreateReqDTO; import cn.iocoder.yudao.module.system.api.sms.SmsCodeApi; import cn.iocoder.yudao.module.system.api.social.SocialUserApi; +import cn.iocoder.yudao.module.system.enums.auth.OAuth2ClientConstants; import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum; import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum; import com.google.common.annotations.VisibleForTesting; import lombok.extern.slf4j.Slf4j; -import org.springframework.context.annotation.Lazy; -import org.springframework.security.authentication.AuthenticationManager; -import org.springframework.security.authentication.BadCredentialsException; -import org.springframework.security.authentication.DisabledException; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.AuthenticationException; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -50,10 +44,6 @@ import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*; @Slf4j public class MemberAuthServiceImpl implements MemberAuthService { - @Resource - @Lazy // 延迟加载,因为存在相互依赖的问题 - private AuthenticationManager authenticationManager; - @Resource private MemberUserService userService; @Resource @@ -61,9 +51,9 @@ public class MemberAuthServiceImpl implements MemberAuthService { @Resource private LoginLogApi loginLogApi; @Resource - private UserSessionApi userSessionApi; - @Resource private SocialUserApi socialUserApi; + @Resource + private OAuth2TokenApi oauth2TokenApi; @Resource private PasswordEncoder passwordEncoder; @@ -71,44 +61,31 @@ public class MemberAuthServiceImpl implements MemberAuthService { private MemberUserMapper userMapper; @Override - public UserDetails loadUserByUsername(String mobile) throws UsernameNotFoundException { - // 获取 username 对应的 SysUserDO - MemberUserDO user = userService.getUserByMobile(mobile); - if (user == null) { - throw new UsernameNotFoundException(mobile); - } - // 创建 LoginUser 对象 - return AuthConvert.INSTANCE.convert(user); - } - - @Override - public String login(AppAuthLoginReqVO reqVO, String userIp, String userAgent) { + public AppAuthLoginRespVO login(AppAuthLoginReqVO reqVO) { // 使用手机 + 密码,进行登录。 - LoginUser loginUser = this.login0(reqVO.getMobile(), reqVO.getPassword()); + MemberUserDO user = login0(reqVO.getMobile(), reqVO.getPassword()); - // 缓存登录用户到 Redis 中,返回 Token 令牌 - return createUserSessionAfterLoginSuccess(loginUser, LoginLogTypeEnum.LOGIN_USERNAME, userIp, userAgent); + // 创建 Token 令牌,记录登录日志 + return createTokenAfterLoginSuccess(user, reqVO.getMobile(), LoginLogTypeEnum.LOGIN_MOBILE); } @Override @Transactional - public String smsLogin(AppAuthSmsLoginReqVO reqVO, String userIp, String userAgent) { + public AppAuthLoginRespVO smsLogin(AppAuthSmsLoginReqVO reqVO) { // 校验验证码 + String userIp = getClientIP(); smsCodeApi.useSmsCode(AuthConvert.INSTANCE.convert(reqVO, SmsSceneEnum.MEMBER_LOGIN.getScene(), userIp)); // 获得获得注册用户 MemberUserDO user = userService.createUserIfAbsent(reqVO.getMobile(), userIp); Assert.notNull(user, "获取用户失败,结果为空"); - // 执行登陆 - LoginUser loginUser = AuthConvert.INSTANCE.convert(user); - - // 缓存登录用户到 Redis 中,返回 Token 令牌 - return createUserSessionAfterLoginSuccess(loginUser, LoginLogTypeEnum.LOGIN_SMS, userIp, userAgent); + // 创建 Token 令牌,记录登录日志 + return createTokenAfterLoginSuccess(user, reqVO.getMobile(), LoginLogTypeEnum.LOGIN_SMS); } @Override - public String socialQuickLogin(AppAuthSocialQuickLoginReqVO reqVO, String userIp, String userAgent) { + public AppAuthLoginRespVO socialQuickLogin(AppAuthSocialQuickLoginReqVO reqVO) { // 使用 code 授权码,进行登录。然后,获得到绑定的用户编号 Long userId = socialUserApi.getBindUserId(UserTypeEnum.MEMBER.getValue(), reqVO.getType(), reqVO.getCode(), reqVO.getState()); @@ -122,31 +99,30 @@ public class MemberAuthServiceImpl implements MemberAuthService { throw exception(USER_NOT_EXISTS); } - // 创建 LoginUser 对象 - LoginUser loginUser = AuthConvert.INSTANCE.convert(user); - - // 缓存登录用户到 Redis 中,返回 Token 令牌 - return createUserSessionAfterLoginSuccess(loginUser, LoginLogTypeEnum.LOGIN_SOCIAL, userIp, userAgent); + // 创建 Token 令牌,记录登录日志 + return createTokenAfterLoginSuccess(user, user.getMobile(), LoginLogTypeEnum.LOGIN_SOCIAL); } @Override - public String socialBindLogin(AppAuthSocialBindLoginReqVO reqVO, String userIp, String userAgent) { + public AppAuthLoginRespVO socialBindLogin(AppAuthSocialBindLoginReqVO reqVO) { // 使用手机号、手机验证码登录 AppAuthSmsLoginReqVO loginReqVO = AppAuthSmsLoginReqVO.builder() .mobile(reqVO.getMobile()).code(reqVO.getSmsCode()).build(); - String token = this.smsLogin(loginReqVO, userIp, userAgent); - LoginUser loginUser = userSessionApi.getLoginUser(token); + AppAuthLoginRespVO token = smsLogin(loginReqVO); // 绑定社交用户 - socialUserApi.bindSocialUser(AuthConvert.INSTANCE.convert(loginUser.getId(), getUserType().getValue(), reqVO)); + socialUserApi.bindSocialUser(AuthConvert.INSTANCE.convert(token.getUserId(), getUserType().getValue(), reqVO)); return token; } - private String createUserSessionAfterLoginSuccess(LoginUser loginUser, LoginLogTypeEnum logType, String userIp, String userAgent) { + private AppAuthLoginRespVO createTokenAfterLoginSuccess(MemberUserDO user, String mobile, LoginLogTypeEnum logType) { // 插入登陆日志 - createLoginLog(loginUser.getUsername(), logType, LoginResultEnum.SUCCESS); - // 缓存登录用户到 Redis 中,返回 Token 令牌 - return userSessionApi.createUserSession(loginUser, userIp, userAgent); + createLoginLog(user.getId(), mobile, logType, LoginResultEnum.SUCCESS); + // 创建 Token 令牌 + OAuth2AccessTokenRespDTO accessTokenRespDTO = oauth2TokenApi.createAccessToken(new OAuth2AccessTokenCreateReqDTO() + .setUserId(user.getId()).setUserType(getUserType().getValue()).setClientId(OAuth2ClientConstants.CLIENT_ID_DEFAULT)); + // 构建返回结果 + return AuthConvert.INSTANCE.convert(accessTokenRespDTO); } @Override @@ -154,40 +130,32 @@ public class MemberAuthServiceImpl implements MemberAuthService { return socialUserApi.getAuthorizeUrl(type, redirectUri); } - private LoginUser login0(String username, String password) { - final LoginLogTypeEnum logType = LoginLogTypeEnum.LOGIN_USERNAME; - // 用户验证 - Authentication authentication; - try { - // 调用 Spring Security 的 AuthenticationManager#authenticate(...) 方法,使用账号密码进行认证 - // 在其内部,会调用到 loadUserByUsername 方法,获取 User 信息 - authentication = authenticationManager.authenticate(new MultiUsernamePasswordAuthenticationToken( - username, password, getUserType())); - } catch (BadCredentialsException badCredentialsException) { - this.createLoginLog(username, logType, LoginResultEnum.BAD_CREDENTIALS); + private MemberUserDO login0(String mobile, String password) { + final LoginLogTypeEnum logTypeEnum = LoginLogTypeEnum.LOGIN_MOBILE; + // 校验账号是否存在 + MemberUserDO user = userService.getUserByMobile(mobile); + if (user == null) { + createLoginLog(null, mobile, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS); throw exception(AUTH_LOGIN_BAD_CREDENTIALS); - } catch (DisabledException disabledException) { - this.createLoginLog(username, logType, LoginResultEnum.USER_DISABLED); - throw exception(AUTH_LOGIN_USER_DISABLED); - } catch (AuthenticationException authenticationException) { - log.error("[login0][username({}) 发生未知异常]", username, authenticationException); - this.createLoginLog(username, logType, LoginResultEnum.UNKNOWN_ERROR); - throw exception(AUTH_LOGIN_FAIL_UNKNOWN); } - Assert.notNull(authentication.getPrincipal(), "Principal 不会为空"); - return (LoginUser) authentication.getPrincipal(); + if (!userService.isPasswordMatch(password, user.getPassword())) { + createLoginLog(user.getId(), mobile, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS); + throw exception(AUTH_LOGIN_BAD_CREDENTIALS); + } + // 校验是否禁用 + if (ObjectUtil.notEqual(user.getStatus(), CommonStatusEnum.ENABLE.getStatus())) { + createLoginLog(user.getId(), mobile, logTypeEnum, LoginResultEnum.USER_DISABLED); + throw exception(AUTH_LOGIN_USER_DISABLED); + } + return user; } - private void createLoginLog(String mobile, LoginLogTypeEnum logType, LoginResultEnum loginResult) { - // 获得用户 - MemberUserDO user = userService.getUserByMobile(mobile); + private void createLoginLog(Long userId, String mobile, LoginLogTypeEnum logType, LoginResultEnum loginResult) { // 插入登录日志 LoginLogCreateReqDTO reqDTO = new LoginLogCreateReqDTO(); reqDTO.setLogType(logType.getType()); reqDTO.setTraceId(TracerUtils.getTraceId()); - if (user != null) { - reqDTO.setUserId(user.getId()); - } + reqDTO.setUserId(userId); reqDTO.setUserType(getUserType().getValue()); reqDTO.setUsername(mobile); reqDTO.setUserAgent(ServletUtils.getUserAgent()); @@ -195,72 +163,20 @@ public class MemberAuthServiceImpl implements MemberAuthService { reqDTO.setResult(loginResult.getResult()); loginLogApi.createLoginLog(reqDTO); // 更新最后登录时间 - if (user != null && Objects.equals(LoginResultEnum.SUCCESS.getResult(), loginResult.getResult())) { - userService.updateUserLogin(user.getId(), getClientIP()); + if (userId != null && Objects.equals(LoginResultEnum.SUCCESS.getResult(), loginResult.getResult())) { + userService.updateUserLogin(userId, getClientIP()); } } - @Override - public LoginUser verifyTokenAndRefresh(String token) { - // 获得 LoginUser - LoginUser loginUser = userSessionApi.getLoginUser(token); - if (loginUser == null) { - return null; - } - // 刷新 LoginUser 缓存 - this.refreshLoginUserCache(token, loginUser); - return loginUser; - } - - private void refreshLoginUserCache(String token, LoginUser loginUser) { - // 每 1/3 的 Session 超时时间,刷新 LoginUser 缓存 - if (System.currentTimeMillis() - loginUser.getUpdateTime().getTime() < - userSessionApi.getSessionTimeoutMillis() / 3) { - return; - } - - // 重新加载 UserDO 信息 - MemberUserDO user = userService.getUser(loginUser.getId()); - if (user == null || CommonStatusEnum.DISABLE.getStatus().equals(user.getStatus())) { - // 校验 token 时,用户被禁用的情况下,也认为 token 过期,方便前端跳转到登录界面 - throw exception(AUTH_TOKEN_EXPIRED); - } - - // 刷新 LoginUser 缓存 - userSessionApi.refreshUserSession(token, loginUser); - } - - @Override - public LoginUser mockLogin(Long userId) { - // 获取用户编号对应的 UserDO - MemberUserDO user = userService.getUser(userId); - if (user == null) { - throw new UsernameNotFoundException(String.valueOf(userId)); - } - - // 执行登陆 - this.createLoginLog(user.getMobile(), LoginLogTypeEnum.LOGIN_MOCK, LoginResultEnum.SUCCESS); - - // 创建 LoginUser 对象 - return AuthConvert.INSTANCE.convert(user); - } - @Override public void logout(String token) { - // 查询用户信息 - LoginUser loginUser = userSessionApi.getLoginUser(token); - if (loginUser == null) { + // 删除访问令牌 + OAuth2AccessTokenRespDTO accessTokenRespDTO = oauth2TokenApi.removeAccessToken(token); + if (accessTokenRespDTO == null) { return; } - // 删除 session - userSessionApi.deleteUserSession(token); - // 记录登出日志 - this.createLogoutLog(loginUser.getId(), loginUser.getUsername()); - } - - @Override - public UserTypeEnum getUserType() { - return UserTypeEnum.MEMBER; + // 删除成功,则记录登出日志 + createLogoutLog(accessTokenRespDTO.getUserId()); } @Override @@ -269,6 +185,7 @@ public class MemberAuthServiceImpl implements MemberAuthService { MemberUserDO userDO = checkOldPassword(userId, reqVO.getOldPassword()); // 更新用户密码 + // TODO 芋艿:需要重构到用户模块 userMapper.updateById(MemberUserDO.builder().id(userDO.getId()) .password(passwordEncoder.encode(reqVO.getPassword())).build()); } @@ -293,6 +210,12 @@ public class MemberAuthServiceImpl implements MemberAuthService { smsCodeApi.sendSmsCode(AuthConvert.INSTANCE.convert(reqVO).setCreateIp(getClientIP())); } + @Override + public AppAuthLoginRespVO refreshToken(String refreshToken) { + OAuth2AccessTokenRespDTO accessTokenDO = oauth2TokenApi.refreshAccessToken(refreshToken, OAuth2ClientConstants.CLIENT_ID_DEFAULT); + return AuthConvert.INSTANCE.convert(accessTokenDO); + } + /** * 校验旧密码 * @@ -321,17 +244,29 @@ public class MemberAuthServiceImpl implements MemberAuthService { return user; } - private void createLogoutLog(Long userId, String username) { + private void createLogoutLog(Long userId) { LoginLogCreateReqDTO reqDTO = new LoginLogCreateReqDTO(); reqDTO.setLogType(LoginLogTypeEnum.LOGOUT_SELF.getType()); reqDTO.setTraceId(TracerUtils.getTraceId()); reqDTO.setUserId(userId); reqDTO.setUserType(getUserType().getValue()); - reqDTO.setUsername(username); + reqDTO.setUsername(getMobile(userId)); reqDTO.setUserAgent(ServletUtils.getUserAgent()); reqDTO.setUserIp(getClientIP()); reqDTO.setResult(LoginResultEnum.SUCCESS.getResult()); loginLogApi.createLoginLog(reqDTO); } + private String getMobile(Long userId) { + if (userId == null) { + return null; + } + MemberUserDO user = userService.getUser(userId); + return user != null ? user.getMobile() : null; + } + + private UserTypeEnum getUserType() { + return UserTypeEnum.MEMBER; + } + } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserService.java index 3c0e62de83..3b63c8d717 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserService.java @@ -69,4 +69,13 @@ public interface MemberUserService { */ void updateUserMobile(Long userId, AppUserUpdateMobileReqVO reqVO); + /** + * 判断密码是否匹配 + * + * @param rawPassword 未加密的密码 + * @param encodedPassword 加密后的密码 + * @return 是否匹配 + */ + boolean isPasswordMatch(String rawPassword, String encodedPassword); + } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java index 0522e8eda8..ff91b07813 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java @@ -69,7 +69,7 @@ public class MemberUserServiceImpl implements MemberUserService { MemberUserDO user = new MemberUserDO(); user.setMobile(mobile); user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启 - user.setPassword(passwordEncoder.encode(password)); // 加密密码 + user.setPassword(encodePassword(password)); // 加密密码 user.setRegisterIp(registerIp); memberUserMapper.insert(user); return user; @@ -127,6 +127,21 @@ public class MemberUserServiceImpl implements MemberUserService { memberUserMapper.updateById(MemberUserDO.builder().id(userId).mobile(reqVO.getMobile()).build()); } + @Override + public boolean isPasswordMatch(String rawPassword, String encodedPassword) { + return passwordEncoder.matches(rawPassword, encodedPassword); + } + + /** + * 对密码进行加密 + * + * @param password 密码 + * @return 加密后的密码 + */ + private String encodePassword(String password) { + return passwordEncoder.encode(password); + } + @VisibleForTesting public MemberUserDO checkUserExists(Long id) { if (id == null) { diff --git a/yudao-module-member/yudao-module-member-biz/src/test/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthServiceTest.java b/yudao-module-member/yudao-module-member-biz/src/test/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthServiceTest.java index a982f9625e..7218e6f1fe 100644 --- a/yudao-module-member/yudao-module-member-biz/src/test/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthServiceTest.java +++ b/yudao-module-member/yudao-module-member-biz/src/test/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthServiceTest.java @@ -9,14 +9,13 @@ import cn.iocoder.yudao.module.member.controller.app.auth.vo.AppAuthUpdatePasswo import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper; import cn.iocoder.yudao.module.member.service.user.MemberUserService; -import cn.iocoder.yudao.module.system.api.auth.UserSessionApi; +import cn.iocoder.yudao.module.system.api.auth.OAuth2TokenApi; import cn.iocoder.yudao.module.system.api.logger.LoginLogApi; import cn.iocoder.yudao.module.system.api.sms.SmsCodeApi; import cn.iocoder.yudao.module.system.api.social.SocialUserApi; import org.junit.jupiter.api.Test; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; -import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.crypto.password.PasswordEncoder; import javax.annotation.Resource; @@ -38,8 +37,8 @@ import static org.mockito.Mockito.when; @Import({MemberAuthServiceImpl.class, YudaoRedisAutoConfiguration.class}) public class MemberAuthServiceTest extends BaseDbAndRedisUnitTest { - @MockBean - private AuthenticationManager authenticationManager; + // TODO @芋艿:登录相关的单测,待补全 + @MockBean private MemberUserService userService; @MockBean @@ -47,7 +46,7 @@ public class MemberAuthServiceTest extends BaseDbAndRedisUnitTest { @MockBean private LoginLogApi loginLogApi; @MockBean - private UserSessionApi userSessionApi; + private OAuth2TokenApi oauth2TokenApi; @MockBean private SocialUserApi socialUserApi; @MockBean diff --git a/yudao-module-system/yudao-module-system-api/pom.xml b/yudao-module-system/yudao-module-system-api/pom.xml index 81b1299161..655db05a72 100644 --- a/yudao-module-system/yudao-module-system-api/pom.xml +++ b/yudao-module-system/yudao-module-system-api/pom.xml @@ -29,13 +29,6 @@ true - - - cn.iocoder.boot - yudao-spring-boot-starter-security - true - - diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/auth/OAuth2TokenApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/auth/OAuth2TokenApi.java new file mode 100644 index 0000000000..5d02015658 --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/auth/OAuth2TokenApi.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.system.api.auth; + +import cn.iocoder.yudao.module.system.api.auth.dto.OAuth2AccessTokenCheckRespDTO; +import cn.iocoder.yudao.module.system.api.auth.dto.OAuth2AccessTokenCreateReqDTO; +import cn.iocoder.yudao.module.system.api.auth.dto.OAuth2AccessTokenRespDTO; + +import javax.validation.Valid; + +/** + * OAuth2.0 Token API 接口 + * + * @author 芋道源码 + */ +public interface OAuth2TokenApi { + + /** + * 创建访问令牌 + * + * @param reqDTO 访问令牌的创建信息 + * @return 访问令牌的信息 + */ + OAuth2AccessTokenRespDTO createAccessToken(@Valid OAuth2AccessTokenCreateReqDTO reqDTO); + + /** + * 校验访问令牌 + * + * @param accessToken 访问令牌 + * @return 访问令牌的信息 + */ + OAuth2AccessTokenCheckRespDTO checkAccessToken(String accessToken); + + /** + * 移除访问令牌 + * + * @param accessToken 访问令牌 + * @return 访问令牌的信息 + */ + OAuth2AccessTokenRespDTO removeAccessToken(String accessToken); + + /** + * 刷新访问令牌 + * + * @param refreshToken 刷新令牌 + * @param clientId 客户端编号 + * @return 访问令牌的信息 + */ + OAuth2AccessTokenRespDTO refreshAccessToken(String refreshToken, String clientId); + +} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/auth/UserSessionApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/auth/UserSessionApi.java deleted file mode 100644 index e7fdcb982a..0000000000 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/auth/UserSessionApi.java +++ /dev/null @@ -1,56 +0,0 @@ -package cn.iocoder.yudao.module.system.api.auth; - -import cn.iocoder.yudao.framework.security.core.LoginUser; - -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; - -/** - * 在线用户 Session API 接口 - * - * @author 芋道源码 - */ -public interface UserSessionApi { - - /** - * 创建在线用户 Session - * - * @param loginUser 登录用户 - * @param userIp 用户 IP - * @param userAgent 用户 UA - * @return Token 令牌 - */ - String createUserSession(@NotNull(message = "登录用户不能为空") LoginUser loginUser, String userIp, String userAgent); - - /** - * 刷新在线用户 Session 的更新时间 - * - * @param token Token 令牌 - * @param loginUser 登录用户 - */ - void refreshUserSession(@NotEmpty(message = "Token 令牌不能为空") String token, - @NotNull(message = "登录用户不能为空") LoginUser loginUser); - - /** - * 删除在线用户 Session - * - * @param token Token 令牌 - */ - void deleteUserSession(String token); - - /** - * 获得 Token 令牌对应的在线用户 - * - * @param token Token 令牌 - * @return 在线用户 - */ - LoginUser getLoginUser(String token); - - /** - * 获得 Session 超时时间,单位:毫秒 - * - * @return 超时时间 - */ - Long getSessionTimeoutMillis(); - -} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/auth/dto/OAuth2AccessTokenCheckRespDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/auth/dto/OAuth2AccessTokenCheckRespDTO.java new file mode 100644 index 0000000000..5b708ff66e --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/auth/dto/OAuth2AccessTokenCheckRespDTO.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.system.api.auth.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * OAuth2.0 访问令牌的校验 Response DTO + * + * @author 芋道源码 + */ +@Data +public class OAuth2AccessTokenCheckRespDTO implements Serializable { + + /** + * 用户编号 + */ + private Long userId; + /** + * 用户类型 + */ + private Integer userType; + /** + * 租户编号 + */ + private Long tenantId; + /** + * 授权范围的数组 + */ + private List scopes; + +} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/auth/dto/OAuth2AccessTokenCreateReqDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/auth/dto/OAuth2AccessTokenCreateReqDTO.java new file mode 100644 index 0000000000..1d9b793d3a --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/auth/dto/OAuth2AccessTokenCreateReqDTO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.system.api.auth.dto; + +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.framework.common.validation.InEnum; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * OAuth2.0 访问令牌创建 Request DTO + * + * @author 芋道源码 + */ +@Data +public class OAuth2AccessTokenCreateReqDTO implements Serializable { + + /** + * 用户编号 + */ + @NotNull(message = "用户编号不能为空") + private Long userId; + /** + * 用户类型 + */ + @NotNull(message = "用户类型不能为空") + @InEnum(value = UserTypeEnum.class, message = "用户类型必须是 {value}") + private Integer userType; + /** + * 客户端编号 + */ + @NotNull(message = "客户端编号不能为空") + private String clientId; + /** + * 授权范围 + */ + private List scopes; + +} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/auth/dto/OAuth2AccessTokenRespDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/auth/dto/OAuth2AccessTokenRespDTO.java new file mode 100644 index 0000000000..7689555948 --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/auth/dto/OAuth2AccessTokenRespDTO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.system.api.auth.dto; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * OAuth2.0 访问令牌的信息 Response DTO + * + * @author 芋道源码 + */ +@Data +@Accessors(chain = true) +public class OAuth2AccessTokenRespDTO implements Serializable { + + /** + * 访问令牌 + */ + private String accessToken; + /** + * 刷新令牌 + */ + private String refreshToken; + /** + * 用户编号 + */ + private Long userId; + /** + * 用户类型 + */ + private Integer userType; + /** + * 过期时间 + */ + private Date expiresTime; + +} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/permission/PermissionApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/permission/PermissionApi.java index 04e9638696..ea16fe4eaf 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/permission/PermissionApi.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/permission/PermissionApi.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.system.api.permission; +import cn.iocoder.yudao.module.system.api.permission.dto.DeptDataPermissionRespDTO; + import java.util.Collection; import java.util.Set; @@ -18,4 +20,30 @@ public interface PermissionApi { */ Set getUserRoleIdListByRoleIds(Collection roleIds); + /** + * 判断是否有权限,任一一个即可 + * + * @param userId 用户编号 + * @param permissions 权限 + * @return 是否 + */ + boolean hasAnyPermissions(Long userId, String... permissions); + + /** + * 判断是否有角色,任一一个即可 + * + * @param userId 用户编号 + * @param roles 角色数组 + * @return 是否 + */ + boolean hasAnyRoles(Long userId, String... roles); + + /** + * 获得登陆用户的部门数据权限 + * + * @param userId 用户编号 + * @return 部门数据权限 + */ + DeptDataPermissionRespDTO getDeptDataPermission(Long userId); + } diff --git a/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/dept/service/dto/DeptDataPermissionRespDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/permission/dto/DeptDataPermissionRespDTO.java similarity index 88% rename from yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/dept/service/dto/DeptDataPermissionRespDTO.java rename to yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/permission/dto/DeptDataPermissionRespDTO.java index 897fb226ac..5650e89b94 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/dept/service/dto/DeptDataPermissionRespDTO.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/permission/dto/DeptDataPermissionRespDTO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.framework.datapermission.core.dept.service.dto; +package cn.iocoder.yudao.module.system.api.permission.dto; import lombok.Data; diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java index 34b0c87726..2f39519a3d 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java @@ -12,7 +12,6 @@ public interface ErrorCodeConstants { // ========== AUTH 模块 1002000000 ========== ErrorCode AUTH_LOGIN_BAD_CREDENTIALS = new ErrorCode(1002000000, "登录失败,账号密码不正确"); ErrorCode AUTH_LOGIN_USER_DISABLED = new ErrorCode(1002000001, "登录失败,账号被禁用"); - ErrorCode AUTH_LOGIN_FAIL_UNKNOWN = new ErrorCode(1002000002, "登录失败"); // 登录失败的兜底,未知原因 ErrorCode AUTH_LOGIN_CAPTCHA_NOT_FOUND = new ErrorCode(1002000003, "验证码不存在"); ErrorCode AUTH_LOGIN_CAPTCHA_CODE_ERROR = new ErrorCode(1002000004, "验证码不正确"); ErrorCode AUTH_THIRD_LOGIN_NOT_BIND = new ErrorCode(1002000005, "未绑定账号,需要进行绑定"); @@ -120,8 +119,27 @@ public interface ErrorCodeConstants { ErrorCode SOCIAL_USER_UNBIND_NOT_SELF = new ErrorCode(1002018001, "社交解绑失败,非当前用户绑定"); ErrorCode SOCIAL_USER_NOT_FOUND = new ErrorCode(1002018002, "社交授权失败,找不到对应的用户"); - // ========== 系统铭感词 1002019000 ========= + // ========== 系统敏感词 1002019000 ========= ErrorCode SENSITIVE_WORD_NOT_EXISTS = new ErrorCode(1002019000, "系统敏感词在所有标签中都不存在"); ErrorCode SENSITIVE_WORD_EXISTS = new ErrorCode(1002019001, "系统敏感词已在标签中存在"); + // ========== OAuth2 客户端 1002020000 ========= + ErrorCode OAUTH2_CLIENT_NOT_EXISTS = new ErrorCode(1002020000, "OAuth2 客户端不存在"); + ErrorCode OAUTH2_CLIENT_EXISTS = new ErrorCode(1002020001, "OAuth2 客户端编号已存在"); + ErrorCode OAUTH2_CLIENT_DISABLE = new ErrorCode(1002020002, "OAuth2 客户端已禁用"); + ErrorCode OAUTH2_CLIENT_AUTHORIZED_GRANT_TYPE_NOT_EXISTS = new ErrorCode(1002020003, "不支持该授权类型"); + ErrorCode OAUTH2_CLIENT_SCOPE_OVER = new ErrorCode(1002020004, "授权范围过大"); + ErrorCode OAUTH2_CLIENT_REDIRECT_URI_NOT_MATCH = new ErrorCode(1002020005, "无效 redirect_uri: {}"); + ErrorCode OAUTH2_CLIENT_CLIENT_SECRET_ERROR = new ErrorCode(1002020006, "无效 client_secret: {}"); + + // ========== OAuth2 授权 1002021000 ========= + ErrorCode OAUTH2_GRANT_CLIENT_ID_MISMATCH = new ErrorCode(1002021000, "client_id 不匹配"); + ErrorCode OAUTH2_GRANT_REDIRECT_URI_MISMATCH = new ErrorCode(1002021001, "redirect_uri 不匹配"); + ErrorCode OAUTH2_GRANT_STATE_MISMATCH = new ErrorCode(1002021002, "state 不匹配"); + ErrorCode OAUTH2_GRANT_CODE_NOT_EXISTS = new ErrorCode(1002021003, "code 不存在"); + + // ========== OAuth2 授权 1002022000 ========= + ErrorCode OAUTH2_CODE_NOT_EXISTS = new ErrorCode(1002022000, "code 不存在"); + ErrorCode OAUTH2_CODE_EXPIRE = new ErrorCode(1002022000, "code 已过期"); + } diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/auth/OAuth2ClientConstants.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/auth/OAuth2ClientConstants.java new file mode 100644 index 0000000000..e48e132ff7 --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/auth/OAuth2ClientConstants.java @@ -0,0 +1,12 @@ +package cn.iocoder.yudao.module.system.enums.auth; + +/** + * OAuth2.0 客户端的通用枚举 + * + * @author 芋道源码 + */ +public interface OAuth2ClientConstants { + + String CLIENT_ID_DEFAULT = "default"; + +} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/auth/OAuth2GrantTypeEnum.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/auth/OAuth2GrantTypeEnum.java new file mode 100644 index 0000000000..20eb8fce35 --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/auth/OAuth2GrantTypeEnum.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.system.enums.auth; + +import cn.hutool.core.util.ArrayUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * OAuth2 授权类型(模式)的枚举 + * + * @author 芋道源码 + */ +@AllArgsConstructor +@Getter +public enum OAuth2GrantTypeEnum { + + PASSWORD("password"), // 密码模式 + AUTHORIZATION_CODE("authorization_code"), // 授权码模式 + IMPLICIT("implicit"), // 简化模式 + CLIENT_CREDENTIALS("client_credentials"), // 客户端模式 + REFRESH_TOKEN("refresh_token"), // 刷新模式 + ; + + private final String grantType; + + public static OAuth2GrantTypeEnum getByGranType(String grantType) { + return ArrayUtil.firstMatch(o -> o.getGrantType().equals(grantType), values()); + } + +} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/logger/LoginLogTypeEnum.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/logger/LoginLogTypeEnum.java index 2f845fd105..4c51f91688 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/logger/LoginLogTypeEnum.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/logger/LoginLogTypeEnum.java @@ -12,12 +12,10 @@ public enum LoginLogTypeEnum { LOGIN_USERNAME(100), // 使用账号登录 LOGIN_SOCIAL(101), // 使用社交登录 - LOGIN_MOCK(102), // 使用 Mock 登录 LOGIN_MOBILE(103), // 使用手机登陆 LOGIN_SMS(104), // 使用短信登陆 LOGOUT_SELF(200), // 自己主动登出 - LOGOUT_TIMEOUT(201), // 超时登出 LOGOUT_DELETE(202), // 强制退出 ; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/auth/OAuth2TokenApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/auth/OAuth2TokenApiImpl.java new file mode 100644 index 0000000000..438cf9463e --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/auth/OAuth2TokenApiImpl.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.system.api.auth; + +import cn.iocoder.yudao.module.system.api.auth.dto.OAuth2AccessTokenCheckRespDTO; +import cn.iocoder.yudao.module.system.api.auth.dto.OAuth2AccessTokenCreateReqDTO; +import cn.iocoder.yudao.module.system.api.auth.dto.OAuth2AccessTokenRespDTO; +import cn.iocoder.yudao.module.system.convert.auth.OAuth2TokenConvert; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; +import cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * OAuth2.0 Token API 实现类 + * + * @author 芋道源码 + */ +@Service +public class OAuth2TokenApiImpl implements OAuth2TokenApi { + + @Resource + private OAuth2TokenService oauth2TokenService; + + @Override + public OAuth2AccessTokenRespDTO createAccessToken(OAuth2AccessTokenCreateReqDTO reqDTO) { + OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.createAccessToken( + reqDTO.getUserId(), reqDTO.getUserType(), reqDTO.getClientId(), reqDTO.getScopes()); + return OAuth2TokenConvert.INSTANCE.convert2(accessTokenDO); + } + + @Override + public OAuth2AccessTokenCheckRespDTO checkAccessToken(String accessToken) { + return OAuth2TokenConvert.INSTANCE.convert(oauth2TokenService.checkAccessToken(accessToken)); + } + + @Override + public OAuth2AccessTokenRespDTO removeAccessToken(String accessToken) { + OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.removeAccessToken(accessToken); + return OAuth2TokenConvert.INSTANCE.convert2(accessTokenDO); + } + + @Override + public OAuth2AccessTokenRespDTO refreshAccessToken(String refreshToken, String clientId) { + OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.refreshAccessToken(refreshToken, clientId); + return OAuth2TokenConvert.INSTANCE.convert2(accessTokenDO); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/auth/UserSessionApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/auth/UserSessionApiImpl.java deleted file mode 100644 index 63226c125b..0000000000 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/auth/UserSessionApiImpl.java +++ /dev/null @@ -1,47 +0,0 @@ -package cn.iocoder.yudao.module.system.api.auth; - -import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.yudao.module.system.service.auth.UserSessionService; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import javax.annotation.Resource; - -/** - * 在线用户 Session API 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class UserSessionApiImpl implements UserSessionApi { - - @Resource - private UserSessionService userSessionService; - - @Override - public String createUserSession(LoginUser loginUser, String userIp, String userAgent) { - return userSessionService.createUserSession(loginUser, userIp, userAgent); - } - - @Override - public void refreshUserSession(String token, LoginUser loginUser) { - userSessionService.refreshUserSession(token, loginUser); - } - - @Override - public void deleteUserSession(String token) { - userSessionService.deleteUserSession(token); - } - - @Override - public LoginUser getLoginUser(String token) { - return userSessionService.getLoginUser(token); - } - - @Override - public Long getSessionTimeoutMillis() { - return userSessionService.getSessionTimeoutMillis(); - } - -} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/permission/PermissionApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/permission/PermissionApiImpl.java index 5d2b550781..52e30ea043 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/permission/PermissionApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/permission/PermissionApiImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.system.api.permission; +import cn.iocoder.yudao.module.system.api.permission.dto.DeptDataPermissionRespDTO; import cn.iocoder.yudao.module.system.service.permission.PermissionService; import org.springframework.stereotype.Service; @@ -23,4 +24,19 @@ public class PermissionApiImpl implements PermissionApi { return permissionService.getUserRoleIdListByRoleIds(roleIds); } + @Override + public boolean hasAnyPermissions(Long userId, String... permissions) { + return permissionService.hasAnyPermissions(userId, permissions); + } + + @Override + public boolean hasAnyRoles(Long userId, String... roles) { + return permissionService.hasAnyRoles(userId, roles); + } + + @Override + public DeptDataPermissionRespDTO getDeptDataPermission(Long userId) { + return permissionService.getDeptDataPermission(userId); + } + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.http b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.http index e6c70f9dfa..c2715634e5 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.http +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.http @@ -1,5 +1,5 @@ ### 请求 /login 接口 => 成功 -POST {{baseUrl}}/system/login +POST {{baseUrl}}/system/auth/login Content-Type: application/json tenant-id: {{adminTenentId}} @@ -11,7 +11,7 @@ tenant-id: {{adminTenentId}} } ### 请求 /login 接口 => 成功(无验证码) -POST {{baseUrl}}/system/login +POST {{baseUrl}}/system/auth/login Content-Type: application/json tenant-id: {{adminTenentId}} @@ -21,7 +21,7 @@ tenant-id: {{adminTenentId}} } ### 请求 /get-permission-info 接口 => 成功 -GET {{baseUrl}}/system/get-permission-info +GET {{baseUrl}}/system/auth/get-permission-info Authorization: Bearer {{token}} tenant-id: {{adminTenentId}} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java index 6fbf2a21ad..e42a5dfa53 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java @@ -1,14 +1,17 @@ package cn.iocoder.yudao.module.system.controller.admin.auth; +import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.util.collection.SetUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.*; +import cn.iocoder.yudao.framework.security.config.SecurityProperties; +import cn.iocoder.yudao.module.system.controller.admin.auth.vo.*; import cn.iocoder.yudao.module.system.convert.auth.AuthConvert; import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO; import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; +import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; import cn.iocoder.yudao.module.system.enums.permission.MenuTypeEnum; import cn.iocoder.yudao.module.system.service.auth.AdminAuthService; import cn.iocoder.yudao.module.system.service.permission.PermissionService; @@ -24,18 +27,19 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.util.List; +import java.util.Set; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP; -import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getUserAgent; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; -import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserRoleIds; +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.obtainAuthorization; +import static java.util.Collections.singleton; @Api(tags = "管理后台 - 认证") @RestController -@RequestMapping("/system/auth") // 暂时不跟 /auth 结尾 +@RequestMapping("/system/auth") @Validated @Slf4j public class AuthController { @@ -51,13 +55,33 @@ public class AuthController { @Resource private SocialUserService socialUserService; + @Resource + private SecurityProperties securityProperties; + @PostMapping("/login") @ApiOperation("使用账号密码登录") @OperateLog(enable = false) // 避免 Post 请求被记录操作日志 public CommonResult login(@RequestBody @Valid AuthLoginReqVO reqVO) { - String token = authService.login(reqVO, getClientIP(), getUserAgent()); - // 返回结果 - return success(AuthLoginRespVO.builder().token(token).build()); + return success(authService.login(reqVO)); + } + + @PostMapping("/logout") + @ApiOperation("登出系统") + @OperateLog(enable = false) // 避免 Post 请求被记录操作日志 + public CommonResult logout(HttpServletRequest request) { + String token = obtainAuthorization(request, securityProperties.getTokenHeader()); + if (StrUtil.isNotBlank(token)) { + authService.logout(token, LoginLogTypeEnum.LOGOUT_SELF.getType()); + } + return success(true); + } + + @PostMapping("/refresh-token") + @ApiOperation("刷新令牌") + @ApiImplicitParam(name = "refreshToken", value = "刷新令牌", required = true, dataTypeClass = String.class) + @OperateLog(enable = false) // 避免 Post 请求被记录操作日志 + public CommonResult refreshToken(@RequestParam("refreshToken") String refreshToken) { + return success(authService.refreshToken(refreshToken)); } @GetMapping("/get-permission-info") @@ -69,12 +93,12 @@ public class AuthController { return null; } // 获得角色列表 - List roleList = roleService.getRolesFromCache(getLoginUserRoleIds()); + Set roleIds = permissionService.getUserRoleIdsFromCache(getLoginUserId(), singleton(CommonStatusEnum.ENABLE.getStatus())); + List roleList = roleService.getRolesFromCache(roleIds); // 获得菜单列表 - List menuList = permissionService.getRoleMenuListFromCache( - getLoginUserRoleIds(), // 注意,基于登录的角色,因为后续的权限判断也是基于它 + List menuList = permissionService.getRoleMenuListFromCache(roleIds, SetUtils.asSet(MenuTypeEnum.DIR.getType(), MenuTypeEnum.MENU.getType(), MenuTypeEnum.BUTTON.getType()), - SetUtils.asSet(CommonStatusEnum.ENABLE.getStatus())); + singleton(CommonStatusEnum.ENABLE.getStatus())); // 只要开启的 // 拼接结果返回 return success(AuthConvert.INSTANCE.convert(user, roleList, menuList)); } @@ -82,11 +106,12 @@ public class AuthController { @GetMapping("/list-menus") @ApiOperation("获得登录用户的菜单列表") public CommonResult> getMenus() { + // 获得角色列表 + Set roleIds = permissionService.getUserRoleIdsFromCache(getLoginUserId(), singleton(CommonStatusEnum.ENABLE.getStatus())); // 获得用户拥有的菜单列表 - List menuList = permissionService.getRoleMenuListFromCache( - getLoginUserRoleIds(), // 注意,基于登录的角色,因为后续的权限判断也是基于它 + List menuList = permissionService.getRoleMenuListFromCache(roleIds, SetUtils.asSet(MenuTypeEnum.DIR.getType(), MenuTypeEnum.MENU.getType()), // 只要目录和菜单类型 - SetUtils.asSet(CommonStatusEnum.ENABLE.getStatus())); // 只要开启的 + singleton(CommonStatusEnum.ENABLE.getStatus())); // 只要开启的 // 转换成 Tree 结构返回 return success(AuthConvert.INSTANCE.buildMenuTree(menuList)); } @@ -97,9 +122,7 @@ public class AuthController { @ApiOperation("使用短信验证码登录") @OperateLog(enable = false) // 避免 Post 请求被记录操作日志 public CommonResult smsLogin(@RequestBody @Valid AuthSmsLoginReqVO reqVO) { - String token = authService.smsLogin(reqVO, getClientIP(), getUserAgent()); - // 返回结果 - return success(AuthLoginRespVO.builder().token(token).build()); + return success(authService.smsLogin(reqVO)); } @PostMapping("/send-sms-code") @@ -127,18 +150,14 @@ public class AuthController { @ApiOperation("社交快捷登录,使用 code 授权码") @OperateLog(enable = false) // 避免 Post 请求被记录操作日志 public CommonResult socialQuickLogin(@RequestBody @Valid AuthSocialQuickLoginReqVO reqVO) { - String token = authService.socialQuickLogin(reqVO, getClientIP(), getUserAgent()); - // 返回结果 - return success(AuthLoginRespVO.builder().token(token).build()); + return success(authService.socialQuickLogin(reqVO)); } @PostMapping("/social-bind-login") @ApiOperation("社交绑定登录,使用 code 授权码 + 账号密码") @OperateLog(enable = false) // 避免 Post 请求被记录操作日志 public CommonResult socialBindLogin(@RequestBody @Valid AuthSocialBindLoginReqVO reqVO) { - String token = authService.socialBindLogin(reqVO, getClientIP(), getUserAgent()); - // 返回结果 - return success(AuthLoginRespVO.builder().token(token).build()); + return success(authService.socialBindLogin(reqVO)); } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/UserSessionController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/UserSessionController.java deleted file mode 100644 index 023532e08b..0000000000 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/UserSessionController.java +++ /dev/null @@ -1,79 +0,0 @@ -package cn.iocoder.yudao.module.system.controller.admin.auth; - -import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageItemRespVO; -import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageReqVO; -import cn.iocoder.yudao.module.system.convert.auth.UserSessionConvert; -import cn.iocoder.yudao.module.system.dal.dataobject.auth.UserSessionDO; -import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; -import cn.iocoder.yudao.module.system.service.auth.UserSessionService; -import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.module.system.service.dept.DeptService; -import cn.iocoder.yudao.module.system.service.user.AdminUserService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiOperation; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; - -@Api(tags = "管理后台 - 用户 Session") -@RestController -@RequestMapping("/system/user-session") -public class UserSessionController { - - @Resource - private UserSessionService userSessionService; - @Resource - private AdminUserService userService; - - @Resource - private DeptService deptService; - - @GetMapping("/page") - @ApiOperation("获得 Session 分页列表") - @PreAuthorize("@ss.hasPermission('system:user-session:page')") - public CommonResult> getUserSessionPage(@Validated UserSessionPageReqVO reqVO) { - // 获得 Session 分页 - PageResult pageResult = userSessionService.getUserSessionPage(reqVO); - - // 获得拼接需要的数据 - Map userMap = userService.getUserMap( - convertList(pageResult.getList(), UserSessionDO::getUserId)); - Map deptMap = deptService.getDeptMap( - convertList(userMap.values(), AdminUserDO::getDeptId)); - // 拼接结果返回 - List sessionList = new ArrayList<>(pageResult.getList().size()); - pageResult.getList().forEach(session -> { - UserSessionPageItemRespVO respVO = UserSessionConvert.INSTANCE.convert(session); - sessionList.add(respVO); - // 设置用户账号 - MapUtils.findAndThen(userMap, session.getUserId(), user -> { - respVO.setUsername(user.getUsername()); - // 设置用户部门 - MapUtils.findAndThen(deptMap, user.getDeptId(), dept -> respVO.setDeptName(dept.getName())); - }); - }); - return success(new PageResult<>(sessionList, pageResult.getTotal())); - } - - @DeleteMapping("/delete") - @ApiOperation("删除 Session") - @ApiImplicitParam(name = "id", value = "Session 编号", required = true, dataTypeClass = Long.class, example = "1024") - @PreAuthorize("@ss.hasPermission('system:user-session:delete')") - public CommonResult deleteUserSession(@RequestParam("id") Long id) { - userSessionService.deleteUserSession(id); - return success(true); - } - -} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthLoginReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthLoginReqVO.java similarity index 95% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthLoginReqVO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthLoginReqVO.java index 013c0b2e7f..0ecd3d6701 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthLoginReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthLoginReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth; +package cn.iocoder.yudao.module.system.controller.admin.auth.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthLoginRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthLoginRespVO.java new file mode 100644 index 0000000000..ec83a69962 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthLoginRespVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.system.controller.admin.auth.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@ApiModel("管理后台 - 登录 Response VO") +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class AuthLoginRespVO { + + @ApiModelProperty(value = "用户编号", required = true, example = "1024") + private Long userId; + + @ApiModelProperty(value = "访问令牌", required = true, example = "happy") + private String accessToken; + + @ApiModelProperty(value = "刷新令牌", required = true, example = "nice") + private String refreshToken; + + @ApiModelProperty(value = "过期时间", required = true) + private Date expiresTime; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthMenuRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthMenuRespVO.java similarity index 95% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthMenuRespVO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthMenuRespVO.java index 74e8c740d5..2ae7eaac81 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthMenuRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthMenuRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth; +package cn.iocoder.yudao.module.system.controller.admin.auth.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthPermissionInfoRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthPermissionInfoRespVO.java similarity index 94% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthPermissionInfoRespVO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthPermissionInfoRespVO.java index bada252057..0e809226cc 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthPermissionInfoRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthPermissionInfoRespVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth; +package cn.iocoder.yudao.module.system.controller.admin.auth.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthSmsLoginReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthSmsLoginReqVO.java similarity index 94% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthSmsLoginReqVO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthSmsLoginReqVO.java index 4360b98418..5e4135546d 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthSmsLoginReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthSmsLoginReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth; +package cn.iocoder.yudao.module.system.controller.admin.auth.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthSmsSendReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthSmsSendReqVO.java similarity index 93% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthSmsSendReqVO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthSmsSendReqVO.java index adcd0483b0..0df9a521ec 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthSmsSendReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthSmsSendReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth; +package cn.iocoder.yudao.module.system.controller.admin.auth.vo; import cn.iocoder.yudao.framework.common.validation.InEnum; import cn.iocoder.yudao.framework.common.validation.Mobile; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthSocialBindLoginReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthSocialBindLoginReqVO.java similarity index 96% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthSocialBindLoginReqVO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthSocialBindLoginReqVO.java index 71f5cfe9fd..cefe40d140 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthSocialBindLoginReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthSocialBindLoginReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth; +package cn.iocoder.yudao.module.system.controller.admin.auth.vo; import cn.iocoder.yudao.framework.common.validation.InEnum; import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthSocialQuickLoginReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthSocialQuickLoginReqVO.java similarity index 94% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthSocialQuickLoginReqVO.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthSocialQuickLoginReqVO.java index 2bec43691a..4b7ebb1751 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthSocialQuickLoginReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthSocialQuickLoginReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth; +package cn.iocoder.yudao.module.system.controller.admin.auth.vo; import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum; import cn.iocoder.yudao.framework.common.validation.InEnum; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthLoginRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthLoginRespVO.java deleted file mode 100644 index bd13ba3770..0000000000 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/auth/AuthLoginRespVO.java +++ /dev/null @@ -1,20 +0,0 @@ -package cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@ApiModel("管理后台 - 账号密码登录 Response VO") -@Data -@NoArgsConstructor -@AllArgsConstructor -@Builder -public class AuthLoginRespVO { - - @ApiModelProperty(value = "token", required = true, example = "yudaoyuanma") - private String token; - -} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/session/UserSessionPageItemRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/session/UserSessionPageItemRespVO.java deleted file mode 100644 index ad12877efc..0000000000 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/session/UserSessionPageItemRespVO.java +++ /dev/null @@ -1,38 +0,0 @@ -package cn.iocoder.yudao.module.system.controller.admin.auth.vo.session; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; - -import java.util.Date; - -@ApiModel(value = "管理后台 - 用户在线 Session Response VO", description = "相比用户基本信息来说,会多部门、用户账号等信息") -@Data -@NoArgsConstructor -@AllArgsConstructor -@EqualsAndHashCode(callSuper = true) -public class UserSessionPageItemRespVO extends PageParam { - - @ApiModelProperty(value = "Session 编号", required = true, example = "fe50b9f6-d177-44b1-8da9-72ea34f63db7") - private String id; - - @ApiModelProperty(value = "用户 IP", required = true, example = "127.0.0.1") - private String userIp; - - @ApiModelProperty(value = "浏览器 UserAgent", required = true, example = "Mozilla/5.0") - private String userAgent; - - @ApiModelProperty(value = "登录时间", required = true) - private Date createTime; - - @ApiModelProperty(value = "用户账号", required = true, example = "yudao") - private String username; - - @ApiModelProperty(value = "部门名称", example = "研发部") - private String deptName; - -} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/session/UserSessionPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/session/UserSessionPageReqVO.java deleted file mode 100644 index 7e85c87baf..0000000000 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/session/UserSessionPageReqVO.java +++ /dev/null @@ -1,20 +0,0 @@ -package cn.iocoder.yudao.module.system.controller.admin.auth.vo.session; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@ApiModel("管理后台 - 在线用户 Session 分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -public class UserSessionPageReqVO extends PageParam { - - @ApiModelProperty(value = "用户 IP", example = "127.0.0.1", notes = "模糊匹配") - private String userIp; - - @ApiModelProperty(value = "用户账号", example = "yudao", notes = "模糊匹配") - private String username; - -} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2ClientController.http b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2ClientController.http new file mode 100644 index 0000000000..dcf60a6cf2 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2ClientController.http @@ -0,0 +1,23 @@ +### 请求 /login 接口 => 成功 +POST {{baseUrl}}/system/oauth2-client/create +Content-Type: application/json +Authorization: Bearer {{token}} +tenant-id: {{adminTenentId}} + +{ + "id": "1", + "secret": "admin123", + "name": "芋道源码", + "logo": "https://www.iocoder.cn/images/favicon.ico", + "description": "我是描述", + "status": 0, + "accessTokenValiditySeconds": 180, + "refreshTokenValiditySeconds": 8640, + "redirectUris": ["https://www.iocoder.cn"], + "autoApprove": true, + "authorizedGrantTypes": ["password"], + "scopes": ["user_info"], + "authorities": ["system:user:query"], + "resource_ids": ["1024"], + "additionalInformation": "{}" +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2ClientController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2ClientController.java new file mode 100755 index 0000000000..d6b9278576 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2ClientController.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.module.system.controller.admin.oauth2; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client.OAuth2ClientCreateReqVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client.OAuth2ClientPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client.OAuth2ClientRespVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client.OAuth2ClientUpdateReqVO; +import cn.iocoder.yudao.module.system.convert.auth.OAuth2ClientConvert; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO; +import cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Api(tags = "管理后台 - OAuth2 客户端") +@RestController +@RequestMapping("/system/oauth2-client") +@Validated +public class OAuth2ClientController { + + @Resource + private OAuth2ClientService oAuth2ClientService; + + @PostMapping("/create") + @ApiOperation("创建 OAuth2 客户端") + @PreAuthorize("@ss.hasPermission('system:oauth2-client:create')") + public CommonResult createOAuth2Client(@Valid @RequestBody OAuth2ClientCreateReqVO createReqVO) { + return success(oAuth2ClientService.createOAuth2Client(createReqVO)); + } + + @PutMapping("/update") + @ApiOperation("更新 OAuth2 客户端") + @PreAuthorize("@ss.hasPermission('system:oauth2-client:update')") + public CommonResult updateOAuth2Client(@Valid @RequestBody OAuth2ClientUpdateReqVO updateReqVO) { + oAuth2ClientService.updateOAuth2Client(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @ApiOperation("删除 OAuth2 客户端") + @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class) + @PreAuthorize("@ss.hasPermission('system:oauth2-client:delete')") + public CommonResult deleteOAuth2Client(@RequestParam("id") Long id) { + oAuth2ClientService.deleteOAuth2Client(id); + return success(true); + } + + @GetMapping("/get") + @ApiOperation("获得 OAuth2 客户端") + @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) + @PreAuthorize("@ss.hasPermission('system:oauth2-client:query')") + public CommonResult getOAuth2Client(@RequestParam("id") Long id) { + OAuth2ClientDO oAuth2Client = oAuth2ClientService.getOAuth2Client(id); + return success(OAuth2ClientConvert.INSTANCE.convert(oAuth2Client)); + } + + @GetMapping("/page") + @ApiOperation("获得OAuth2 客户端分页") + @PreAuthorize("@ss.hasPermission('system:oauth2-client:query')") + public CommonResult> getOAuth2ClientPage(@Valid OAuth2ClientPageReqVO pageVO) { + PageResult pageResult = oAuth2ClientService.getOAuth2ClientPage(pageVO); + return success(OAuth2ClientConvert.INSTANCE.convertPage(pageResult)); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2OpenController.http b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2OpenController.http new file mode 100644 index 0000000000..725a5d4f59 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2OpenController.http @@ -0,0 +1,54 @@ +### 请求 /system/oauth2/authorize 接口 => 成功 +GET {{baseUrl}}/system/oauth2/authorize?clientId=default +Authorization: Bearer {{token}} +tenant-id: {{adminTenentId}} + +### 请求 /system/oauth2/authorize + token 接口 => 成功 +POST {{baseUrl}}/system/oauth2/authorize +Content-Type: application/x-www-form-urlencoded +Authorization: Bearer {{token}} +tenant-id: {{adminTenentId}} + +response_type=token&client_id=default&scope={"user.read": true}&redirect_uri=https://www.iocoder.cn&auto_approve=true + +### 请求 /system/oauth2/authorize + code 接口 => 成功 +POST {{baseUrl}}/system/oauth2/authorize +Content-Type: application/x-www-form-urlencoded +Authorization: Bearer {{token}} +tenant-id: {{adminTenentId}} + +response_type=code&client_id=default&scope={"user.read": true}&redirect_uri=https://www.iocoder.cn&auto_approve=false + +### 请求 /system/oauth2/token + code 接口 => 成功 +POST {{baseUrl}}/system/oauth2/token +Content-Type: application/x-www-form-urlencoded +Authorization: Basic ZGVmYXVsdDphZG1pbjEyMw== +tenant-id: {{adminTenentId}} + +grant_type=authorization_code&redirect_uri=https://www.iocoder.cn&code=189956c07a174588a97157eabef2f93a + +### 请求 /system/oauth2/token + password 接口 => 成功 +POST {{baseUrl}}/system/oauth2/token +Content-Type: application/x-www-form-urlencoded +Authorization: Basic ZGVmYXVsdDphZG1pbjEyMw== +tenant-id: {{adminTenentId}} + +grant_type=password&username=admin&password=admin123&scope=user.read + +### 请求 /system/oauth2/token + refresh_token 接口 => 成功 +POST {{baseUrl}}/system/oauth2/token +Content-Type: application/x-www-form-urlencoded +Authorization: Basic ZGVmYXVsdDphZG1pbjEyMw== +tenant-id: {{adminTenentId}} + +grant_type=refresh_token&refresh_token=00895465d6994f72a9d926ceeed0f588 + +### 请求 /system/oauth2/token + DELETE 接口 => 成功 +DELETE {{baseUrl}}/system/oauth2/token?token=ca8a188f464441d6949c51493a2b7596 +Authorization: Basic ZGVmYXVsdDphZG1pbjEyMw== +tenant-id: {{adminTenentId}} + +### 请求 /system/oauth2/check-token 接口 => 成功 +POST {{baseUrl}}/system/oauth2/check-token?token=620d307c5b4148df8a98dd6c6c547106 +Authorization: Basic ZGVmYXVsdDphZG1pbjEyMw== +tenant-id: {{adminTenentId}} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2OpenController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2OpenController.java new file mode 100644 index 0000000000..45618c4bd9 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2OpenController.java @@ -0,0 +1,298 @@ +package cn.iocoder.yudao.module.system.controller.admin.oauth2; + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.http.HttpUtils; +import cn.iocoder.yudao.framework.common.util.json.JsonUtils; +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.open.OAuth2OpenAccessTokenRespVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.open.OAuth2OpenAuthorizeInfoRespVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.open.OAuth2OpenCheckTokenRespVO; +import cn.iocoder.yudao.module.system.convert.oauth2.OAuth2OpenConvert; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ApproveDO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO; +import cn.iocoder.yudao.module.system.enums.auth.OAuth2GrantTypeEnum; +import cn.iocoder.yudao.module.system.service.oauth2.OAuth2ApproveService; +import cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService; +import cn.iocoder.yudao.module.system.service.oauth2.OAuth2GrantService; +import cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenService; +import cn.iocoder.yudao.module.system.util.oauth2.OAuth2Utils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST; +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception0; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; + +/** + * 提供给外部应用调用为主 + * + * 一般来说,管理后台的 /system-api/* 是不直接提供给外部应用使用,主要是外部应用能够访问的数据与接口是有限的,而管理后台的 RBAC 无法很好的控制。 + * 参考大量的开放平台,都是独立的一套 OpenAPI,对应到【本系统】就是在 Controller 下新建 open 包,实现 /open-api/* 接口,然后通过 scope 进行控制。 + * 另外,一个公司如果有多个管理后台,它们 client_id 产生的 access token 相互之间是无法互通的,即无法访问它们系统的 API 接口,直到两个 client_id 产生信任授权。 + * + * 考虑到【本系统】暂时不想做的过于复杂,默认只有获取到 access token 之后,可以访问【本系统】管理后台的 /system-api/* 所有接口,除非手动添加 scope 控制。 + * scope 的使用示例,可见 {@link OAuth2UserController} 类 + * + * @author 芋道源码 + */ +@Api(tags = "管理后台 - OAuth2.0 授权") +@RestController +@RequestMapping("/system/oauth2") +@Validated +@Slf4j +public class OAuth2OpenController { + + @Resource + private OAuth2GrantService oauth2GrantService; + @Resource + private OAuth2ClientService oauth2ClientService; + @Resource + private OAuth2ApproveService oauth2ApproveService; + @Resource + private OAuth2TokenService oauth2TokenService; + + /** + * 对应 Spring Security OAuth 的 TokenEndpoint 类的 postAccessToken 方法 + * + * 授权码 authorization_code 模式时:code + redirectUri + state 参数 + * 密码 password 模式时:username + password + scope 参数 + * 刷新 refresh_token 模式时:refreshToken 参数 + * 客户端 client_credentials 模式:scope 参数 + * 简化 implicit 模式时:不支持 + * + * 注意,默认需要传递 client_id + client_secret 参数 + */ + @PostMapping("/token") + @ApiOperation(value = "获得访问令牌", notes = "适合 code 授权码模式,或者 implicit 简化模式;在 sso.vue 单点登录界面被【获取】调用") + @ApiImplicitParams({ + @ApiImplicitParam(name = "grant_type", required = true, value = "授权类型", example = "code", dataTypeClass = String.class), + @ApiImplicitParam(name = "code", value = "授权范围", example = "userinfo.read", dataTypeClass = String.class), + @ApiImplicitParam(name = "redirect_uri", value = "重定向 URI", example = "https://www.iocoder.cn", dataTypeClass = String.class), + @ApiImplicitParam(name = "state", value = "状态", example = "1", dataTypeClass = String.class), + @ApiImplicitParam(name = "username", example = "tudou", dataTypeClass = String.class), + @ApiImplicitParam(name = "password", example = "cai", dataTypeClass = String.class), // 多个使用空格分隔 + @ApiImplicitParam(name = "scope", example = "user_info", dataTypeClass = String.class), + @ApiImplicitParam(name = "refresh_token", example = "123424233", dataTypeClass = String.class), + }) + @OperateLog(enable = false) // 避免 Post 请求被记录操作日志 + public CommonResult postAccessToken(HttpServletRequest request, + @RequestParam("grant_type") String grantType, + @RequestParam(value = "code", required = false) String code, // 授权码模式 + @RequestParam(value = "redirect_uri", required = false) String redirectUri, // 授权码模式 + @RequestParam(value = "state", required = false) String state, // 授权码模式 + @RequestParam(value = "username", required = false) String username, // 密码模式 + @RequestParam(value = "password", required = false) String password, // 密码模式 + @RequestParam(value = "scope", required = false) String scope, // 密码模式 + @RequestParam(value = "refresh_token", required = false) String refreshToken) { // 刷新模式 + List scopes = OAuth2Utils.buildScopes(scope); + // 授权类型 + OAuth2GrantTypeEnum grantTypeEnum = OAuth2GrantTypeEnum.getByGranType(grantType); + if (grantTypeEnum == null) { + throw exception0(BAD_REQUEST.getCode(), StrUtil.format("未知授权类型({})", grantType)); + } + if (grantTypeEnum == OAuth2GrantTypeEnum.IMPLICIT) { + throw exception0(BAD_REQUEST.getCode(), "Token 接口不支持 implicit 授权模式"); + } + + // 校验客户端 + String[] clientIdAndSecret = obtainBasicAuthorization(request); + OAuth2ClientDO client = oauth2ClientService.validOAuthClientFromCache(clientIdAndSecret[0], clientIdAndSecret[1], + grantType, scopes, redirectUri); + + // 根据授权模式,获取访问令牌 + OAuth2AccessTokenDO accessTokenDO; + switch (grantTypeEnum) { + case AUTHORIZATION_CODE: + accessTokenDO = oauth2GrantService.grantAuthorizationCodeForAccessToken(client.getClientId(), code, redirectUri, state); + break; + case PASSWORD: + accessTokenDO = oauth2GrantService.grantPassword(username, password, client.getClientId(), scopes); + break; + case CLIENT_CREDENTIALS: + accessTokenDO = oauth2GrantService.grantClientCredentials(client.getClientId(), scopes); + break; + case REFRESH_TOKEN: + accessTokenDO = oauth2GrantService.grantRefreshToken(refreshToken, client.getClientId()); + break; + default: + throw new IllegalArgumentException("未知授权类型:" + grantType); + } + Assert.notNull(accessTokenDO, "访问令牌不能为空"); // 防御性检查 + return success(OAuth2OpenConvert.INSTANCE.convert(accessTokenDO)); + } + + @DeleteMapping("/token") + @ApiOperation(value = "删除访问令牌") + @ApiImplicitParam(name = "token", required = true, value = "访问令牌", example = "biu", dataTypeClass = String.class) + @OperateLog(enable = false) // 避免 Post 请求被记录操作日志 + public CommonResult revokeToken(HttpServletRequest request, + @RequestParam("token") String token) { + // 校验客户端 + String[] clientIdAndSecret = obtainBasicAuthorization(request); + OAuth2ClientDO client = oauth2ClientService.validOAuthClientFromCache(clientIdAndSecret[0], clientIdAndSecret[1], + null, null, null); + + // 删除访问令牌 + return success(oauth2GrantService.revokeToken(client.getClientId(), token)); + } + + /** + * 对应 Spring Security OAuth 的 CheckTokenEndpoint 类的 checkToken 方法 + */ + @PostMapping("/check-token") + @ApiOperation(value = "校验访问令牌") + @ApiImplicitParam(name = "token", required = true, value = "访问令牌", example = "biu", dataTypeClass = String.class) + @OperateLog(enable = false) // 避免 Post 请求被记录操作日志 + public CommonResult checkToken(HttpServletRequest request, + @RequestParam("token") String token) { + // 校验客户端 + String[] clientIdAndSecret = obtainBasicAuthorization(request); + oauth2ClientService.validOAuthClientFromCache(clientIdAndSecret[0], clientIdAndSecret[1], + null, null, null); + + // 校验令牌 + OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.checkAccessToken(token); + Assert.notNull(accessTokenDO, "访问令牌不能为空"); // 防御性检查 + return success(OAuth2OpenConvert.INSTANCE.convert2(accessTokenDO)); + } + + /** + * 对应 Spring Security OAuth 的 AuthorizationEndpoint 类的 authorize 方法 + */ + @GetMapping("/authorize") + @ApiOperation(value = "获得授权信息", notes = "适合 code 授权码模式,或者 implicit 简化模式;在 sso.vue 单点登录界面被【获取】调用") + @ApiImplicitParam(name = "clientId", required = true, value = "客户端编号", example = "tudou", dataTypeClass = String.class) + public CommonResult authorize(@RequestParam("clientId") String clientId) { + // 0. 校验用户已经登录。通过 Spring Security 实现 + + // 1. 获得 Client 客户端的信息 + OAuth2ClientDO client = oauth2ClientService.validOAuthClientFromCache(clientId); + // 2. 获得用户已经授权的信息 + List approves = oauth2ApproveService.getApproveList(getLoginUserId(), getUserType(), clientId); + // 拼接返回 + return success(OAuth2OpenConvert.INSTANCE.convert(client, approves)); + } + + /** + * 对应 Spring Security OAuth 的 AuthorizationEndpoint 类的 approveOrDeny 方法 + * + * 场景一:【自动授权 autoApprove = true】 + * 刚进入 sso.vue 界面,调用该接口,用户历史已经给该应用做过对应的授权,或者 OAuth2Client 支持该 scope 的自动授权 + * 场景二:【手动授权 autoApprove = false】 + * 在 sso.vue 界面,用户选择好 scope 授权范围,调用该接口,进行授权。此时,approved 为 true 或者 false + * + * 因为前后端分离,Axios 无法很好的处理 302 重定向,所以和 Spring Security OAuth 略有不同,返回结果是重定向的 URL,剩余交给前端处理 + */ + @PostMapping("/authorize") + @ApiOperation(value = "申请授权", notes = "适合 code 授权码模式,或者 implicit 简化模式;在 sso.vue 单点登录界面被【提交】调用") + @ApiImplicitParams({ + @ApiImplicitParam(name = "response_type", required = true, value = "响应类型", example = "code", dataTypeClass = String.class), + @ApiImplicitParam(name = "client_id", required = true, value = "客户端编号", example = "tudou", dataTypeClass = String.class), + @ApiImplicitParam(name = "scope", value = "授权范围", example = "userinfo.read", dataTypeClass = String.class), // 使用 Map 格式,Spring MVC 暂时不支持这么接收参数 + @ApiImplicitParam(name = "redirect_uri", required = true, value = "重定向 URI", example = "https://www.iocoder.cn", dataTypeClass = String.class), + @ApiImplicitParam(name = "auto_approve", required = true, value = "用户是否接受", example = "true", dataTypeClass = Boolean.class), + @ApiImplicitParam(name = "state", example = "1", dataTypeClass = String.class) + }) + @OperateLog(enable = false) // 避免 Post 请求被记录操作日志 + public CommonResult approveOrDeny(@RequestParam("response_type") String responseType, + @RequestParam("client_id") String clientId, + @RequestParam(value = "scope", required = false) String scope, + @RequestParam("redirect_uri") String redirectUri, + @RequestParam(value = "auto_approve") Boolean autoApprove, + @RequestParam(value = "state", required = false) String state) { + @SuppressWarnings("unchecked") + Map scopes = JsonUtils.parseObject(scope, Map.class); + scopes = ObjectUtil.defaultIfNull(scopes, Collections.emptyMap()); + // 0. 校验用户已经登录。通过 Spring Security 实现 + + // 1.1 校验 responseType 是否满足 code 或者 token 值 + OAuth2GrantTypeEnum grantTypeEnum = getGrantTypeEnum(responseType); + // 1.2 校验 redirectUri 重定向域名是否合法 + 校验 scope 是否在 Client 授权范围内 + OAuth2ClientDO client = oauth2ClientService.validOAuthClientFromCache(clientId, null, + grantTypeEnum.getGrantType(), scopes.keySet(), redirectUri); + + // 2.1 假设 approved 为 null,说明是场景一 + if (Boolean.TRUE.equals(autoApprove)) { + // 如果无法自动授权通过,则返回空 url,前端不进行跳转 + if (!oauth2ApproveService.checkForPreApproval(getLoginUserId(), getUserType(), clientId, scopes.keySet())) { + return success(null); + } + } else { // 2.2 假设 approved 非 null,说明是场景二 + // 如果计算后不通过,则跳转一个错误链接 + if (!oauth2ApproveService.updateAfterApproval(getLoginUserId(), getUserType(), clientId, scopes)) { + return success(OAuth2Utils.buildUnsuccessfulRedirect(redirectUri, responseType, state, + "access_denied", "User denied access")); + } + } + + // 3.1 如果是 code 授权码模式,则发放 code 授权码,并重定向 + List approveScopes = convertList(scopes.entrySet(), Map.Entry::getKey, Map.Entry::getValue); + if (grantTypeEnum == OAuth2GrantTypeEnum.AUTHORIZATION_CODE) { + return success(getAuthorizationCodeRedirect(getLoginUserId(), client, approveScopes, redirectUri, state)); + } + // 3.2 如果是 token 则是 implicit 简化模式,则发送 accessToken 访问令牌,并重定向 + return success(getImplicitGrantRedirect(getLoginUserId(), client, approveScopes, redirectUri, state)); + } + + private static OAuth2GrantTypeEnum getGrantTypeEnum(String responseType) { + if (StrUtil.equals(responseType, "code")) { + return OAuth2GrantTypeEnum.AUTHORIZATION_CODE; + } + if (StrUtil.equalsAny(responseType, "token")) { + return OAuth2GrantTypeEnum.IMPLICIT; + } + throw exception0(BAD_REQUEST.getCode(), "response_type 参数值只允许 code 和 token"); + } + + private String getImplicitGrantRedirect(Long userId, OAuth2ClientDO client, + List scopes, String redirectUri, String state) { + // 1. 创建 access token 访问令牌 + OAuth2AccessTokenDO accessTokenDO = oauth2GrantService.grantImplicit(userId, getUserType(), client.getClientId(), scopes); + Assert.notNull(accessTokenDO, "访问令牌不能为空"); // 防御性检查 + // 2. 拼接重定向的 URL + // noinspection unchecked + return OAuth2Utils.buildImplicitRedirectUri(redirectUri, accessTokenDO.getAccessToken(), state, accessTokenDO.getExpiresTime(), + scopes, JsonUtils.parseObject(client.getAdditionalInformation(), Map.class)); + } + + private String getAuthorizationCodeRedirect(Long userId, OAuth2ClientDO client, + List scopes, String redirectUri, String state) { + // 1. 创建 code 授权码 + String authorizationCode = oauth2GrantService.grantAuthorizationCodeForCode(userId, getUserType(), client.getClientId(), scopes, + redirectUri, state); + // 2. 拼接重定向的 URL + return OAuth2Utils.buildAuthorizationCodeRedirectUri(redirectUri, authorizationCode, state); + } + + private Integer getUserType() { + return UserTypeEnum.ADMIN.getValue(); + } + + private String[] obtainBasicAuthorization(HttpServletRequest request) { + String[] clientIdAndSecret = HttpUtils.obtainBasicAuthorization(request); + if (ArrayUtil.isEmpty(clientIdAndSecret) || clientIdAndSecret.length != 2) { + throw exception0(BAD_REQUEST.getCode(), "client_id 或 client_secret 未正确传递"); + } + return clientIdAndSecret; + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2TokenController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2TokenController.java new file mode 100644 index 0000000000..c055a19df3 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2TokenController.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.module.system.controller.admin.oauth2; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.token.OAuth2AccessTokenPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.token.OAuth2AccessTokenRespVO; +import cn.iocoder.yudao.module.system.convert.auth.OAuth2TokenConvert; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; +import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; +import cn.iocoder.yudao.module.system.service.auth.AdminAuthService; +import cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Api(tags = "管理后台 - OAuth2.0 令牌") +@RestController +@RequestMapping("/system/oauth2-token") +public class OAuth2TokenController { + + @Resource + private OAuth2TokenService oauth2TokenService; + @Resource + private AdminAuthService authService; + + @GetMapping("/page") + @ApiOperation(value = "获得访问令牌分页", notes = "只返回有效期内的") + @PreAuthorize("@ss.hasPermission('system:oauth2-token:page')") + public CommonResult> getAccessTokenPage(@Valid OAuth2AccessTokenPageReqVO reqVO) { + PageResult pageResult = oauth2TokenService.getAccessTokenPage(reqVO); + return success(OAuth2TokenConvert.INSTANCE.convert(pageResult)); + } + + @DeleteMapping("/delete") + @ApiOperation("删除访问令牌") + @ApiImplicitParam(name = "accessToken", value = "访问令牌", required = true, dataTypeClass = String.class, example = "tudou") + @PreAuthorize("@ss.hasPermission('system:oauth2-token:delete')") + public CommonResult deleteAccessToken(@RequestParam("accessToken") String accessToken) { + authService.logout(accessToken, LoginLogTypeEnum.LOGOUT_DELETE.getType()); + return success(true); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2UserController.http b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2UserController.http new file mode 100644 index 0000000000..13c8545bda --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2UserController.http @@ -0,0 +1,14 @@ +### 请求 /system/oauth2/user/get 接口 => 成功 +GET {{baseUrl}}/system/oauth2/user/get +Authorization: Bearer 47f9c74ec11041f193b777ebb95c3b0d +tenant-id: {{adminTenentId}} + +### 请求 /system/oauth2/user/update 接口 => 成功 +PUT {{baseUrl}}/system/oauth2/user/update +Content-Type: application/json +Authorization: Bearer 47f9c74ec11041f193b777ebb95c3b0d +tenant-id: {{adminTenentId}} + +{ + "nickname": "芋道源码" +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2UserController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2UserController.java new file mode 100644 index 0000000000..39b6125ab1 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2UserController.java @@ -0,0 +1,80 @@ +package cn.iocoder.yudao.module.system.controller.admin.oauth2; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.user.OAuth2UserInfoRespVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.user.OAuth2UserUpdateReqVO; +import cn.iocoder.yudao.module.system.convert.oauth2.OAuth2UserConvert; +import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; +import cn.iocoder.yudao.module.system.dal.dataobject.dept.PostDO; +import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; +import cn.iocoder.yudao.module.system.service.dept.DeptService; +import cn.iocoder.yudao.module.system.service.dept.PostService; +import cn.iocoder.yudao.module.system.service.user.AdminUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; + +/** + * 提供给外部应用调用为主 + * + * 1. 在 getUserInfo 方法上,添加 @PreAuthorize("@ss.hasScope('user.read')") 注解,声明需要满足 scope = user.read + * 2. 在 updateUserInfo 方法上,添加 @PreAuthorize("@ss.hasScope('user.write')") 注解,声明需要满足 scope = user.write + * + * @author 芋道源码 + */ +@Api(tags = "管理后台 - OAuth2.0 用户") +@RestController +@RequestMapping("/system/oauth2/user") +@Validated +@Slf4j +public class OAuth2UserController { + + @Resource + private AdminUserService userService; + @Resource + private DeptService deptService; + @Resource + private PostService postService; + + @GetMapping("/get") + @ApiOperation("获得用户基本信息") + @PreAuthorize("@ss.hasScope('user.read')") // + public CommonResult getUserInfo() { + // 获得用户基本信息 + AdminUserDO user = userService.getUser(getLoginUserId()); + OAuth2UserInfoRespVO resp = OAuth2UserConvert.INSTANCE.convert(user); + // 获得部门信息 + if (user.getDeptId() != null) { + DeptDO dept = deptService.getDept(user.getDeptId()); + resp.setDept(OAuth2UserConvert.INSTANCE.convert(dept)); + } + // 获得岗位信息 + if (CollUtil.isNotEmpty(user.getPostIds())) { + List posts = postService.getPosts(user.getPostIds()); + resp.setPosts(OAuth2UserConvert.INSTANCE.convertList(posts)); + } + return success(resp); + } + + @PutMapping("/update") + @ApiOperation("更新用户基本信息") + @PreAuthorize("@ss.hasScope('user.write')") + public CommonResult updateUserInfo(@Valid @RequestBody OAuth2UserUpdateReqVO reqVO) { + // 这里将 UserProfileUpdateReqVO =》UserProfileUpdateReqVO 对象,实现接口的复用。 + // 主要是,AdminUserService 没有自己的 BO 对象,所以复用只能这么做 + userService.updateUserProfile(getLoginUserId(), OAuth2UserConvert.INSTANCE.convert(reqVO)); + return success(true); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/client/OAuth2ClientBaseVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/client/OAuth2ClientBaseVO.java new file mode 100755 index 0000000000..dbd74e5529 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/client/OAuth2ClientBaseVO.java @@ -0,0 +1,82 @@ +package cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client; + +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.framework.common.util.json.JsonUtils; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.hibernate.validator.constraints.URL; + +import javax.validation.constraints.AssertTrue; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** +* OAuth2 客户端 Base VO,提供给添加、修改、详细的子 VO 使用 +* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 +*/ +@Data +public class OAuth2ClientBaseVO { + + @ApiModelProperty(value = "客户端编号", required = true, example = "tudou") + @NotNull(message = "客户端编号不能为空") + private String clientId; + + @ApiModelProperty(value = "客户端密钥", required = true, example = "fan") + @NotNull(message = "客户端密钥不能为空") + private String secret; + + @ApiModelProperty(value = "应用名", required = true, example = "土豆") + @NotNull(message = "应用名不能为空") + private String name; + + @ApiModelProperty(value = "应用图标", required = true, example = "https://www.iocoder.cn/xx.png") + @NotNull(message = "应用图标不能为空") + @URL(message = "应用图标的地址不正确") + private String logo; + + @ApiModelProperty(value = "应用描述", example = "我是一个应用") + private String description; + + @ApiModelProperty(value = "状态", required = true, example = "1", notes = "参见 CommonStatusEnum 枚举") + @NotNull(message = "状态不能为空") + private Integer status; + + @ApiModelProperty(value = "访问令牌的有效期", required = true, example = "8640") + @NotNull(message = "访问令牌的有效期不能为空") + private Integer accessTokenValiditySeconds; + + @ApiModelProperty(value = "刷新令牌的有效期", required = true, example = "8640000") + @NotNull(message = "刷新令牌的有效期不能为空") + private Integer refreshTokenValiditySeconds; + + @ApiModelProperty(value = "可重定向的 URI 地址", required = true, example = "https://www.iocoder.cn") + @NotNull(message = "可重定向的 URI 地址不能为空") + private List<@NotEmpty(message = "重定向的 URI 不能为空") + @URL(message = "重定向的 URI 格式不正确") String> redirectUris; + + @ApiModelProperty(value = "授权类型", required = true, example = "password", notes = "参见 OAuth2GrantTypeEnum 枚举") + @NotNull(message = "授权类型不能为空") + private List authorizedGrantTypes; + + @ApiModelProperty(value = "授权范围", example = "user_info") + private List scopes; + + @ApiModelProperty(value = "自动通过的授权范围", example = "user_info") + private List autoApproveScopes; + + @ApiModelProperty(value = "权限", example = "system:user:query") + private List authorities; + + @ApiModelProperty(value = "资源", example = "1024") + private List resourceIds; + + @ApiModelProperty(value = "附加信息", example = "{yunai: true}") + private String additionalInformation; + + @AssertTrue(message = "附加信息必须是 JSON 格式") + public boolean isAdditionalInformationJson() { + return StrUtil.isEmpty(additionalInformation) || JsonUtils.isJson(additionalInformation); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/client/OAuth2ClientCreateReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/client/OAuth2ClientCreateReqVO.java new file mode 100755 index 0000000000..b241277ac2 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/client/OAuth2ClientCreateReqVO.java @@ -0,0 +1,12 @@ +package cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client; + +import lombok.*; +import io.swagger.annotations.*; + +@ApiModel("管理后台 - OAuth2 客户端创建 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class OAuth2ClientCreateReqVO extends OAuth2ClientBaseVO { + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/client/OAuth2ClientPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/client/OAuth2ClientPageReqVO.java new file mode 100755 index 0000000000..286fc73ac2 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/client/OAuth2ClientPageReqVO.java @@ -0,0 +1,19 @@ +package cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client; + +import lombok.*; +import io.swagger.annotations.*; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +@ApiModel("管理后台 - OAuth2 客户端分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class OAuth2ClientPageReqVO extends PageParam { + + @ApiModelProperty(value = "应用名", example = "土豆", notes = "模糊匹配") + private String name; + + @ApiModelProperty(value = "状态", example = "1", notes = "参见 CommonStatusEnum 枚举") + private Integer status; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/client/OAuth2ClientRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/client/OAuth2ClientRespVO.java new file mode 100755 index 0000000000..37800c2dcb --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/client/OAuth2ClientRespVO.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.Date; + +@ApiModel("管理后台 - OAuth2 客户端 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class OAuth2ClientRespVO extends OAuth2ClientBaseVO { + + @ApiModelProperty(value = "编号", required = true, example = "1024") + private Long id; + + @ApiModelProperty(value = "创建时间", required = true) + private Date createTime; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/client/OAuth2ClientUpdateReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/client/OAuth2ClientUpdateReqVO.java new file mode 100755 index 0000000000..024a1511fb --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/client/OAuth2ClientUpdateReqVO.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import javax.validation.constraints.NotNull; + +@ApiModel("管理后台 - OAuth2 客户端更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class OAuth2ClientUpdateReqVO extends OAuth2ClientBaseVO { + + @ApiModelProperty(value = "编号", required = true, example = "1024") + @NotNull(message = "编号不能为空") + private Long id; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/open/OAuth2OpenAccessTokenRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/open/OAuth2OpenAccessTokenRespVO.java new file mode 100644 index 0000000000..4fdb4e5397 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/open/OAuth2OpenAccessTokenRespVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.open; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@ApiModel("管理后台 - 【开放接口】访问令牌 Response VO") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class OAuth2OpenAccessTokenRespVO { + + @ApiModelProperty(value = "访问令牌", required = true, example = "tudou") + @JsonProperty("access_token") + private String accessToken; + + @ApiModelProperty(value = "刷新令牌", required = true, example = "nice") + @JsonProperty("refresh_token") + private String refreshToken; + + @ApiModelProperty(value = "令牌类型", required = true, example = "bearer") + @JsonProperty("token_type") + private String tokenType; + + @ApiModelProperty(value = "过期时间", required = true, example = "42430", notes = "单位:秒") + @JsonProperty("expires_in") + private Long expiresIn; + + @ApiModelProperty(value = "授权范围", example = "user_info", notes = "如果多个授权范围,使用空格分隔") + private String scope; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/open/OAuth2OpenAuthorizeInfoRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/open/OAuth2OpenAuthorizeInfoRespVO.java new file mode 100644 index 0000000000..d2a7bb36e8 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/open/OAuth2OpenAuthorizeInfoRespVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.open; + +import cn.iocoder.yudao.framework.common.core.KeyValue; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@ApiModel("管理后台 - 授权页的信息 Response VO") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class OAuth2OpenAuthorizeInfoRespVO { + + /** + * 客户端 + */ + private Client client; + + @ApiModelProperty(value = "scope 的选中信息", required = true, notes = "使用 List 保证有序性,Key 是 scope,Value 为是否选中") + private List> scopes; + + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class Client { + + @ApiModelProperty(value = "应用名", required = true, example = "土豆") + private String name; + + @ApiModelProperty(value = "应用图标", required = true, example = "https://www.iocoder.cn/xx.png") + private String logo; + + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/open/OAuth2OpenCheckTokenRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/open/OAuth2OpenCheckTokenRespVO.java new file mode 100644 index 0000000000..f238387182 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/open/OAuth2OpenCheckTokenRespVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.open; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@ApiModel("管理后台 - 【开放接口】校验令牌 Response VO") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class OAuth2OpenCheckTokenRespVO { + + @ApiModelProperty(value = "用户编号", required = true, example = "666") + @JsonProperty("user_id") + private Long userId; + @ApiModelProperty(value = "用户类型", required = true, example = "2", notes = "参见 UserTypeEnum 枚举") + @JsonProperty("user_type") + private Integer userType; + @ApiModelProperty(value = "租户编号", required = true, example = "1024") + @JsonProperty("tenant_id") + private Long tenantId; + + @ApiModelProperty(value = "客户端编号", required = true, example = "car") + private String clientId; + @ApiModelProperty(value = "授权范围", required = true, example = "user_info") + private List scopes; + + @ApiModelProperty(value = "访问令牌", required = true, example = "tudou") + @JsonProperty("access_token") + private String accessToken; + + @ApiModelProperty(value = "过期时间", required = true, example = "1593092157", notes = "时间戳 / 1000,即单位:秒") + private Long exp; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/token/OAuth2AccessTokenPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/token/OAuth2AccessTokenPageReqVO.java new file mode 100644 index 0000000000..65103adc61 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/token/OAuth2AccessTokenPageReqVO.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.token; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@ApiModel("管理后台 - 访问令牌分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +public class OAuth2AccessTokenPageReqVO extends PageParam { + + @ApiModelProperty(value = "用户编号", required = true, example = "666") + private Long userId; + + @ApiModelProperty(value = "用户类型", required = true, example = "2", notes = "参见 UserTypeEnum 枚举") + private Integer userType; + + @ApiModelProperty(value = "客户端编号", required = true, example = "2") + private String clientId; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/token/OAuth2AccessTokenRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/token/OAuth2AccessTokenRespVO.java new file mode 100644 index 0000000000..b1d5a48ad9 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/token/OAuth2AccessTokenRespVO.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.token; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@ApiModel("管理后台 - 访问令牌 Response VO") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class OAuth2AccessTokenRespVO { + + @ApiModelProperty(value = "编号", required = true, example = "1024") + private Long id; + + @ApiModelProperty(value = "访问令牌", required = true, example = "tudou") + private String accessToken; + + @ApiModelProperty(value = "刷新令牌", required = true, example = "nice") + private String refreshToken; + + @ApiModelProperty(value = "用户编号", required = true, example = "666") + private Long userId; + + @ApiModelProperty(value = "用户类型", required = true, example = "2", notes = "参见 UserTypeEnum 枚举") + private Integer userType; + + @ApiModelProperty(value = "客户端编号", required = true, example = "2") + private String clientId; + + @ApiModelProperty(value = "创建时间", required = true) + private Date createTime; + + @ApiModelProperty(value = "过期时间", required = true) + private Date expiresTime; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/user/OAuth2UserInfoRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/user/OAuth2UserInfoRespVO.java new file mode 100644 index 0000000000..b513fc3dab --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/user/OAuth2UserInfoRespVO.java @@ -0,0 +1,71 @@ +package cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.user; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@ApiModel("管理后台 - OAuth2.0 获得用户基本信息 Response VO") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class OAuth2UserInfoRespVO { + + @ApiModelProperty(value = "用户编号", required = true, example = "1") + private Long id; + + @ApiModelProperty(value = "用户昵称", required = true, example = "芋艿") + private String username; + + @ApiModelProperty(value = "用户昵称", required = true, example = "芋道") + private String nickname; + + @ApiModelProperty(value = "用户邮箱", example = "yudao@iocoder.cn") + private String email; + @ApiModelProperty(value = "手机号码", example = "15601691300") + private String mobile; + + @ApiModelProperty(value = "用户性别", example = "1", notes = "参见 SexEnum 枚举类") + private Integer sex; + + @ApiModelProperty(value = "用户头像", example = "https://www.iocoder.cn/xxx.png") + private String avatar; + + /** + * 所在部门 + */ + private Dept dept; + + /** + * 所属岗位数组 + */ + private List posts; + + @ApiModel("部门") + @Data + public static class Dept { + + @ApiModelProperty(value = "部门编号", required = true, example = "1") + private Long id; + + @ApiModelProperty(value = "部门名称", required = true, example = "研发部") + private String name; + + } + + @ApiModel("岗位") + @Data + public static class Post { + + @ApiModelProperty(value = "岗位编号", required = true, example = "1") + private Long id; + + @ApiModelProperty(value = "岗位名称", required = true, example = "开发") + private String name; + + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/user/OAuth2UserUpdateReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/user/OAuth2UserUpdateReqVO.java new file mode 100644 index 0000000000..991c88a990 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/vo/user/OAuth2UserUpdateReqVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.user; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.Email; +import javax.validation.constraints.Size; + +@ApiModel("管理后台 - OAuth2.0 更新用户基本信息 Request VO") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class OAuth2UserUpdateReqVO { + + @ApiModelProperty(value = "用户昵称", required = true, example = "芋艿") + @Size(max = 30, message = "用户昵称长度不能超过 30 个字符") + private String nickname; + + @ApiModelProperty(value = "用户邮箱", example = "yudao@iocoder.cn") + @Email(message = "邮箱格式不正确") + @Size(max = 50, message = "邮箱长度不能超过 50 个字符") + private String email; + + @ApiModelProperty(value = "手机号码", example = "15601691300") + @Length(min = 11, max = 11, message = "手机号长度必须 11 位") + private String mobile; + + @ApiModelProperty(value = "用户性别", example = "1", notes = "参见 SexEnum 枚举类") + private Integer sex; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserProfileController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserProfileController.java index 9c6c240928..3cc3a44dde 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserProfileController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserProfileController.java @@ -46,7 +46,6 @@ public class UserProfileController { private AdminUserService userService; @Resource private DeptService deptService; - @Resource private PostService postService; @Resource diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/profile/UserProfileUpdateReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/profile/UserProfileUpdateReqVO.java index 3716f4727a..5ab28d1e7f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/profile/UserProfileUpdateReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/profile/UserProfileUpdateReqVO.java @@ -13,7 +13,7 @@ import javax.validation.constraints.Size; public class UserProfileUpdateReqVO { @ApiModelProperty(value = "用户昵称", required = true, example = "芋艿") - @Size(max = 30, message = "用户昵称长度不能超过30个字符") + @Size(max = 30, message = "用户昵称长度不能超过 30 个字符") private String nickname; @ApiModelProperty(value = "用户邮箱", example = "yudao@iocoder.cn") diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/auth/AuthConvert.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/auth/AuthConvert.java index d7979bc817..62784defa2 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/auth/AuthConvert.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/auth/AuthConvert.java @@ -1,20 +1,16 @@ package cn.iocoder.yudao.module.system.convert.auth; -import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; -import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeSendReqDTO; import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeSendReqDTO; import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeUseReqDTO; import cn.iocoder.yudao.module.system.api.social.dto.SocialUserBindReqDTO; -import cn.iocoder.yudao.module.system.api.social.dto.SocialUserUnbindReqDTO; -import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.*; +import cn.iocoder.yudao.module.system.controller.admin.auth.vo.*; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO; import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.enums.permission.MenuIdEnum; import org.mapstruct.Mapper; -import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; import org.slf4j.LoggerFactory; @@ -25,13 +21,7 @@ public interface AuthConvert { AuthConvert INSTANCE = Mappers.getMapper(AuthConvert.class); - @Mapping(source = "updateTime", target = "updateTime", ignore = true) // 字段相同,但是含义不同,忽略 - LoginUser convert0(AdminUserDO bean); - - default LoginUser convert(AdminUserDO bean) { - // 目的,为了设置 UserTypeEnum.ADMIN.getValue() - return convert0(bean).setUserType(UserTypeEnum.ADMIN.getValue()); - } + AuthLoginRespVO convert(OAuth2AccessTokenDO bean); default AuthPermissionInfoRespVO convert(AdminUserDO user, List roleList, List menuList) { return AuthPermissionInfoRespVO.builder() diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/auth/OAuth2ClientConvert.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/auth/OAuth2ClientConvert.java new file mode 100755 index 0000000000..87f408aac5 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/auth/OAuth2ClientConvert.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.system.convert.auth; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client.OAuth2ClientCreateReqVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client.OAuth2ClientRespVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client.OAuth2ClientUpdateReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * OAuth2 客户端 Convert + * + * @author 芋道源码 + */ +@Mapper +public interface OAuth2ClientConvert { + + OAuth2ClientConvert INSTANCE = Mappers.getMapper(OAuth2ClientConvert.class); + + OAuth2ClientDO convert(OAuth2ClientCreateReqVO bean); + + OAuth2ClientDO convert(OAuth2ClientUpdateReqVO bean); + + OAuth2ClientRespVO convert(OAuth2ClientDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/auth/OAuth2TokenConvert.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/auth/OAuth2TokenConvert.java new file mode 100644 index 0000000000..50a6b977f0 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/auth/OAuth2TokenConvert.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.system.convert.auth; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.api.auth.dto.OAuth2AccessTokenCheckRespDTO; +import cn.iocoder.yudao.module.system.api.auth.dto.OAuth2AccessTokenRespDTO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.token.OAuth2AccessTokenRespVO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface OAuth2TokenConvert { + + OAuth2TokenConvert INSTANCE = Mappers.getMapper(OAuth2TokenConvert.class); + + OAuth2AccessTokenCheckRespDTO convert(OAuth2AccessTokenDO bean); + + PageResult convert(PageResult page); + + OAuth2AccessTokenRespDTO convert2(OAuth2AccessTokenDO bean); + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/auth/UserSessionConvert.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/auth/UserSessionConvert.java deleted file mode 100644 index d30dfdcbb4..0000000000 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/auth/UserSessionConvert.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.iocoder.yudao.module.system.convert.auth; - -import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageItemRespVO; -import cn.iocoder.yudao.module.system.dal.dataobject.auth.UserSessionDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -@Mapper -public interface UserSessionConvert { - - UserSessionConvert INSTANCE = Mappers.getMapper(UserSessionConvert.class); - - UserSessionPageItemRespVO convert(UserSessionDO session); - -} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/oauth2/OAuth2OpenConvert.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/oauth2/OAuth2OpenConvert.java new file mode 100644 index 0000000000..fd51003032 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/oauth2/OAuth2OpenConvert.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.system.convert.oauth2; + +import cn.iocoder.yudao.framework.common.core.KeyValue; +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.open.OAuth2OpenAccessTokenRespVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.open.OAuth2OpenAuthorizeInfoRespVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.open.OAuth2OpenCheckTokenRespVO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ApproveDO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO; +import cn.iocoder.yudao.module.system.util.oauth2.OAuth2Utils; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Mapper +public interface OAuth2OpenConvert { + + OAuth2OpenConvert INSTANCE = Mappers.getMapper(OAuth2OpenConvert.class); + + default OAuth2OpenAccessTokenRespVO convert(OAuth2AccessTokenDO bean) { + OAuth2OpenAccessTokenRespVO respVO = convert0(bean); + respVO.setTokenType(SecurityFrameworkUtils.AUTHORIZATION_BEARER.toLowerCase()); + respVO.setExpiresIn(OAuth2Utils.getExpiresIn(bean.getExpiresTime())); + respVO.setScope(OAuth2Utils.buildScopeStr(bean.getScopes())); + return respVO; + } + OAuth2OpenAccessTokenRespVO convert0(OAuth2AccessTokenDO bean); + + default OAuth2OpenCheckTokenRespVO convert2(OAuth2AccessTokenDO bean) { + OAuth2OpenCheckTokenRespVO respVO = convert3(bean); + respVO.setExp(bean.getExpiresTime().getTime() / 1000L); + respVO.setUserType(UserTypeEnum.ADMIN.getValue()); + return respVO; + } + OAuth2OpenCheckTokenRespVO convert3(OAuth2AccessTokenDO bean); + + default OAuth2OpenAuthorizeInfoRespVO convert(OAuth2ClientDO client, List approves) { + // 构建 scopes + List> scopes = new ArrayList<>(client.getScopes().size()); + Map approveMap = CollectionUtils.convertMap(approves, OAuth2ApproveDO::getScope); + client.getScopes().forEach(scope -> { + OAuth2ApproveDO approve = approveMap.get(scope); + scopes.add(new KeyValue<>(scope, approve != null ? approve.getApproved() : false)); + }); + // 拼接返回 + return new OAuth2OpenAuthorizeInfoRespVO( + new OAuth2OpenAuthorizeInfoRespVO.Client(client.getName(), client.getLogo()), scopes); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/oauth2/OAuth2UserConvert.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/oauth2/OAuth2UserConvert.java new file mode 100644 index 0000000000..b2610565a5 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/oauth2/OAuth2UserConvert.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.system.convert.oauth2; + +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.user.OAuth2UserInfoRespVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.user.OAuth2UserUpdateReqVO; +import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; +import cn.iocoder.yudao.module.system.dal.dataobject.dept.PostDO; +import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface OAuth2UserConvert { + + OAuth2UserConvert INSTANCE = Mappers.getMapper(OAuth2UserConvert.class); + + OAuth2UserInfoRespVO convert(AdminUserDO bean); + OAuth2UserInfoRespVO.Dept convert(DeptDO dept); + List convertList(List list); + + UserProfileUpdateReqVO convert(OAuth2UserUpdateReqVO bean); + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/auth/UserSessionDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/auth/UserSessionDO.java deleted file mode 100644 index 9249dc22db..0000000000 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/auth/UserSessionDO.java +++ /dev/null @@ -1,71 +0,0 @@ -package cn.iocoder.yudao.module.system.dal.dataobject.auth; - -import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.framework.security.core.LoginUser; -import com.baomidou.mybatisplus.annotation.*; -import lombok.Builder; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.Date; - -/** - * 在线用户表 - * - * 我们已经将 {@link LoginUser} 缓存在 Redis 当中。 - * 这里额外存储在线用户到 MySQL 中,目的是为了方便管理界面可以灵活查询。 - * 同时,通过定时轮询 UserSessionDO 表,可以主动删除 Redis 的缓存,因为 Redis 的过期删除是延迟的。 - * - * @author 芋道源码 - */ -@TableName(value = "system_user_session") -@KeySequence(value = "system_user_session_seq") -@Data -@Builder -@EqualsAndHashCode(callSuper = true) -public class UserSessionDO extends BaseDO { - - /** - * 会话编号 - */ - private Long id; - /** - * 令牌 - */ - private String token; - - /** - * 用户编号 - * - * 关联 AdminUserDO.id 或者 MemberUserDO.id - */ - private Long userId; - /** - * 用户类型 - * - * 枚举 {@link UserTypeEnum} - */ - private Integer userType; - - /** - * 用户账号 - * - * 冗余,因为账号可以变更 - */ - private String username; - - /** - * 用户 IP - */ - private String userIp; - /** - * 浏览器 UA - */ - private String userAgent; - /** - * 会话超时时间 - */ - private Date sessionTimeout; - -} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2AccessTokenDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2AccessTokenDO.java new file mode 100644 index 0000000000..5c2340e519 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2AccessTokenDO.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.oauth2; + +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; +import java.util.List; + +/** + * OAuth2 访问令牌 DO + * + * 如下字段,暂时未使用,暂时不支持: + * user_name、authentication(用户信息) + * + * @author 芋道源码 + */ +@TableName(value = "system_oauth2_access_token", autoResultMap = true) +@KeySequence("system_oauth2_access_token_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +public class OAuth2AccessTokenDO extends TenantBaseDO { + + /** + * 编号,数据库递增 + */ + @TableId + private Long id; + /** + * 访问令牌 + */ + private String accessToken; + /** + * 刷新令牌 + */ + private String refreshToken; + /** + * 用户编号 + */ + private Long userId; + /** + * 用户类型 + * + * 枚举 {@link UserTypeEnum} + */ + private Integer userType; + /** + * 客户端编号 + * + * 关联 {@link OAuth2ClientDO#getId()} + */ + private String clientId; + /** + * 授权范围 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List scopes; + /** + * 过期时间 + */ + private Date expiresTime; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2ApproveDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2ApproveDO.java new file mode 100644 index 0000000000..501b799f08 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2ApproveDO.java @@ -0,0 +1,63 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.oauth2; + +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * OAuth2 批准 DO + * + * 用户在 sso.vue 界面时,记录接受的 scope 列表 + * + * @author 芋道源码 + */ +@TableName(value = "system_oauth2_approve", autoResultMap = true) +@KeySequence("system_oauth2_approve_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +public class OAuth2ApproveDO extends BaseDO { + + /** + * 编号,数据库自增 + */ + @TableId + private Long id; + /** + * 用户编号 + */ + private Long userId; + /** + * 用户类型 + * + * 枚举 {@link UserTypeEnum} + */ + private Integer userType; + /** + * 客户端编号 + * + * 关联 {@link OAuth2ClientDO#getId()} + */ + private String clientId; + /** + * 授权范围 + */ + private String scope; + /** + * 是否接受 + * + * true - 接受 + * false - 拒绝 + */ + private Boolean approved; + /** + * 过期时间 + */ + private Date expiresTime; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2ClientDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2ClientDO.java new file mode 100644 index 0000000000..7264f6c412 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2ClientDO.java @@ -0,0 +1,107 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.oauth2; + +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.module.system.enums.auth.OAuth2GrantTypeEnum; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * OAuth2 客户端 DO + * + * @author 芋道源码 + */ +@TableName(value = "system_oauth2_client", autoResultMap = true) +@KeySequence("system_oauth2_client_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +public class OAuth2ClientDO extends BaseDO { + + /** + * 编号,数据库自增 + * + * 由于 SQL Server 在存储 String 主键有点问题,所以暂时使用 Long 类型 + */ + @TableId + private Long id; + /** + * 客户端编号 + */ + private String clientId; + /** + * 客户端密钥 + */ + private String secret; + /** + * 应用名 + */ + private String name; + /** + * 应用图标 + */ + private String logo; + /** + * 应用描述 + */ + private String description; + /** + * 状态 + * + * 枚举 {@link CommonStatusEnum} + */ + private Integer status; + /** + * 访问令牌的有效期 + */ + private Integer accessTokenValiditySeconds; + /** + * 刷新令牌的有效期 + */ + private Integer refreshTokenValiditySeconds; + /** + * 可重定向的 URI 地址 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List redirectUris; + /** + * 授权类型(模式) + * + * 枚举 {@link OAuth2GrantTypeEnum} + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List authorizedGrantTypes; + /** + * 授权范围 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List scopes; + /** + * 自动授权的 Scope + * + * code 授权时,如果 scope 在这个范围内,则自动通过 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List autoApproveScopes; + /** + * 权限 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List authorities; + /** + * 资源 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List resourceIds; + /** + * 附加信息,JSON 格式 + */ + private String additionalInformation; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2CodeDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2CodeDO.java new file mode 100644 index 0000000000..92fec8e75f --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2CodeDO.java @@ -0,0 +1,68 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.oauth2; + +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; +import java.util.List; + +/** + * OAuth2 授权码 DO + * + * @author 芋道源码 + */ +@TableName(value = "system_oauth2_code", autoResultMap = true) +@KeySequence("system_oauth2_code_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +public class OAuth2CodeDO extends BaseDO { + + /** + * 编号,数据库递增 + */ + private Long id; + /** + * 授权码 + */ + private String code; + /** + * 用户编号 + */ + private Long userId; + /** + * 用户类型 + * + * 枚举 {@link UserTypeEnum} + */ + private Integer userType; + /** + * 客户端编号 + * + * 关联 {@link OAuth2ClientDO#getClientId()} + */ + private String clientId; + /** + * 授权范围 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List scopes; + /** + * 重定向地址 + */ + private String redirectUri; + /** + * 状态 + */ + private String state; + /** + * 过期时间 + */ + private Date expiresTime; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2RefreshTokenDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2RefreshTokenDO.java new file mode 100644 index 0000000000..deb7d18aaa --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2RefreshTokenDO.java @@ -0,0 +1,63 @@ +package cn.iocoder.yudao.module.system.dal.dataobject.oauth2; + +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.Date; +import java.util.List; + +/** + * OAuth2 刷新令牌 + * + * @author 芋道源码 + */ +@TableName(value = "system_oauth2_refresh_token", autoResultMap = true) +// 由于 Oracle 的 SEQ 的名字长度有限制,所以就先用 system_oauth2_access_token_seq 吧,反正也没啥问题 +@KeySequence("system_oauth2_access_token_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +public class OAuth2RefreshTokenDO extends BaseDO { + + /** + * 编号,数据库字典 + */ + private Long id; + /** + * 刷新令牌 + */ + private String refreshToken; + /** + * 用户编号 + */ + private Long userId; + /** + * 用户类型 + * + * 枚举 {@link UserTypeEnum} + */ + private Integer userType; + /** + * 客户端编号 + * + * 关联 {@link OAuth2ClientDO#getId()} + */ + private String clientId; + /** + * 授权范围 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List scopes; + /** + * 过期时间 + */ + private Date expiresTime; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/sensitiveword/SensitiveWordDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/sensitiveword/SensitiveWordDO.java index 0f56bfb3b0..37dc57968a 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/sensitiveword/SensitiveWordDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/sensitiveword/SensitiveWordDO.java @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.dal.dataobject.sensitiveword; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.framework.mybatis.core.type.StringLiSTTypeHandler; +import cn.iocoder.yudao.framework.mybatis.core.type.StringListTypeHandler; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -46,7 +46,7 @@ public class SensitiveWordDO extends BaseDO { * 例如说,tag 有短信、论坛两种,敏感词 "推广" 在短信下是敏感词,在论坛下不是敏感词。 * 此时,我们会存储一条敏感词记录,它的 name 为"推广",tag 为短信。 */ - @TableField(typeHandler = StringLiSTTypeHandler.class) + @TableField(typeHandler = StringListTypeHandler.class) private List tags; /** * 状态 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/auth/UserSessionMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/auth/UserSessionMapper.java deleted file mode 100644 index dea0d4792b..0000000000 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/auth/UserSessionMapper.java +++ /dev/null @@ -1,37 +0,0 @@ -package cn.iocoder.yudao.module.system.dal.mysql.auth; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageReqVO; -import cn.iocoder.yudao.module.system.dal.dataobject.auth.UserSessionDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Collection; -import java.util.Date; -import java.util.List; - -@Mapper -public interface UserSessionMapper extends BaseMapperX { - - default PageResult selectPage(UserSessionPageReqVO reqVO, Collection userIds) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .inIfPresent(UserSessionDO::getUserId, userIds) - .likeIfPresent(UserSessionDO::getUserIp, reqVO.getUserIp())); - } - - default List selectListBySessionTimoutLt() { - return selectList(new LambdaQueryWrapperX() - .lt(UserSessionDO::getSessionTimeout, new Date())); - } - - default void updateByToken(String token, UserSessionDO updateObj) { - update(updateObj, new LambdaQueryWrapperX() - .eq(UserSessionDO::getToken, token)); - } - - default void deleteByToken(String token) { - delete(new LambdaQueryWrapperX().eq(UserSessionDO::getToken, token)); - } - -} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/PostMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/PostMapper.java index ecbd75949b..6bcb8e2fdc 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/PostMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/PostMapper.java @@ -24,7 +24,8 @@ public interface PostMapper extends BaseMapperX { return selectPage(reqVO, new QueryWrapperX() .likeIfPresent("code", reqVO.getCode()) .likeIfPresent("name", reqVO.getName()) - .eqIfPresent("status", reqVO.getStatus())); + .eqIfPresent("status", reqVO.getStatus()) + .orderByDesc("id")); } default List selectList(PostExportReqVO reqVO) { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dict/DictDataMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dict/DictDataMapper.java index eadc6884f5..845f21db92 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dict/DictDataMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dict/DictDataMapper.java @@ -37,7 +37,7 @@ public interface DictDataMapper extends BaseMapperX { .likeIfPresent(DictDataDO::getLabel, reqVO.getLabel()) .likeIfPresent(DictDataDO::getDictType, reqVO.getDictType()) .eqIfPresent(DictDataDO::getStatus, reqVO.getStatus()) - .orderByAsc(Arrays.asList(DictDataDO::getDictType, DictDataDO::getSort))); + .orderByDesc(Arrays.asList(DictDataDO::getDictType, DictDataDO::getSort))); } default List selectList(DictDataExportReqVO reqVO) { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dict/DictTypeMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dict/DictTypeMapper.java index 75297992da..85c2acee42 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dict/DictTypeMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dict/DictTypeMapper.java @@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeExportReqVO; import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypePageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO; import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictTypeDO; import org.apache.ibatis.annotations.Mapper; @@ -18,7 +19,8 @@ public interface DictTypeMapper extends BaseMapperX { .likeIfPresent(DictTypeDO::getName, reqVO.getName()) .likeIfPresent(DictTypeDO::getType, reqVO.getType()) .eqIfPresent(DictTypeDO::getStatus, reqVO.getStatus()) - .betweenIfPresent(DictTypeDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime())); + .betweenIfPresent(DictTypeDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) + .orderByDesc(DictTypeDO::getId)); } default List selectList(DictTypeExportReqVO reqVO) { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/errorcode/ErrorCodeMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/errorcode/ErrorCodeMapper.java index ab514bd225..84842497cc 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/errorcode/ErrorCodeMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/errorcode/ErrorCodeMapper.java @@ -23,7 +23,7 @@ public interface ErrorCodeMapper extends BaseMapperX { .eqIfPresent("code", reqVO.getCode()) .likeIfPresent("message", reqVO.getMessage()) .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) - .orderByAsc("application_name", "code")); + .orderByDesc("code")); } default List selectList(ErrorCodeExportReqVO reqVO) { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/logger/OperateLogMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/logger/OperateLogMapper.java index 94367c55ff..c8e0f2442d 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/logger/OperateLogMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/logger/OperateLogMapper.java @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.system.dal.mysql.logger; import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogExportReqVO; import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogPageReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO; @@ -16,32 +16,32 @@ import java.util.List; public interface OperateLogMapper extends BaseMapperX { default PageResult selectPage(OperateLogPageReqVO reqVO, Collection userIds) { - QueryWrapperX query = new QueryWrapperX() - .likeIfPresent("module", reqVO.getModule()) - .inIfPresent("user_id", userIds) - .eqIfPresent("operate_type", reqVO.getType()) - .betweenIfPresent("start_time", reqVO.getBeginTime(), reqVO.getEndTime()); + LambdaQueryWrapperX query = new LambdaQueryWrapperX() + .likeIfPresent(OperateLogDO::getModule, reqVO.getModule()) + .inIfPresent(OperateLogDO::getUserId, userIds) + .eqIfPresent(OperateLogDO::getType, reqVO.getType()) + .betweenIfPresent(OperateLogDO::getStartTime, reqVO.getBeginTime(), reqVO.getEndTime()); if (Boolean.TRUE.equals(reqVO.getSuccess())) { - query.eq("result_code", GlobalErrorCodeConstants.SUCCESS.getCode()); + query.eq(OperateLogDO::getResultCode, GlobalErrorCodeConstants.SUCCESS.getCode()); } else if (Boolean.FALSE.equals(reqVO.getSuccess())) { - query.gt("result_code", GlobalErrorCodeConstants.SUCCESS.getCode()); + query.gt(OperateLogDO::getResultCode, GlobalErrorCodeConstants.SUCCESS.getCode()); } - query.orderByDesc("id"); // 降序 + query.orderByDesc(OperateLogDO::getId); // 降序 return selectPage(reqVO, query); } default List selectList(OperateLogExportReqVO reqVO, Collection userIds) { - QueryWrapperX query = new QueryWrapperX() - .likeIfPresent("module", reqVO.getModule()) - .inIfPresent("user_id", userIds) - .eqIfPresent("operate_type", reqVO.getType()) - .betweenIfPresent("start_time", reqVO.getBeginTime(), reqVO.getEndTime()); + LambdaQueryWrapperX query = new LambdaQueryWrapperX() + .likeIfPresent(OperateLogDO::getModule, reqVO.getModule()) + .inIfPresent(OperateLogDO::getUserId, userIds) + .eqIfPresent(OperateLogDO::getType, reqVO.getType()) + .betweenIfPresent(OperateLogDO::getStartTime, reqVO.getBeginTime(), reqVO.getEndTime()); if (Boolean.TRUE.equals(reqVO.getSuccess())) { - query.eq("result_code", GlobalErrorCodeConstants.SUCCESS.getCode()); + query.eq(OperateLogDO::getResultCode, GlobalErrorCodeConstants.SUCCESS.getCode()); } else if (Boolean.FALSE.equals(reqVO.getSuccess())) { - query.gt("result_code", GlobalErrorCodeConstants.SUCCESS.getCode()); + query.gt(OperateLogDO::getResultCode, GlobalErrorCodeConstants.SUCCESS.getCode()); } - query.orderByDesc("id"); // 降序 + query.orderByDesc(OperateLogDO::getId); // 降序 return selectList(query); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/notice/NoticeMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/notice/NoticeMapper.java index 15811613a9..67ff8db09d 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/notice/NoticeMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/notice/NoticeMapper.java @@ -13,7 +13,8 @@ public interface NoticeMapper extends BaseMapperX { default PageResult selectPage(NoticePageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .likeIfPresent(NoticeDO::getTitle, reqVO.getTitle()) - .eqIfPresent(NoticeDO::getStatus, reqVO.getStatus())); + .eqIfPresent(NoticeDO::getStatus, reqVO.getStatus()) + .orderByDesc(NoticeDO::getId)); } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/oauth2/OAuth2AccessTokenMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/oauth2/OAuth2AccessTokenMapper.java new file mode 100644 index 0000000000..fc250d56aa --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/oauth2/OAuth2AccessTokenMapper.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.system.dal.mysql.oauth2; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.token.OAuth2AccessTokenPageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.Date; +import java.util.List; + +@Mapper +public interface OAuth2AccessTokenMapper extends BaseMapperX { + + default OAuth2AccessTokenDO selectByAccessToken(String accessToken) { + return selectOne(OAuth2AccessTokenDO::getAccessToken, accessToken); + } + + default List selectListByRefreshToken(String refreshToken) { + return selectList(OAuth2AccessTokenDO::getRefreshToken, refreshToken); + } + + default PageResult selectPage(OAuth2AccessTokenPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(OAuth2AccessTokenDO::getUserId, reqVO.getUserId()) + .eqIfPresent(OAuth2AccessTokenDO::getUserType, reqVO.getUserType()) + .likeIfPresent(OAuth2AccessTokenDO::getClientId, reqVO.getClientId()) + .gt(OAuth2AccessTokenDO::getExpiresTime, new Date()) + .orderByDesc(OAuth2AccessTokenDO::getId)); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/oauth2/OAuth2ApproveMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/oauth2/OAuth2ApproveMapper.java new file mode 100644 index 0000000000..61a976ff97 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/oauth2/OAuth2ApproveMapper.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.system.dal.mysql.oauth2; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ApproveDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface OAuth2ApproveMapper extends BaseMapperX { + + default int update(OAuth2ApproveDO updateObj) { + return update(updateObj, new LambdaQueryWrapperX() + .eq(OAuth2ApproveDO::getUserId, updateObj.getUserId()) + .eq(OAuth2ApproveDO::getUserType, updateObj.getUserType()) + .eq(OAuth2ApproveDO::getClientId, updateObj.getClientId()) + .eq(OAuth2ApproveDO::getScope, updateObj.getScope())); + } + + default List selectListByUserIdAndUserTypeAndClientId(Long userId, Integer userType, String clientId) { + return selectList(new LambdaQueryWrapperX() + .eq(OAuth2ApproveDO::getUserId, userId) + .eq(OAuth2ApproveDO::getUserType, userType) + .eq(OAuth2ApproveDO::getClientId, clientId)); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/oauth2/OAuth2ClientMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/oauth2/OAuth2ClientMapper.java new file mode 100755 index 0000000000..13261befcf --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/oauth2/OAuth2ClientMapper.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.system.dal.mysql.oauth2; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client.OAuth2ClientPageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.Date; + +/** + * OAuth2 客户端 Mapper + * + * @author 芋道源码 + */ +@Mapper +public interface OAuth2ClientMapper extends BaseMapperX { + + default PageResult selectPage(OAuth2ClientPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(OAuth2ClientDO::getName, reqVO.getName()) + .eqIfPresent(OAuth2ClientDO::getStatus, reqVO.getStatus()) + .orderByDesc(OAuth2ClientDO::getId)); + } + + default OAuth2ClientDO selectByClientId(String clientId) { + return selectOne(OAuth2ClientDO::getClientId, clientId); + } + + @Select("SELECT COUNT(*) FROM system_oauth2_client WHERE update_time > #{maxUpdateTime}") + int selectCountByUpdateTimeGt(Date maxUpdateTime); + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/oauth2/OAuth2CodeMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/oauth2/OAuth2CodeMapper.java new file mode 100644 index 0000000000..c85581c612 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/oauth2/OAuth2CodeMapper.java @@ -0,0 +1,14 @@ +package cn.iocoder.yudao.module.system.dal.mysql.oauth2; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2CodeDO; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface OAuth2CodeMapper extends BaseMapperX { + + default OAuth2CodeDO selectByCode(String code) { + return selectOne(OAuth2CodeDO::getCode, code); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/oauth2/OAuth2RefreshTokenMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/oauth2/OAuth2RefreshTokenMapper.java new file mode 100644 index 0000000000..713be89cf7 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/oauth2/OAuth2RefreshTokenMapper.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.module.system.dal.mysql.oauth2; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2RefreshTokenDO; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface OAuth2RefreshTokenMapper extends BaseMapperX { + + default int deleteByRefreshToken(String refreshToken) { + return delete(new LambdaQueryWrapperX() + .eq(OAuth2RefreshTokenDO::getRefreshToken, refreshToken)); + } + + default OAuth2RefreshTokenDO selectByRefreshToken(String refreshToken) { + return selectOne(OAuth2RefreshTokenDO::getRefreshToken, refreshToken); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/RoleMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/RoleMapper.java index a23b9504cb..359c7290b2 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/RoleMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/RoleMapper.java @@ -23,7 +23,8 @@ public interface RoleMapper extends BaseMapperX { .likeIfPresent(RoleDO::getName, reqVO.getName()) .likeIfPresent(RoleDO::getCode, reqVO.getCode()) .eqIfPresent(RoleDO::getStatus, reqVO.getStatus()) - .betweenIfPresent(BaseDO::getCreateTime, reqVO.getBeginTime(), reqVO.getEndTime())); + .betweenIfPresent(BaseDO::getCreateTime, reqVO.getBeginTime(), reqVO.getEndTime()) + .orderByDesc(RoleDO::getId)); } default List selectList(RoleExportReqVO reqVO) { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/UserRoleMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/UserRoleMapper.java index e2ab6ce203..51323d749c 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/UserRoleMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/UserRoleMapper.java @@ -4,8 +4,10 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.module.system.dal.dataobject.permission.UserRoleDO; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; import java.util.Collection; +import java.util.Date; import java.util.List; @Mapper @@ -36,4 +38,8 @@ public interface UserRoleMapper extends BaseMapperX { default List selectListByRoleIds(Collection roleIds) { return selectList(UserRoleDO::getRoleId, roleIds); } + + @Select("SELECT COUNT(*) FROM system_user_role WHERE update_time > #{maxUpdateTime}") + Long selectCountByUpdateTimeGt(Date maxUpdateTime); + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java index be4b5ea218..b7d5e3daab 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.dal.mysql.user; import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserExportReqVO; import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; @@ -33,7 +34,9 @@ public interface AdminUserMapper extends BaseMapperX { .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile()) .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus()) .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getBeginTime(), reqVO.getEndTime()) - .inIfPresent(AdminUserDO::getDeptId, deptIds)); + .inIfPresent(AdminUserDO::getDeptId, deptIds) + .orderByDesc(AdminUserDO::getId)); + } default List selectList(UserExportReqVO reqVO, Collection deptIds) { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/redis/RedisKeyConstants.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/redis/RedisKeyConstants.java index b17c6fb4dd..5760e3c0f2 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/redis/RedisKeyConstants.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/redis/RedisKeyConstants.java @@ -1,7 +1,7 @@ package cn.iocoder.yudao.module.system.dal.redis; import cn.iocoder.yudao.framework.redis.core.RedisKeyDefine; -import cn.iocoder.yudao.framework.security.core.LoginUser; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; import java.time.Duration; @@ -18,9 +18,9 @@ public interface RedisKeyConstants { "captcha_code:%s", // 参数为 uuid STRING, String.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); - RedisKeyDefine LOGIN_USER = new RedisKeyDefine("登录用户的缓存", - "login_user:%s", // 参数为 token 令牌 - STRING, LoginUser.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); + RedisKeyDefine OAUTH2_ACCESS_TOKEN = new RedisKeyDefine("访问令牌的缓存", + "oauth2_access_token:%s", // 参数为访问令牌 token + STRING, OAuth2AccessTokenDO.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); RedisKeyDefine SOCIAL_AUTH_STATE = new RedisKeyDefine("社交登陆的 state", // 注意,它是被 JustAuth 的 justauth.type.prefix 使用到 "social_auth_state:%s", // 参数为 state diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/redis/auth/LoginUserRedisDAO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/redis/auth/LoginUserRedisDAO.java deleted file mode 100644 index 8af701f714..0000000000 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/redis/auth/LoginUserRedisDAO.java +++ /dev/null @@ -1,52 +0,0 @@ -package cn.iocoder.yudao.module.system.dal.redis.auth; - -import cn.iocoder.yudao.framework.common.util.json.JsonUtils; -import cn.iocoder.yudao.framework.security.config.SecurityProperties; -import cn.iocoder.yudao.framework.security.core.LoginUser; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.stereotype.Repository; - -import javax.annotation.Resource; - -import static cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants.LOGIN_USER; - -/** - * {@link LoginUser} 的 RedisDAO - * - * @author 芋道源码 - */ -@Repository -public class LoginUserRedisDAO { - - @Resource - private StringRedisTemplate stringRedisTemplate; - - @Resource - private SecurityProperties securityProperties; - - public LoginUser get(String token) { - String redisKey = formatKey(token); - return JsonUtils.parseObject(stringRedisTemplate.opsForValue().get(redisKey), LoginUser.class); - } - - public Boolean exists(String token) { - String redisKey = formatKey(token); - return stringRedisTemplate.hasKey(redisKey); - } - - public void set(String token, LoginUser loginUser) { - String redisKey = formatKey(token); - stringRedisTemplate.opsForValue().set(redisKey, JsonUtils.toJsonString(loginUser), - securityProperties.getSessionTimeout()); - } - - public void delete(String token) { - String redisKey = formatKey(token); - stringRedisTemplate.delete(redisKey); - } - - private static String formatKey(String token) { - return LOGIN_USER.formatKey(token); - } - -} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/redis/oauth2/OAuth2AccessTokenRedisDAO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/redis/oauth2/OAuth2AccessTokenRedisDAO.java new file mode 100644 index 0000000000..a65215224f --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/redis/oauth2/OAuth2AccessTokenRedisDAO.java @@ -0,0 +1,54 @@ +package cn.iocoder.yudao.module.system.dal.redis.oauth2; + +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; +import cn.iocoder.yudao.framework.common.util.json.JsonUtils; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.TimeUnit; + +import static cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants.OAUTH2_ACCESS_TOKEN; + +/** + * {@link OAuth2AccessTokenDO} 的 RedisDAO + * + * @author 芋道源码 + */ +@Repository +public class OAuth2AccessTokenRedisDAO { + + @Resource + private StringRedisTemplate stringRedisTemplate; + + public OAuth2AccessTokenDO get(String accessToken) { + String redisKey = formatKey(accessToken); + return JsonUtils.parseObject(stringRedisTemplate.opsForValue().get(redisKey), OAuth2AccessTokenDO.class); + } + + public void set(OAuth2AccessTokenDO accessTokenDO) { + String redisKey = formatKey(accessTokenDO.getAccessToken()); + // 清理多余字段,避免缓存 + accessTokenDO.setUpdater(null).setUpdateTime(null).setCreateTime(null).setCreator(null).setDeleted(null); + stringRedisTemplate.opsForValue().set(redisKey, JsonUtils.toJsonString(accessTokenDO), + accessTokenDO.getExpiresTime().getTime() - System.currentTimeMillis(), TimeUnit.MILLISECONDS); + } + + public void delete(String accessToken) { + String redisKey = formatKey(accessToken); + stringRedisTemplate.delete(redisKey); + } + + public void deleteList(Collection accessTokens) { + List redisKeys = CollectionUtils.convertList(accessTokens, OAuth2AccessTokenRedisDAO::formatKey); + stringRedisTemplate.delete(redisKeys); + } + + private static String formatKey(String accessToken) { + return String.format(OAUTH2_ACCESS_TOKEN.getKeyTemplate(), accessToken); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/datapermission/config/DataPermissionConfiguration.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/datapermission/config/DataPermissionConfiguration.java index d7246f242b..136866ca05 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/datapermission/config/DataPermissionConfiguration.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/datapermission/config/DataPermissionConfiguration.java @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.framework.datapermission.config; import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; -import cn.iocoder.yudao.framework.datapermission.core.dept.rule.DeptDataPermissionRuleCustomizer; +import cn.iocoder.yudao.framework.datapermission.core.rule.dept.DeptDataPermissionRuleCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/security/config/SecurityConfiguration.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/security/config/SecurityConfiguration.java index 567c98775f..c81809b2ea 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/security/config/SecurityConfiguration.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/security/config/SecurityConfiguration.java @@ -20,6 +20,8 @@ public class SecurityConfiguration { public void customize(ExpressionUrlAuthorizationConfigurer.ExpressionInterceptUrlRegistry registry) { // 登录的接口 registry.antMatchers(buildAdminApi("/system/auth/login")).permitAll(); + registry.antMatchers(buildAdminApi("/system/auth/logout")).permitAll(); + registry.antMatchers(buildAdminApi("/system/auth/refresh-token")).permitAll(); // 社交登陆的接口 registry.antMatchers(buildAdminApi("/system/auth/social-auth-redirect")).permitAll(); registry.antMatchers(buildAdminApi("/system/auth/social-quick-login")).permitAll(); @@ -33,6 +35,9 @@ public class SecurityConfiguration { registry.antMatchers(buildAdminApi("/system/tenant/get-id-by-name")).permitAll(); // 短信回调 API registry.antMatchers(buildAdminApi("/system/sms/callback/**")).permitAll(); + // OAuth2 API + registry.antMatchers(buildAdminApi("/system/oauth2/token")).permitAll(); + registry.antMatchers(buildAdminApi("/system/oauth2/check-token")).permitAll(); } }; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/auth/UserSessionTimeoutJob.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/auth/UserSessionTimeoutJob.java deleted file mode 100644 index b2bb523e38..0000000000 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/auth/UserSessionTimeoutJob.java +++ /dev/null @@ -1,32 +0,0 @@ -package cn.iocoder.yudao.module.system.job.auth; - -import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; -import cn.iocoder.yudao.module.system.service.auth.UserSessionService; -import cn.iocoder.yudao.framework.tenant.core.job.TenantJob; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * 用户 Session 超时 Job - * - * @author 願 - */ -@Component -@TenantJob -@Slf4j -public class UserSessionTimeoutJob implements JobHandler { - - @Resource - private UserSessionService userSessionService; - - @Override - public String execute(String param) throws Exception { - // 执行过期 - Long timeoutCount = userSessionService.deleteTimeoutSession(); - // 返回结果,记录每次的超时数量 - return String.format("移除在线会话数量为 %s 个", timeoutCount); - } - -} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/auth/OAuth2ClientRefreshConsumer.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/auth/OAuth2ClientRefreshConsumer.java new file mode 100644 index 0000000000..fc765c425e --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/auth/OAuth2ClientRefreshConsumer.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.system.mq.consumer.auth; + +import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener; +import cn.iocoder.yudao.module.system.mq.message.auth.OAuth2ClientRefreshMessage; +import cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * 针对 {@link OAuth2ClientRefreshMessage} 的消费者 + * + * @author 芋道源码 + */ +@Component +@Slf4j +public class OAuth2ClientRefreshConsumer extends AbstractChannelMessageListener { + + @Resource + private OAuth2ClientService oauth2ClientService; + + @Override + public void onMessage(OAuth2ClientRefreshMessage message) { + log.info("[onMessage][收到 OAuth2Client 刷新消息]"); + oauth2ClientService.initLocalCache(); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/permission/UserRoleRefreshConsumer.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/permission/UserRoleRefreshConsumer.java new file mode 100644 index 0000000000..d580f58e21 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/permission/UserRoleRefreshConsumer.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.system.mq.consumer.permission; + +import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener; +import cn.iocoder.yudao.module.system.mq.message.permission.UserRoleRefreshMessage; +import cn.iocoder.yudao.module.system.service.permission.PermissionService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * 针对 {@link UserRoleRefreshMessage} 的消费者 + * + * @author 芋道源码 + */ +@Component +@Slf4j +public class UserRoleRefreshConsumer extends AbstractChannelMessageListener { + + @Resource + private PermissionService permissionService; + + @Override + public void onMessage(UserRoleRefreshMessage message) { + log.info("[onMessage][收到 User 与 Role 的关联刷新消息]"); + permissionService.initLocalCache(); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/message/auth/OAuth2ClientRefreshMessage.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/message/auth/OAuth2ClientRefreshMessage.java new file mode 100644 index 0000000000..3d18df1505 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/message/auth/OAuth2ClientRefreshMessage.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.module.system.mq.message.auth; + +import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * OAuth 2.0 客户端的数据刷新 Message + * + * @author 芋道源码 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class OAuth2ClientRefreshMessage extends AbstractChannelMessage { + + @Override + public String getChannel() { + return "system.oauth2-client.refresh"; + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/message/permission/UserRoleRefreshMessage.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/message/permission/UserRoleRefreshMessage.java new file mode 100644 index 0000000000..1644f5c00d --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/message/permission/UserRoleRefreshMessage.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.module.system.mq.message.permission; + +import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 用户与角色的数据刷新 Message + * + * @author 芋道源码 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class UserRoleRefreshMessage extends AbstractChannelMessage { + + @Override + public String getChannel() { + return "system.user-role.refresh"; + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/auth/OAuth2ClientProducer.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/auth/OAuth2ClientProducer.java new file mode 100644 index 0000000000..1a849efc62 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/auth/OAuth2ClientProducer.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.system.mq.producer.auth; + +import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; +import cn.iocoder.yudao.module.system.mq.message.auth.OAuth2ClientRefreshMessage; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * OAuth 2.0 客户端相关消息的 Producer + */ +@Component +public class OAuth2ClientProducer { + + @Resource + private RedisMQTemplate redisMQTemplate; + + /** + * 发送 {@link OAuth2ClientRefreshMessage} 消息 + */ + public void sendOAuth2ClientRefreshMessage() { + OAuth2ClientRefreshMessage message = new OAuth2ClientRefreshMessage(); + redisMQTemplate.send(message); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/permission/PermissionProducer.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/permission/PermissionProducer.java index 56c8e31790..e3c4047c21 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/permission/PermissionProducer.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/permission/PermissionProducer.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.mq.producer.permission; import cn.iocoder.yudao.module.system.mq.message.permission.RoleMenuRefreshMessage; import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; +import cn.iocoder.yudao.module.system.mq.message.permission.UserRoleRefreshMessage; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -23,4 +24,12 @@ public class PermissionProducer { redisMQTemplate.send(message); } + /** + * 发送 {@link UserRoleRefreshMessage} 消息 + */ + public void sendUserRoleRefreshMessage() { + UserRoleRefreshMessage message = new UserRoleRefreshMessage(); + redisMQTemplate.send(message); + } + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthService.java index 84f7422078..3a53c1aa3e 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthService.java @@ -1,28 +1,43 @@ package cn.iocoder.yudao.module.system.service.auth; -import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.*; -import cn.iocoder.yudao.framework.security.core.service.SecurityAuthFrameworkService; +import cn.iocoder.yudao.module.system.controller.admin.auth.vo.*; +import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import javax.validation.Valid; /** * 管理后台的认证 Service 接口 * - * 提供用户的账号密码登录、token 的校验等认证相关的功能 + * 提供用户的登录、登出的能力 * * @author 芋道源码 */ -public interface AdminAuthService extends SecurityAuthFrameworkService { +public interface AdminAuthService { + + /** + * 验证账号 + 密码。如果通过,则返回用户 + * + * @param username 账号 + * @param password 密码 + * @return 用户 + */ + AdminUserDO authenticate(String username, String password); /** * 账号登录 * * @param reqVO 登录信息 - * @param userIp 用户 IP - * @param userAgent 用户 UA - * @return 身份令牌,使用 JWT 方式 + * @return 登录结果 */ - String login(@Valid AuthLoginReqVO reqVO, String userIp, String userAgent); + AuthLoginRespVO login(@Valid AuthLoginReqVO reqVO); + + /** + * 基于 token 退出登录 + * + * @param token token + * @param logType 登出类型 + */ + void logout(String token, Integer logType); /** * 短信验证码发送 @@ -35,30 +50,32 @@ public interface AdminAuthService extends SecurityAuthFrameworkService { * 短信登录 * * @param reqVO 登录信息 - * @param userIp 用户 IP - * @param userAgent 用户 UA - * @return 身份令牌,使用 JWT 方式 + * @return 登录结果 */ - String smsLogin(AuthSmsLoginReqVO reqVO, String userIp, String userAgent) ; + AuthLoginRespVO smsLogin(AuthSmsLoginReqVO reqVO) ; /** * 社交快捷登录,使用 code 授权码 * * @param reqVO 登录信息 - * @param userIp 用户 IP - * @param userAgent 用户 UA - * @return 身份令牌,使用 JWT 方式 + * @return 登录结果 */ - String socialQuickLogin(@Valid AuthSocialQuickLoginReqVO reqVO, String userIp, String userAgent); + AuthLoginRespVO socialQuickLogin(@Valid AuthSocialQuickLoginReqVO reqVO); /** * 社交绑定登录,使用 code 授权码 + 账号密码 * * @param reqVO 登录信息 - * @param userIp 用户 IP - * @param userAgent 用户 UA - * @return 身份令牌,使用 JWT 方式 + * @return 登录结果 */ - String socialBindLogin(@Valid AuthSocialBindLoginReqVO reqVO, String userIp, String userAgent); + AuthLoginRespVO socialBindLogin(@Valid AuthSocialBindLoginReqVO reqVO); + + /** + * 刷新访问令牌 + * + * @param refreshToken 刷新令牌 + * @return 登录结果 + */ + AuthLoginRespVO refreshToken(String refreshToken); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java index 6476102bf2..03f600110d 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java @@ -1,47 +1,38 @@ package cn.iocoder.yudao.module.system.service.auth; +import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils; -import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.yudao.framework.security.core.authentication.MultiUsernamePasswordAuthenticationToken; import cn.iocoder.yudao.module.system.api.logger.dto.LoginLogCreateReqDTO; import cn.iocoder.yudao.module.system.api.sms.SmsCodeApi; -import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.*; +import cn.iocoder.yudao.module.system.controller.admin.auth.vo.*; import cn.iocoder.yudao.module.system.convert.auth.AuthConvert; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; +import cn.iocoder.yudao.module.system.enums.auth.OAuth2ClientConstants; import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum; import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum; import cn.iocoder.yudao.module.system.service.common.CaptchaService; import cn.iocoder.yudao.module.system.service.logger.LoginLogService; -import cn.iocoder.yudao.module.system.service.permission.PermissionService; +import cn.iocoder.yudao.module.system.service.member.MemberService; +import cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenService; import cn.iocoder.yudao.module.system.service.social.SocialUserService; import cn.iocoder.yudao.module.system.service.user.AdminUserService; +import com.google.common.annotations.VisibleForTesting; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Lazy; -import org.springframework.security.authentication.AuthenticationManager; -import org.springframework.security.authentication.BadCredentialsException; -import org.springframework.security.authentication.DisabledException; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.AuthenticationException; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; -import org.springframework.util.Assert; import javax.annotation.Resource; import javax.validation.Validator; import java.util.Objects; -import java.util.Set; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP; import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; -import static java.util.Collections.singleton; /** * Auth Service 实现类 @@ -53,22 +44,17 @@ import static java.util.Collections.singleton; public class AdminAuthServiceImpl implements AdminAuthService { @Resource - @Lazy // 延迟加载,因为存在相互依赖的问题 - private AuthenticationManager authenticationManager; - - @Autowired - @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") // UserService 存在重名 private AdminUserService userService; @Resource - private PermissionService permissionService; - @Resource private CaptchaService captchaService; @Resource private LoginLogService loginLogService; @Resource - private UserSessionService userSessionService; + private OAuth2TokenService oauth2TokenService; @Resource private SocialUserService socialUserService; + @Resource + private MemberService memberService; @Resource private Validator validator; @@ -77,39 +63,36 @@ public class AdminAuthServiceImpl implements AdminAuthService { private SmsCodeApi smsCodeApi; @Override - public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { - // 获取 username 对应的 AdminUserDO + public AdminUserDO authenticate(String username, String password) { + final LoginLogTypeEnum logTypeEnum = LoginLogTypeEnum.LOGIN_USERNAME; + // 校验账号是否存在 AdminUserDO user = userService.getUserByUsername(username); if (user == null) { - throw new UsernameNotFoundException(username); + createLoginLog(null, username, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS); + throw exception(AUTH_LOGIN_BAD_CREDENTIALS); } - // 创建 LoginUser 对象 - return buildLoginUser(user); + if (!userService.isPasswordMatch(password, user.getPassword())) { + createLoginLog(user.getId(), username, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS); + throw exception(AUTH_LOGIN_BAD_CREDENTIALS); + } + // 校验是否禁用 + if (ObjectUtil.notEqual(user.getStatus(), CommonStatusEnum.ENABLE.getStatus())) { + createLoginLog(user.getId(), username, logTypeEnum, LoginResultEnum.USER_DISABLED); + throw exception(AUTH_LOGIN_USER_DISABLED); + } + return user; } @Override - public LoginUser mockLogin(Long userId) { - // 获取用户编号对应的 AdminUserDO - AdminUserDO user = userService.getUser(userId); - if (user == null) { - throw new UsernameNotFoundException(String.valueOf(userId)); - } - createLoginLog(user.getUsername(), LoginLogTypeEnum.LOGIN_MOCK, LoginResultEnum.SUCCESS); - - // 创建 LoginUser 对象 - return buildLoginUser(user); - } - - @Override - public String login(AuthLoginReqVO reqVO, String userIp, String userAgent) { + public AuthLoginRespVO login(AuthLoginReqVO reqVO) { // 判断验证码是否正确 verifyCaptcha(reqVO); // 使用账号密码,进行登录 - LoginUser loginUser = login0(reqVO.getUsername(), reqVO.getPassword()); + AdminUserDO user = authenticate(reqVO.getUsername(), reqVO.getPassword()); - // 缓存登陆用户到 Redis 中,返回 Token 令牌 - return createUserSessionAfterLoginSuccess(loginUser, LoginLogTypeEnum.LOGIN_USERNAME, userIp, userAgent); + // 创建 Token 令牌,记录登录日志 + return createTokenAfterLoginSuccess(user.getId(), reqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME); } @Override @@ -123,9 +106,9 @@ public class AdminAuthServiceImpl implements AdminAuthService { } @Override - public String smsLogin(AuthSmsLoginReqVO reqVO, String userIp, String userAgent) { + public AuthLoginRespVO smsLogin(AuthSmsLoginReqVO reqVO) { // 校验验证码 - smsCodeApi.useSmsCode(AuthConvert.INSTANCE.convert(reqVO, SmsSceneEnum.ADMIN_MEMBER_LOGIN.getScene(), userIp)); + smsCodeApi.useSmsCode(AuthConvert.INSTANCE.convert(reqVO, SmsSceneEnum.ADMIN_MEMBER_LOGIN.getScene(), getClientIP())); // 获得用户信息 AdminUserDO user = userService.getUserByMobile(reqVO.getMobile()); @@ -133,14 +116,12 @@ public class AdminAuthServiceImpl implements AdminAuthService { throw exception(USER_NOT_EXISTS); } - // 创建 LoginUser 对象 - LoginUser loginUser = buildLoginUser(user); - // 缓存登陆用户到 Redis 中,返回 sessionId 编号 - return createUserSessionAfterLoginSuccess(loginUser, LoginLogTypeEnum.LOGIN_MOBILE, userIp, userAgent); + return createTokenAfterLoginSuccess(user.getId(), reqVO.getMobile(), LoginLogTypeEnum.LOGIN_MOBILE); } - private void verifyCaptcha(AuthLoginReqVO reqVO) { + @VisibleForTesting + void verifyCaptcha(AuthLoginReqVO reqVO) { // 如果验证码关闭,则不进行校验 if (!captchaService.isCaptchaEnable()) { return; @@ -152,53 +133,26 @@ public class AdminAuthServiceImpl implements AdminAuthService { String code = captchaService.getCaptchaCode(reqVO.getUuid()); if (code == null) { // 创建登录失败日志(验证码不存在) - this.createLoginLog(reqVO.getUsername(), logTypeEnum, LoginResultEnum.CAPTCHA_NOT_FOUND); + createLoginLog(null, reqVO.getUsername(), logTypeEnum, LoginResultEnum.CAPTCHA_NOT_FOUND); throw exception(AUTH_LOGIN_CAPTCHA_NOT_FOUND); } // 验证码不正确 if (!code.equals(reqVO.getCode())) { // 创建登录失败日志(验证码不正确) - this.createLoginLog(reqVO.getUsername(), logTypeEnum, LoginResultEnum.CAPTCHA_CODE_ERROR); + createLoginLog(null, reqVO.getUsername(), logTypeEnum, LoginResultEnum.CAPTCHA_CODE_ERROR); throw exception(AUTH_LOGIN_CAPTCHA_CODE_ERROR); } // 正确,所以要删除下验证码 captchaService.deleteCaptchaCode(reqVO.getUuid()); } - private LoginUser login0(String username, String password) { - final LoginLogTypeEnum logTypeEnum = LoginLogTypeEnum.LOGIN_USERNAME; - // 用户验证 - Authentication authentication; - try { - // 调用 Spring Security 的 AuthenticationManager#authenticate(...) 方法,使用账号密码进行认证 - // 在其内部,会调用到 loadUserByUsername 方法,获取 User 信息 - authentication = authenticationManager.authenticate(new MultiUsernamePasswordAuthenticationToken( - username, password, getUserType())); - } catch (BadCredentialsException badCredentialsException) { - this.createLoginLog(username, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS); - throw exception(AUTH_LOGIN_BAD_CREDENTIALS); - } catch (DisabledException disabledException) { - this.createLoginLog(username, logTypeEnum, LoginResultEnum.USER_DISABLED); - throw exception(AUTH_LOGIN_USER_DISABLED); - } catch (AuthenticationException authenticationException) { - log.error("[login0][username({}) 发生未知异常]", username, authenticationException); - this.createLoginLog(username, logTypeEnum, LoginResultEnum.UNKNOWN_ERROR); - throw exception(AUTH_LOGIN_FAIL_UNKNOWN); - } - Assert.notNull(authentication.getPrincipal(), "Principal 不会为空"); - return (LoginUser) authentication.getPrincipal(); - } - - private void createLoginLog(String username, LoginLogTypeEnum logTypeEnum, LoginResultEnum loginResult) { - // 获得用户 - AdminUserDO user = userService.getUserByUsername(username); + private void createLoginLog(Long userId, String username, + LoginLogTypeEnum logTypeEnum, LoginResultEnum loginResult) { // 插入登录日志 LoginLogCreateReqDTO reqDTO = new LoginLogCreateReqDTO(); reqDTO.setLogType(logTypeEnum.getType()); reqDTO.setTraceId(TracerUtils.getTraceId()); - if (user != null) { - reqDTO.setUserId(user.getId()); - } + reqDTO.setUserId(userId); reqDTO.setUserType(getUserType().getValue()); reqDTO.setUsername(username); reqDTO.setUserAgent(ServletUtils.getUserAgent()); @@ -206,23 +160,13 @@ public class AdminAuthServiceImpl implements AdminAuthService { reqDTO.setResult(loginResult.getResult()); loginLogService.createLoginLog(reqDTO); // 更新最后登录时间 - if (user != null && Objects.equals(LoginResultEnum.SUCCESS.getResult(), loginResult.getResult())) { - userService.updateUserLogin(user.getId(), ServletUtils.getClientIP()); + if (userId != null && Objects.equals(LoginResultEnum.SUCCESS.getResult(), loginResult.getResult())) { + userService.updateUserLogin(userId, ServletUtils.getClientIP()); } } - /** - * 获得 User 拥有的角色编号数组 - * - * @param userId 用户编号 - * @return 角色编号数组 - */ - private Set getUserRoleIds(Long userId) { - return permissionService.getUserRoleIds(userId, singleton(CommonStatusEnum.ENABLE.getStatus())); - } - @Override - public String socialQuickLogin(AuthSocialQuickLoginReqVO reqVO, String userIp, String userAgent) { + public AuthLoginRespVO socialQuickLogin(AuthSocialQuickLoginReqVO reqVO) { // 使用 code 授权码,进行登录。然后,获得到绑定的用户编号 Long userId = socialUserService.getBindUserId(UserTypeEnum.ADMIN.getValue(), reqVO.getType(), reqVO.getCode(), reqVO.getState()); @@ -230,105 +174,82 @@ public class AdminAuthServiceImpl implements AdminAuthService { throw exception(AUTH_THIRD_LOGIN_NOT_BIND); } - // 自动登录 + // 获得用户 AdminUserDO user = userService.getUser(userId); if (user == null) { throw exception(USER_NOT_EXISTS); } - // 创建 LoginUser 对象 - LoginUser loginUser = buildLoginUser(user); - - // 缓存登录用户到 Redis 中,返回 Token 令牌 - return createUserSessionAfterLoginSuccess(loginUser, LoginLogTypeEnum.LOGIN_SOCIAL, userIp, userAgent); + // 创建 Token 令牌,记录登录日志 + return createTokenAfterLoginSuccess(user.getId(), user.getUsername(), LoginLogTypeEnum.LOGIN_SOCIAL); } @Override - public String socialBindLogin(AuthSocialBindLoginReqVO reqVO, String userIp, String userAgent) { + public AuthLoginRespVO socialBindLogin(AuthSocialBindLoginReqVO reqVO) { // 使用账号密码,进行登录。 - LoginUser loginUser = login0(reqVO.getUsername(), reqVO.getPassword()); + AdminUserDO user = authenticate(reqVO.getUsername(), reqVO.getPassword()); // 绑定社交用户 - socialUserService.bindSocialUser(AuthConvert.INSTANCE.convert(loginUser.getId(), getUserType().getValue(), reqVO)); + socialUserService.bindSocialUser(AuthConvert.INSTANCE.convert(user.getId(), getUserType().getValue(), reqVO)); - // 缓存登录用户到 Redis 中,返回 Token 令牌 - return createUserSessionAfterLoginSuccess(loginUser, LoginLogTypeEnum.LOGIN_SOCIAL, userIp, userAgent); - } - - private String createUserSessionAfterLoginSuccess(LoginUser loginUser, LoginLogTypeEnum logType, String userIp, String userAgent) { - // 插入登陆日志 - createLoginLog(loginUser.getUsername(), logType, LoginResultEnum.SUCCESS); - // 缓存登录用户到 Redis 中,返回 Token 令牌 - return userSessionService.createUserSession(loginUser, userIp, userAgent); + // 创建 Token 令牌,记录登录日志 + return createTokenAfterLoginSuccess(user.getId(), reqVO.getUsername(), LoginLogTypeEnum.LOGIN_SOCIAL); } @Override - public void logout(String token) { - // 查询用户信息 - LoginUser loginUser = userSessionService.getLoginUser(token); - if (loginUser == null) { + public AuthLoginRespVO refreshToken(String refreshToken) { + OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.refreshAccessToken(refreshToken, OAuth2ClientConstants.CLIENT_ID_DEFAULT); + return AuthConvert.INSTANCE.convert(accessTokenDO); + } + + private AuthLoginRespVO createTokenAfterLoginSuccess(Long userId, String username, LoginLogTypeEnum logType) { + // 插入登陆日志 + createLoginLog(userId, username, logType, LoginResultEnum.SUCCESS); + // 创建访问令牌 + OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.createAccessToken(userId, getUserType().getValue(), + OAuth2ClientConstants.CLIENT_ID_DEFAULT, null); + // 构建返回结果 + return AuthConvert.INSTANCE.convert(accessTokenDO); + } + + @Override + public void logout(String token, Integer logType) { + // 删除访问令牌 + OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.removeAccessToken(token); + if (accessTokenDO == null) { return; } - // 删除 session - userSessionService.deleteUserSession(token); - // 记录登出日志 - createLogoutLog(loginUser.getId(), loginUser.getUsername()); + // 删除成功,则记录登出日志 + createLogoutLog(accessTokenDO.getUserId(), accessTokenDO.getUserType(), logType); } - @Override - public UserTypeEnum getUserType() { - return UserTypeEnum.ADMIN; - } - - private void createLogoutLog(Long userId, String username) { + private void createLogoutLog(Long userId, Integer userType, Integer logType) { LoginLogCreateReqDTO reqDTO = new LoginLogCreateReqDTO(); - reqDTO.setLogType(LoginLogTypeEnum.LOGOUT_SELF.getType()); + reqDTO.setLogType(logType); reqDTO.setTraceId(TracerUtils.getTraceId()); reqDTO.setUserId(userId); - reqDTO.setUserType(getUserType().getValue()); - reqDTO.setUsername(username); + reqDTO.setUserType(userType); + if (ObjectUtil.notEqual(getUserType(), userType)) { + reqDTO.setUsername(getUsername(userId)); + } else { + reqDTO.setUsername(memberService.getMemberUserMobile(userId)); + } reqDTO.setUserAgent(ServletUtils.getUserAgent()); reqDTO.setUserIp(ServletUtils.getClientIP()); reqDTO.setResult(LoginResultEnum.SUCCESS.getResult()); loginLogService.createLoginLog(reqDTO); } - @Override - public LoginUser verifyTokenAndRefresh(String token) { - // 获得 LoginUser - LoginUser loginUser = userSessionService.getLoginUser(token); - if (loginUser == null) { + private String getUsername(Long userId) { + if (userId == null) { return null; } - // 刷新 LoginUser 缓存 - return this.refreshLoginUserCache(token, loginUser); + AdminUserDO user = userService.getUser(userId); + return user != null ? user.getUsername() : null; } - private LoginUser refreshLoginUserCache(String token, LoginUser loginUser) { - // 每 1/3 的 Session 超时时间,刷新 LoginUser 缓存 - if (System.currentTimeMillis() - loginUser.getUpdateTime().getTime() < - userSessionService.getSessionTimeoutMillis() / 3) { - return loginUser; - } - - // 重新加载 AdminUserDO 信息 - AdminUserDO user = userService.getUser(loginUser.getId()); - if (user == null || CommonStatusEnum.DISABLE.getStatus().equals(user.getStatus())) { - throw exception(AUTH_TOKEN_EXPIRED); // 校验 token 时,用户被禁用的情况下,也认为 token 过期,方便前端跳转到登录界面 - } - - // 刷新 LoginUser 缓存 - LoginUser newLoginUser= this.buildLoginUser(user); - userSessionService.refreshUserSession(token, newLoginUser); - return newLoginUser; - } - - private LoginUser buildLoginUser(AdminUserDO user) { - LoginUser loginUser = AuthConvert.INSTANCE.convert(user); - // 补全字段 - loginUser.setDeptId(user.getDeptId()); - loginUser.setRoleIds(this.getUserRoleIds(loginUser.getId())); - return loginUser; + private UserTypeEnum getUserType() { + return UserTypeEnum.ADMIN; } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/UserSessionService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/UserSessionService.java deleted file mode 100644 index 844cef2505..0000000000 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/UserSessionService.java +++ /dev/null @@ -1,77 +0,0 @@ -package cn.iocoder.yudao.module.system.service.auth; - -import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageReqVO; -import cn.iocoder.yudao.module.system.dal.dataobject.auth.UserSessionDO; -import cn.iocoder.yudao.framework.common.pojo.PageResult; - -/** - * 在线用户 Session Service 接口 - * - * @author 芋道源码 - */ -public interface UserSessionService { - - /** - * 获得在线用户分页列表 - * - * @param reqVO 分页条件 - * @return 份额与列表 - */ - PageResult getUserSessionPage(UserSessionPageReqVO reqVO); - - /** - * 移除超时的在线用户 - * - * @return {@link Long } 移出的超时用户数量 - **/ - long deleteTimeoutSession(); - - /** - * 创建在线用户 Session - * - * @param loginUser 登录用户 - * @param userIp 用户 IP - * @param userAgent 用户 UA - * @return Token 令牌 - */ - String createUserSession(LoginUser loginUser, String userIp, String userAgent); - - /** - * 刷新在线用户 Session 的更新时间 - * - * @param token 令牌 - * @param loginUser 登录用户 - */ - void refreshUserSession(String token, LoginUser loginUser); - - /** - * 删除在线用户 Session - * - * @param token token 令牌 - */ - void deleteUserSession(String token); - - /** - * 删除在线用户 Session - * - * @param id 编号 - */ - void deleteUserSession(Long id); - - /** - * 获得 Token 对应的在线用户 - * - * @param token 令牌 - * @return 在线用户 - */ - LoginUser getLoginUser(String token); - - /** - * 获得 Session 超时时间,单位:毫秒 - * - * @return 超时时间 - */ - Long getSessionTimeoutMillis(); - -} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/UserSessionServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/UserSessionServiceImpl.java deleted file mode 100644 index 333e54c69f..0000000000 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/UserSessionServiceImpl.java +++ /dev/null @@ -1,177 +0,0 @@ -package cn.iocoder.yudao.module.system.service.auth; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.StrUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; -import cn.iocoder.yudao.framework.security.config.SecurityProperties; -import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.yudao.module.system.api.logger.dto.LoginLogCreateReqDTO; -import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageReqVO; -import cn.iocoder.yudao.module.system.dal.dataobject.auth.UserSessionDO; -import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; -import cn.iocoder.yudao.module.system.dal.mysql.auth.UserSessionMapper; -import cn.iocoder.yudao.module.system.dal.redis.auth.LoginUserRedisDAO; -import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; -import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum; -import cn.iocoder.yudao.module.system.service.logger.LoginLogService; -import cn.iocoder.yudao.module.system.service.user.AdminUserService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.time.Duration; -import java.util.Collection; -import java.util.Date; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime; - -/** - * 在线用户 Session Service 实现类 - * - * @author 芋道源码 - */ -@Slf4j -@Service -public class UserSessionServiceImpl implements UserSessionService { - - @Resource - private UserSessionMapper userSessionMapper; - - @Resource - private AdminUserService userService; - @Resource - private LoginLogService loginLogService; - - @Resource - private LoginUserRedisDAO loginUserRedisDAO; - - @Resource - private SecurityProperties securityProperties; - - @Override - public PageResult getUserSessionPage(UserSessionPageReqVO reqVO) { - // 处理基于用户昵称的查询 - Collection userIds = null; - if (StrUtil.isNotEmpty(reqVO.getUsername())) { - userIds = convertSet(userService.getUsersByUsername(reqVO.getUsername()), AdminUserDO::getId); - if (CollUtil.isEmpty(userIds)) { - return PageResult.empty(); - } - } - return userSessionMapper.selectPage(reqVO, userIds); - } - - @Override - public long deleteTimeoutSession() { - // 获取 db 里已经超时的用户列表 - List timeoutSessions = userSessionMapper.selectListBySessionTimoutLt(); - if (CollUtil.isEmpty(timeoutSessions)) { - return 0L; - } - - // 由于过期的用户一般不多,所以顺序遍历,进行清理 - int count = 0; - for (UserSessionDO session : timeoutSessions) { - // 基于 Redis 二次判断,同时也保证 Redis Key 的立即过期,避免延迟导致浪费内存空间 - if (loginUserRedisDAO.exists(session.getToken())) { - continue; - } - userSessionMapper.deleteById(session.getId()); - // 记录退出日志 - createLogoutLog(session, LoginLogTypeEnum.LOGOUT_TIMEOUT); - count++; - } - return count; - } - - private void createLogoutLog(UserSessionDO session, LoginLogTypeEnum type) { - LoginLogCreateReqDTO reqDTO = new LoginLogCreateReqDTO(); - reqDTO.setLogType(type.getType()); - reqDTO.setTraceId(TracerUtils.getTraceId()); - reqDTO.setUserId(session.getUserId()); - reqDTO.setUserType(session.getUserType()); - reqDTO.setUsername(session.getUsername()); - reqDTO.setUserAgent(session.getUserAgent()); - reqDTO.setUserIp(session.getUserIp()); - reqDTO.setResult(LoginResultEnum.SUCCESS.getResult()); - loginLogService.createLoginLog(reqDTO); - } - - @Override - public String createUserSession(LoginUser loginUser, String userIp, String userAgent) { - // 生成 Session 编号 - String token = generateToken(); - // 写入 Redis 缓存 - loginUser.setUpdateTime(new Date()); - loginUserRedisDAO.set(token, loginUser); - // 写入 DB 中 - UserSessionDO userSession = UserSessionDO.builder().token(token) - .userId(loginUser.getId()).userType(loginUser.getUserType()) - .userIp(userIp).userAgent(userAgent).username(loginUser.getUsername()) - .sessionTimeout(addTime(Duration.ofMillis(getSessionTimeoutMillis()))) - .build(); - userSessionMapper.insert(userSession); - // 返回 Token 令牌 - return token; - } - - @Override - public void refreshUserSession(String token, LoginUser loginUser) { - // 写入 Redis 缓存 - loginUser.setUpdateTime(new Date()); - loginUserRedisDAO.set(token, loginUser); - // 更新 DB 中 - UserSessionDO updateObj = UserSessionDO.builder().build(); - updateObj.setUsername(loginUser.getUsername()); - updateObj.setUpdateTime(new Date()); - updateObj.setSessionTimeout(addTime(Duration.ofMillis(getSessionTimeoutMillis()))); - userSessionMapper.updateByToken(token, updateObj); - } - - @Override - public void deleteUserSession(String token) { - // 删除 Redis 缓存 - loginUserRedisDAO.delete(token); - // 删除 DB 记录 - userSessionMapper.deleteByToken(token); - // 无需记录日志,因为退出那已经记录 - } - - @Override - public void deleteUserSession(Long id) { - UserSessionDO session = userSessionMapper.selectById(id); - if (session == null) { - return; - } - // 删除 Redis 缓存 - loginUserRedisDAO.delete(session.getToken()); - // 删除 DB 记录 - userSessionMapper.deleteById(id); - // 记录退出日志 - createLogoutLog(session, LoginLogTypeEnum.LOGOUT_DELETE); - } - - @Override - public LoginUser getLoginUser(String token) { - return loginUserRedisDAO.get(token); - } - - @Override - public Long getSessionTimeoutMillis() { - return securityProperties.getSessionTimeout().toMillis(); - } - - /** - * 生成 Token 令牌,目前采用 UUID 算法 - * - * @return Session 编号 - */ - private static String generateToken() { - return IdUtil.fastSimpleUUID(); - } - -} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ApproveService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ApproveService.java new file mode 100644 index 0000000000..def3e5e2c1 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ApproveService.java @@ -0,0 +1,52 @@ +package cn.iocoder.yudao.module.system.service.oauth2; + +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ApproveDO; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * OAuth2 批准 Service 接口 + * + * 从功能上,和 Spring Security OAuth 的 ApprovalStoreUserApprovalHandler 的功能,记录用户针对指定客户端的授权,减少手动确定。 + * + * @author 芋道源码 + */ +public interface OAuth2ApproveService { + + /** + * 获得指定用户,针对指定客户端的指定授权,是否通过 + * + * 参考 ApprovalStoreUserApprovalHandler 的 checkForPreApproval 方法 + * + * @param userId 用户编号 + * @param userType 用户类型 + * @param clientId 客户端编号 + * @param requestedScopes 授权范围 + * @return 是否授权通过 + */ + boolean checkForPreApproval(Long userId, Integer userType, String clientId, Collection requestedScopes); + + /** + * 在用户发起批准时,基于 scopes 的选项,计算最终是否通过 + * + * @param userId 用户编号 + * @param userType 用户类型 + * @param clientId 客户端编号 + * @param requestedScopes 授权范围 + * @return 是否授权通过 + */ + boolean updateAfterApproval(Long userId, Integer userType, String clientId, Map requestedScopes); + + /** + * 获得用户的批准列表,排除已过期的 + * + * @param userId 用户编号 + * @param userType 用户类型 + * @param clientId 客户端编号 + * @return 是否授权通过 + */ + List getApproveList(Long userId, Integer userType, String clientId); + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ApproveServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ApproveServiceImpl.java new file mode 100644 index 0000000000..9ceb0d3cac --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ApproveServiceImpl.java @@ -0,0 +1,102 @@ +package cn.iocoder.yudao.module.system.service.oauth2; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.Assert; +import cn.iocoder.yudao.framework.common.util.date.DateUtils; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ApproveDO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO; +import cn.iocoder.yudao.module.system.dal.mysql.oauth2.OAuth2ApproveMapper; +import com.google.common.annotations.VisibleForTesting; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.*; + +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; + +/** + * OAuth2 批准 Service 实现类 + * + * @author 芋道源码 + */ +@Service +@Validated +public class OAuth2ApproveServiceImpl implements OAuth2ApproveService { + + /** + * 批准的过期时间,默认 30 天 + */ + private static final Integer TIMEOUT = 30 * 24 * 60 * 60; // 单位:秒 + + @Resource + private OAuth2ClientService oauth2ClientService; + + @Resource + private OAuth2ApproveMapper oauth2ApproveMapper; + + @Override + @Transactional + public boolean checkForPreApproval(Long userId, Integer userType, String clientId, Collection requestedScopes) { + // 第一步,基于 Client 的自动授权计算,如果 scopes 都在自动授权中,则返回 true 通过 + OAuth2ClientDO clientDO = oauth2ClientService.validOAuthClientFromCache(clientId); + Assert.notNull(clientDO, "客户端不能为空"); // 防御性编程 + if (CollUtil.containsAll(clientDO.getAutoApproveScopes(), requestedScopes)) { + // gh-877 - if all scopes are auto approved, approvals still need to be added to the approval store. + Date expireTime = DateUtils.addDate(Calendar.SECOND, TIMEOUT); + for (String scope : requestedScopes) { + saveApprove(userId, userType, clientId, scope, true, expireTime); + } + return true; + } + + // 第二步,算上用户已经批准的授权。如果 scopes 都包含,则返回 true + List approveDOs = getApproveList(userId, userType, clientId); + Set scopes = convertSet(approveDOs, OAuth2ApproveDO::getScope, + OAuth2ApproveDO::getApproved); // 只保留未过期的 + 同意的 + return CollUtil.containsAll(scopes, requestedScopes); + } + + @Override + @Transactional + public boolean updateAfterApproval(Long userId, Integer userType, String clientId, Map requestedScopes) { + // 如果 requestedScopes 为空,说明没有要求,则返回 true 通过 + if (CollUtil.isEmpty(requestedScopes)) { + return true; + } + + // 更新批准的信息 + boolean success = false; // 需要至少有一个同意 + Date expireTime = DateUtils.addDate(Calendar.SECOND, TIMEOUT); + for (Map.Entry entry :requestedScopes.entrySet()) { + if (entry.getValue()) { + success = true; + } + saveApprove(userId, userType, clientId, entry.getKey(), entry.getValue(), expireTime); + } + return success; + } + + @Override + public List getApproveList(Long userId, Integer userType, String clientId) { + List approveDOs = oauth2ApproveMapper.selectListByUserIdAndUserTypeAndClientId( + userId, userType, clientId); + approveDOs.removeIf(o -> DateUtils.isExpired(o.getExpiresTime())); + return approveDOs; + } + + @VisibleForTesting + void saveApprove(Long userId, Integer userType, String clientId, + String scope, Boolean approved, Date expireTime) { + // 先更新 + OAuth2ApproveDO approveDO = new OAuth2ApproveDO().setUserId(userId).setUserType(userType) + .setClientId(clientId).setScope(scope).setApproved(approved).setExpiresTime(expireTime); + if (oauth2ApproveMapper.update(approveDO) == 1) { + return; + } + // 失败,则说明不存在,进行更新 + oauth2ApproveMapper.insert(approveDO); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ClientService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ClientService.java new file mode 100644 index 0000000000..60e9f22980 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ClientService.java @@ -0,0 +1,88 @@ +package cn.iocoder.yudao.module.system.service.oauth2; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client.OAuth2ClientCreateReqVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client.OAuth2ClientPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client.OAuth2ClientUpdateReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO; + +import javax.validation.Valid; +import java.util.Collection; + +/** + * OAuth2.0 Client Service 接口 + * + * 从功能上,和 JdbcClientDetailsService 的功能,提供客户端的操作 + * + * @author 芋道源码 + */ +public interface OAuth2ClientService { + + /** + * 初始化 OAuth2Client 的本地缓存 + */ + void initLocalCache(); + + /** + * 创建 OAuth2 客户端 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createOAuth2Client(@Valid OAuth2ClientCreateReqVO createReqVO); + + /** + * 更新 OAuth2 客户端 + * + * @param updateReqVO 更新信息 + */ + void updateOAuth2Client(@Valid OAuth2ClientUpdateReqVO updateReqVO); + + /** + * 删除 OAuth2 客户端 + * + * @param id 编号 + */ + void deleteOAuth2Client(Long id); + + /** + * 获得 OAuth2 客户端 + * + * @param id 编号 + * @return OAuth2 客户端 + */ + OAuth2ClientDO getOAuth2Client(Long id); + + /** + * 获得 OAuth2 客户端分页 + * + * @param pageReqVO 分页查询 + * @return OAuth2 客户端分页 + */ + PageResult getOAuth2ClientPage(OAuth2ClientPageReqVO pageReqVO); + + /** + * 从缓存中,校验客户端是否合法 + * + * @return 客户端 + */ + default OAuth2ClientDO validOAuthClientFromCache(String clientId) { + return validOAuthClientFromCache(clientId, null, null, null, null); + } + + /** + * 从缓存中,校验客户端是否合法 + * + * 非空时,进行校验 + * + * @param clientId 客户端编号 + * @param clientSecret 客户端密钥 + * @param authorizedGrantType 授权方式 + * @param scopes 授权范围 + * @param redirectUri 重定向地址 + * @return 客户端 + */ + OAuth2ClientDO validOAuthClientFromCache(String clientId, String clientSecret, + String authorizedGrantType, Collection scopes, String redirectUri); + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ClientServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ClientServiceImpl.java new file mode 100644 index 0000000000..a01cafdbfd --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ClientServiceImpl.java @@ -0,0 +1,211 @@ +package cn.iocoder.yudao.module.system.service.oauth2; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.string.StrUtils; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client.OAuth2ClientCreateReqVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client.OAuth2ClientPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client.OAuth2ClientUpdateReqVO; +import cn.iocoder.yudao.module.system.convert.auth.OAuth2ClientConvert; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO; +import cn.iocoder.yudao.module.system.dal.mysql.oauth2.OAuth2ClientMapper; +import cn.iocoder.yudao.module.system.mq.producer.auth.OAuth2ClientProducer; +import com.google.common.annotations.VisibleForTesting; +import lombok.Getter; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.util.*; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.getMaxValue; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; + +/** + * OAuth2.0 Client Service 实现类 + * + * @author 芋道源码 + */ +@Service +@Validated +@Slf4j +public class OAuth2ClientServiceImpl implements OAuth2ClientService { + + /** + * 定时执行 {@link #schedulePeriodicRefresh()} 的周期 + * 因为已经通过 Redis Pub/Sub 机制,所以频率不需要高 + */ + private static final long SCHEDULER_PERIOD = 5 * 60 * 1000L; + + /** + * 客户端缓存 + * key:客户端编号 {@link OAuth2ClientDO#getClientId()} ()} + * + * 这里声明 volatile 修饰的原因是,每次刷新时,直接修改指向 + */ + @Getter // 解决单测 + @Setter // 解决单测 + private volatile Map clientCache; + /** + * 缓存角色的最大更新时间,用于后续的增量轮询,判断是否有更新 + */ + @Getter + private volatile Date maxUpdateTime; + + @Resource + private OAuth2ClientMapper oauth2ClientMapper; + + @Resource + private OAuth2ClientProducer oauth2ClientProducer; + + /** + * 初始化 {@link #clientCache} 缓存 + */ + @Override + @PostConstruct + public void initLocalCache() { + // 获取客户端列表,如果有更新 + List tenantList = loadOAuth2ClientIfUpdate(maxUpdateTime); + if (CollUtil.isEmpty(tenantList)) { + return; + } + + // 写入缓存 + clientCache = convertMap(tenantList, OAuth2ClientDO::getClientId); + maxUpdateTime = getMaxValue(tenantList, OAuth2ClientDO::getUpdateTime); + log.info("[initLocalCache][初始化 OAuth2Client 数量为 {}]", tenantList.size()); + } + + @Scheduled(fixedDelay = SCHEDULER_PERIOD, initialDelay = SCHEDULER_PERIOD) + public void schedulePeriodicRefresh() { + initLocalCache(); + } + + /** + * 如果客户端发生变化,从数据库中获取最新的全量客户端。 + * 如果未发生变化,则返回空 + * + * @param maxUpdateTime 当前客户端的最大更新时间 + * @return 客户端列表 + */ + private List loadOAuth2ClientIfUpdate(Date maxUpdateTime) { + // 第一步,判断是否要更新。 + if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据 + log.info("[loadOAuth2ClientIfUpdate][首次加载全量客户端]"); + } else { // 判断数据库中是否有更新的客户端 + if (oauth2ClientMapper.selectCountByUpdateTimeGt(maxUpdateTime) == 0) { + return null; + } + log.info("[loadOAuth2ClientIfUpdate][增量加载全量客户端]"); + } + // 第二步,如果有更新,则从数据库加载所有客户端 + return oauth2ClientMapper.selectList(); + } + + @Override + public Long createOAuth2Client(OAuth2ClientCreateReqVO createReqVO) { + validateClientIdExists(null, createReqVO.getClientId()); + // 插入 + OAuth2ClientDO oauth2Client = OAuth2ClientConvert.INSTANCE.convert(createReqVO); + oauth2ClientMapper.insert(oauth2Client); + // 发送刷新消息 + oauth2ClientProducer.sendOAuth2ClientRefreshMessage(); + return oauth2Client.getId(); + } + + @Override + public void updateOAuth2Client(OAuth2ClientUpdateReqVO updateReqVO) { + // 校验存在 + validateOAuth2ClientExists(updateReqVO.getId()); + // 校验 Client 未被占用 + validateClientIdExists(updateReqVO.getId(), updateReqVO.getClientId()); + + // 更新 + OAuth2ClientDO updateObj = OAuth2ClientConvert.INSTANCE.convert(updateReqVO); + oauth2ClientMapper.updateById(updateObj); + // 发送刷新消息 + oauth2ClientProducer.sendOAuth2ClientRefreshMessage(); + } + + @Override + public void deleteOAuth2Client(Long id) { + // 校验存在 + validateOAuth2ClientExists(id); + // 删除 + oauth2ClientMapper.deleteById(id); + // 发送刷新消息 + oauth2ClientProducer.sendOAuth2ClientRefreshMessage(); + } + + private void validateOAuth2ClientExists(Long id) { + if (oauth2ClientMapper.selectById(id) == null) { + throw exception(OAUTH2_CLIENT_NOT_EXISTS); + } + } + + @VisibleForTesting + void validateClientIdExists(Long id, String clientId) { + OAuth2ClientDO client = oauth2ClientMapper.selectByClientId(clientId); + if (client == null) { + return; + } + // 如果 id 为空,说明不用比较是否为相同 id 的客户端 + if (id == null) { + throw exception(OAUTH2_CLIENT_EXISTS); + } + if (!client.getId().equals(id)) { + throw exception(OAUTH2_CLIENT_EXISTS); + } + } + + @Override + public OAuth2ClientDO getOAuth2Client(Long id) { + return oauth2ClientMapper.selectById(id); + } + + @Override + public PageResult getOAuth2ClientPage(OAuth2ClientPageReqVO pageReqVO) { + return oauth2ClientMapper.selectPage(pageReqVO); + } + + @Override + public OAuth2ClientDO validOAuthClientFromCache(String clientId, String clientSecret, + String authorizedGrantType, Collection scopes, String redirectUri) { + // 校验客户端存在、且开启 + OAuth2ClientDO client = clientCache.get(clientId); + if (client == null) { + throw exception(OAUTH2_CLIENT_NOT_EXISTS); + } + if (ObjectUtil.notEqual(client.getStatus(), CommonStatusEnum.ENABLE.getStatus())) { + throw exception(OAUTH2_CLIENT_DISABLE); + } + + // 校验客户端密钥 + if (StrUtil.isNotEmpty(clientSecret) && ObjectUtil.notEqual(client.getSecret(), clientSecret)) { + throw exception(OAUTH2_CLIENT_CLIENT_SECRET_ERROR); + } + // 校验授权方式 + if (StrUtil.isNotEmpty(authorizedGrantType) && !CollUtil.contains(client.getAuthorizedGrantTypes(), authorizedGrantType)) { + throw exception(OAUTH2_CLIENT_AUTHORIZED_GRANT_TYPE_NOT_EXISTS); + } + // 校验授权范围 + if (CollUtil.isNotEmpty(scopes) && !CollUtil.containsAll(client.getScopes(), scopes)) { + throw exception(OAUTH2_CLIENT_SCOPE_OVER); + } + // 校验回调地址 + if (StrUtil.isNotEmpty(redirectUri) && !StrUtils.startWithAny(redirectUri, client.getRedirectUris())) { + throw exception(OAUTH2_CLIENT_REDIRECT_URI_NOT_MATCH, redirectUri); + } + return client; + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2CodeService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2CodeService.java new file mode 100644 index 0000000000..5ace87eb79 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2CodeService.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.system.service.oauth2; + +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2CodeDO; + +import java.util.List; + +/** + * OAuth2.0 授权码 Service 接口 + * + * 从功能上,和 Spring Security OAuth 的 JdbcAuthorizationCodeServices 的功能,提供授权码的操作 + * + * @author 芋道源码 + */ +public interface OAuth2CodeService { + + /** + * 创建授权码 + * + * 参考 JdbcAuthorizationCodeServices 的 createAuthorizationCode 方法 + * + * @param userId 用户编号 + * @param userType 用户类型 + * @param clientId 客户端编号 + * @param scopes 授权范围 + * @param redirectUri 重定向 URI + * @param state 状态 + * @return 授权码的信息 + */ + OAuth2CodeDO createAuthorizationCode(Long userId, Integer userType, String clientId, + List scopes, String redirectUri, String state); + + /** + * 使用授权码 + * + * @param code 授权码 + */ + OAuth2CodeDO consumeAuthorizationCode(String code); + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2CodeServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2CodeServiceImpl.java new file mode 100644 index 0000000000..c4f72ff327 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2CodeServiceImpl.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.system.service.oauth2; + +import cn.hutool.core.util.IdUtil; +import cn.iocoder.yudao.framework.common.util.date.DateUtils; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2CodeDO; +import cn.iocoder.yudao.module.system.dal.mysql.oauth2.OAuth2CodeMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.Calendar; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.OAUTH2_CODE_EXPIRE; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.OAUTH2_CODE_NOT_EXISTS; + +/** + * OAuth2.0 授权码 Service 实现类 + * + * @author 芋道源码 + */ +@Service +@Validated +public class OAuth2CodeServiceImpl implements OAuth2CodeService { + + /** + * 授权码的过期时间,默认 5 分钟 + */ + private static final Integer TIMEOUT = 5 * 60; + + @Resource + private OAuth2CodeMapper oauth2CodeMapper; + + @Override + public OAuth2CodeDO createAuthorizationCode(Long userId, Integer userType, String clientId, + List scopes, String redirectUri, String state) { + OAuth2CodeDO codeDO = new OAuth2CodeDO().setCode(generateCode()) + .setUserId(userId).setUserType(userType) + .setClientId(clientId).setScopes(scopes) + .setExpiresTime(DateUtils.addDate(Calendar.SECOND, TIMEOUT)) + .setRedirectUri(redirectUri).setState(state); + oauth2CodeMapper.insert(codeDO); + return codeDO; + } + + @Override + public OAuth2CodeDO consumeAuthorizationCode(String code) { + OAuth2CodeDO codeDO = oauth2CodeMapper.selectByCode(code); + if (codeDO == null) { + throw exception(OAUTH2_CODE_NOT_EXISTS); + } + if (DateUtils.isExpired(codeDO.getExpiresTime())) { + throw exception(OAUTH2_CODE_EXPIRE); + } + oauth2CodeMapper.deleteById(codeDO.getId()); + return codeDO; + } + + private static String generateCode() { + return IdUtil.fastSimpleUUID(); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2GrantService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2GrantService.java new file mode 100644 index 0000000000..6b7a8f56a6 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2GrantService.java @@ -0,0 +1,113 @@ +package cn.iocoder.yudao.module.system.service.oauth2; + +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; + +import java.util.List; + +/** + * OAuth2 授予 Service 接口 + * + * 从功能上,和 Spring Security OAuth 的 TokenGranter 的功能,提供访问令牌、刷新令牌的操作 + * + * 将自身的 AdminUser 用户,授权给第三方应用,采用 OAuth2.0 的协议。 + * + * 问题:为什么自身也作为一个第三方应用,也走这套流程呢? + * 回复:当然可以这么做,采用 Implicit 模式。考虑到大多数开发者使用不到这个特性,OAuth2.0 毕竟有一定学习成本,所以暂时没有采取这种方式。 + * + * @author 芋道源码 + */ +public interface OAuth2GrantService { + + /** + * 简化模式 + * + * 对应 Spring Security OAuth2 的 ImplicitTokenGranter 功能 + * + * @param userId 用户编号 + * @param userType 用户类型 + * @param clientId 客户端编号 + * @param scopes 授权范围 + * @return 访问令牌 + */ + OAuth2AccessTokenDO grantImplicit(Long userId, Integer userType, + String clientId, List scopes); + + /** + * 授权码模式,第一阶段,获得 code 授权码 + * + * 对应 Spring Security OAuth2 的 AuthorizationEndpoint 的 generateCode 方法 + * + * @param userId 用户编号 + * @param userType 用户类型 + * @param clientId 客户端编号 + * @param scopes 授权范围 + * @param redirectUri 重定向 URI + * @param state 状态 + * @return 授权码 + */ + String grantAuthorizationCodeForCode(Long userId, Integer userType, + String clientId, List scopes, + String redirectUri, String state); + + /** + * 授权码模式,第二阶段,获得 accessToken 访问令牌 + * + * 对应 Spring Security OAuth2 的 AuthorizationCodeTokenGranter 功能 + * + * @param clientId 客户端编号 + * @param code 授权码 + * @param redirectUri 重定向 URI + * @param state 状态 + * @return 访问令牌 + */ + OAuth2AccessTokenDO grantAuthorizationCodeForAccessToken(String clientId, String code, + String redirectUri, String state); + + /** + * 密码模式 + * + * 对应 Spring Security OAuth2 的 ResourceOwnerPasswordTokenGranter 功能 + * + * @param username 账号 + * @param password 密码 + * @param clientId 客户端编号 + * @param scopes 授权范围 + * @return 访问令牌 + */ + OAuth2AccessTokenDO grantPassword(String username, String password, + String clientId, List scopes); + + /** + * 刷新模式 + * + * 对应 Spring Security OAuth2 的 ResourceOwnerPasswordTokenGranter 功能 + * + * @param refreshToken 刷新令牌 + * @param clientId 客户端编号 + * @return 访问令牌 + */ + OAuth2AccessTokenDO grantRefreshToken(String refreshToken, String clientId); + + /** + * 客户端模式 + * + * 对应 Spring Security OAuth2 的 ClientCredentialsTokenGranter 功能 + * + * @param clientId 客户端编号 + * @param scopes 授权范围 + * @return 访问令牌 + */ + OAuth2AccessTokenDO grantClientCredentials(String clientId, List scopes); + + /** + * 移除访问令牌 + * + * 对应 Spring Security OAuth2 的 ConsumerTokenServices 的 revokeToken 方法 + * + * @param accessToken 访问令牌 + * @param clientId 客户端编号 + * @return 是否移除到 + */ + boolean revokeToken(String clientId, String accessToken); + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2GrantServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2GrantServiceImpl.java new file mode 100644 index 0000000000..adb07f9b59 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2GrantServiceImpl.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.system.service.oauth2; + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2CodeDO; +import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; +import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants; +import cn.iocoder.yudao.module.system.service.auth.AdminAuthService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; + +/** + * OAuth2 授予 Service 实现类 + * + * @author 芋道源码 + */ +@Service +public class OAuth2GrantServiceImpl implements OAuth2GrantService { + + @Resource + private OAuth2TokenService oauth2TokenService; + @Resource + private OAuth2CodeService oauth2CodeService; + @Resource + private AdminAuthService adminAuthService; + + @Override + public OAuth2AccessTokenDO grantImplicit(Long userId, Integer userType, + String clientId, List scopes) { + return oauth2TokenService.createAccessToken(userId, userType, clientId, scopes); + } + + @Override + public String grantAuthorizationCodeForCode(Long userId, Integer userType, + String clientId, List scopes, + String redirectUri, String state) { + return oauth2CodeService.createAuthorizationCode(userId, userType, clientId, scopes, + redirectUri, state).getCode(); + } + + @Override + public OAuth2AccessTokenDO grantAuthorizationCodeForAccessToken(String clientId, String code, + String redirectUri, String state) { + OAuth2CodeDO codeDO = oauth2CodeService.consumeAuthorizationCode(code); + Assert.notNull(codeDO, "授权码不能为空"); // 防御性编程 + // 校验 clientId 是否匹配 + if (!StrUtil.equals(clientId, codeDO.getClientId())) { + throw exception(ErrorCodeConstants.OAUTH2_GRANT_CLIENT_ID_MISMATCH); + } + // 校验 redirectUri 是否匹配 + if (!StrUtil.equals(redirectUri, codeDO.getRedirectUri())) { + throw exception(ErrorCodeConstants.OAUTH2_GRANT_REDIRECT_URI_MISMATCH); + } + // 校验 state 是否匹配 + state = StrUtil.nullToDefault(state, ""); // 数据库 state 为 null 时,会设置为 "" 空串 + if (!StrUtil.equals(state, codeDO.getState())) { + throw exception(ErrorCodeConstants.OAUTH2_GRANT_STATE_MISMATCH); + } + + // 创建访问令牌 + return oauth2TokenService.createAccessToken(codeDO.getUserId(), codeDO.getUserType(), + codeDO.getClientId(), codeDO.getScopes()); + } + + @Override + public OAuth2AccessTokenDO grantPassword(String username, String password, String clientId, List scopes) { + // 使用账号 + 密码进行登录 + AdminUserDO user = adminAuthService.authenticate(username, password); + Assert.notNull(user, "用户不能为空!"); // 防御性编程 + + // 创建访问令牌 + return oauth2TokenService.createAccessToken(user.getId(), UserTypeEnum.ADMIN.getValue(), clientId, scopes); + } + + @Override + public OAuth2AccessTokenDO grantRefreshToken(String refreshToken, String clientId) { + return oauth2TokenService.refreshAccessToken(refreshToken, clientId); + } + + @Override + public OAuth2AccessTokenDO grantClientCredentials(String clientId, List scopes) { + // TODO 芋艿:项目中使用 OAuth2 解决的是三方应用的授权,内部的 SSO 等问题,所以暂时不考虑 client_credentials 这个场景 + throw new UnsupportedOperationException("暂时不支持 client_credentials 授权模式"); + } + + @Override + public boolean revokeToken(String clientId, String accessToken) { + // 先查询,保证 clientId 时匹配的 + OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.getAccessToken(accessToken); + if (accessTokenDO == null || ObjectUtil.notEqual(clientId, accessTokenDO.getClientId())) { + return false; + } + // 再删除 + return oauth2TokenService.removeAccessToken(accessToken) != null; + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenService.java new file mode 100644 index 0000000000..977d935397 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenService.java @@ -0,0 +1,80 @@ +package cn.iocoder.yudao.module.system.service.oauth2; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.token.OAuth2AccessTokenPageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; + +import java.util.List; + +/** + * OAuth2.0 Token Service 接口 + * + * 从功能上,和 Spring Security OAuth 的 DefaultTokenServices + JdbcTokenStore 的功能,提供访问令牌、刷新令牌的操作 + * + * @author 芋道源码 + */ +public interface OAuth2TokenService { + + /** + * 创建访问令牌 + * 注意:该流程中,会包含创建刷新令牌的创建 + * + * 参考 DefaultTokenServices 的 createAccessToken 方法 + * + * @param userId 用户编号 + * @param userType 用户类型 + * @param clientId 客户端编号 + * @param scopes 授权范围 + * @return 访问令牌的信息 + */ + OAuth2AccessTokenDO createAccessToken(Long userId, Integer userType, String clientId, List scopes); + + /** + * 刷新访问令牌 + * + * 参考 DefaultTokenServices 的 refreshAccessToken 方法 + * + * @param refreshToken 刷新令牌 + * @param clientId 客户端编号 + * @return 访问令牌的信息 + */ + OAuth2AccessTokenDO refreshAccessToken(String refreshToken, String clientId); + + /** + * 获得访问令牌 + * + * 参考 DefaultTokenServices 的 getAccessToken 方法 + * + * @param accessToken 访问令牌 + * @return 访问令牌的信息 + */ + OAuth2AccessTokenDO getAccessToken(String accessToken); + + /** + * 校验访问令牌 + * + * @param accessToken 访问令牌 + * @return 访问令牌的信息 + */ + OAuth2AccessTokenDO checkAccessToken(String accessToken); + + /** + * 移除访问令牌 + * 注意:该流程中,会移除相关的刷新令牌 + * + * 参考 DefaultTokenServices 的 revokeToken 方法 + * + * @param accessToken 刷新令牌 + * @return 访问令牌的信息 + */ + OAuth2AccessTokenDO removeAccessToken(String accessToken); + + /** + * 获得访问令牌分页 + * + * @param reqVO 请求 + * @return 访问令牌分页 + */ + PageResult getAccessTokenPage(OAuth2AccessTokenPageReqVO reqVO); + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImpl.java new file mode 100644 index 0000000000..d68382b751 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImpl.java @@ -0,0 +1,165 @@ +package cn.iocoder.yudao.module.system.service.oauth2; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.date.DateUtils; +import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.token.OAuth2AccessTokenPageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2RefreshTokenDO; +import cn.iocoder.yudao.module.system.dal.mysql.oauth2.OAuth2AccessTokenMapper; +import cn.iocoder.yudao.module.system.dal.mysql.oauth2.OAuth2RefreshTokenMapper; +import cn.iocoder.yudao.module.system.dal.redis.oauth2.OAuth2AccessTokenRedisDAO; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Calendar; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception0; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; + +/** + * OAuth2.0 Token Service 实现类 + * + * @author 芋道源码 + */ +@Service +public class OAuth2TokenServiceImpl implements OAuth2TokenService { + + @Resource + private OAuth2AccessTokenMapper oauth2AccessTokenMapper; + @Resource + private OAuth2RefreshTokenMapper oauth2RefreshTokenMapper; + + @Resource + private OAuth2AccessTokenRedisDAO oauth2AccessTokenRedisDAO; + + @Resource + private OAuth2ClientService oauth2ClientService; + + @Override + @Transactional + public OAuth2AccessTokenDO createAccessToken(Long userId, Integer userType, String clientId, List scopes) { + OAuth2ClientDO clientDO = oauth2ClientService.validOAuthClientFromCache(clientId); + // 创建刷新令牌 + OAuth2RefreshTokenDO refreshTokenDO = createOAuth2RefreshToken(userId, userType, clientDO, scopes); + // 创建访问令牌 + return createOAuth2AccessToken(refreshTokenDO, clientDO); + } + + @Override + public OAuth2AccessTokenDO refreshAccessToken(String refreshToken, String clientId) { + // 查询访问令牌 + OAuth2RefreshTokenDO refreshTokenDO = oauth2RefreshTokenMapper.selectByRefreshToken(refreshToken); + if (refreshTokenDO == null) { + throw exception0(GlobalErrorCodeConstants.BAD_REQUEST.getCode(), "无效的刷新令牌"); + } + + // 校验 Client 匹配 + OAuth2ClientDO clientDO = oauth2ClientService.validOAuthClientFromCache(clientId); + if (ObjectUtil.notEqual(clientId, refreshTokenDO.getClientId())) { + throw exception0(GlobalErrorCodeConstants.BAD_REQUEST.getCode(), "刷新令牌的客户端编号不正确"); + } + + // 移除相关的访问令牌 + List accessTokenDOs = oauth2AccessTokenMapper.selectListByRefreshToken(refreshToken); + if (CollUtil.isNotEmpty(accessTokenDOs)) { + oauth2AccessTokenMapper.deleteBatchIds(convertSet(accessTokenDOs, OAuth2AccessTokenDO::getId)); + oauth2AccessTokenRedisDAO.deleteList(convertSet(accessTokenDOs, OAuth2AccessTokenDO::getAccessToken)); + } + + // 已过期的情况下,删除刷新令牌 + if (DateUtils.isExpired(refreshTokenDO.getExpiresTime())) { + oauth2RefreshTokenMapper.deleteById(refreshTokenDO.getId()); + throw exception0(GlobalErrorCodeConstants.UNAUTHORIZED.getCode(), "刷新令牌已过期"); + } + + // 创建访问令牌 + return createOAuth2AccessToken(refreshTokenDO, clientDO); + } + + @Override + public OAuth2AccessTokenDO getAccessToken(String accessToken) { + // 优先从 Redis 中获取 + OAuth2AccessTokenDO accessTokenDO = oauth2AccessTokenRedisDAO.get(accessToken); + if (accessTokenDO != null) { + return accessTokenDO; + } + + // 获取不到,从 MySQL 中获取 + accessTokenDO = oauth2AccessTokenMapper.selectByAccessToken(accessToken); + // 如果在 MySQL 存在,则往 Redis 中写入 + if (accessTokenDO != null && !DateUtils.isExpired(accessTokenDO.getExpiresTime())) { + oauth2AccessTokenRedisDAO.set(accessTokenDO); + } + return accessTokenDO; + } + + @Override + public OAuth2AccessTokenDO checkAccessToken(String accessToken) { + OAuth2AccessTokenDO accessTokenDO = getAccessToken(accessToken); + if (accessTokenDO == null) { + throw exception0(GlobalErrorCodeConstants.UNAUTHORIZED.getCode(), "访问令牌不存在"); + } + if (DateUtils.isExpired(accessTokenDO.getExpiresTime())) { + throw exception0(GlobalErrorCodeConstants.UNAUTHORIZED.getCode(), "访问令牌已过期"); + } + return accessTokenDO; + } + + @Override + public OAuth2AccessTokenDO removeAccessToken(String accessToken) { + // 删除访问令牌 + OAuth2AccessTokenDO accessTokenDO = oauth2AccessTokenMapper.selectByAccessToken(accessToken); + if (accessTokenDO == null) { + return null; + } + oauth2AccessTokenMapper.deleteById(accessTokenDO.getId()); + oauth2AccessTokenRedisDAO.delete(accessToken); + // 删除刷新令牌 + oauth2RefreshTokenMapper.deleteByRefreshToken(accessTokenDO.getRefreshToken()); + return accessTokenDO; + } + + @Override + public PageResult getAccessTokenPage(OAuth2AccessTokenPageReqVO reqVO) { + return oauth2AccessTokenMapper.selectPage(reqVO); + } + + private OAuth2AccessTokenDO createOAuth2AccessToken(OAuth2RefreshTokenDO refreshTokenDO, OAuth2ClientDO clientDO) { + OAuth2AccessTokenDO accessTokenDO = new OAuth2AccessTokenDO().setAccessToken(generateAccessToken()) + .setUserId(refreshTokenDO.getUserId()).setUserType(refreshTokenDO.getUserType()) + .setClientId(clientDO.getClientId()).setScopes(refreshTokenDO.getScopes()) + .setRefreshToken(refreshTokenDO.getRefreshToken()) + .setExpiresTime(DateUtils.addDate(Calendar.SECOND, clientDO.getAccessTokenValiditySeconds())); + accessTokenDO.setTenantId(TenantContextHolder.getTenantId()); // 手动设置租户编号,避免缓存到 Redis 的时候,无对应的租户编号 + oauth2AccessTokenMapper.insert(accessTokenDO); + // 记录到 Redis 中 + oauth2AccessTokenRedisDAO.set(accessTokenDO); + return accessTokenDO; + } + + private OAuth2RefreshTokenDO createOAuth2RefreshToken(Long userId, Integer userType, OAuth2ClientDO clientDO, List scopes) { + OAuth2RefreshTokenDO refreshToken = new OAuth2RefreshTokenDO().setRefreshToken(generateRefreshToken()) + .setUserId(userId).setUserType(userType) + .setClientId(clientDO.getClientId()).setScopes(scopes) + .setExpiresTime(DateUtils.addDate(Calendar.SECOND, clientDO.getRefreshTokenValiditySeconds())); + oauth2RefreshTokenMapper.insert(refreshToken); + return refreshToken; + } + + private static String generateAccessToken() { + return IdUtil.fastSimpleUUID(); + } + + private static String generateRefreshToken() { + return IdUtil.fastSimpleUUID(); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionService.java index 11fe1ab887..97174d6297 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionService.java @@ -1,7 +1,6 @@ package cn.iocoder.yudao.module.system.service.permission; -import cn.iocoder.yudao.framework.datapermission.core.dept.service.DeptDataPermissionFrameworkService; -import cn.iocoder.yudao.framework.security.core.service.SecurityPermissionFrameworkService; +import cn.iocoder.yudao.module.system.api.permission.dto.DeptDataPermissionRespDTO; import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO; import org.springframework.lang.Nullable; @@ -16,7 +15,7 @@ import java.util.Set; * * @author 芋道源码 */ -public interface PermissionService extends SecurityPermissionFrameworkService, DeptDataPermissionFrameworkService { +public interface PermissionService { /** * 初始化权限的本地缓存 @@ -37,13 +36,13 @@ public interface PermissionService extends SecurityPermissionFrameworkService, D Collection menusStatuses); /** - * 获得用户拥有的角色编号集合 + * 获得用户拥有的角色编号集合,从缓存中获取 * * @param userId 用户编号 * @param roleStatuses 角色状态集合. 允许为空,为空时不过滤 * @return 角色编号集合 */ - Set getUserRoleIds(Long userId, @Nullable Collection roleStatuses); + Set getUserRoleIdsFromCache(Long userId, @Nullable Collection roleStatuses); /** * 获得角色拥有的菜单编号集合 @@ -53,6 +52,14 @@ public interface PermissionService extends SecurityPermissionFrameworkService, D */ Set getRoleMenuIds(Long roleId); + /** + * 获得拥有多个角色的用户编号集合 + * + * @param roleIds 角色编号集合 + * @return 用户编号集合 + */ + Set getUserRoleIdListByRoleIds(Collection roleIds); + /** * 设置角色菜单 * @@ -69,14 +76,6 @@ public interface PermissionService extends SecurityPermissionFrameworkService, D */ Set getUserRoleIdListByUserId(Long userId); - /** - * 获得拥有某个角色的用户编号集合 - * - * @param roleId 角色编号 - * @return 用户编号集合 - */ - Set getUserRoleIdListByRoleId(Long roleId); - /** * 设置用户角色 * @@ -116,11 +115,28 @@ public interface PermissionService extends SecurityPermissionFrameworkService, D void processUserDeleted(Long userId); /** - * 获得拥有多个角色的用户编号集合 + * 判断是否有权限,任一一个即可 * - * @param roleIds 角色编号集合 - * @return 用户编号集合 + * @param userId 用户编号 + * @param permissions 权限 + * @return 是否 */ - Set getUserRoleIdListByRoleIds(Collection roleIds); + boolean hasAnyPermissions(Long userId, String... permissions); + + /** + * 判断是否有角色,任一一个即可 + * + * @param roles 角色数组 + * @return 是否 + */ + boolean hasAnyRoles(Long userId, String... roles); + + /** + * 获得登陆用户的部门数据权限 + * + * @param userId 用户编号 + * @return 部门数据权限 + */ + DeptDataPermissionRespDTO getDeptDataPermission(Long userId); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceImpl.java index 08473d8cc8..775c89b58a 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceImpl.java @@ -3,13 +3,13 @@ package cn.iocoder.yudao.module.system.service.permission; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ArrayUtil; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.framework.common.util.json.JsonUtils; -import cn.iocoder.yudao.framework.datapermission.core.dept.service.dto.DeptDataPermissionRespDTO; -import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission; import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore; +import cn.iocoder.yudao.module.system.api.permission.dto.DeptDataPermissionRespDTO; import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO; import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO; @@ -22,9 +22,14 @@ import cn.iocoder.yudao.module.system.dal.mysql.permission.UserRoleMapper; import cn.iocoder.yudao.module.system.enums.permission.DataScopeEnum; import cn.iocoder.yudao.module.system.mq.producer.permission.PermissionProducer; import cn.iocoder.yudao.module.system.service.dept.DeptService; +import cn.iocoder.yudao.module.system.service.user.AdminUserService; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Suppliers; import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.Multimap; import com.google.common.collect.Sets; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Lazy; import org.springframework.scheduling.annotation.Scheduled; @@ -36,21 +41,21 @@ import org.springframework.transaction.support.TransactionSynchronizationManager import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.util.*; +import java.util.function.Supplier; + +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.getMaxValue; +import static java.util.Collections.singleton; /** * 权限 Service 实现类 * * @author 芋道源码 */ -@Service("ss") // 使用 Spring Security 的缩写,方便食用 +@Service @Slf4j public class PermissionServiceImpl implements PermissionService { - /** - * LoginUser 的 Context 缓存 Key - */ - public static final String CONTEXT_KEY = PermissionServiceImpl.class.getSimpleName(); - /** * 定时执行 {@link #schedulePeriodicRefresh()} 的周期 * 因为已经通过 Redis Pub/Sub 机制,所以频率不需要高 @@ -64,6 +69,8 @@ public class PermissionServiceImpl implements PermissionService { * * 这里声明 volatile 修饰的原因是,每次刷新时,直接修改指向 */ + @Getter + @Setter // 单元测试需要 private volatile Multimap roleMenuCache; /** * 菜单编号与角色编号的缓存映射 @@ -72,11 +79,30 @@ public class PermissionServiceImpl implements PermissionService { * * 这里声明 volatile 修饰的原因是,每次刷新时,直接修改指向 */ + @Getter + @Setter // 单元测试需要 private volatile Multimap menuRoleCache; /** - * 缓存菜单的最大更新时间,用于后续的增量轮询,判断是否有更新 + * 缓存 RoleMenu 的最大更新时间,用于后续的增量轮询,判断是否有更新 */ - private volatile Date maxUpdateTime; + @Getter + private volatile Date roleMenuMaxUpdateTime; + + /** + * 用户编号与角色编号的缓存映射 + * key:用户编号 + * value:角色编号的数组 + * + * 这里声明 volatile 修饰的原因是,每次刷新时,直接修改指向 + */ + @Getter + @Setter // 单元测试需要 + private volatile Map> userRoleCache; + /** + * 缓存 UserRole 的最大更新时间,用于后续的增量轮询,判断是否有更新 + */ + @Getter + private volatile Date userRoleMaxUpdateTime; @Resource private RoleMenuMapper roleMenuMapper; @@ -93,6 +119,8 @@ public class PermissionServiceImpl implements PermissionService { private MenuService menuService; @Resource private DeptService deptService; + @Resource + private AdminUserService userService; @Resource private PermissionProducer permissionProducer; @@ -101,15 +129,21 @@ public class PermissionServiceImpl implements PermissionService { @Lazy // 注入自己,所以延迟加载 private PermissionService self; - /** - * 初始化 {@link #roleMenuCache} 和 {@link #menuRoleCache} 缓存 - */ @Override @PostConstruct @TenantIgnore // 初始化缓存,无需租户过滤 public void initLocalCache() { + initUserRoleLocalCache(); + initRoleMenuLocalCache(); + } + + /** + * 初始化 {@link #roleMenuCache} 和 {@link #menuRoleCache} 缓存 + */ + @VisibleForTesting + void initRoleMenuLocalCache() { // 获取角色与菜单的关联列表,如果有更新 - List roleMenuList = loadRoleMenuIfUpdate(maxUpdateTime); + List roleMenuList = loadRoleMenuIfUpdate(roleMenuMaxUpdateTime); if (CollUtil.isEmpty(roleMenuList)) { return; } @@ -123,8 +157,27 @@ public class PermissionServiceImpl implements PermissionService { }); roleMenuCache = roleMenuCacheBuilder.build(); menuRoleCache = menuRoleCacheBuilder.build(); - maxUpdateTime = CollectionUtils.getMaxValue(roleMenuList, RoleMenuDO::getUpdateTime); - log.info("[initLocalCache][初始化角色与菜单的关联数量为 {}]", roleMenuList.size()); + roleMenuMaxUpdateTime = getMaxValue(roleMenuList, RoleMenuDO::getUpdateTime); + log.info("[initRoleMenuLocalCache][初始化角色与菜单的关联数量为 {}]", roleMenuList.size()); + } + + /** + * 初始化 {@link #userRoleCache} 缓存 + */ + @VisibleForTesting + void initUserRoleLocalCache() { + // 获取用户与角色的关联列表,如果有更新 + List userRoleList = loadUserRoleIfUpdate(userRoleMaxUpdateTime); + if (CollUtil.isEmpty(userRoleList)) { + return; + } + + // 初始化 userRoleCache 缓存 + ImmutableMultimap.Builder userRoleCacheBuilder = ImmutableMultimap.builder(); + userRoleList.forEach(userRoleDO -> userRoleCacheBuilder.put(userRoleDO.getUserId(), userRoleDO.getRoleId())); + userRoleCache = CollectionUtils.convertMultiMap2(userRoleList, UserRoleDO::getUserId, UserRoleDO::getRoleId); + userRoleMaxUpdateTime = getMaxValue(userRoleList, UserRoleDO::getUpdateTime); + log.info("[initUserRoleLocalCache][初始化用户与角色的关联数量为 {}]", userRoleList.size()); } @Scheduled(fixedDelay = SCHEDULER_PERIOD, initialDelay = SCHEDULER_PERIOD) @@ -153,6 +206,27 @@ public class PermissionServiceImpl implements PermissionService { return roleMenuMapper.selectList(); } + /** + * 如果用户与角色的关联发生变化,从数据库中获取最新的全量用户与角色的关联。 + * 如果未发生变化,则返回空 + * + * @param maxUpdateTime 当前角色与菜单的关联的最大更新时间 + * @return 角色与菜单的关联列表 + */ + protected List loadUserRoleIfUpdate(Date maxUpdateTime) { + // 第一步,判断是否要更新。 + if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据 + log.info("[loadUserRoleIfUpdate][首次加载全量用户与角色的关联]"); + } else { // 判断数据库中是否有更新的用户与角色的关联 + if (userRoleMapper.selectCountByUpdateTimeGt(maxUpdateTime) == 0) { + return null; + } + log.info("[loadUserRoleIfUpdate][增量加载全量用户与角色的关联]"); + } + // 第二步,如果有更新,则从数据库加载所有用户与角色的关联 + return userRoleMapper.selectList(); + } + @Override public List getRoleMenuListFromCache(Collection roleIds, Collection menuTypes, Collection menusStatuses) { @@ -173,35 +247,38 @@ public class PermissionServiceImpl implements PermissionService { } @Override - public Set getUserRoleIds(Long userId, Collection roleStatuses) { - List userRoleList = userRoleMapper.selectListByUserId(userId); + public Set getUserRoleIdsFromCache(Long userId, Collection roleStatuses) { + Set cacheRoleIds = userRoleCache.get(userId); + // 创建用户的时候没有分配角色,会存在空指针异常 + if (CollUtil.isEmpty(cacheRoleIds)) { + return Collections.emptySet(); + } + Set roleIds = new HashSet<>(cacheRoleIds); // 过滤角色状态 if (CollectionUtil.isNotEmpty(roleStatuses)) { - userRoleList.removeIf(userRoleDO -> { - RoleDO role = roleService.getRoleFromCache(userRoleDO.getRoleId()); + roleIds.removeIf(roleId -> { + RoleDO role = roleService.getRoleFromCache(roleId); return role == null || !roleStatuses.contains(role.getStatus()); }); } - return CollectionUtils.convertSet(userRoleList, UserRoleDO::getRoleId); + return roleIds; } @Override public Set getRoleMenuIds(Long roleId) { // 如果是管理员的情况下,获取全部菜单编号 - RoleDO role = roleService.getRole(roleId); - if (roleService.hasAnySuperAdmin(Collections.singletonList(role))) { - return CollectionUtils.convertSet(menuService.getMenus(), MenuDO::getId); + if (roleService.hasAnySuperAdmin(Collections.singleton(roleId))) { + return convertSet(menuService.getMenus(), MenuDO::getId); } // 如果是非管理员的情况下,获得拥有的菜单编号 - return CollectionUtils.convertSet(roleMenuMapper.selectListByRoleId(roleId), - RoleMenuDO::getMenuId); + return convertSet(roleMenuMapper.selectListByRoleId(roleId), RoleMenuDO::getMenuId); } @Override @Transactional(rollbackFor = Exception.class) public void assignRoleMenu(Long roleId, Set menuIds) { // 获得角色拥有菜单编号 - Set dbMenuIds = CollectionUtils.convertSet(roleMenuMapper.selectListByRoleId(roleId), + Set dbMenuIds = convertSet(roleMenuMapper.selectListByRoleId(roleId), RoleMenuDO::getMenuId); // 计算新增和删除的菜单编号 Collection createMenuIds = CollUtil.subtract(menuIds, dbMenuIds); @@ -231,20 +308,21 @@ public class PermissionServiceImpl implements PermissionService { @Override public Set getUserRoleIdListByUserId(Long userId) { - return CollectionUtils.convertSet(userRoleMapper.selectListByUserId(userId), + return convertSet(userRoleMapper.selectListByUserId(userId), UserRoleDO::getRoleId); } @Override - public Set getUserRoleIdListByRoleId(Long roleId) { - return CollectionUtils.convertSet(userRoleMapper.selectListByRoleId(roleId), - UserRoleDO::getRoleId); + public Set getUserRoleIdListByRoleIds(Collection roleIds) { + return convertSet(userRoleMapper.selectListByRoleIds(roleIds), + UserRoleDO::getUserId); } @Override + @Transactional(rollbackFor = Exception.class) public void assignUserRole(Long userId, Set roleIds) { // 获得角色拥有角色编号 - Set dbRoleIds = CollectionUtils.convertSet(userRoleMapper.selectListByUserId(userId), + Set dbRoleIds = convertSet(userRoleMapper.selectListByUserId(userId), UserRoleDO::getRoleId); // 计算新增和删除的角色编号 Collection createRoleIds = CollUtil.subtract(roleIds, dbRoleIds); @@ -261,6 +339,15 @@ public class PermissionServiceImpl implements PermissionService { if (!CollectionUtil.isEmpty(deleteMenuIds)) { userRoleMapper.deleteListByUserIdAndRoleIdIds(userId, deleteMenuIds); } + // 发送刷新消息. 注意,需要事务提交后,在进行发送刷新消息。不然 db 还未提交,结果缓存先刷新了 + TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { + + @Override + public void afterCommit() { + permissionProducer.sendUserRoleRefreshMessage(); + } + + }); } @Override @@ -281,6 +368,7 @@ public class PermissionServiceImpl implements PermissionService { @Override public void afterCommit() { permissionProducer.sendRoleMenuRefreshMessage(); + permissionProducer.sendUserRoleRefreshMessage(); } }); @@ -302,24 +390,28 @@ public class PermissionServiceImpl implements PermissionService { } @Override + @Transactional(rollbackFor = Exception.class) public void processUserDeleted(Long userId) { userRoleMapper.deleteListByUserId(userId); + TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { + + @Override + public void afterCommit() { + permissionProducer.sendUserRoleRefreshMessage(); + } + + }); } @Override - public boolean hasPermission(String permission) { - return hasAnyPermissions(permission); - } - - @Override - public boolean hasAnyPermissions(String... permissions) { + public boolean hasAnyPermissions(Long userId, String... permissions) { // 如果为空,说明已经有权限 if (ArrayUtil.isEmpty(permissions)) { return true; } // 获得当前登录的角色。如果为空,说明没有权限 - Set roleIds = SecurityFrameworkUtils.getLoginUserRoleIds(); + Set roleIds = getUserRoleIdsFromCache(userId, singleton(CommonStatusEnum.ENABLE.getStatus())); if (CollUtil.isEmpty(roleIds)) { return false; } @@ -342,19 +434,14 @@ public class PermissionServiceImpl implements PermissionService { } @Override - public boolean hasRole(String role) { - return hasAnyRoles(role); - } - - @Override - public boolean hasAnyRoles(String... roles) { + public boolean hasAnyRoles(Long userId, String... roles) { // 如果为空,说明已经有权限 if (ArrayUtil.isEmpty(roles)) { return true; } // 获得当前登录的角色。如果为空,说明没有权限 - Set roleIds = SecurityFrameworkUtils.getLoginUserRoleIds(); + Set roleIds = getUserRoleIdsFromCache(userId, singleton(CommonStatusEnum.ENABLE.getStatus())); if (CollUtil.isEmpty(roleIds)) { return false; } @@ -362,22 +449,28 @@ public class PermissionServiceImpl implements PermissionService { if (roleService.hasAnySuperAdmin(roleIds)) { return true; } - Set userRoles = CollectionUtils.convertSet(roleService.getRolesFromCache(roleIds), + Set userRoles = convertSet(roleService.getRolesFromCache(roleIds), RoleDO::getCode); return CollUtil.containsAny(userRoles, Sets.newHashSet(roles)); } @Override - public DeptDataPermissionRespDTO getDeptDataPermission(LoginUser loginUser) { - // 判断是否 context 已经缓存 - DeptDataPermissionRespDTO result = loginUser.getContext(CONTEXT_KEY, DeptDataPermissionRespDTO.class); - if (result != null) { + @DataPermission(enable = false) // 关闭数据权限,不然就会出现递归获取数据权限的问题 + @TenantIgnore // 忽略多租户的自动过滤。如果不忽略,会导致添加租户时,因为切换租户,导致获取不到 User。即使忽略,本身该方法不存在跨租户的操作,不会存在问题。 + public DeptDataPermissionRespDTO getDeptDataPermission(Long userId) { + // 获得用户的角色 + Set roleIds = getUserRoleIdsFromCache(userId, singleton(CommonStatusEnum.ENABLE.getStatus())); + // 如果角色为空,则只能查看自己 + DeptDataPermissionRespDTO result = new DeptDataPermissionRespDTO(); + if (CollUtil.isEmpty(roleIds)) { + result.setSelf(true); return result; } + List roles = roleService.getRolesFromCache(roleIds); - // 创建 DeptDataPermissionRespDTO 对象 - result = new DeptDataPermissionRespDTO(); - List roles = roleService.getRolesFromCache(loginUser.getRoleIds()); + // 获得用户的部门编号的缓存,通过 Guava 的 Suppliers 惰性求值,即有且仅有第一次发起 DB 的查询 + Supplier userDeptIdCache = Suppliers.memoize(() -> userService.getUser(userId).getDeptId()); + // 遍历每个角色,计算 for (RoleDO role : roles) { // 为空时,跳过 if (role.getDataScope() == null) { @@ -393,20 +486,20 @@ public class PermissionServiceImpl implements PermissionService { CollUtil.addAll(result.getDeptIds(), role.getDataScopeDeptIds()); // 自定义可见部门时,保证可以看到自己所在的部门。否则,一些场景下可能会有问题。 // 例如说,登录时,基于 t_user 的 username 查询会可能被 dept_id 过滤掉 - CollUtil.addAll(result.getDeptIds(), loginUser.getDeptId()); + CollUtil.addAll(result.getDeptIds(), userDeptIdCache.get()); continue; } // 情况三,DEPT_ONLY if (Objects.equals(role.getDataScope(), DataScopeEnum.DEPT_ONLY.getScope())) { - CollectionUtils.addIfNotNull(result.getDeptIds(), loginUser.getDeptId()); + CollectionUtils.addIfNotNull(result.getDeptIds(), userDeptIdCache.get()); continue; } // 情况四,DEPT_DEPT_AND_CHILD if (Objects.equals(role.getDataScope(), DataScopeEnum.DEPT_AND_CHILD.getScope())) { - List depts = deptService.getDeptsByParentIdFromCache(loginUser.getDeptId(), true); + List depts = deptService.getDeptsByParentIdFromCache(userDeptIdCache.get(), true); CollUtil.addAll(result.getDeptIds(), CollectionUtils.convertList(depts, DeptDO::getId)); - //添加本身部门id - CollUtil.addAll(result.getDeptIds(), loginUser.getDeptId()); + // 添加本身部门编号 + CollUtil.addAll(result.getDeptIds(), userDeptIdCache.get()); continue; } // 情况五,SELF @@ -415,18 +508,9 @@ public class PermissionServiceImpl implements PermissionService { continue; } // 未知情况,error log 即可 - log.error("[getDeptDataPermission][LoginUser({}) role({}) 无法处理]", loginUser.getId(), JsonUtils.toJsonString(result)); + log.error("[getDeptDataPermission][LoginUser({}) role({}) 无法处理]", userId, JsonUtils.toJsonString(result)); } - - // 添加到缓存,并返回 - loginUser.setContext(CONTEXT_KEY, result); return result; } - @Override - public Set getUserRoleIdListByRoleIds(Collection roleIds) { - return CollectionUtils.convertSet(userRoleMapper.selectListByRoleIds(roleIds), - UserRoleDO::getUserId); - } - } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java index 9c884cbd38..63903d542d 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java @@ -215,6 +215,9 @@ public class RoleServiceImpl implements RoleService { @Override public List getRoles(@Nullable Collection statuses) { + if (CollUtil.isEmpty(statuses)) { + return roleMapper.selectList(); + } return roleMapper.selectListByStatus(statuses); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceImpl.java index e0038ffcd4..160ffe8242 100755 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceImpl.java @@ -81,6 +81,7 @@ public class TenantServiceImpl implements TenantService { @Getter private volatile Date maxUpdateTime; + @SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") @Autowired(required = false) // 由于 yudao.tenant.enable 配置项,可以关闭多租户的功能,所以这里只能不强制注入 private TenantProperties tenantProperties; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java index d6a836f01b..ae3245de22 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java @@ -105,7 +105,6 @@ public interface AdminUserService { */ AdminUserDO getUserByMobile(String mobile); - /** * 获得用户分页列表 * @@ -209,4 +208,13 @@ public interface AdminUserService { */ List getUsersByStatus(Integer status); + /** + * 判断密码是否匹配 + * + * @param rawPassword 未加密的密码 + * @param encodedPassword 加密后的密码 + * @return 是否匹配 + */ + boolean isPasswordMatch(String rawPassword, String encodedPassword); + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java index 44934c6fa8..57fd49a7d9 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java @@ -25,6 +25,7 @@ import cn.iocoder.yudao.module.system.service.tenant.TenantService; import com.google.common.annotations.VisibleForTesting; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Lazy; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -61,6 +62,7 @@ public class AdminUserServiceImpl implements AdminUserService { @Resource private PasswordEncoder passwordEncoder; @Resource + @Lazy // 延迟,避免循环依赖报错 private TenantService tenantService; @Resource @@ -146,7 +148,7 @@ public class AdminUserServiceImpl implements AdminUserService { checkOldPassword(id, reqVO.getOldPassword()); // 执行更新 AdminUserDO updateObj = new AdminUserDO().setId(id); - updateObj.setPassword(passwordEncoder.encode(reqVO.getNewPassword())); // 加密密码 + updateObj.setPassword(encodePassword(reqVO.getNewPassword())); // 加密密码 userMapper.updateById(updateObj); } @@ -170,7 +172,7 @@ public class AdminUserServiceImpl implements AdminUserService { // 更新密码 AdminUserDO updateObj = new AdminUserDO(); updateObj.setId(id); - updateObj.setPassword(passwordEncoder.encode(password)); // 加密密码 + updateObj.setPassword(encodePassword(password)); // 加密密码 userMapper.updateById(updateObj); } @@ -203,11 +205,6 @@ public class AdminUserServiceImpl implements AdminUserService { return userMapper.selectByUsername(username); } - /** - * 通过手机号获取用户 - * @param mobile - * @return - */ @Override public AdminUserDO getUserByMobile(String mobile) { return userMapper.selectByMobile(mobile); @@ -393,7 +390,7 @@ public class AdminUserServiceImpl implements AdminUserService { if (user == null) { throw exception(USER_NOT_EXISTS); } - if (!passwordEncoder.matches(oldPassword, user.getPassword())) { + if (!isPasswordMatch(oldPassword, user.getPassword())) { throw exception(USER_PASSWORD_FAILED); } } @@ -419,7 +416,7 @@ public class AdminUserServiceImpl implements AdminUserService { AdminUserDO existUser = userMapper.selectByUsername(importUser.getUsername()); if (existUser == null) { userMapper.insert(UserConvert.INSTANCE.convert(importUser) - .setPassword(passwordEncoder.encode(userInitPassword))); // 设置默认密码 + .setPassword(encodePassword(userInitPassword))); // 设置默认密码 respVO.getCreateUsernames().add(importUser.getUsername()); return; } @@ -441,4 +438,19 @@ public class AdminUserServiceImpl implements AdminUserService { return userMapper.selectListByStatus(status); } + @Override + public boolean isPasswordMatch(String rawPassword, String encodedPassword) { + return passwordEncoder.matches(rawPassword, encodedPassword); + } + + /** + * 对密码进行加密 + * + * @param password 密码 + * @return 加密后的密码 + */ + private String encodePassword(String password) { + return passwordEncoder.encode(password); + } + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/util/oauth2/OAuth2Utils.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/util/oauth2/OAuth2Utils.java new file mode 100644 index 0000000000..815bb2c312 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/util/oauth2/OAuth2Utils.java @@ -0,0 +1,100 @@ +package cn.iocoder.yudao.module.system.util.oauth2; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.framework.common.util.http.HttpUtils; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; + +import java.util.*; + +/** + * OAuth2 相关的工具类 + * + * @author 芋道源码 + */ +public class OAuth2Utils { + + /** + * 构建授权码模式下,重定向的 URI + * + * copy from Spring Security OAuth2 的 AuthorizationEndpoint 类的 getSuccessfulRedirect 方法 + * + * @param redirectUri 重定向 URI + * @param authorizationCode 授权码 + * @param state 状态 + * @return 授权码模式下的重定向 URI + */ + public static String buildAuthorizationCodeRedirectUri(String redirectUri, String authorizationCode, String state) { + Map query = new LinkedHashMap<>(); + query.put("code", authorizationCode); + if (state != null) { + query.put("state", state); + } + return HttpUtils.append(redirectUri, query, null, false); + } + + /** + * 构建简化模式下,重定向的 URI + * + * copy from Spring Security OAuth2 的 AuthorizationEndpoint 类的 appendAccessToken 方法 + * + * @param redirectUri 重定向 URI + * @param accessToken 访问令牌 + * @param state 状态 + * @param expireTime 过期时间 + * @param scopes 授权范围 + * @param additionalInformation 附加信息 + * @return 简化授权模式下的重定向 URI + */ + public static String buildImplicitRedirectUri(String redirectUri, String accessToken, String state, Date expireTime, + Collection scopes, Map additionalInformation) { + Map vars = new LinkedHashMap(); + Map keys = new HashMap(); + vars.put("access_token", accessToken); + vars.put("token_type", SecurityFrameworkUtils.AUTHORIZATION_BEARER.toLowerCase()); + if (state != null) { + vars.put("state", state); + } + if (expireTime != null) { + vars.put("expires_in", getExpiresIn(expireTime)); + } + if (CollUtil.isNotEmpty(scopes)) { + vars.put("scope", buildScopeStr(scopes)); + } + if (CollUtil.isNotEmpty(additionalInformation)) { + for (String key : additionalInformation.keySet()) { + Object value = additionalInformation.get(key); + if (value != null) { + keys.put("extra_" + key, key); + vars.put("extra_" + key, value); + } + } + } + // Do not include the refresh token (even if there is one) + return HttpUtils.append(redirectUri, vars, keys, true); + } + + public static String buildUnsuccessfulRedirect(String redirectUri, String responseType, String state, + String error, String description) { + Map query = new LinkedHashMap(); + query.put("error", error); + query.put("error_description", description); + if (state != null) { + query.put("state", state); + } + return HttpUtils.append(redirectUri, query, null, !responseType.contains("code")); + } + + public static long getExpiresIn(Date expireTime) { + return (expireTime.getTime() - System.currentTimeMillis()) / 1000; + } + + public static String buildScopeStr(Collection scopes) { + return CollUtil.join(scopes, " "); + } + + public static List buildScopes(String scope) { + return StrUtil.split(scope, ' '); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2OpenControllerTest.java b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2OpenControllerTest.java new file mode 100644 index 0000000000..7720327e0a --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/controller/admin/oauth2/OAuth2OpenControllerTest.java @@ -0,0 +1,330 @@ +package cn.iocoder.yudao.module.system.controller.admin.oauth2; + +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.map.MapUtil; +import cn.iocoder.yudao.framework.common.core.KeyValue; +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.framework.common.exception.ErrorCode; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.collection.SetUtils; +import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.open.OAuth2OpenAccessTokenRespVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.open.OAuth2OpenAuthorizeInfoRespVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.open.OAuth2OpenCheckTokenRespVO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ApproveDO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO; +import cn.iocoder.yudao.module.system.enums.auth.OAuth2GrantTypeEnum; +import cn.iocoder.yudao.module.system.service.oauth2.OAuth2ApproveService; +import cn.iocoder.yudao.module.system.service.oauth2.OAuth2ClientService; +import cn.iocoder.yudao.module.system.service.oauth2.OAuth2GrantService; +import cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenService; +import org.assertj.core.util.Lists; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; + +import javax.servlet.http.HttpServletRequest; +import java.time.Duration; +import java.util.ArrayList; +import java.util.Date; +import java.util.LinkedHashMap; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString; +import static java.util.Arrays.asList; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.isNull; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +/** + * {@link OAuth2OpenController} 的单元测试 + * + * @author 芋道源码 + */ +public class OAuth2OpenControllerTest extends BaseMockitoUnitTest { + + @InjectMocks + private OAuth2OpenController oauth2OpenController; + + @Mock + private OAuth2GrantService oauth2GrantService; + @Mock + private OAuth2ClientService oauth2ClientService; + @Mock + private OAuth2ApproveService oauth2ApproveService; + @Mock + private OAuth2TokenService oauth2TokenService; + + @Test + public void testPostAccessToken_authorizationCode() { + // 准备参数 + String granType = OAuth2GrantTypeEnum.AUTHORIZATION_CODE.getGrantType(); + String code = randomString(); + String redirectUri = randomString(); + String state = randomString(); + HttpServletRequest request = mockRequest("test_client_id", "test_client_secret"); + // mock 方法(client) + OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId("test_client_id"); + when(oauth2ClientService.validOAuthClientFromCache(eq("test_client_id"), eq("test_client_secret"), eq(granType), eq(new ArrayList<>()), eq(redirectUri))).thenReturn(client); + + // mock 方法(访问令牌) + OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class) + .setExpiresTime(addTime(Duration.ofMillis(30010L))); // 多给 10 毫秒,保证可执行完 + when(oauth2GrantService.grantAuthorizationCodeForAccessToken(eq("test_client_id"), + eq(code), eq(redirectUri), eq(state))).thenReturn(accessTokenDO); + + // 调用 + CommonResult result = oauth2OpenController.postAccessToken(request, granType, + code, redirectUri, state, null, null, null, null); + // 断言 + assertEquals(0, result.getCode()); + assertPojoEquals(accessTokenDO, result.getData()); + assertEquals(30L, result.getData().getExpiresIn()); // 执行过程会过去几毫秒 + } + + @Test + public void testPostAccessToken_password() { + // 准备参数 + String granType = OAuth2GrantTypeEnum.PASSWORD.getGrantType(); + String username = randomString(); + String password = randomString(); + String scope = "write read"; + HttpServletRequest request = mockRequest("test_client_id", "test_client_secret"); + // mock 方法(client) + OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId("test_client_id"); + when(oauth2ClientService.validOAuthClientFromCache(eq("test_client_id"), eq("test_client_secret"), + eq(granType), eq(Lists.newArrayList("write", "read")), isNull())).thenReturn(client); + + // mock 方法(访问令牌) + OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class) + .setExpiresTime(addTime(Duration.ofMillis(30010L))); // 多给 10 毫秒,保证可执行完 + when(oauth2GrantService.grantPassword(eq(username), eq(password), eq("test_client_id"), + eq(Lists.newArrayList("write", "read")))).thenReturn(accessTokenDO); + + // 调用 + CommonResult result = oauth2OpenController.postAccessToken(request, granType, + null, null, null, username, password, scope, null); + // 断言 + assertEquals(0, result.getCode()); + assertPojoEquals(accessTokenDO, result.getData()); + assertEquals(30L, result.getData().getExpiresIn()); // 执行过程会过去几毫秒 + } + + @Test + public void testPostAccessToken_refreshToken() { + // 准备参数 + String granType = OAuth2GrantTypeEnum.REFRESH_TOKEN.getGrantType(); + String refreshToken = randomString(); + String password = randomString(); + HttpServletRequest request = mockRequest("test_client_id", "test_client_secret"); + // mock 方法(client) + OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId("test_client_id"); + when(oauth2ClientService.validOAuthClientFromCache(eq("test_client_id"), eq("test_client_secret"), + eq(granType), eq(Lists.newArrayList()), isNull())).thenReturn(client); + + // mock 方法(访问令牌) + OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class) + .setExpiresTime(addTime(Duration.ofMillis(30010L))); // 多给 10 毫秒,保证可执行完 + when(oauth2GrantService.grantRefreshToken(eq(refreshToken), eq("test_client_id"))).thenReturn(accessTokenDO); + + // 调用 + CommonResult result = oauth2OpenController.postAccessToken(request, granType, + null, null, null, null, password, null, refreshToken); + // 断言 + assertEquals(0, result.getCode()); + assertPojoEquals(accessTokenDO, result.getData()); + assertEquals(30L, result.getData().getExpiresIn()); // 执行过程会过去几毫秒 + } + + @Test + public void testPostAccessToken_implicit() { + // 调用,并断言 + assertServiceException(() -> oauth2OpenController.postAccessToken(null, + OAuth2GrantTypeEnum.IMPLICIT.getGrantType(), null, null, null, + null, null, null, null), + new ErrorCode(400, "Token 接口不支持 implicit 授权模式")); + } + + @Test + public void testRevokeToken() { + // 准备参数 + HttpServletRequest request = mockRequest("demo_client_id", "demo_client_secret"); + String token = randomString(); + // mock 方法(client) + OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId("demo_client_id"); + when(oauth2ClientService.validOAuthClientFromCache(eq("demo_client_id"), + eq("demo_client_secret"), isNull(), isNull(), isNull())).thenReturn(client); + // mock 方法(移除) + when(oauth2GrantService.revokeToken(eq("demo_client_id"), eq(token))).thenReturn(true); + + // 调用 + CommonResult result = oauth2OpenController.revokeToken(request, token); + // 断言 + assertEquals(0, result.getCode()); + assertTrue(result.getData()); + } + + @Test + public void testCheckToken() { + // 准备参数 + HttpServletRequest request = mockRequest("demo_client_id", "demo_client_secret"); + String token = randomString(); + // mock 方法 + OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class).setUserType(UserTypeEnum.ADMIN.getValue()).setExpiresTime(new Date(1653485731195L)); + when(oauth2TokenService.checkAccessToken(eq(token))).thenReturn(accessTokenDO); + + // 调用 + CommonResult result = oauth2OpenController.checkToken(request, token); + // 断言 + assertEquals(0, result.getCode()); + assertPojoEquals(accessTokenDO, result.getData()); + assertEquals(1653485731L, result.getData().getExp()); // 执行过程会过去几毫秒 + } + + @Test + public void testAuthorize() { + // 准备参数 + String clientId = randomString(); + // mock 方法(client) + OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId("demo_client_id").setScopes(ListUtil.toList("read", "write", "all")); + when(oauth2ClientService.validOAuthClientFromCache(eq(clientId))).thenReturn(client); + // mock 方法(approve) + List approves = asList( + randomPojo(OAuth2ApproveDO.class).setScope("read").setApproved(true), + randomPojo(OAuth2ApproveDO.class).setScope("write").setApproved(false)); + when(oauth2ApproveService.getApproveList(isNull(), eq(UserTypeEnum.ADMIN.getValue()), eq(clientId))).thenReturn(approves); + + // 调用 + CommonResult result = oauth2OpenController.authorize(clientId); + // 断言 + assertEquals(0, result.getCode()); + assertPojoEquals(client, result.getData().getClient()); + assertEquals(new KeyValue<>("read", true), result.getData().getScopes().get(0)); + assertEquals(new KeyValue<>("write", false), result.getData().getScopes().get(1)); + assertEquals(new KeyValue<>("all", false), result.getData().getScopes().get(2)); + } + + @Test + public void testApproveOrDeny_grantTypeError() { + // 调用,并断言 + assertServiceException(() -> oauth2OpenController.approveOrDeny(randomString(), null, + null, null, null, null), + new ErrorCode(400, "response_type 参数值只允许 code 和 token")); + } + + @Test // autoApprove = true,但是不通过 + public void testApproveOrDeny_autoApproveNo() { + // 准备参数 + String responseType = "code"; + String clientId = randomString(); + String scope = "{\"read\": true, \"write\": false}"; + String redirectUri = randomString(); + String state = randomString(); + // mock 方法 + OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class); + when(oauth2ClientService.validOAuthClientFromCache(eq(clientId), isNull(), eq("authorization_code"), + eq(asSet("read", "write")), eq(redirectUri))).thenReturn(client); + + // 调用 + CommonResult result = oauth2OpenController.approveOrDeny(responseType, clientId, + scope, redirectUri, true, state); + // 断言 + assertEquals(0, result.getCode()); + assertNull(result.getData()); + } + + @Test // autoApprove = false,但是不通过 + public void testApproveOrDeny_ApproveNo() { + // 准备参数 + String responseType = "token"; + String clientId = randomString(); + String scope = "{\"read\": true, \"write\": false}"; + String redirectUri = "https://www.iocoder.cn"; + String state = "test"; + // mock 方法 + OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class); + when(oauth2ClientService.validOAuthClientFromCache(eq(clientId), isNull(), eq("implicit"), + eq(asSet("read", "write")), eq(redirectUri))).thenReturn(client); + + // 调用 + CommonResult result = oauth2OpenController.approveOrDeny(responseType, clientId, + scope, redirectUri, false, state); + // 断言 + assertEquals(0, result.getCode()); + assertEquals("https://www.iocoder.cn#error=access_denied&error_description=User%20denied%20access&state=test", result.getData()); + } + + @Test // autoApprove = true,通过 + token + public void testApproveOrDeny_autoApproveWithToken() { + // 准备参数 + String responseType = "token"; + String clientId = randomString(); + String scope = "{\"read\": true, \"write\": false}"; + String redirectUri = "https://www.iocoder.cn"; + String state = "test"; + // mock 方法(client) + OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId(clientId).setAdditionalInformation(null); + when(oauth2ClientService.validOAuthClientFromCache(eq(clientId), isNull(), eq("implicit"), + eq(asSet("read", "write")), eq(redirectUri))).thenReturn(client); + // mock 方法(场景一) + when(oauth2ApproveService.checkForPreApproval(isNull(), eq(UserTypeEnum.ADMIN.getValue()), + eq(clientId), eq(SetUtils.asSet("read", "write")))).thenReturn(true); + // mock 方法(访问令牌) + OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class) + .setAccessToken("test_access_token").setExpiresTime(addTime(Duration.ofMillis(30010L))); + when(oauth2GrantService.grantImplicit(isNull(), eq(UserTypeEnum.ADMIN.getValue()), + eq(clientId), eq(ListUtil.toList("read")))).thenReturn(accessTokenDO); + + // 调用 + CommonResult result = oauth2OpenController.approveOrDeny(responseType, clientId, + scope, redirectUri, true, state); + // 断言 + assertEquals(0, result.getCode()); + assertEquals("https://www.iocoder.cn#access_token=test_access_token&token_type=bearer&state=test&expires_in=30&scope=read", result.getData()); + } + + @Test // autoApprove = false,通过 + code + public void testApproveOrDeny_approveWithCode() { + // 准备参数 + String responseType = "code"; + String clientId = randomString(); + String scope = "{\"read\": true, \"write\": false}"; + String redirectUri = "https://www.iocoder.cn"; + String state = "test"; + // mock 方法(client) + OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId(clientId).setAdditionalInformation(null); + when(oauth2ClientService.validOAuthClientFromCache(eq(clientId), isNull(), eq("authorization_code"), + eq(asSet("read", "write")), eq(redirectUri))).thenReturn(client); + // mock 方法(场景二) + when(oauth2ApproveService.updateAfterApproval(isNull(), eq(UserTypeEnum.ADMIN.getValue()), eq(clientId), + eq(MapUtil.builder(new LinkedHashMap()).put("read", true).put("write", false).build()))) + .thenReturn(true); + // mock 方法(访问令牌) + String authorizationCode = "test_code"; + when(oauth2GrantService.grantAuthorizationCodeForCode(isNull(), eq(UserTypeEnum.ADMIN.getValue()), + eq(clientId), eq(ListUtil.toList("read")), eq(redirectUri), eq(state))).thenReturn(authorizationCode); + + // 调用 + CommonResult result = oauth2OpenController.approveOrDeny(responseType, clientId, + scope, redirectUri, false, state); + // 断言 + assertEquals(0, result.getCode()); + assertEquals("https://www.iocoder.cn?code=test_code&state=test", result.getData()); + } + + private HttpServletRequest mockRequest(String clientId, String secret) { + HttpServletRequest request = mock(HttpServletRequest.class); + when(request.getParameter(eq("client_id"))).thenReturn(clientId); + when(request.getParameter(eq("client_secret"))).thenReturn(secret); + return request; + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImplTest.java b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImplTest.java new file mode 100644 index 0000000000..435e5791f0 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImplTest.java @@ -0,0 +1,246 @@ +package cn.iocoder.yudao.module.system.service.auth; + +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; +import cn.iocoder.yudao.framework.test.core.util.AssertUtils; +import cn.iocoder.yudao.module.system.api.sms.SmsCodeApi; +import cn.iocoder.yudao.module.system.controller.admin.auth.vo.AuthLoginReqVO; +import cn.iocoder.yudao.module.system.controller.admin.auth.vo.AuthLoginRespVO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; +import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; +import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; +import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum; +import cn.iocoder.yudao.module.system.service.common.CaptchaService; +import cn.iocoder.yudao.module.system.service.logger.LoginLogService; +import cn.iocoder.yudao.module.system.service.member.MemberService; +import cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenService; +import cn.iocoder.yudao.module.system.service.social.SocialUserService; +import cn.iocoder.yudao.module.system.service.user.AdminUserService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; +import javax.validation.Validator; + +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.*; + +@Import(AdminAuthServiceImpl.class) +public class AdminAuthServiceImplTest extends BaseDbUnitTest { + + @Resource + private AdminAuthServiceImpl authService; + + @MockBean + private AdminUserService userService; + @MockBean + private CaptchaService captchaService; + @MockBean + private LoginLogService loginLogService; + @MockBean + private SocialUserService socialService; + @MockBean + private SmsCodeApi smsCodeApi; + @MockBean + private OAuth2TokenService oauth2TokenService; + @MockBean + private MemberService memberService; + + @MockBean + private Validator validator; + + @BeforeEach + public void setUp() { + when(captchaService.isCaptchaEnable()).thenReturn(true); + } + + @Test + public void testAuthenticate_success() { + // 准备参数 + String username = randomString(); + String password = randomString(); + // mock user 数据 + AdminUserDO user = randomPojo(AdminUserDO.class, o -> o.setUsername(username) + .setPassword(password).setStatus(CommonStatusEnum.ENABLE.getStatus())); + when(userService.getUserByUsername(eq(username))).thenReturn(user); + // mock password 匹配 + when(userService.isPasswordMatch(eq(password), eq(user.getPassword()))).thenReturn(true); + + // 调用 + AdminUserDO loginUser = authService.authenticate(username, password); + // 校验 + assertPojoEquals(user, loginUser); + } + + @Test + public void testAuthenticate_userNotFound() { + // 准备参数 + String username = randomString(); + String password = randomString(); + + // 调用, 并断言异常 + AssertUtils.assertServiceException(() -> authService.authenticate(username, password), + AUTH_LOGIN_BAD_CREDENTIALS); + verify(loginLogService).createLoginLog( + argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) + && o.getResult().equals(LoginResultEnum.BAD_CREDENTIALS.getResult()) + && o.getUserId() == null) + ); + } + + @Test + public void testAuthenticate_badCredentials() { + // 准备参数 + String username = randomString(); + String password = randomString(); + // mock user 数据 + AdminUserDO user = randomPojo(AdminUserDO.class, o -> o.setUsername(username) + .setPassword(password).setStatus(CommonStatusEnum.ENABLE.getStatus())); + when(userService.getUserByUsername(eq(username))).thenReturn(user); + + // 调用, 并断言异常 + AssertUtils.assertServiceException(() -> authService.authenticate(username, password), + AUTH_LOGIN_BAD_CREDENTIALS); + verify(loginLogService).createLoginLog( + argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) + && o.getResult().equals(LoginResultEnum.BAD_CREDENTIALS.getResult()) + && o.getUserId().equals(user.getId())) + ); + } + + @Test + public void testAuthenticate_userDisabled() { + // 准备参数 + String username = randomString(); + String password = randomString(); + // mock user 数据 + AdminUserDO user = randomPojo(AdminUserDO.class, o -> o.setUsername(username) + .setPassword(password).setStatus(CommonStatusEnum.DISABLE.getStatus())); + when(userService.getUserByUsername(eq(username))).thenReturn(user); + // mock password 匹配 + when(userService.isPasswordMatch(eq(password), eq(user.getPassword()))).thenReturn(true); + + // 调用, 并断言异常 + AssertUtils.assertServiceException(() -> authService.authenticate(username, password), + AUTH_LOGIN_USER_DISABLED); + verify(loginLogService).createLoginLog( + argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) + && o.getResult().equals(LoginResultEnum.USER_DISABLED.getResult()) + && o.getUserId().equals(user.getId())) + ); + } + + @Test + public void testCaptcha_success() { + // 准备参数 + AuthLoginReqVO reqVO = randomPojo(AuthLoginReqVO.class); + + // mock 验证码正确 + when(captchaService.getCaptchaCode(reqVO.getUuid())).thenReturn(reqVO.getCode()); + + // 调用 + authService.verifyCaptcha(reqVO); + // 断言 + verify(captchaService).deleteCaptchaCode(reqVO.getUuid()); + } + + @Test + public void testCaptcha_notFound() { + // 准备参数 + AuthLoginReqVO reqVO = randomPojo(AuthLoginReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> authService.verifyCaptcha(reqVO), AUTH_LOGIN_CAPTCHA_NOT_FOUND); + // 校验调用参数 + verify(loginLogService, times(1)).createLoginLog( + argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) + && o.getResult().equals(LoginResultEnum.CAPTCHA_NOT_FOUND.getResult())) + ); + } + + @Test + public void testCaptcha_codeError() { + // 准备参数 + AuthLoginReqVO reqVO = randomPojo(AuthLoginReqVO.class); + + // mock 验证码不正确 + String code = randomString(); + when(captchaService.getCaptchaCode(reqVO.getUuid())).thenReturn(code); + + // 调用, 并断言异常 + assertServiceException(() -> authService.verifyCaptcha(reqVO), AUTH_LOGIN_CAPTCHA_CODE_ERROR); + // 校验调用参数 + verify(loginLogService).createLoginLog( + argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) + && o.getResult().equals(LoginResultEnum.CAPTCHA_CODE_ERROR.getResult())) + ); + } + + @Test + public void testLogin_success() { + // 准备参数 + AuthLoginReqVO reqVO = randomPojo(AuthLoginReqVO.class, o -> + o.setUsername("test_username").setPassword("test_password")); + + // mock 验证码正确 + when(captchaService.getCaptchaCode(reqVO.getUuid())).thenReturn(reqVO.getCode()); + // mock user 数据 + AdminUserDO user = randomPojo(AdminUserDO.class, o -> o.setId(1L).setUsername("test_username") + .setPassword("test_password").setStatus(CommonStatusEnum.ENABLE.getStatus())); + when(userService.getUserByUsername(eq("test_username"))).thenReturn(user); + // mock password 匹配 + when(userService.isPasswordMatch(eq("test_password"), eq(user.getPassword()))).thenReturn(true); + // mock 缓存登录用户到 Redis + OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class, o -> o.setUserId(1L) + .setUserType(UserTypeEnum.ADMIN.getValue())); + when(oauth2TokenService.createAccessToken(eq(1L), eq(UserTypeEnum.ADMIN.getValue()), eq("default"), isNull())) + .thenReturn(accessTokenDO); + + // 调用, 并断言异常 + AuthLoginRespVO loginRespVO = authService.login(reqVO); + assertPojoEquals(accessTokenDO, loginRespVO); + // 校验调用参数 + verify(loginLogService).createLoginLog( + argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) + && o.getResult().equals(LoginResultEnum.SUCCESS.getResult()) + && o.getUserId().equals(user.getId())) + ); + } + + @Test + public void testLogout_success() { + // 准备参数 + String token = randomString(); + // mock + OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class, o -> o.setUserId(1L) + .setUserType(UserTypeEnum.ADMIN.getValue())); + when(oauth2TokenService.removeAccessToken(eq(token))).thenReturn(accessTokenDO); + + // 调用 + authService.logout(token, LoginLogTypeEnum.LOGOUT_SELF.getType()); + // 校验调用参数 + verify(loginLogService).createLoginLog(argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGOUT_SELF.getType()) + && o.getResult().equals(LoginResultEnum.SUCCESS.getResult())) + ); + } + + @Test + public void testLogout_fail() { + // 准备参数 + String token = randomString(); + + // 调用 + authService.logout(token, LoginLogTypeEnum.LOGOUT_SELF.getType()); + // 校验调用参数 + verify(loginLogService, never()).createLoginLog(any()); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/auth/AuthServiceImplTest.java b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/auth/AuthServiceImplTest.java deleted file mode 100644 index 5856e629aa..0000000000 --- a/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/auth/AuthServiceImplTest.java +++ /dev/null @@ -1,287 +0,0 @@ -package cn.iocoder.yudao.module.system.service.auth; - -import cn.iocoder.yudao.module.system.controller.admin.auth.vo.auth.AuthLoginReqVO; -import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; -import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; -import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum; -import cn.iocoder.yudao.module.system.service.common.CaptchaService; -import cn.iocoder.yudao.module.system.service.dept.PostService; -import cn.iocoder.yudao.module.system.service.logger.LoginLogService; -import cn.iocoder.yudao.module.system.service.permission.PermissionService; -import cn.iocoder.yudao.module.system.service.user.AdminUserService; -import cn.iocoder.yudao.module.system.service.social.SocialUserService; -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.yudao.framework.test.core.util.AssertUtils; -import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; -import org.springframework.security.authentication.AuthenticationManager; -import org.springframework.security.authentication.BadCredentialsException; -import org.springframework.security.authentication.DisabledException; -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.AuthenticationException; -import org.springframework.security.core.userdetails.UsernameNotFoundException; - -import javax.annotation.Resource; -import javax.validation.Validator; -import java.util.Set; - -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; -import static java.util.Collections.singleton; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.*; - -@Import(AdminAuthServiceImpl.class) -public class AuthServiceImplTest extends BaseDbUnitTest { - - @Resource - private AdminAuthServiceImpl authService; - - @MockBean - private AdminUserService userService; - @MockBean - private PermissionService permissionService; - @MockBean - private AuthenticationManager authenticationManager; - @MockBean - private Authentication authentication; - @MockBean - private CaptchaService captchaService; - @MockBean - private LoginLogService loginLogService; - @MockBean - private UserSessionService userSessionService; - @MockBean - private SocialUserService socialService; - @MockBean - private PostService postService; - - @MockBean - private Validator validator; - - @BeforeEach - public void setUp() { - when(captchaService.isCaptchaEnable()).thenReturn(true); - } - - @Test - public void testLoadUserByUsername_success() { - // 准备参数 - String username = randomString(); - // mock 方法 - AdminUserDO user = randomPojo(AdminUserDO.class, o -> o.setUsername(username)); - when(userService.getUserByUsername(eq(username))).thenReturn(user); - - // 调用 - LoginUser loginUser = (LoginUser) authService.loadUserByUsername(username); - // 校验 - AssertUtils.assertPojoEquals(user, loginUser, "updateTime"); - } - - @Test - public void testLoadUserByUsername_userNotFound() { - // 准备参数 - String username = randomString(); - // mock 方法 - - // 调用, 并断言异常 - assertThrows(UsernameNotFoundException.class, // 抛出 UsernameNotFoundException 异常 - () -> authService.loadUserByUsername(username), - username); // 异常提示为 username - } - - @Test - public void testMockLogin_success() { - // 准备参数 - Long userId = randomLongId(); - // mock 方法 01 - AdminUserDO user = randomPojo(AdminUserDO.class, o -> o.setId(userId)); - when(userService.getUser(eq(userId))).thenReturn(user); - // mock 方法 02 - Set roleIds = randomSet(Long.class); - when(permissionService.getUserRoleIds(eq(userId), eq(singleton(CommonStatusEnum.ENABLE.getStatus())))) - .thenReturn(roleIds); - - // 调用 - LoginUser loginUser = authService.mockLogin(userId); - // 断言 - AssertUtils.assertPojoEquals(user, loginUser, "updateTime"); - assertEquals(roleIds, loginUser.getRoleIds()); - } - - @Test - public void testMockLogin_userNotFound() { - // 准备参数 - Long userId = randomLongId(); - // mock 方法 - - // 调用, 并断言异常 - assertThrows(UsernameNotFoundException.class, // 抛出 UsernameNotFoundException 异常 - () -> authService.mockLogin(userId), - String.valueOf(userId)); // 异常提示为 userId - } - - @Test - public void testLogin_captchaNotFound() { - // 准备参数 - AuthLoginReqVO reqVO = randomPojo(AuthLoginReqVO.class); - String userIp = randomString(); - String userAgent = randomString(); - - // 调用, 并断言异常 - assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_CAPTCHA_NOT_FOUND); - // 校验调用参数 - verify(loginLogService, times(1)).createLoginLog( - argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) - && o.getResult().equals(LoginResultEnum.CAPTCHA_NOT_FOUND.getResult())) - ); - } - - @Test - public void testLogin_captchaCodeError() { - // 准备参数 - String userIp = randomString(); - String userAgent = randomString(); - AuthLoginReqVO reqVO = randomPojo(AuthLoginReqVO.class); - - // mock 验证码不正确 - String code = randomString(); - when(captchaService.getCaptchaCode(reqVO.getUuid())).thenReturn(code); - - // 调用, 并断言异常 - assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_CAPTCHA_CODE_ERROR); - // 校验调用参数 - verify(loginLogService, times(1)).createLoginLog( - argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) - && o.getResult().equals(LoginResultEnum.CAPTCHA_CODE_ERROR.getResult())) - ); - } - - @Test - public void testLogin_badCredentials() { - // 准备参数 - String userIp = randomString(); - String userAgent = randomString(); - AuthLoginReqVO reqVO = randomPojo(AuthLoginReqVO.class); - // mock 验证码正确 - when(captchaService.getCaptchaCode(reqVO.getUuid())).thenReturn(reqVO.getCode()); - // mock 抛出异常 - when(authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(reqVO.getUsername(), reqVO.getPassword()))) - .thenThrow(new BadCredentialsException("测试账号或密码不正确")); - - // 调用, 并断言异常 - assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_BAD_CREDENTIALS); - // 校验调用参数 - verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid()); - verify(loginLogService, times(1)).createLoginLog( - argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) - && o.getResult().equals(LoginResultEnum.BAD_CREDENTIALS.getResult())) - ); - } - - @Test - public void testLogin_userDisabled() { - // 准备参数 - String userIp = randomString(); - String userAgent = randomString(); - AuthLoginReqVO reqVO = randomPojo(AuthLoginReqVO.class); - - // mock 验证码正确 - when(captchaService.getCaptchaCode(reqVO.getUuid())).thenReturn(reqVO.getCode()); - // mock 抛出异常 - when(authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(reqVO.getUsername(), reqVO.getPassword()))) - .thenThrow(new DisabledException("测试用户被禁用")); - - // 调用, 并断言异常 - assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_USER_DISABLED); - // 校验调用参数 - verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid()); - verify(loginLogService, times(1)).createLoginLog( - argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) - && o.getResult().equals(LoginResultEnum.USER_DISABLED.getResult())) - ); - } - - @Test - public void testLogin_unknownError() { - // 准备参数 - String userIp = randomString(); - String userAgent = randomString(); - AuthLoginReqVO reqVO = randomPojo(AuthLoginReqVO.class); - // mock 验证码正确 - when(captchaService.getCaptchaCode(reqVO.getUuid())).thenReturn(reqVO.getCode()); - // mock 抛出异常 - when(authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(reqVO.getUsername(), reqVO.getPassword()))) - .thenThrow(new AuthenticationException("测试未知异常") {}); - - // 调用, 并断言异常 - assertServiceException(() -> authService.login(reqVO, userIp, userAgent), AUTH_LOGIN_FAIL_UNKNOWN); - // 校验调用参数 - verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid()); - verify(loginLogService, times(1)).createLoginLog( - argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) - && o.getResult().equals(LoginResultEnum.UNKNOWN_ERROR.getResult())) - ); - } - - @Test - public void testLogin_success() { - // 准备参数 - String userIp = randomString(); - String userAgent = randomString(); - AuthLoginReqVO reqVO = randomPojo(AuthLoginReqVO.class); - - // mock 验证码正确 - when(captchaService.getCaptchaCode(reqVO.getUuid())).thenReturn(reqVO.getCode()); - // mock authentication - Long userId = randomLongId(); - Set userRoleIds = randomSet(Long.class); - LoginUser loginUser = randomPojo(LoginUser.class, o -> { - o.setId(userId); - o.setRoleIds(userRoleIds); - }); - when(authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(reqVO.getUsername(), reqVO.getPassword()))) - .thenReturn(authentication); - when(authentication.getPrincipal()).thenReturn(loginUser); - // mock 获得 User 拥有的角色编号数组 - when(permissionService.getUserRoleIds(userId, singleton(CommonStatusEnum.ENABLE.getStatus()))).thenReturn(userRoleIds); - // mock 缓存登录用户到 Redis - String token = randomString(); - when(userSessionService.createUserSession(loginUser, userIp, userAgent)).thenReturn(token); - - // 调用, 并断言异常 - String login = authService.login(reqVO, userIp, userAgent); - assertEquals(token, login); - // 校验调用参数 - verify(captchaService, times(1)).deleteCaptchaCode(reqVO.getUuid()); - verify(loginLogService, times(1)).createLoginLog( - argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGIN_USERNAME.getType()) - && o.getResult().equals(LoginResultEnum.SUCCESS.getResult())) - ); - } - - @Test - public void testLogout_success() { - // 准备参数 - String token = randomString(); - LoginUser loginUser = randomPojo(LoginUser.class); - // mock - when(userSessionService.getLoginUser(token)).thenReturn(loginUser); - // 调用 - authService.logout(token); - // 校验调用参数 - verify(userSessionService, times(1)).deleteUserSession(token); - verify(loginLogService, times(1)).createLoginLog( - argThat(o -> o.getLogType().equals(LoginLogTypeEnum.LOGOUT_SELF.getType()) - && o.getResult().equals(LoginResultEnum.SUCCESS.getResult())) - ); - } - -} diff --git a/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/auth/UserSessionServiceImplTest.java b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/auth/UserSessionServiceImplTest.java deleted file mode 100644 index ab739be796..0000000000 --- a/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/auth/UserSessionServiceImplTest.java +++ /dev/null @@ -1,250 +0,0 @@ -package cn.iocoder.yudao.module.system.service.auth; - -import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; -import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.date.DateUtils; -import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; -import cn.iocoder.yudao.framework.security.config.SecurityProperties; -import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.yudao.framework.test.core.ut.BaseDbAndRedisUnitTest; -import cn.iocoder.yudao.module.system.controller.admin.auth.vo.session.UserSessionPageReqVO; -import cn.iocoder.yudao.module.system.dal.dataobject.auth.UserSessionDO; -import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; -import cn.iocoder.yudao.module.system.dal.mysql.auth.UserSessionMapper; -import cn.iocoder.yudao.module.system.dal.redis.auth.LoginUserRedisDAO; -import cn.iocoder.yudao.module.system.enums.common.SexEnum; -import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; -import cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum; -import cn.iocoder.yudao.module.system.service.logger.LoginLogService; -import cn.iocoder.yudao.module.system.service.user.AdminUserService; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.time.Duration; -import java.util.Calendar; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime; -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; -import static java.util.Collections.singletonList; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.argThat; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -/** - * {@link UserSessionServiceImpl} 的单元测试 - * - * @author Lyon - */ -@Import({UserSessionServiceImpl.class, LoginUserRedisDAO.class}) -public class UserSessionServiceImplTest extends BaseDbAndRedisUnitTest { - - @Resource - private UserSessionServiceImpl userSessionService; - - @Resource - private UserSessionMapper userSessionMapper; - - @MockBean - private AdminUserService userService; - @MockBean - private LoginLogService loginLogService; - @Resource - private LoginUserRedisDAO loginUserRedisDAO; - - @MockBean - private SecurityProperties securityProperties; - - @BeforeEach - public void setUp() { - when(securityProperties.getSessionTimeout()).thenReturn(Duration.ofDays(1L)); - } - - @Test - public void testGetUserSessionPage_success() { - // mock 数据 - AdminUserDO dbUser = randomPojo(AdminUserDO.class, o -> { - o.setSex(randomEle(SexEnum.values()).getSex()); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - }); - when(userService.getUsersByUsername(eq(dbUser.getUsername()))).thenReturn(singletonList(dbUser)); - // 插入可被查询到的数据 - String userIp = randomString(); - UserSessionDO dbSession = randomPojo(UserSessionDO.class, o -> { - o.setUserId(dbUser.getId()); - o.setUserType(randomEle(UserTypeEnum.values()).getValue()); - o.setUserIp(userIp); - }); - userSessionMapper.insert(dbSession); - // 测试 username 不匹配 - userSessionMapper.insert(ObjectUtils.cloneIgnoreId(dbSession, o -> o.setUserId(123456L))); - // 测试 userIp 不匹配 - userSessionMapper.insert(ObjectUtils.cloneIgnoreId(dbSession, o -> o.setUserIp("testUserIp"))); - // 准备参数 - UserSessionPageReqVO reqVO = new UserSessionPageReqVO(); - reqVO.setUsername(dbUser.getUsername()); - reqVO.setUserIp(userIp); - - // 调用 - PageResult pageResult = userSessionService.getUserSessionPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbSession, pageResult.getList().get(0)); - } - - @Test - public void testClearSessionTimeout_none() { - // mock db 数据 - UserSessionDO userSession = randomPojo(UserSessionDO.class, o -> { - o.setUserType(randomEle(UserTypeEnum.values()).getValue()); - o.setSessionTimeout(addTime(Duration.ofDays(1))); - }); - userSessionMapper.insert(userSession); - - // 调用 - long count = userSessionService.deleteTimeoutSession(); - // 断言 - assertEquals(0, count); - assertPojoEquals(userSession, userSessionMapper.selectById(userSession.getId())); // 未删除 - } - - @Test // Redis 还存在的情况 - public void testClearSessionTimeout_exists() { - // mock db 数据 - UserSessionDO userSession = randomPojo(UserSessionDO.class, o -> { - o.setUserType(randomEle(UserTypeEnum.values()).getValue()); - o.setSessionTimeout(DateUtils.addDate(Calendar.DAY_OF_YEAR, -1)); - }); - userSessionMapper.insert(userSession); - // mock redis 数据 - loginUserRedisDAO.set(userSession.getToken(), new LoginUser()); - - // 调用 - long count = userSessionService.deleteTimeoutSession(); - // 断言 - assertEquals(0, count); - assertPojoEquals(userSession, userSessionMapper.selectById(userSession.getId())); // 未删除 - } - - @Test - public void testClearSessionTimeout_success() { - // mock db 数据 - UserSessionDO userSession = randomPojo(UserSessionDO.class, o -> { - o.setUserType(randomEle(UserTypeEnum.values()).getValue()); - o.setSessionTimeout(DateUtils.addDate(Calendar.DAY_OF_YEAR, -1)); - }); - userSessionMapper.insert(userSession); - - // 清空超时数据 - long count = userSessionService.deleteTimeoutSession(); - // 校验 - assertEquals(1, count); - assertNull(userSessionMapper.selectById(userSession.getId())); // 已删除 - verify(loginLogService).createLoginLog(argThat(loginLog -> { - assertPojoEquals(userSession, loginLog); - assertEquals(LoginLogTypeEnum.LOGOUT_TIMEOUT.getType(), loginLog.getLogType()); - assertEquals(LoginResultEnum.SUCCESS.getResult(), loginLog.getResult()); - return true; - })); - } - - @Test - public void testCreateUserSession_success() { - // 准备参数 - String userIp = randomString(); - String userAgent = randomString(); - LoginUser loginUser = randomPojo(LoginUser.class, o -> { - o.setUserType(randomEle(UserTypeEnum.values()).getValue()); - o.setTenantId(0L); // 租户设置为 0,因为暂未启用多租户组件 - }); - - // 调用 - String token = userSessionService.createUserSession(loginUser, userIp, userAgent); - // 校验 UserSessionDO 记录 - UserSessionDO userSessionDO = userSessionMapper.selectOne(UserSessionDO::getToken, token); - assertPojoEquals(loginUser, userSessionDO, "id", "updateTime"); - assertEquals(token, userSessionDO.getToken()); - assertEquals(userIp, userSessionDO.getUserIp()); - assertEquals(userAgent, userSessionDO.getUserAgent()); - // 校验 LoginUser 缓存 - LoginUser redisLoginUser = loginUserRedisDAO.get(token); - assertPojoEquals(loginUser, redisLoginUser, "username", "password"); - } - - @Test - public void testCreateRefreshUserSession() { - // 准备参数 - String token = randomString(); - - // mock redis 数据 - LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setUserType(randomEle(UserTypeEnum.values()).getValue())); - loginUserRedisDAO.set(token, loginUser); - // mock db 数据 - UserSessionDO userSession = randomPojo(UserSessionDO.class, o -> { - o.setUserType(randomEle(UserTypeEnum.values()).getValue()); - o.setToken(token); - }); - userSessionMapper.insert(userSession); - - // 调用 - userSessionService.refreshUserSession(token, loginUser); - // 校验 LoginUser 缓存 - LoginUser redisLoginUser = loginUserRedisDAO.get(token); - assertPojoEquals(redisLoginUser, loginUser, "username", "password"); - // 校验 UserSessionDO 记录 - UserSessionDO updateDO = userSessionMapper.selectOne(UserSessionDO::getToken, token); - assertEquals(updateDO.getUsername(), loginUser.getUsername()); - assertNotNull(userSession.getUpdateTime()); - assertNotNull(userSession.getSessionTimeout()); - } - - @Test - public void testDeleteUserSession_Token() { - // 准备参数 - String token = randomString(); - - // mock redis 数据 - loginUserRedisDAO.set(token, new LoginUser()); - // mock db 数据 - UserSessionDO userSession = randomPojo(UserSessionDO.class, o -> { - o.setUserType(randomEle(UserTypeEnum.values()).getValue()); - o.setToken(token); - }); - userSessionMapper.insert(userSession); - - // 调用 - userSessionService.deleteUserSession(token); - // 校验数据不存在了 - assertNull(loginUserRedisDAO.get(token)); - assertNull(userSessionMapper.selectOne(UserSessionDO::getToken, token)); - } - - @Test - public void testDeleteUserSession_Id() { - // mock db 数据 - UserSessionDO userSession = randomPojo(UserSessionDO.class, o -> { - o.setUserType(randomEle(UserTypeEnum.values()).getValue()); - }); - userSessionMapper.insert(userSession); - // mock redis 数据 - loginUserRedisDAO.set(userSession.getToken(), new LoginUser()); - - // 准备参数 - Long id = userSession.getId(); - - // 调用 - userSessionService.deleteUserSession(id); - // 校验数据不存在了 - assertNull(loginUserRedisDAO.get(userSession.getToken())); - assertNull(userSessionMapper.selectById(id)); - } - -} diff --git a/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ApproveServiceImplTest.java b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ApproveServiceImplTest.java new file mode 100644 index 0000000000..a9ea70ff4f --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ApproveServiceImplTest.java @@ -0,0 +1,267 @@ +package cn.iocoder.yudao.module.system.service.oauth2; + +import cn.hutool.core.util.ObjectUtil; +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.framework.common.util.date.DateUtils; +import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ApproveDO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO; +import cn.iocoder.yudao.module.system.dal.mysql.oauth2.OAuth2ApproveMapper; +import org.assertj.core.util.Lists; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; +import java.time.Duration; +import java.util.*; + +import static cn.hutool.core.util.RandomUtil.*; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.when; + +/** + * {@link OAuth2ApproveServiceImpl} 的单元测试类 + * + * @author 芋道源码 + */ +@Import(OAuth2ApproveServiceImpl.class) +public class OAuth2ApproveServiceImplTest extends BaseDbUnitTest { + + @Resource + private OAuth2ApproveServiceImpl oauth2ApproveService; + + @Resource + private OAuth2ApproveMapper oauth2ApproveMapper; + + @MockBean + private OAuth2ClientService oauth2ClientService; + + @Test + public void checkForPreApproval_clientAutoApprove() { + // 准备参数 + Long userId = randomLongId(); + Integer userType = randomEle(UserTypeEnum.values()).getValue(); + String clientId = randomString(); + List requestedScopes = Lists.newArrayList("read"); + // mock 方法 + when(oauth2ClientService.validOAuthClientFromCache(eq(clientId))) + .thenReturn(randomPojo(OAuth2ClientDO.class).setAutoApproveScopes(requestedScopes)); + + // 调用 + boolean success = oauth2ApproveService.checkForPreApproval(userId, userType, + clientId, requestedScopes); + // 断言 + assertTrue(success); + List result = oauth2ApproveMapper.selectList(); + assertEquals(1, result.size()); + assertEquals(userId, result.get(0).getUserId()); + assertEquals(userType, result.get(0).getUserType()); + assertEquals(clientId, result.get(0).getClientId()); + assertEquals("read", result.get(0).getScope()); + assertTrue(result.get(0).getApproved()); + assertFalse(DateUtils.isExpired(result.get(0).getExpiresTime())); + } + + @Test + public void checkForPreApproval_approve() { + // 准备参数 + Long userId = randomLongId(); + Integer userType = randomEle(UserTypeEnum.values()).getValue(); + String clientId = randomString(); + List requestedScopes = Lists.newArrayList("read"); + // mock 方法 + when(oauth2ClientService.validOAuthClientFromCache(eq(clientId))) + .thenReturn(randomPojo(OAuth2ClientDO.class).setAutoApproveScopes(null)); + // mock 数据 + OAuth2ApproveDO approve = randomPojo(OAuth2ApproveDO.class).setUserId(userId) + .setUserType(userType).setClientId(clientId).setScope("read") + .setExpiresTime(addTime(Duration.ofDays(1))).setApproved(true); // 同意 + oauth2ApproveMapper.insert(approve); + + // 调用 + boolean success = oauth2ApproveService.checkForPreApproval(userId, userType, + clientId, requestedScopes); + // 断言 + assertTrue(success); + } + + @Test + public void checkForPreApproval_reject() { + // 准备参数 + Long userId = randomLongId(); + Integer userType = randomEle(UserTypeEnum.values()).getValue(); + String clientId = randomString(); + List requestedScopes = Lists.newArrayList("read"); + // mock 方法 + when(oauth2ClientService.validOAuthClientFromCache(eq(clientId))) + .thenReturn(randomPojo(OAuth2ClientDO.class).setAutoApproveScopes(null)); + // mock 数据 + OAuth2ApproveDO approve = randomPojo(OAuth2ApproveDO.class).setUserId(userId) + .setUserType(userType).setClientId(clientId).setScope("read") + .setExpiresTime(addTime(Duration.ofDays(1))).setApproved(false); // 拒绝 + oauth2ApproveMapper.insert(approve); + + // 调用 + boolean success = oauth2ApproveService.checkForPreApproval(userId, userType, + clientId, requestedScopes); + // 断言 + assertFalse(success); + } + + @Test + public void testUpdateAfterApproval_none() { + // 准备参数 + Long userId = randomLongId(); + Integer userType = randomEle(UserTypeEnum.values()).getValue(); + String clientId = randomString(); + + // 调用 + boolean success = oauth2ApproveService.updateAfterApproval(userId, userType, clientId, + null); + // 断言 + assertTrue(success); + List result = oauth2ApproveMapper.selectList(); + assertEquals(0, result.size()); + } + + @Test + public void testUpdateAfterApproval_approved() { + // 准备参数 + Long userId = randomLongId(); + Integer userType = randomEle(UserTypeEnum.values()).getValue(); + String clientId = randomString(); + Map requestedScopes = new LinkedHashMap<>(); // 有序,方便判断 + requestedScopes.put("read", true); + requestedScopes.put("write", false); + // mock 方法 + + // 调用 + boolean success = oauth2ApproveService.updateAfterApproval(userId, userType, clientId, + requestedScopes); + // 断言 + assertTrue(success); + List result = oauth2ApproveMapper.selectList(); + assertEquals(2, result.size()); + // read + assertEquals(userId, result.get(0).getUserId()); + assertEquals(userType, result.get(0).getUserType()); + assertEquals(clientId, result.get(0).getClientId()); + assertEquals("read", result.get(0).getScope()); + assertTrue(result.get(0).getApproved()); + assertFalse(DateUtils.isExpired(result.get(0).getExpiresTime())); + // write + assertEquals(userId, result.get(1).getUserId()); + assertEquals(userType, result.get(1).getUserType()); + assertEquals(clientId, result.get(1).getClientId()); + assertEquals("write", result.get(1).getScope()); + assertFalse(result.get(1).getApproved()); + assertFalse(DateUtils.isExpired(result.get(1).getExpiresTime())); + } + + @Test + public void testUpdateAfterApproval_reject() { + // 准备参数 + Long userId = randomLongId(); + Integer userType = randomEle(UserTypeEnum.values()).getValue(); + String clientId = randomString(); + Map requestedScopes = new LinkedHashMap<>(); + requestedScopes.put("write", false); + // mock 方法 + + // 调用 + boolean success = oauth2ApproveService.updateAfterApproval(userId, userType, clientId, + requestedScopes); + // 断言 + assertFalse(success); + List result = oauth2ApproveMapper.selectList(); + assertEquals(1, result.size()); + // write + assertEquals(userId, result.get(0).getUserId()); + assertEquals(userType, result.get(0).getUserType()); + assertEquals(clientId, result.get(0).getClientId()); + assertEquals("write", result.get(0).getScope()); + assertFalse(result.get(0).getApproved()); + assertFalse(DateUtils.isExpired(result.get(0).getExpiresTime())); + } + + @Test + public void testGetApproveList() { + // 准备参数 + Long userId = 10L; + Integer userType = UserTypeEnum.ADMIN.getValue(); + String clientId = randomString(); + // mock 数据 + OAuth2ApproveDO approve = randomPojo(OAuth2ApproveDO.class).setUserId(userId) + .setUserType(userType).setClientId(clientId).setExpiresTime(addTime(Duration.ofDays(1L))); + oauth2ApproveMapper.insert(approve); // 未过期 + oauth2ApproveMapper.insert(ObjectUtil.clone(approve).setId(null) + .setExpiresTime(addTime(Duration.ofDays(-1L)))); // 已过期 + + // 调用 + List result = oauth2ApproveService.getApproveList(userId, userType, clientId); + // 断言 + assertEquals(1, result.size()); + assertPojoEquals(approve, result.get(0)); + } + + @Test + public void testSaveApprove_insert() { + // 准备参数 + Long userId = randomLongId(); + Integer userType = randomEle(UserTypeEnum.values()).getValue(); + String clientId = randomString(); + String scope = randomString(); + Boolean approved = randomBoolean(); + Date expireTime = randomDay(1, 30); + // mock 方法 + + // 调用 + oauth2ApproveService.saveApprove(userId, userType, clientId, + scope, approved, expireTime); + // 断言 + List result = oauth2ApproveMapper.selectList(); + assertEquals(1, result.size()); + assertEquals(userId, result.get(0).getUserId()); + assertEquals(userType, result.get(0).getUserType()); + assertEquals(clientId, result.get(0).getClientId()); + assertEquals(scope, result.get(0).getScope()); + assertEquals(approved, result.get(0).getApproved()); + assertEquals(expireTime, result.get(0).getExpiresTime()); + } + + @Test + public void testSaveApprove_update() { + // mock 数据 + OAuth2ApproveDO approve = randomPojo(OAuth2ApproveDO.class); + oauth2ApproveMapper.insert(approve); + // 准备参数 + Long userId = approve.getUserId(); + Integer userType = approve.getUserType(); + String clientId = approve.getClientId(); + String scope = approve.getScope(); + Boolean approved = randomBoolean(); + Date expireTime = randomDay(1, 30); + // mock 方法 + + // 调用 + oauth2ApproveService.saveApprove(userId, userType, clientId, + scope, approved, expireTime); + // 断言 + List result = oauth2ApproveMapper.selectList(); + assertEquals(1, result.size()); + assertEquals(approve.getId(), result.get(0).getId()); + assertEquals(userId, result.get(0).getUserId()); + assertEquals(userType, result.get(0).getUserType()); + assertEquals(clientId, result.get(0).getClientId()); + assertEquals(scope, result.get(0).getScope()); + assertEquals(approved, result.get(0).getApproved()); + assertEquals(expireTime, result.get(0).getExpiresTime()); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ClientServiceImplTest.java b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ClientServiceImplTest.java new file mode 100755 index 0000000000..c7d4ce5781 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2ClientServiceImplTest.java @@ -0,0 +1,215 @@ +package cn.iocoder.yudao.module.system.service.oauth2; + +import cn.hutool.core.map.MapUtil; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client.OAuth2ClientCreateReqVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client.OAuth2ClientPageReqVO; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.client.OAuth2ClientUpdateReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO; +import cn.iocoder.yudao.module.system.dal.mysql.oauth2.OAuth2ClientMapper; +import cn.iocoder.yudao.module.system.mq.producer.auth.OAuth2ClientProducer; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.max; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.verify; + +/** +* {@link OAuth2ClientServiceImpl} 的单元测试类 +* +* @author 芋道源码 +*/ +@Import(OAuth2ClientServiceImpl.class) +public class OAuth2ClientServiceImplTest extends BaseDbUnitTest { + + @Resource + private OAuth2ClientServiceImpl oauth2ClientService; + + @Resource + private OAuth2ClientMapper oauth2ClientMapper; + + @MockBean + private OAuth2ClientProducer oauth2ClientProducer; + + @Test + public void testInitLocalCache() { + // mock 数据 + OAuth2ClientDO clientDO1 = randomPojo(OAuth2ClientDO.class); + oauth2ClientMapper.insert(clientDO1); + OAuth2ClientDO clientDO2 = randomPojo(OAuth2ClientDO.class); + oauth2ClientMapper.insert(clientDO2); + + // 调用 + oauth2ClientService.initLocalCache(); + // 断言 clientCache 缓存 + Map clientCache = oauth2ClientService.getClientCache(); + assertEquals(2, clientCache.size()); + assertPojoEquals(clientDO1, clientCache.get(clientDO1.getClientId())); + assertPojoEquals(clientDO2, clientCache.get(clientDO2.getClientId())); + // 断言 maxUpdateTime 缓存 + assertEquals(max(clientDO1.getUpdateTime(), clientDO2.getUpdateTime()), oauth2ClientService.getMaxUpdateTime()); + } + + @Test + public void testCreateOAuth2Client_success() { + // 准备参数 + OAuth2ClientCreateReqVO reqVO = randomPojo(OAuth2ClientCreateReqVO.class, + o -> o.setLogo(randomString())); + + // 调用 + Long oauth2ClientId = oauth2ClientService.createOAuth2Client(reqVO); + // 断言 + assertNotNull(oauth2ClientId); + // 校验记录的属性是否正确 + OAuth2ClientDO oAuth2Client = oauth2ClientMapper.selectById(oauth2ClientId); + assertPojoEquals(reqVO, oAuth2Client); + verify(oauth2ClientProducer).sendOAuth2ClientRefreshMessage(); + } + + @Test + public void testUpdateOAuth2Client_success() { + // mock 数据 + OAuth2ClientDO dbOAuth2Client = randomPojo(OAuth2ClientDO.class); + oauth2ClientMapper.insert(dbOAuth2Client);// @Sql: 先插入出一条存在的数据 + // 准备参数 + OAuth2ClientUpdateReqVO reqVO = randomPojo(OAuth2ClientUpdateReqVO.class, o -> { + o.setId(dbOAuth2Client.getId()); // 设置更新的 ID + o.setLogo(randomString()); + }); + + // 调用 + oauth2ClientService.updateOAuth2Client(reqVO); + // 校验是否更新正确 + OAuth2ClientDO oAuth2Client = oauth2ClientMapper.selectById(reqVO.getId()); // 获取最新的 + assertPojoEquals(reqVO, oAuth2Client); + verify(oauth2ClientProducer).sendOAuth2ClientRefreshMessage(); + } + + @Test + public void testUpdateOAuth2Client_notExists() { + // 准备参数 + OAuth2ClientUpdateReqVO reqVO = randomPojo(OAuth2ClientUpdateReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> oauth2ClientService.updateOAuth2Client(reqVO), OAUTH2_CLIENT_NOT_EXISTS); + } + + @Test + public void testDeleteOAuth2Client_success() { + // mock 数据 + OAuth2ClientDO dbOAuth2Client = randomPojo(OAuth2ClientDO.class); + oauth2ClientMapper.insert(dbOAuth2Client);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbOAuth2Client.getId(); + + // 调用 + oauth2ClientService.deleteOAuth2Client(id); + // 校验数据不存在了 + assertNull(oauth2ClientMapper.selectById(id)); + verify(oauth2ClientProducer).sendOAuth2ClientRefreshMessage(); + } + + @Test + public void testDeleteOAuth2Client_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> oauth2ClientService.deleteOAuth2Client(id), OAUTH2_CLIENT_NOT_EXISTS); + } + + @Test + public void testValidateClientIdExists_withId() { + // mock 数据 + OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId("tudou"); + oauth2ClientMapper.insert(client); + // 准备参数 + Long id = randomLongId(); + String clientId = "tudou"; + + // 调用,不会报错 + assertServiceException(() -> oauth2ClientService.validateClientIdExists(id, clientId), OAUTH2_CLIENT_EXISTS); + } + + @Test + public void testValidateClientIdExists_noId() { + // mock 数据 + OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId("tudou"); + oauth2ClientMapper.insert(client); + // 准备参数 + String clientId = "tudou"; + + // 调用,不会报错 + assertServiceException(() -> oauth2ClientService.validateClientIdExists(null, clientId), OAUTH2_CLIENT_EXISTS); + } + + @Test + public void testGetOAuth2ClientPage() { + // mock 数据 + OAuth2ClientDO dbOAuth2Client = randomPojo(OAuth2ClientDO.class, o -> { // 等会查询到 + o.setName("潜龙"); + o.setStatus(CommonStatusEnum.ENABLE.getStatus()); + }); + oauth2ClientMapper.insert(dbOAuth2Client); + // 测试 name 不匹配 + oauth2ClientMapper.insert(cloneIgnoreId(dbOAuth2Client, o -> o.setName("凤凰"))); + // 测试 status 不匹配 + oauth2ClientMapper.insert(cloneIgnoreId(dbOAuth2Client, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); + // 准备参数 + OAuth2ClientPageReqVO reqVO = new OAuth2ClientPageReqVO(); + reqVO.setName("龙"); + reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); + + // 调用 + PageResult pageResult = oauth2ClientService.getOAuth2ClientPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbOAuth2Client, pageResult.getList().get(0)); + } + + @Test + public void testValidOAuthClientFromCache() { + // mock 方法 + OAuth2ClientDO client = randomPojo(OAuth2ClientDO.class).setClientId("default") + .setStatus(CommonStatusEnum.ENABLE.getStatus()); + OAuth2ClientDO client02 = randomPojo(OAuth2ClientDO.class).setClientId("disable") + .setStatus(CommonStatusEnum.DISABLE.getStatus()); + Map clientCache = MapUtil.builder() + .put(client.getClientId(), client) + .put(client02.getClientId(), client02).build(); + oauth2ClientService.setClientCache(clientCache); + + // 调用,并断言 + assertServiceException(() -> oauth2ClientService.validOAuthClientFromCache(randomString(), + null, null, null, null), OAUTH2_CLIENT_NOT_EXISTS); + assertServiceException(() -> oauth2ClientService.validOAuthClientFromCache("disable", + null, null, null, null), OAUTH2_CLIENT_DISABLE); + assertServiceException(() -> oauth2ClientService.validOAuthClientFromCache("default", + randomString(), null, null, null), OAUTH2_CLIENT_CLIENT_SECRET_ERROR); + assertServiceException(() -> oauth2ClientService.validOAuthClientFromCache("default", + null, randomString(), null, null), OAUTH2_CLIENT_AUTHORIZED_GRANT_TYPE_NOT_EXISTS); + assertServiceException(() -> oauth2ClientService.validOAuthClientFromCache("default", + null, null, Collections.singleton(randomString()), null), OAUTH2_CLIENT_SCOPE_OVER); + assertServiceException(() -> oauth2ClientService.validOAuthClientFromCache("default", + null, null, null, "test"), OAUTH2_CLIENT_REDIRECT_URI_NOT_MATCH, "test"); + // 成功调用 + OAuth2ClientDO result = oauth2ClientService.validOAuthClientFromCache(client.getClientId(), client.getSecret(), + client.getAuthorizedGrantTypes().get(0), client.getScopes(), client.getRedirectUris().get(0)); + assertPojoEquals(client, result); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2CodeServiceImplTest.java b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2CodeServiceImplTest.java new file mode 100644 index 0000000000..667490251c --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2CodeServiceImplTest.java @@ -0,0 +1,100 @@ +package cn.iocoder.yudao.module.system.service.oauth2; + +import cn.hutool.core.util.RandomUtil; +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.framework.common.util.date.DateUtils; +import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2CodeDO; +import cn.iocoder.yudao.module.system.dal.mysql.oauth2.OAuth2CodeMapper; +import org.assertj.core.util.Lists; +import org.junit.jupiter.api.Test; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; +import java.time.Duration; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.OAUTH2_CODE_EXPIRE; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.OAUTH2_CODE_NOT_EXISTS; +import static org.junit.jupiter.api.Assertions.*; + +/** + * {@link OAuth2CodeServiceImpl} 的单元测试类 + * + * @author 芋道源码 + */ +@Import(OAuth2CodeServiceImpl.class) +class OAuth2CodeServiceImplTest extends BaseDbUnitTest { + + @Resource + private OAuth2CodeServiceImpl oauth2CodeService; + + @Resource + private OAuth2CodeMapper oauth2CodeMapper; + + @Test + public void testCreateAuthorizationCode() { + // 准备参数 + Long userId = randomLongId(); + Integer userType = RandomUtil.randomEle(UserTypeEnum.values()).getValue(); + String clientId = randomString(); + List scopes = Lists.newArrayList("read", "write"); + String redirectUri = randomString(); + String state = randomString(); + + // 调用 + OAuth2CodeDO codeDO = oauth2CodeService.createAuthorizationCode(userId, userType, clientId, + scopes, redirectUri, state); + // 断言 + OAuth2CodeDO dbCodeDO = oauth2CodeMapper.selectByCode(codeDO.getCode()); + assertPojoEquals(codeDO, dbCodeDO, "createTime", "updateTime", "deleted"); + assertEquals(userId, codeDO.getUserId()); + assertEquals(userType, codeDO.getUserType()); + assertEquals(clientId, codeDO.getClientId()); + assertEquals(scopes, codeDO.getScopes()); + assertEquals(redirectUri, codeDO.getRedirectUri()); + assertEquals(state, codeDO.getState()); + assertFalse(DateUtils.isExpired(codeDO.getExpiresTime())); + } + + @Test + public void testConsumeAuthorizationCode_null() { + // 调用,并断言 + assertServiceException(() -> oauth2CodeService.consumeAuthorizationCode(randomString()), + OAUTH2_CODE_NOT_EXISTS); + } + + @Test + public void testConsumeAuthorizationCode_expired() { + // 准备参数 + String code = "test_code"; + // mock 数据 + OAuth2CodeDO codeDO = randomPojo(OAuth2CodeDO.class).setCode(code) + .setExpiresTime(addTime(Duration.ofDays(-1))); + oauth2CodeMapper.insert(codeDO); + + // 调用,并断言 + assertServiceException(() -> oauth2CodeService.consumeAuthorizationCode(code), + OAUTH2_CODE_EXPIRE); + } + + @Test + public void testConsumeAuthorizationCode_success() { + // 准备参数 + String code = "test_code"; + // mock 数据 + OAuth2CodeDO codeDO = randomPojo(OAuth2CodeDO.class).setCode(code) + .setExpiresTime(addTime(Duration.ofDays(1))); + oauth2CodeMapper.insert(codeDO); + + // 调用 + OAuth2CodeDO result = oauth2CodeService.consumeAuthorizationCode(code); + assertPojoEquals(codeDO, result); + assertNull(oauth2CodeMapper.selectByCode(code)); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2GrantServiceImplTest.java b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2GrantServiceImplTest.java new file mode 100644 index 0000000000..944086671b --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2GrantServiceImplTest.java @@ -0,0 +1,165 @@ +package cn.iocoder.yudao.module.system.service.oauth2; + +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2CodeDO; +import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; +import cn.iocoder.yudao.module.system.service.auth.AdminAuthService; +import com.google.common.collect.Lists; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; + +import java.util.List; + +import static cn.hutool.core.util.RandomUtil.randomEle; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.when; + +/** + * {@link OAuth2GrantServiceImpl} 的单元测试 + * + * @author 芋道源码 + */ +public class OAuth2GrantServiceImplTest extends BaseMockitoUnitTest { + + @InjectMocks + private OAuth2GrantServiceImpl oauth2GrantService; + + @Mock + private OAuth2TokenService oauth2TokenService; + @Mock + private OAuth2CodeService oauth2CodeService; + @Mock + private AdminAuthService adminAuthService; + + @Test + public void testGrantImplicit() { + // 准备参数 + Long userId = randomLongId(); + Integer userType = randomEle(UserTypeEnum.values()).getValue(); + String clientId = randomString(); + List scopes = Lists.newArrayList("read", "write"); + // mock 方法 + OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class); + when(oauth2TokenService.createAccessToken(eq(userId), eq(userType), + eq(clientId), eq(scopes))).thenReturn(accessTokenDO); + + // 调用,并断言 + assertPojoEquals(accessTokenDO, oauth2GrantService.grantImplicit( + userId, userType, clientId, scopes)); + } + + @Test + public void testGrantAuthorizationCodeForCode() { + // 准备参数 + Long userId = randomLongId(); + Integer userType = randomEle(UserTypeEnum.values()).getValue(); + String clientId = randomString(); + List scopes = Lists.newArrayList("read", "write"); + String redirectUri = randomString(); + String state = randomString(); + // mock 方法 + OAuth2CodeDO codeDO = randomPojo(OAuth2CodeDO.class); + when(oauth2CodeService.createAuthorizationCode(eq(userId), eq(userType), + eq(clientId), eq(scopes), eq(redirectUri), eq(state))).thenReturn(codeDO); + + // 调用,并断言 + assertEquals(codeDO.getCode(), oauth2GrantService.grantAuthorizationCodeForCode(userId, userType, + clientId, scopes, redirectUri, state)); + } + + @Test + public void testGrantAuthorizationCodeForAccessToken() { + // 准备参数 + String clientId = randomString(); + String code = randomString(); + List scopes = Lists.newArrayList("read", "write"); + String redirectUri = randomString(); + String state = randomString(); + // mock 方法(code) + OAuth2CodeDO codeDO = randomPojo(OAuth2CodeDO.class, o -> { + o.setClientId(clientId); + o.setRedirectUri(redirectUri); + o.setState(state); + o.setScopes(scopes); + }); + when(oauth2CodeService.consumeAuthorizationCode(eq(code))).thenReturn(codeDO); + // mock 方法(创建令牌) + OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class); + when(oauth2TokenService.createAccessToken(eq(codeDO.getUserId()), eq(codeDO.getUserType()), + eq(codeDO.getClientId()), eq(codeDO.getScopes()))).thenReturn(accessTokenDO); + + // 调用,并断言 + assertPojoEquals(accessTokenDO, oauth2GrantService.grantAuthorizationCodeForAccessToken( + clientId, code, redirectUri, state)); + } + + @Test + public void testGrantPassword() { + // 准备参数 + String username = randomString(); + String password = randomString(); + String clientId = randomString(); + List scopes = Lists.newArrayList("read", "write"); + // mock 方法(认证) + AdminUserDO user = randomPojo(AdminUserDO.class); + when(adminAuthService.authenticate(eq(username), eq(password))).thenReturn(user); + // mock 方法(访问令牌) + OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class); + when(oauth2TokenService.createAccessToken(eq(user.getId()), eq(UserTypeEnum.ADMIN.getValue()), + eq(clientId), eq(scopes))).thenReturn(accessTokenDO); + + // 调用,并断言 + assertPojoEquals(accessTokenDO, oauth2GrantService.grantPassword( + username, password, clientId, scopes)); + } + + @Test + public void testGrantRefreshToken() { + // 准备参数 + String refreshToken = randomString(); + String clientId = randomString(); + // mock 方法 + OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class); + when(oauth2TokenService.refreshAccessToken(eq(refreshToken), eq(clientId))) + .thenReturn(accessTokenDO); + + // 调用,并断言 + assertPojoEquals(accessTokenDO, oauth2GrantService.grantRefreshToken( + refreshToken, clientId)); + } + + @Test + public void testRevokeToken_clientIdError() { + // 准备参数 + String clientId = randomString(); + String accessToken = randomString(); + // mock 方法 + OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class); + when(oauth2TokenService.getAccessToken(eq(accessToken))).thenReturn(accessTokenDO); + + // 调用,并断言 + assertFalse(oauth2GrantService.revokeToken(clientId, accessToken)); + } + + @Test + public void testRevokeToken_success() { + // 准备参数 + String clientId = randomString(); + String accessToken = randomString(); + // mock 方法(访问令牌) + OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class).setClientId(clientId); + when(oauth2TokenService.getAccessToken(eq(accessToken))).thenReturn(accessTokenDO); + // mock 方法(移除) + when(oauth2TokenService.removeAccessToken(eq(accessToken))).thenReturn(accessTokenDO); + + // 调用,并断言 + assertTrue(oauth2GrantService.revokeToken(clientId, accessToken)); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImplTest.java b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImplTest.java new file mode 100644 index 0000000000..7cf5aa2729 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImplTest.java @@ -0,0 +1,290 @@ +package cn.iocoder.yudao.module.system.service.oauth2; + +import cn.hutool.core.util.RandomUtil; +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; +import cn.iocoder.yudao.framework.common.exception.ErrorCode; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.date.DateUtils; +import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; +import cn.iocoder.yudao.framework.test.core.ut.BaseDbAndRedisUnitTest; +import cn.iocoder.yudao.module.system.controller.admin.oauth2.vo.token.OAuth2AccessTokenPageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2ClientDO; +import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2RefreshTokenDO; +import cn.iocoder.yudao.module.system.dal.mysql.oauth2.OAuth2AccessTokenMapper; +import cn.iocoder.yudao.module.system.dal.mysql.oauth2.OAuth2RefreshTokenMapper; +import cn.iocoder.yudao.module.system.dal.redis.oauth2.OAuth2AccessTokenRedisDAO; +import org.assertj.core.util.Lists; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; +import java.time.Duration; +import java.util.Date; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.addTime; +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.when; + +/** + * {@link OAuth2TokenServiceImpl} 的单元测试类 + * + * @author 芋道源码 + */ +@Import({OAuth2TokenServiceImpl.class, OAuth2AccessTokenRedisDAO.class}) +public class OAuth2TokenServiceImplTest extends BaseDbAndRedisUnitTest { + + @Resource + private OAuth2TokenServiceImpl oauth2TokenService; + + @Resource + private OAuth2AccessTokenMapper oauth2AccessTokenMapper; + @Resource + private OAuth2RefreshTokenMapper oauth2RefreshTokenMapper; + + @Resource + private OAuth2AccessTokenRedisDAO oauth2AccessTokenRedisDAO; + + @MockBean + private OAuth2ClientService oauth2ClientService; + + @Test + public void testCreateAccessToken() { + TenantContextHolder.setTenantId(0L); + // 准备参数 + Long userId = randomLongId(); + Integer userType = RandomUtil.randomEle(UserTypeEnum.values()).getValue(); + String clientId = randomString(); + List scopes = Lists.newArrayList("read", "write"); + // mock 方法 + OAuth2ClientDO clientDO = randomPojo(OAuth2ClientDO.class).setClientId(clientId) + .setAccessTokenValiditySeconds(30).setRefreshTokenValiditySeconds(60); + when(oauth2ClientService.validOAuthClientFromCache(eq(clientId))).thenReturn(clientDO); + + // 调用 + OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.createAccessToken(userId, userType, clientId, scopes); + // 断言访问令牌 + OAuth2AccessTokenDO dbAccessTokenDO = oauth2AccessTokenMapper.selectByAccessToken(accessTokenDO.getAccessToken()); + assertPojoEquals(accessTokenDO, dbAccessTokenDO, "createTime", "updateTime", "deleted"); + assertEquals(userId, accessTokenDO.getUserId()); + assertEquals(userType, accessTokenDO.getUserType()); + assertEquals(clientId, accessTokenDO.getClientId()); + assertEquals(scopes, accessTokenDO.getScopes()); + assertFalse(DateUtils.isExpired(accessTokenDO.getExpiresTime())); + // 断言访问令牌的缓存 + OAuth2AccessTokenDO redisAccessTokenDO = oauth2AccessTokenRedisDAO.get(accessTokenDO.getAccessToken()); + assertPojoEquals(accessTokenDO, redisAccessTokenDO, "createTime", "updateTime", "deleted"); + // 断言刷新令牌 + OAuth2RefreshTokenDO refreshTokenDO = oauth2RefreshTokenMapper.selectList().get(0); + assertPojoEquals(accessTokenDO, refreshTokenDO, "id", "expiresTime", "createTime", "updateTime", "deleted"); + assertFalse(DateUtils.isExpired(refreshTokenDO.getExpiresTime())); + } + + @Test + public void testRefreshAccessToken_null() { + // 准备参数 + String refreshToken = randomString(); + String clientId = randomString(); + // mock 方法 + + // 调用,并断言 + assertServiceException(() -> oauth2TokenService.refreshAccessToken(refreshToken, clientId), + new ErrorCode(400, "无效的刷新令牌")); + } + + @Test + public void testRefreshAccessToken_clientIdError() { + // 准备参数 + String refreshToken = randomString(); + String clientId = randomString(); + // mock 方法 + OAuth2ClientDO clientDO = randomPojo(OAuth2ClientDO.class).setClientId(clientId); + when(oauth2ClientService.validOAuthClientFromCache(eq(clientId))).thenReturn(clientDO); + // mock 数据(访问令牌) + OAuth2RefreshTokenDO refreshTokenDO = randomPojo(OAuth2RefreshTokenDO.class) + .setRefreshToken(refreshToken).setClientId("error"); + oauth2RefreshTokenMapper.insert(refreshTokenDO); + + // 调用,并断言 + assertServiceException(() -> oauth2TokenService.refreshAccessToken(refreshToken, clientId), + new ErrorCode(400, "刷新令牌的客户端编号不正确")); + } + + @Test + public void testRefreshAccessToken_expired() { + // 准备参数 + String refreshToken = randomString(); + String clientId = randomString(); + // mock 方法 + OAuth2ClientDO clientDO = randomPojo(OAuth2ClientDO.class).setClientId(clientId); + when(oauth2ClientService.validOAuthClientFromCache(eq(clientId))).thenReturn(clientDO); + // mock 数据(访问令牌) + OAuth2RefreshTokenDO refreshTokenDO = randomPojo(OAuth2RefreshTokenDO.class) + .setRefreshToken(refreshToken).setClientId(clientId) + .setExpiresTime(addTime(Duration.ofDays(-1))); + oauth2RefreshTokenMapper.insert(refreshTokenDO); + + // 调用,并断言 + assertServiceException(() -> oauth2TokenService.refreshAccessToken(refreshToken, clientId), + new ErrorCode(401, "刷新令牌已过期")); + assertEquals(0, oauth2RefreshTokenMapper.selectCount()); + } + + @Test + public void testRefreshAccessToken_success() { + TenantContextHolder.setTenantId(0L); + // 准备参数 + String refreshToken = randomString(); + String clientId = randomString(); + // mock 方法 + OAuth2ClientDO clientDO = randomPojo(OAuth2ClientDO.class).setClientId(clientId) + .setAccessTokenValiditySeconds(30); + when(oauth2ClientService.validOAuthClientFromCache(eq(clientId))).thenReturn(clientDO); + // mock 数据(访问令牌) + OAuth2RefreshTokenDO refreshTokenDO = randomPojo(OAuth2RefreshTokenDO.class) + .setRefreshToken(refreshToken).setClientId(clientId) + .setExpiresTime(addTime(Duration.ofDays(1))); + oauth2RefreshTokenMapper.insert(refreshTokenDO); + // mock 数据(访问令牌) + OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class).setRefreshToken(refreshToken); + oauth2AccessTokenMapper.insert(accessTokenDO); + oauth2AccessTokenRedisDAO.set(accessTokenDO); + + // 调用 + OAuth2AccessTokenDO newAccessTokenDO = oauth2TokenService.refreshAccessToken(refreshToken, clientId); + // 断言,老的访问令牌被删除 + assertNull(oauth2AccessTokenMapper.selectByAccessToken(accessTokenDO.getAccessToken())); + assertNull(oauth2AccessTokenRedisDAO.get(accessTokenDO.getAccessToken())); + // 断言,新的访问令牌 + OAuth2AccessTokenDO dbAccessTokenDO = oauth2AccessTokenMapper.selectByAccessToken(newAccessTokenDO.getAccessToken()); + assertPojoEquals(newAccessTokenDO, dbAccessTokenDO, "createTime", "updateTime", "deleted"); + assertPojoEquals(newAccessTokenDO, refreshTokenDO, "id", "expiresTime", "createTime", "updateTime", "deleted", + "creator", "updater"); + assertFalse(DateUtils.isExpired(newAccessTokenDO.getExpiresTime())); + // 断言,新的访问令牌的缓存 + OAuth2AccessTokenDO redisAccessTokenDO = oauth2AccessTokenRedisDAO.get(newAccessTokenDO.getAccessToken()); + assertPojoEquals(newAccessTokenDO, redisAccessTokenDO, "createTime", "updateTime", "deleted"); + } + + @Test + public void testGetAccessToken() { + // mock 数据(访问令牌) + OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class) + .setExpiresTime(addTime(Duration.ofDays(1))); + oauth2AccessTokenMapper.insert(accessTokenDO); + // 准备参数 + String accessToken = accessTokenDO.getAccessToken(); + + // 调用 + OAuth2AccessTokenDO result = oauth2TokenService.getAccessToken(accessToken); + // 断言 + assertPojoEquals(accessTokenDO, result, "createTime", "updateTime", "deleted", + "creator", "updater"); + assertPojoEquals(accessTokenDO, oauth2AccessTokenRedisDAO.get(accessToken), "createTime", "updateTime", "deleted", + "creator", "updater"); + } + + @Test + public void testCheckAccessToken_null() { + // 调研,并断言 + assertServiceException(() -> oauth2TokenService.checkAccessToken(randomString()), + new ErrorCode(401, "访问令牌不存在")); + } + + @Test + public void testCheckAccessToken_expired() { + // mock 数据(访问令牌) + OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class) + .setExpiresTime(addTime(Duration.ofDays(-1))); + oauth2AccessTokenMapper.insert(accessTokenDO); + // 准备参数 + String accessToken = accessTokenDO.getAccessToken(); + + // 调研,并断言 + assertServiceException(() -> oauth2TokenService.checkAccessToken(accessToken), + new ErrorCode(401, "访问令牌已过期")); + } + + @Test + public void testCheckAccessToken_success() { + // mock 数据(访问令牌) + OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class) + .setExpiresTime(addTime(Duration.ofDays(1))); + oauth2AccessTokenMapper.insert(accessTokenDO); + // 准备参数 + String accessToken = accessTokenDO.getAccessToken(); + + // 调研,并断言 + OAuth2AccessTokenDO result = oauth2TokenService.getAccessToken(accessToken); + // 断言 + assertPojoEquals(accessTokenDO, result, "createTime", "updateTime", "deleted", + "creator", "updater"); + } + + @Test + public void testRemoveAccessToken_null() { + // 调用,并断言 + assertNull(oauth2TokenService.removeAccessToken(randomString())); + } + + @Test + public void testRemoveAccessToken_success() { + // mock 数据(访问令牌) + OAuth2AccessTokenDO accessTokenDO = randomPojo(OAuth2AccessTokenDO.class) + .setExpiresTime(addTime(Duration.ofDays(1))); + oauth2AccessTokenMapper.insert(accessTokenDO); + // mock 数据(刷新令牌) + OAuth2RefreshTokenDO refreshTokenDO = randomPojo(OAuth2RefreshTokenDO.class) + .setRefreshToken(accessTokenDO.getRefreshToken()); + oauth2RefreshTokenMapper.insert(refreshTokenDO); + // 调用 + OAuth2AccessTokenDO result = oauth2TokenService.removeAccessToken(accessTokenDO.getAccessToken()); + assertPojoEquals(accessTokenDO, result, "createTime", "updateTime", "deleted", + "creator", "updater"); + // 断言数据 + assertNull(oauth2AccessTokenMapper.selectByAccessToken(accessTokenDO.getAccessToken())); + assertNull(oauth2RefreshTokenMapper.selectByRefreshToken(accessTokenDO.getRefreshToken())); + assertNull(oauth2AccessTokenRedisDAO.get(accessTokenDO.getAccessToken())); + } + + + @Test + public void testGetAccessTokenPage() { + // mock 数据 + OAuth2AccessTokenDO dbAccessToken = randomPojo(OAuth2AccessTokenDO.class, o -> { // 等会查询到 + o.setUserId(10L); + o.setUserType(1); + o.setClientId("test_client"); + o.setExpiresTime(DateUtils.addTime(Duration.ofDays(1))); + }); + oauth2AccessTokenMapper.insert(dbAccessToken); + // 测试 userId 不匹配 + oauth2AccessTokenMapper.insert(cloneIgnoreId(dbAccessToken, o -> o.setUserId(20L))); + // 测试 userType 不匹配 + oauth2AccessTokenMapper.insert(cloneIgnoreId(dbAccessToken, o -> o.setUserType(2))); + // 测试 userType 不匹配 + oauth2AccessTokenMapper.insert(cloneIgnoreId(dbAccessToken, o -> o.setClientId("it_client"))); + // 测试 expireTime 不匹配 + oauth2AccessTokenMapper.insert(cloneIgnoreId(dbAccessToken, o -> o.setExpiresTime(new Date()))); + // 准备参数 + OAuth2AccessTokenPageReqVO reqVO = new OAuth2AccessTokenPageReqVO(); + reqVO.setUserId(10L); + reqVO.setUserType(1); + reqVO.setClientId("test"); + + // 调用 + PageResult pageResult = oauth2TokenService.getAccessTokenPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbAccessToken, pageResult.getList().get(0)); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceTest.java b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceTest.java index 7ac339f541..324a415be6 100644 --- a/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceTest.java +++ b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceTest.java @@ -1,30 +1,39 @@ package cn.iocoder.yudao.module.system.service.permission; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.map.MapUtil; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; +import cn.iocoder.yudao.module.system.api.permission.dto.DeptDataPermissionRespDTO; +import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; +import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO; import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO; import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleMenuDO; import cn.iocoder.yudao.module.system.dal.dataobject.permission.UserRoleDO; +import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.dal.mysql.permission.RoleMenuBatchInsertMapper; import cn.iocoder.yudao.module.system.dal.mysql.permission.RoleMenuMapper; import cn.iocoder.yudao.module.system.dal.mysql.permission.UserRoleBatchInsertMapper; import cn.iocoder.yudao.module.system.dal.mysql.permission.UserRoleMapper; +import cn.iocoder.yudao.module.system.enums.permission.DataScopeEnum; import cn.iocoder.yudao.module.system.mq.producer.permission.PermissionProducer; import cn.iocoder.yudao.module.system.service.dept.DeptService; -import cn.iocoder.yudao.framework.datapermission.core.dept.service.dto.DeptDataPermissionRespDTO; -import cn.iocoder.yudao.framework.security.core.LoginUser; -import cn.iocoder.yudao.module.system.enums.permission.DataScopeEnum; -import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; +import cn.iocoder.yudao.module.system.service.user.AdminUserService; +import com.google.common.collect.ImmutableMultimap; +import com.google.common.collect.Multimap; import org.junit.jupiter.api.Test; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; import javax.annotation.Resource; -import java.util.List; +import java.util.*; +import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; +import static java.util.Arrays.asList; +import static java.util.Collections.singleton; import static java.util.Collections.singletonList; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.eq; @@ -54,9 +63,232 @@ public class PermissionServiceTest extends BaseDbUnitTest { private MenuService menuService; @MockBean private DeptService deptService; + @MockBean + private AdminUserService userService; + @MockBean private PermissionProducer permissionProducer; + @Test + public void testInitRoleMenuLocalCache() { + // mock 数据 + RoleMenuDO roleMenuDO01 = randomPojo(RoleMenuDO.class, o -> o.setRoleId(1L).setMenuId(10L)); + roleMenuMapper.insert(roleMenuDO01); + RoleMenuDO roleMenuDO02 = randomPojo(RoleMenuDO.class, o -> o.setRoleId(1L).setMenuId(20L)); + roleMenuMapper.insert(roleMenuDO02); + + // 调用 + permissionService.initRoleMenuLocalCache(); + // 断言 roleMenuCache 缓存 + assertEquals(1, permissionService.getRoleMenuCache().keySet().size()); + assertEquals(asList(10L, 20L), permissionService.getRoleMenuCache().get(1L)); + // 断言 menuRoleCache 缓存 + assertEquals(2, permissionService.getMenuRoleCache().size()); + assertEquals(singletonList(1L), permissionService.getMenuRoleCache().get(10L)); + assertEquals(singletonList(1L), permissionService.getMenuRoleCache().get(20L)); + // 断言 maxUpdateTime 缓存 + Date maxUpdateTime = permissionService.getRoleMenuMaxUpdateTime(); + assertEquals(ObjectUtils.max(roleMenuDO01.getUpdateTime(), roleMenuDO02.getUpdateTime()), maxUpdateTime); + } + + @Test + public void testInitUserRoleLocalCache() { + // mock 数据 + UserRoleDO userRoleDO01 = randomPojo(UserRoleDO.class, o -> o.setUserId(1L).setRoleId(10L)); + userRoleMapper.insert(userRoleDO01); + UserRoleDO roleMenuDO02 = randomPojo(UserRoleDO.class, o -> o.setUserId(1L).setRoleId(20L)); + userRoleMapper.insert(roleMenuDO02); + + // 调用 + permissionService.initUserRoleLocalCache(); + // 断言 roleMenuCache 缓存 + assertEquals(1, permissionService.getUserRoleCache().size()); + assertEquals(asSet(10L, 20L), permissionService.getUserRoleCache().get(1L)); + // 断言 maxUpdateTime 缓存 + Date maxUpdateTime = permissionService.getUserRoleMaxUpdateTime(); + assertEquals(ObjectUtils.max(userRoleDO01.getUpdateTime(), roleMenuDO02.getUpdateTime()), maxUpdateTime); + } + + @Test + public void testGetRoleMenuListFromCache_superAdmin() { + // 准备参数 + Collection roleIds = singletonList(100L); + Collection menuTypes = asList(2, 3); + Collection menusStatuses = asList(0, 1); + // mock 方法 + List roleList = singletonList(randomPojo(RoleDO.class, o -> o.setId(100L))); + when(roleService.getRolesFromCache(eq(roleIds))).thenReturn(roleList); + when(roleService.hasAnySuperAdmin(same(roleList))).thenReturn(true); + List menuList = randomPojoList(MenuDO.class); + when(menuService.getMenuListFromCache(eq(menuTypes), eq(menusStatuses))).thenReturn(menuList); + + // 调用 + List result = permissionService.getRoleMenuListFromCache(roleIds, menuTypes, menusStatuses); + // 断言 + assertSame(menuList, result); + } + + @Test + public void testGetRoleMenuListFromCache_normal() { + // 准备参数 + Collection roleIds = asSet(100L, 200L); + Collection menuTypes = asList(2, 3); + Collection menusStatuses = asList(0, 1); + // mock 方法 + Multimap roleMenuCache = ImmutableMultimap.builder().put(100L, 1000L) + .put(200L, 2000L).put(200L, 2001L).build(); + permissionService.setRoleMenuCache(roleMenuCache); + List menuList = randomPojoList(MenuDO.class); + when(menuService.getMenuListFromCache(eq(asList(1000L, 2000L, 2001L)), eq(menuTypes), eq(menusStatuses))).thenReturn(menuList); + + // 调用 + List result = permissionService.getRoleMenuListFromCache(roleIds, menuTypes, menusStatuses); + // 断言 + assertSame(menuList, result); + } + + @Test + public void testGetUserRoleIdsFromCache() { + // 准备参数 + Long userId = 1L; + Collection roleStatuses = singleton(CommonStatusEnum.ENABLE.getStatus()); + // mock 方法 + Map> userRoleCache = MapUtil.>builder() + .put(1L, asSet(10L, 20L)).build(); + permissionService.setUserRoleCache(userRoleCache); + RoleDO roleDO01 = randomPojo(RoleDO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())); + when(roleService.getRoleFromCache(eq(10L))).thenReturn(roleDO01); + RoleDO roleDO02 = randomPojo(RoleDO.class, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())); + when(roleService.getRoleFromCache(eq(20L))).thenReturn(roleDO02); + + // 调用 + Set roleIds = permissionService.getUserRoleIdsFromCache(userId, roleStatuses); + // 断言 + assertEquals(asSet(10L), roleIds); + } + + @Test + public void testGetRoleMenuIds_superAdmin() { + // 准备参数 + Long roleId = 100L; + // mock 方法 + when(roleService.hasAnySuperAdmin(eq(singleton(100L)))).thenReturn(true); + List menuList = singletonList(randomPojo(MenuDO.class).setId(1L)); + when(menuService.getMenus()).thenReturn(menuList); + + // 调用 + Set menuIds = permissionService.getRoleMenuIds(roleId); + // 断言 + assertEquals(singleton(1L), menuIds); + } + + @Test + public void testGetRoleMenuIds_normal() { + // 准备参数 + Long roleId = 100L; + // mock 数据 + RoleMenuDO roleMenu01 = randomPojo(RoleMenuDO.class).setRoleId(100L).setMenuId(1L); + roleMenuMapper.insert(roleMenu01); + RoleMenuDO roleMenu02 = randomPojo(RoleMenuDO.class).setRoleId(100L).setMenuId(2L); + roleMenuMapper.insert(roleMenu02); + + // 调用 + Set menuIds = permissionService.getRoleMenuIds(roleId); + // 断言 + assertEquals(asSet(1L, 2L), menuIds); + } + + @Test + public void testAssignRoleMenu() { + // 准备参数 + Long roleId = 1L; + Set menuIds = asSet(200L, 300L); + // mock 数据 + RoleMenuDO roleMenu01 = randomPojo(RoleMenuDO.class).setRoleId(1L).setMenuId(100L); + roleMenuMapper.insert(roleMenu01); + RoleMenuDO roleMenu02 = randomPojo(RoleMenuDO.class).setRoleId(1L).setMenuId(200L); + roleMenuMapper.insert(roleMenu02); + + // 调用 + permissionService.assignRoleMenu(roleId, menuIds); + // 断言 + List roleMenuList = roleMenuMapper.selectList(); + assertEquals(2, roleMenuList.size()); + assertEquals(1L, roleMenuList.get(0).getRoleId()); + assertEquals(200L, roleMenuList.get(0).getMenuId()); + assertEquals(1L, roleMenuList.get(1).getRoleId()); + assertEquals(300L, roleMenuList.get(1).getMenuId()); + verify(permissionProducer).sendRoleMenuRefreshMessage(); + } + + @Test + public void testAssignUserRole() { + // 准备参数 + Long userId = 1L; + Set roleIds = asSet(200L, 300L); + // mock 数据 + UserRoleDO userRole01 = randomPojo(UserRoleDO.class).setUserId(1L).setRoleId(100L); + userRoleMapper.insert(userRole01); + UserRoleDO userRole02 = randomPojo(UserRoleDO.class).setUserId(1L).setRoleId(200L); + userRoleMapper.insert(userRole02); + + // 调用 + permissionService.assignUserRole(userId, roleIds); + // 断言 + List userRoleDOList = userRoleMapper.selectList(); + assertEquals(2, userRoleDOList.size()); + assertEquals(1L, userRoleDOList.get(0).getUserId()); + assertEquals(200L, userRoleDOList.get(0).getRoleId()); + assertEquals(1L, userRoleDOList.get(1).getUserId()); + assertEquals(300L, userRoleDOList.get(1).getRoleId()); + verify(permissionProducer).sendUserRoleRefreshMessage(); + } + + @Test + public void testGetUserRoleIdListByUserId() { + // 准备参数 + Long userId = 1L; + // mock 数据 + UserRoleDO userRoleDO01 = randomPojo(UserRoleDO.class, o -> o.setUserId(1L).setRoleId(10L)); + userRoleMapper.insert(userRoleDO01); + UserRoleDO roleMenuDO02 = randomPojo(UserRoleDO.class, o -> o.setUserId(1L).setRoleId(20L)); + userRoleMapper.insert(roleMenuDO02); + + // 调用 + Set result = permissionService.getUserRoleIdListByUserId(userId); + // 断言 + assertEquals(asSet(10L, 20L), result); + } + + @Test + public void testGetUserRoleIdListByRoleIds() { + // 准备参数 + Collection roleIds = asSet(10L, 20L); + // mock 数据 + UserRoleDO userRoleDO01 = randomPojo(UserRoleDO.class, o -> o.setUserId(1L).setRoleId(10L)); + userRoleMapper.insert(userRoleDO01); + UserRoleDO roleMenuDO02 = randomPojo(UserRoleDO.class, o -> o.setUserId(2L).setRoleId(20L)); + userRoleMapper.insert(roleMenuDO02); + + // 调用 + Set result = permissionService.getUserRoleIdListByRoleIds(roleIds); + // 断言 + assertEquals(asSet(1L, 2L), result); + } + + @Test + public void testAssignRoleDataScope() { + // 准备参数 + Long roleId = 1L; + Integer dataScope = 2; + Set dataScopeDeptIds = asSet(10L, 20L); + + // 调用 + permissionService.assignRoleDataScope(roleId, dataScope, dataScopeDeptIds); + // 断言 + verify(roleService).updateRoleDataScope(eq(roleId), eq(dataScope), eq(dataScopeDeptIds)); + } + @Test public void testProcessRoleDeleted() { // 准备参数 @@ -84,6 +316,7 @@ public class PermissionServiceTest extends BaseDbUnitTest { assertPojoEquals(dbUserRoles.get(0), userRoleDO02); // 断言调用 verify(permissionProducer).sendRoleMenuRefreshMessage(); + verify(permissionProducer).sendUserRoleRefreshMessage(); } @Test @@ -122,114 +355,202 @@ public class PermissionServiceTest extends BaseDbUnitTest { List dbUserRoles = userRoleMapper.selectList(); assertEquals(1, dbUserRoles.size()); assertPojoEquals(dbUserRoles.get(0), userRoleDO02); + // 断言调用 + verify(permissionProducer).sendUserRoleRefreshMessage(); } - @Test // 测试从 context 获取的场景 - public void testGetDeptDataPermission_fromContext() { + @Test + public void testHasAnyPermissions_superAdmin() { // 准备参数 - LoginUser loginUser = randomPojo(LoginUser.class); - // mock 方法 - DeptDataPermissionRespDTO respDTO = new DeptDataPermissionRespDTO(); - loginUser.setContext(PermissionServiceImpl.CONTEXT_KEY, respDTO); + Long userId = 1L; + String[] roles = new String[]{"system:user:query", "system:user:create"}; + // mock 用户与角色的缓存 + permissionService.setUserRoleCache(MapUtil.>builder().put(1L, asSet(100L)).build()); + RoleDO role = randomPojo(RoleDO.class, o -> o.setId(100L) + .setStatus(CommonStatusEnum.ENABLE.getStatus())); + when(roleService.getRoleFromCache(eq(100L))).thenReturn(role); + // mock 其它方法 + when(roleService.hasAnySuperAdmin(eq(asSet(100L)))).thenReturn(true); // 调用 - DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(loginUser); + boolean has = permissionService.hasAnyPermissions(userId, roles); // 断言 - assertSame(respDTO, result); + assertTrue(has); + } + + @Test + public void testHasAnyPermissions_normal() { + // 准备参数 + Long userId = 1L; + String[] roles = new String[]{"system:user:query", "system:user:create"}; + // mock 用户与角色的缓存 + permissionService.setUserRoleCache(MapUtil.>builder().put(1L, asSet(100L)).build()); + RoleDO role = randomPojo(RoleDO.class, o -> o.setId(100L) + .setStatus(CommonStatusEnum.ENABLE.getStatus())); + when(roleService.getRoleFromCache(eq(100L))).thenReturn(role); + // mock 其它方法 + MenuDO menu = randomPojo(MenuDO.class, o -> o.setId(1000L)); + when(menuService.getMenuListByPermissionFromCache(eq("system:user:create"))).thenReturn(singletonList(menu)); + permissionService.setMenuRoleCache(ImmutableMultimap.builder().put(1000L, 100L).build()); + + + // 调用 + boolean has = permissionService.hasAnyPermissions(userId, roles); + // 断言 + assertTrue(has); + } + + @Test + public void testHasAnyRoles_superAdmin() { + // 准备参数 + Long userId = 1L; + String[] roles = new String[]{"yunai", "tudou"}; + // mock 用户与角色的缓存 + permissionService.setUserRoleCache(MapUtil.>builder().put(1L, asSet(100L)).build()); + RoleDO role = randomPojo(RoleDO.class, o -> o.setId(100L) + .setStatus(CommonStatusEnum.ENABLE.getStatus())); + when(roleService.getRoleFromCache(eq(100L))).thenReturn(role); + // mock 其它方法 + when(roleService.hasAnySuperAdmin(eq(asSet(100L)))).thenReturn(true); + + // 调用 + boolean has = permissionService.hasAnyRoles(userId, roles); + // 断言 + assertTrue(has); + } + + @Test + public void testHasAnyRoles_normal() { + // 准备参数 + Long userId = 1L; + String[] roles = new String[]{"yunai", "tudou"}; + // mock 用户与角色的缓存 + permissionService.setUserRoleCache(MapUtil.>builder().put(1L, asSet(100L)).build()); + RoleDO role = randomPojo(RoleDO.class, o -> o.setId(100L).setCode("yunai") + .setStatus(CommonStatusEnum.ENABLE.getStatus())); + when(roleService.getRoleFromCache(eq(100L))).thenReturn(role); + // mock 其它方法 + when(roleService.getRolesFromCache(eq(asSet(100L)))).thenReturn(singletonList(role)); + + // 调用 + boolean has = permissionService.hasAnyRoles(userId, roles); + // 断言 + assertTrue(has); } @Test public void testGetDeptDataPermission_All() { // 准备参数 - LoginUser loginUser = randomPojo(LoginUser.class); - // mock 方法 - RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setDataScope(DataScopeEnum.ALL.getScope())); - when(roleService.getRolesFromCache(same(loginUser.getRoleIds()))).thenReturn(singletonList(roleDO)); + Long userId = 1L; + // mock 用户的角色编号 + permissionService.setUserRoleCache(MapUtil.>builder().put(1L, asSet(2L)).build()); + // mock 获得用户的角色 + RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setDataScope(DataScopeEnum.ALL.getScope()) + .setStatus(CommonStatusEnum.ENABLE.getStatus())); + when(roleService.getRolesFromCache(eq(singleton(2L)))).thenReturn(singletonList(roleDO)); + when(roleService.getRoleFromCache(eq(2L))).thenReturn(roleDO); // 调用 - DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(loginUser); + DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(userId); // 断言 assertTrue(result.getAll()); assertFalse(result.getSelf()); assertTrue(CollUtil.isEmpty(result.getDeptIds())); - assertSame(result, loginUser.getContext(PermissionServiceImpl.CONTEXT_KEY, DeptDataPermissionRespDTO.class)); } @Test public void testGetDeptDataPermission_DeptCustom() { // 准备参数 - LoginUser loginUser = randomPojo(LoginUser.class); - // mock 方法 - RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setDataScope(DataScopeEnum.DEPT_CUSTOM.getScope())); - when(roleService.getRolesFromCache(same(loginUser.getRoleIds()))).thenReturn(singletonList(roleDO)); + Long userId = 1L; + // mock 用户的角色编号 + permissionService.setUserRoleCache(MapUtil.>builder().put(1L, asSet(2L)).build()); + // mock 获得用户的角色 + RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setDataScope(DataScopeEnum.DEPT_CUSTOM.getScope()) + .setStatus(CommonStatusEnum.ENABLE.getStatus())); + when(roleService.getRolesFromCache(eq(singleton(2L)))).thenReturn(singletonList(roleDO)); + when(roleService.getRoleFromCache(eq(2L))).thenReturn(roleDO); + // mock 部门的返回 + when(userService.getUser(eq(1L))).thenReturn(new AdminUserDO().setDeptId(3L), null, null); // 最后返回 null 的目的,看看会不会重复调用 // 调用 - DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(loginUser); + DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(userId); // 断言 assertFalse(result.getAll()); assertFalse(result.getSelf()); assertEquals(roleDO.getDataScopeDeptIds().size() + 1, result.getDeptIds().size()); assertTrue(CollUtil.containsAll(result.getDeptIds(), roleDO.getDataScopeDeptIds())); - assertTrue(CollUtil.contains(result.getDeptIds(), loginUser.getDeptId())); - assertSame(result, loginUser.getContext(PermissionServiceImpl.CONTEXT_KEY, DeptDataPermissionRespDTO.class)); + assertTrue(CollUtil.contains(result.getDeptIds(), 3L)); } @Test public void testGetDeptDataPermission_DeptOnly() { // 准备参数 - LoginUser loginUser = randomPojo(LoginUser.class); - // mock 方法 - RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setDataScope(DataScopeEnum.DEPT_ONLY.getScope())); - when(roleService.getRolesFromCache(same(loginUser.getRoleIds()))).thenReturn(singletonList(roleDO)); + Long userId = 1L; + // mock 用户的角色编号 + permissionService.setUserRoleCache(MapUtil.>builder().put(1L, asSet(2L)).build()); + // mock 获得用户的角色 + RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setDataScope(DataScopeEnum.DEPT_ONLY.getScope()) + .setStatus(CommonStatusEnum.ENABLE.getStatus())); + when(roleService.getRolesFromCache(eq(singleton(2L)))).thenReturn(singletonList(roleDO)); + when(roleService.getRoleFromCache(eq(2L))).thenReturn(roleDO); + // mock 部门的返回 + when(userService.getUser(eq(1L))).thenReturn(new AdminUserDO().setDeptId(3L), null, null); // 最后返回 null 的目的,看看会不会重复调用 // 调用 - DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(loginUser); + DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(userId); // 断言 assertFalse(result.getAll()); assertFalse(result.getSelf()); assertEquals(1, result.getDeptIds().size()); - assertTrue(CollUtil.contains(result.getDeptIds(), loginUser.getDeptId())); - assertSame(result, loginUser.getContext(PermissionServiceImpl.CONTEXT_KEY, DeptDataPermissionRespDTO.class)); + assertTrue(CollUtil.contains(result.getDeptIds(), 3L)); } @Test public void testGetDeptDataPermission_DeptAndChild() { // 准备参数 - LoginUser loginUser = randomPojo(LoginUser.class); - // mock 方法(角色) - RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setDataScope(DataScopeEnum.DEPT_AND_CHILD.getScope())); - when(roleService.getRolesFromCache(same(loginUser.getRoleIds()))).thenReturn(singletonList(roleDO)); + Long userId = 1L; + // mock 用户的角色编号 + permissionService.setUserRoleCache(MapUtil.>builder().put(1L, asSet(2L)).build()); + // mock 获得用户的角色 + RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setDataScope(DataScopeEnum.DEPT_AND_CHILD.getScope()) + .setStatus(CommonStatusEnum.ENABLE.getStatus())); + when(roleService.getRolesFromCache(eq(singleton(2L)))).thenReturn(singletonList(roleDO)); + when(roleService.getRoleFromCache(eq(2L))).thenReturn(roleDO); + // mock 部门的返回 + when(userService.getUser(eq(1L))).thenReturn(new AdminUserDO().setDeptId(3L), null, null); // 最后返回 null 的目的,看看会不会重复调用 // mock 方法(部门) DeptDO deptDO = randomPojo(DeptDO.class); - when(deptService.getDeptsByParentIdFromCache(eq(loginUser.getDeptId()), eq(true))) + when(deptService.getDeptsByParentIdFromCache(eq(3L), eq(true))) .thenReturn(singletonList(deptDO)); // 调用 - DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(loginUser); + DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(userId); // 断言 assertFalse(result.getAll()); assertFalse(result.getSelf()); assertEquals(2, result.getDeptIds().size()); assertTrue(CollUtil.contains(result.getDeptIds(), deptDO.getId())); - assertTrue(CollUtil.contains(result.getDeptIds(), loginUser.getDeptId())); - assertSame(result, loginUser.getContext(PermissionServiceImpl.CONTEXT_KEY, DeptDataPermissionRespDTO.class)); + assertTrue(CollUtil.contains(result.getDeptIds(), 3L)); } @Test public void testGetDeptDataPermission_Self() { // 准备参数 - LoginUser loginUser = randomPojo(LoginUser.class); - // mock 方法 - RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setDataScope(DataScopeEnum.SELF.getScope())); - when(roleService.getRolesFromCache(same(loginUser.getRoleIds()))).thenReturn(singletonList(roleDO)); + Long userId = 1L; + // mock 用户的角色编号 + permissionService.setUserRoleCache(MapUtil.>builder().put(1L, asSet(2L)).build()); + // mock 获得用户的角色 + RoleDO roleDO = randomPojo(RoleDO.class, o -> o.setDataScope(DataScopeEnum.SELF.getScope()) + .setStatus(CommonStatusEnum.ENABLE.getStatus())); + when(roleService.getRolesFromCache(eq(singleton(2L)))).thenReturn(singletonList(roleDO)); + when(roleService.getRoleFromCache(eq(2L))).thenReturn(roleDO); // 调用 - DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(loginUser); + DeptDataPermissionRespDTO result = permissionService.getDeptDataPermission(userId); // 断言 assertFalse(result.getAll()); assertTrue(result.getSelf()); assertTrue(CollUtil.isEmpty(result.getDeptIds())); - assertSame(result, loginUser.getContext(PermissionServiceImpl.CONTEXT_KEY, DeptDataPermissionRespDTO.class)); } } diff --git a/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceTest.java b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceTest.java index 74ef697e3a..b81777fb6f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceTest.java +++ b/yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceTest.java @@ -3,15 +3,17 @@ package cn.iocoder.yudao.module.system.service.permission; import cn.hutool.core.util.RandomUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.system.enums.permission.DataScopeEnum; +import cn.iocoder.yudao.framework.common.util.date.DateUtils; +import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleCreateReqVO; +import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleExportReqVO; import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RolePageReqVO; import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleUpdateReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO; import cn.iocoder.yudao.module.system.dal.mysql.permission.RoleMapper; +import cn.iocoder.yudao.module.system.enums.permission.DataScopeEnum; import cn.iocoder.yudao.module.system.enums.permission.RoleTypeEnum; import cn.iocoder.yudao.module.system.mq.producer.permission.RoleProducer; -import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; import org.junit.jupiter.api.Test; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Import; @@ -20,6 +22,7 @@ import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.max; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; @@ -155,61 +158,66 @@ public class RoleServiceTest extends BaseDbUnitTest { } @Test - public void testGetRoles_success() { - Map idRoleMap = new HashMap<>(); - // 验证查询状态为1的角色 - RoleDO roleDO1 = createRoleDO("role1", RoleTypeEnum.CUSTOM, DataScopeEnum.ALL, 1); - roleMapper.insert(roleDO1); - idRoleMap.put(roleDO1.getId(), roleDO1); - - RoleDO roleDO2 = createRoleDO("role2", RoleTypeEnum.CUSTOM, DataScopeEnum.ALL, 1); - roleMapper.insert(roleDO2); - idRoleMap.put(roleDO2.getId(), roleDO2); - - // 以下是排除的角色 - RoleDO roleDO3 = createRoleDO("role3", RoleTypeEnum.CUSTOM, DataScopeEnum.ALL, 2); - roleMapper.insert(roleDO3); - - //调用 - List roles = roleService.getRoles(Arrays.asList(1)); - - //断言 - assertEquals(2, roles.size()); - roles.stream().forEach(r -> assertPojoEquals(idRoleMap.get(r.getId()), r)); + public void testGetRoles() { + // mock 数据 + RoleDO dbRole = randomPojo(RoleDO.class, o -> { // 等会查询到 + o.setName("土豆"); + o.setCode("tudou"); + o.setStatus(CommonStatusEnum.ENABLE.getStatus()); + o.setCreateTime(DateUtils.buildTime(2022, 2, 8)); + }); + roleMapper.insert(dbRole); + // 测试 name 不匹配 + roleMapper.insert(cloneIgnoreId(dbRole, o -> o.setName("红薯"))); + // 测试 code 不匹配 + roleMapper.insert(cloneIgnoreId(dbRole, o -> o.setCode("hong"))); + // 测试 createTime 不匹配 + roleMapper.insert(cloneIgnoreId(dbRole, o -> o.setCreateTime(DateUtils.buildTime(2022, 2, 16)))); + // 准备参数 + RoleExportReqVO reqVO = new RoleExportReqVO(); + reqVO.setName("土豆"); + reqVO.setCode("tu"); + reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); + reqVO.setBeginTime(DateUtils.buildTime(2022, 2, 1)); + reqVO.setEndTime(DateUtils.buildTime(2022, 2, 12)); + // 调用 + List list = roleService.getRoleList(reqVO); + // 断言 + assertEquals(1, list.size()); + assertPojoEquals(dbRole, list.get(0)); } @Test - public void testGetRolePage_success() { - Map idRoleMap = new HashMap<>(); - // 验证名称包含"role", 状态为1,code为"code"的角色 - // 第一页 - RoleDO roleDO = createRoleDO("role1", RoleTypeEnum.CUSTOM, DataScopeEnum.ALL, 1, "code"); - roleMapper.insert(roleDO); - idRoleMap.put(roleDO.getId(), roleDO); - // 第二页 - roleDO = createRoleDO("role2", RoleTypeEnum.CUSTOM, DataScopeEnum.ALL, 1, "code"); - roleMapper.insert(roleDO); - - // 以下是排除的角色 - roleDO = createRoleDO("role3", RoleTypeEnum.CUSTOM, DataScopeEnum.ALL, 2, "code"); - roleMapper.insert(roleDO); - roleDO = createRoleDO("role4", RoleTypeEnum.CUSTOM, DataScopeEnum.ALL, 1, "xxxxx"); - roleMapper.insert(roleDO); - - //调用 - RolePageReqVO reqVO = randomPojo(RolePageReqVO.class, o -> { - o.setName("role"); - o.setCode("code"); - o.setStatus(1); - o.setPageNo(1); - o.setPageSize(1); - o.setBeginTime(null); - o.setEndTime(null); + public void testGetRolePage() { + // mock 数据 + RoleDO dbRole = randomPojo(RoleDO.class, o -> { // 等会查询到 + o.setName("土豆"); + o.setCode("tudou"); + o.setStatus(CommonStatusEnum.ENABLE.getStatus()); + o.setCreateTime(DateUtils.buildTime(2022, 2, 8)); }); - PageResult result = roleService.getRolePage(reqVO); - assertEquals(2, result.getTotal()); - result.getList().stream().forEach(r -> assertPojoEquals(idRoleMap.get(r.getId()), r)); + roleMapper.insert(dbRole); + // 测试 name 不匹配 + roleMapper.insert(cloneIgnoreId(dbRole, o -> o.setName("红薯"))); + // 测试 code 不匹配 + roleMapper.insert(cloneIgnoreId(dbRole, o -> o.setCode("hong"))); + // 测试 createTime 不匹配 + roleMapper.insert(cloneIgnoreId(dbRole, o -> o.setCreateTime(DateUtils.buildTime(2022, 2, 16)))); + // 准备参数 + RolePageReqVO reqVO = new RolePageReqVO(); + reqVO.setName("土豆"); + reqVO.setCode("tu"); + reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); + reqVO.setBeginTime(DateUtils.buildTime(2022, 2, 1)); + reqVO.setEndTime(DateUtils.buildTime(2022, 2, 12)); + + // 调用 + PageResult pageResult = roleService.getRolePage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbRole, pageResult.getList().get(0)); } @Test diff --git a/yudao-module-system/yudao-module-system-biz/src/test/resources/sql/clean.sql b/yudao-module-system/yudao-module-system-biz/src/test/resources/sql/clean.sql index 0f9ad467ac..b13b191dbd 100644 --- a/yudao-module-system/yudao-module-system-biz/src/test/resources/sql/clean.sql +++ b/yudao-module-system/yudao-module-system-biz/src/test/resources/sql/clean.sql @@ -20,3 +20,8 @@ DELETE FROM "system_social_user_bind"; DELETE FROM "system_tenant"; DELETE FROM "system_tenant_package"; DELETE FROM "system_sensitive_word"; +DELETE FROM "system_oauth2_client"; +DELETE FROM "system_oauth2_approve"; +DELETE FROM "system_oauth2_access_token"; +DELETE FROM "system_oauth2_refresh_token"; +DELETE FROM "system_oauth2_code"; diff --git a/yudao-module-system/yudao-module-system-biz/src/test/resources/sql/create_tables.sql b/yudao-module-system/yudao-module-system-biz/src/test/resources/sql/create_tables.sql index d7dc61cd6d..56fc42704e 100644 --- a/yudao-module-system/yudao-module-system-biz/src/test/resources/sql/create_tables.sql +++ b/yudao-module-system/yudao-module-system-biz/src/test/resources/sql/create_tables.sql @@ -70,7 +70,7 @@ CREATE TABLE IF NOT EXISTS "system_menu" ( "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, "name" varchar(50) NOT NULL, "permission" varchar(100) NOT NULL DEFAULT '', - "menu_type" tinyint NOT NULL, + "type" tinyint NOT NULL, "sort" int NOT NULL DEFAULT '0', "parent_id" bigint NOT NULL DEFAULT '0', "path" varchar(200) DEFAULT '', @@ -202,7 +202,7 @@ CREATE TABLE IF NOT EXISTS `system_operate_log` ( "user_type" tinyint not null default '0', `module` varchar(50) NOT NULL, `name` varchar(50) NOT NULL, - `operate_type` bigint(4) NOT NULL DEFAULT '0', + `type` bigint(4) NOT NULL DEFAULT '0', `content` varchar(2000) NOT NULL DEFAULT '', `exts` varchar(512) NOT NULL DEFAULT '', `request_method` varchar(16) DEFAULT '', @@ -470,3 +470,98 @@ CREATE TABLE IF NOT EXISTS "system_sensitive_word" ( "deleted" bit NOT NULL DEFAULT FALSE, PRIMARY KEY ("id") ) COMMENT '系统敏感词'; + +CREATE TABLE IF NOT EXISTS "system_oauth2_client" ( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "client_id" varchar NOT NULL, + "secret" varchar NOT NULL, + "name" varchar NOT NULL, + "logo" varchar NOT NULL, + "description" varchar, + "status" int NOT NULL, + "access_token_validity_seconds" int NOT NULL, + "refresh_token_validity_seconds" int NOT NULL, + "redirect_uris" varchar NOT NULL, + "authorized_grant_types" varchar NOT NULL, + "scopes" varchar NOT NULL DEFAULT '', + "auto_approve_scopes" varchar NOT NULL DEFAULT '', + "authorities" varchar NOT NULL DEFAULT '', + "resource_ids" varchar NOT NULL DEFAULT '', + "additional_information" varchar NOT NULL DEFAULT '', + "creator" varchar DEFAULT '', + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar DEFAULT '', + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, + PRIMARY KEY ("id") +) COMMENT 'OAuth2 客户端表'; + +CREATE TABLE IF NOT EXISTS "system_oauth2_approve" ( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "user_id" bigint NOT NULL, + "user_type" tinyint NOT NULL, + "client_id" varchar NOT NULL, + "scope" varchar NOT NULL, + "approved" bit NOT NULL DEFAULT FALSE, + "expires_time" datetime NOT NULL, + "creator" varchar DEFAULT '', + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar DEFAULT '', + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, + PRIMARY KEY ("id") +) COMMENT 'OAuth2 批准表'; + +CREATE TABLE IF NOT EXISTS "system_oauth2_access_token" ( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "user_id" bigint NOT NULL, + "user_type" tinyint NOT NULL, + "access_token" varchar NOT NULL, + "refresh_token" varchar NOT NULL, + "client_id" varchar NOT NULL, + "scopes" varchar NOT NULL, + "approved" bit NOT NULL DEFAULT FALSE, + "expires_time" datetime NOT NULL, + "creator" varchar DEFAULT '', + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar DEFAULT '', + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, + "tenant_id" bigint NOT NULL, + PRIMARY KEY ("id") +) COMMENT 'OAuth2 访问令牌'; + +CREATE TABLE IF NOT EXISTS "system_oauth2_refresh_token" ( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "user_id" bigint NOT NULL, + "user_type" tinyint NOT NULL, + "refresh_token" varchar NOT NULL, + "client_id" varchar NOT NULL, + "scopes" varchar NOT NULL, + "approved" bit NOT NULL DEFAULT FALSE, + "expires_time" datetime NOT NULL, + "creator" varchar DEFAULT '', + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar DEFAULT '', + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, + PRIMARY KEY ("id") +) COMMENT 'OAuth2 刷新令牌'; + +CREATE TABLE IF NOT EXISTS "system_oauth2_code" ( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "user_id" bigint NOT NULL, + "user_type" tinyint NOT NULL, + "code" varchar NOT NULL, + "client_id" varchar NOT NULL, + "scopes" varchar NOT NULL, + "expires_time" datetime NOT NULL, + "redirect_uri" varchar NOT NULL, + "state" varchar NOT NULL, + "creator" varchar DEFAULT '', + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar DEFAULT '', + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, + PRIMARY KEY ("id") +) COMMENT 'OAuth2 刷新令牌'; diff --git a/yudao-server/src/main/java/cn/iocoder/yudao/server/YudaoServerApplication.java b/yudao-server/src/main/java/cn/iocoder/yudao/server/YudaoServerApplication.java index 4a963dedd4..ee5f8f5295 100644 --- a/yudao-server/src/main/java/cn/iocoder/yudao/server/YudaoServerApplication.java +++ b/yudao-server/src/main/java/cn/iocoder/yudao/server/YudaoServerApplication.java @@ -3,12 +3,29 @@ package cn.iocoder.yudao.server; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +/** + * 项目的启动类 + * + * 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章 + * 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章 + * 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章 + * + * @author 芋道源码 + */ @SuppressWarnings("SpringComponentScan") // 忽略 IDEA 无法识别 ${yudao.info.base-package} @SpringBootApplication(scanBasePackages = {"${yudao.info.base-package}.server", "${yudao.info.base-package}.module"}) public class YudaoServerApplication { public static void main(String[] args) { + // 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章 + // 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章 + // 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章 + SpringApplication.run(YudaoServerApplication.class, args); + + // 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章 + // 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章 + // 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章 } } diff --git a/yudao-server/src/main/java/cn/iocoder/yudao/server/framework/tip/core/TipApplicationRunner.java b/yudao-server/src/main/java/cn/iocoder/yudao/server/framework/tip/core/TipApplicationRunner.java new file mode 100644 index 0000000000..db71c50796 --- /dev/null +++ b/yudao-server/src/main/java/cn/iocoder/yudao/server/framework/tip/core/TipApplicationRunner.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.server.framework.tip.core; + +import cn.hutool.core.thread.ThreadUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; + +import java.util.concurrent.TimeUnit; + +/** + * 项目启动成功后,提供文档相关的地址 + */ +@Component +@Slf4j +public class TipApplicationRunner implements ApplicationRunner { + + @Override + public void run(ApplicationArguments args) throws Exception { + ThreadUtil.execute(() -> { + ThreadUtil.sleep(1, TimeUnit.SECONDS); // 延迟 1 秒,保证输出到结尾 + log.info("\n----------------------------------------------------------\n\t" + + "项目启动成功!\n\t" + + "接口文档: \t{} \n\t" + + "开发文档: \t{} \n\t" + + "视频教程: \t{} \n\t" + + "源码解析: \t{} \n" + + "----------------------------------------------------------", + "https://doc.iocoder.cn/api-doc/", + "https://doc.iocoder.cn", + "https://t.zsxq.com/02Yf6M7Qn", + "https://t.zsxq.com/02B6ujIee"); + }); + } + +} diff --git a/yudao-server/src/main/java/cn/iocoder/yudao/server/framework/tip/package-info.java b/yudao-server/src/main/java/cn/iocoder/yudao/server/framework/tip/package-info.java new file mode 100644 index 0000000000..3006aa4ae2 --- /dev/null +++ b/yudao-server/src/main/java/cn/iocoder/yudao/server/framework/tip/package-info.java @@ -0,0 +1,4 @@ +/** + * 目的:项目启动成功后,提供文档相关的地址 + */ +package cn.iocoder.yudao.server.framework.tip; diff --git a/yudao-server/src/main/java/cn/iocoder/yudao/server/framework/ui/core/package-info.java b/yudao-server/src/main/java/cn/iocoder/yudao/server/framework/ui/core/package-info.java deleted file mode 100644 index a1b463fae6..0000000000 --- a/yudao-server/src/main/java/cn/iocoder/yudao/server/framework/ui/core/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * 占位 - */ -package cn.iocoder.yudao.server.framework.ui.core; diff --git a/yudao-server/src/main/resources/admin-ui/static/img/bg-mobile.0e3df208.png b/yudao-server/src/main/resources/admin-ui/static/img/bg-mobile.0e3df208.png new file mode 100644 index 0000000000..2ce05023dd Binary files /dev/null and b/yudao-server/src/main/resources/admin-ui/static/img/bg-mobile.0e3df208.png differ diff --git a/yudao-server/src/main/resources/admin-ui/static/img/bg.9bed9548.png b/yudao-server/src/main/resources/admin-ui/static/img/bg.9bed9548.png new file mode 100644 index 0000000000..027755184b Binary files /dev/null and b/yudao-server/src/main/resources/admin-ui/static/img/bg.9bed9548.png differ diff --git a/yudao-server/src/main/resources/admin-ui/static/img/pic.49137f73.png b/yudao-server/src/main/resources/admin-ui/static/img/pic.49137f73.png new file mode 100644 index 0000000000..ebef1e7450 Binary files /dev/null and b/yudao-server/src/main/resources/admin-ui/static/img/pic.49137f73.png differ diff --git a/yudao-server/src/main/resources/admin-ui/static/img/profile.2a8ee7b7.jpg b/yudao-server/src/main/resources/admin-ui/static/img/profile.2a8ee7b7.jpg new file mode 100644 index 0000000000..68bce249ea Binary files /dev/null and b/yudao-server/src/main/resources/admin-ui/static/img/profile.2a8ee7b7.jpg differ diff --git a/yudao-server/src/main/resources/admin-ui/static/js/10.js b/yudao-server/src/main/resources/admin-ui/static/js/10.js index 9faedd8c91..aea0ca2096 100644 --- a/yudao-server/src/main/resources/admin-ui/static/js/10.js +++ b/yudao-server/src/main/resources/admin-ui/static/js/10.js @@ -8,19 +8,19 @@ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n\n__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.sort.js */ \"./node_modules/core-js/modules/es.array.sort.js\");\n\n__webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ \"./node_modules/core-js/modules/web.dom-collections.iterator.js\");\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/helpers/objectSpread2.js */ \"./node_modules/@babel/runtime/helpers/objectSpread2.js\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/helpers/toConsumableArray.js */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\"));\n\nvar _definition = __webpack_require__(/*! @/api/bpm/definition */ \"./src/api/bpm/definition.js\");\n\nvar _dict = __webpack_require__(/*! @/utils/dict */ \"./src/utils/dict.js\");\n\nvar _store = _interopRequireDefault(__webpack_require__(/*! @/store */ \"./src/store/index.js\"));\n\nvar _formGenerator = __webpack_require__(/*! @/utils/formGenerator */ \"./src/utils/formGenerator.js\");\n\nvar _Parser = _interopRequireDefault(__webpack_require__(/*! @/components/parser/Parser */ \"./src/components/parser/Parser.vue\"));\n\nvar _processInstance = __webpack_require__(/*! @/api/bpm/processInstance */ \"./src/api/bpm/processInstance.js\");\n\nvar _task = __webpack_require__(/*! @/api/bpm/task */ \"./src/api/bpm/task.js\");\n\nvar _dateUtils = __webpack_require__(/*! @/utils/dateUtils */ \"./src/utils/dateUtils.js\");\n\nvar _user = __webpack_require__(/*! @/api/system/user */ \"./src/api/system/user.js\");\n\nvar _activity = __webpack_require__(/*! @/api/bpm/activity */ \"./src/api/bpm/activity.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n// 流程实例的详情页,可用于审批\nvar _default = {\n name: \"ProcessInstanceDetail\",\n components: {\n Parser: _Parser.default\n },\n data: function data() {\n return {\n // 遮罩层\n processInstanceLoading: true,\n // 流程实例\n id: undefined,\n // 流程实例的编号\n processInstance: {},\n // 流程表单详情\n detailForm: {\n fields: []\n },\n // BPMN 数据\n bpmnXML: null,\n bpmnControlForm: {\n prefix: \"activiti\"\n },\n activityList: [],\n // 审批记录\n tasksLoad: true,\n tasks: [],\n // 审批表单\n runningTasks: [],\n auditForms: [],\n auditRule: {\n comment: [{\n required: true,\n message: \"审批建议不能为空\",\n trigger: \"blur\"\n }]\n },\n // 转派审批人\n userOptions: [],\n updateAssignee: {\n open: false,\n form: {\n assigneeUserId: undefined\n },\n rules: {\n assigneeUserId: [{\n required: true,\n message: \"新审批人不能为空\",\n trigger: \"change\"\n }]\n }\n },\n // 数据字典\n categoryDictDatas: (0, _dict.getDictDatas)(_dict.DICT_TYPE.BPM_MODEL_CATEGORY)\n };\n },\n created: function created() {\n var _this = this;\n\n this.id = this.$route.query.id;\n\n if (!this.id) {\n this.$message.error('未传递 id 参数,无法查看流程信息');\n return;\n }\n\n this.getDetail(); // 获得用户列表\n\n this.userOptions = [];\n (0, _user.listSimpleUsers)().then(function (response) {\n var _this$userOptions;\n\n (_this$userOptions = _this.userOptions).push.apply(_this$userOptions, (0, _toConsumableArray2.default)(response.data));\n });\n },\n methods: {\n /** 获得流程实例 */\n getDetail: function getDetail() {\n var _this2 = this;\n\n // 获得流程实例相关\n this.processInstanceLoading = true;\n (0, _processInstance.getProcessInstance)(this.id).then(function (response) {\n if (!response.data) {\n _this2.$message.error('查询不到流程信息!');\n\n return;\n } // 设置流程信息\n\n\n _this2.processInstance = response.data; // 设置表单信息\n\n if (_this2.processInstance.processDefinition.formType === 10) {\n _this2.detailForm = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, JSON.parse(_this2.processInstance.processDefinition.formConf)), {}, {\n disabled: true,\n // 表单禁用\n formBtns: false,\n // 按钮隐藏\n fields: (0, _formGenerator.decodeFields)(_this2.processInstance.processDefinition.formFields)\n }); // 设置表单的值\n\n _this2.detailForm.fields.forEach(function (item) {\n var val = _this2.processInstance.formVariables[item.__vModel__];\n\n if (val) {\n item.__config__.defaultValue = val;\n }\n });\n } // 加载流程图\n\n\n (0, _definition.getProcessDefinitionBpmnXML)(_this2.processInstance.processDefinition.id).then(function (response) {\n _this2.bpmnXML = response.data;\n }); // 加载活动列表\n\n (0, _activity.getActivityList)({\n processInstanceId: _this2.processInstance.id\n }).then(function (response) {\n _this2.activityList = response.data;\n }); // 取消加载中\n\n _this2.processInstanceLoading = false;\n }); // 获得流程任务列表(审批记录)\n\n this.tasksLoad = true;\n this.runningTasks = [];\n this.auditForms = [];\n (0, _task.getTaskListByProcessInstanceId)(this.id).then(function (response) {\n // 审批记录\n _this2.tasks = response.data; // 排序,将未完成的排在前面,已完成的排在后面;\n\n _this2.tasks.sort(function (a, b) {\n // 有已完成的情况,按照完成时间倒序\n if (a.endTime && b.endTime) {\n return b.endTime - a.endTime;\n } else if (a.endTime) {\n return 1;\n } else if (b.endTime) {\n return -1; // 都是未完成,按照创建时间倒序\n } else {\n return b.createTime - a.createTime;\n }\n }); // 需要审核的记录\n\n\n var userId = _store.default.getters.userId;\n\n _this2.tasks.forEach(function (task) {\n if (task.result !== 1) {\n // 只有待处理才需要\n return;\n }\n\n if (!task.assigneeUser || task.assigneeUser.id !== userId) {\n // 自己不是处理人\n return;\n }\n\n _this2.runningTasks.push((0, _objectSpread2.default)({}, task));\n\n _this2.auditForms.push({\n comment: ''\n });\n }); // 取消加载中\n\n\n _this2.tasksLoad = false;\n });\n },\n\n /** 处理选择流程的按钮操作 **/\n handleSelect: function handleSelect(row) {\n // 设置选择的流程\n this.selectProcessInstance = row; // 流程表单\n\n if (row.formId) {\n // 设置对应的表单\n this.detailForm = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, JSON.parse(row.formConf)), {}, {\n fields: (0, _formGenerator.decodeFields)(row.formFields)\n });\n } else if (row.formCustomCreatePath) {\n this.$router.push({\n path: row.formCustomCreatePath\n }); // 这里暂时无需加载流程图,因为跳出到另外个 Tab;\n }\n },\n\n /** 提交按钮 */\n submitForm: function submitForm(params) {\n var _this3 = this;\n\n if (!params) {\n return;\n } // 设置表单禁用\n\n\n var conf = params.conf;\n conf.disabled = true; // 表单禁用\n\n conf.formBtns = false; // 按钮隐藏\n // 提交表单,创建流程\n\n var variables = params.values;\n (0, _processInstance.createProcessInstance)({\n processDefinitionId: this.selectProcessInstance.id,\n variables: variables\n }).then(function (response) {\n _this3.$modal.msgSuccess(\"发起流程成功\"); // 关闭当前窗口\n\n\n _this3.$tab.closeOpenPage();\n\n _this3.$router.go(-1);\n }).catch(function () {\n conf.disabled = false; // 表单开启\n\n conf.formBtns = true; // 按钮展示\n });\n },\n getDateStar: function getDateStar(ms) {\n return (0, _dateUtils.getDate)(ms);\n },\n getTimelineItemIcon: function getTimelineItemIcon(item) {\n if (item.result === 1) {\n return 'el-icon-time';\n }\n\n if (item.result === 2) {\n return 'el-icon-check';\n }\n\n if (item.result === 3) {\n return 'el-icon-close';\n }\n\n if (item.result === 4) {\n return 'el-icon-remove-outline';\n }\n\n return '';\n },\n getTimelineItemType: function getTimelineItemType(item) {\n if (item.result === 1) {\n return 'primary';\n }\n\n if (item.result === 2) {\n return 'success';\n }\n\n if (item.result === 3) {\n return 'danger';\n }\n\n if (item.result === 4) {\n return 'info';\n }\n\n return '';\n },\n\n /** 处理审批通过和不通过的操作 */\n handleAudit: function handleAudit(task, pass) {\n var _this4 = this;\n\n var index = this.runningTasks.indexOf(task);\n this.$refs['form' + index][0].validate(function (valid) {\n if (!valid) {\n return;\n }\n\n var data = {\n id: task.id,\n comment: _this4.auditForms[index].comment\n };\n\n if (pass) {\n (0, _task.approveTask)(data).then(function (response) {\n _this4.$modal.msgSuccess(\"审批通过成功!\");\n\n _this4.getDetail(); // 获得最新详情\n\n });\n } else {\n (0, _task.rejectTask)(data).then(function (response) {\n _this4.$modal.msgSuccess(\"审批不通过成功!\");\n\n _this4.getDetail(); // 获得最新详情\n\n });\n }\n });\n },\n\n /** 处理转派审批人 */\n handleUpdateAssignee: function handleUpdateAssignee(task) {\n // 设置表单\n this.resetUpdateAssigneeForm();\n this.updateAssignee.form.id = task.id; // 设置为打开\n\n this.updateAssignee.open = true;\n },\n\n /** 提交转派审批人 */\n submitUpdateAssigneeForm: function submitUpdateAssigneeForm() {\n var _this5 = this;\n\n this.$refs['updateAssigneeForm'].validate(function (valid) {\n if (!valid) {\n return;\n }\n\n (0, _task.updateTaskAssignee)(_this5.updateAssignee.form).then(function (response) {\n _this5.$modal.msgSuccess(\"转派任务成功!\");\n\n _this5.updateAssignee.open = false;\n\n _this5.getDetail(); // 获得最新详情\n\n });\n });\n },\n\n /** 取消转派审批人 */\n cancelUpdateAssigneeForm: function cancelUpdateAssigneeForm() {\n this.updateAssignee.open = false;\n this.resetUpdateAssigneeForm();\n },\n\n /** 重置转派审批人 */\n resetUpdateAssigneeForm: function resetUpdateAssigneeForm() {\n this.updateAssignee.form = {\n id: undefined,\n assigneeUserId: undefined\n };\n this.resetForm(\"updateAssigneeForm\");\n },\n\n /** 处理审批退回的操作 */\n handleDelegate: function handleDelegate(task) {\n this.$modal.msgError(\"暂不支持【委派】功能,可以使用【转派】替代!\");\n },\n\n /** 处理审批退回的操作 */\n handleBack: function handleBack(task) {\n this.$modal.msgError(\"暂不支持【退回】功能!\");\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/bpm/processInstance/detail.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n\n__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.sort.js */ \"./node_modules/core-js/modules/es.array.sort.js\");\n\n__webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ \"./node_modules/core-js/modules/web.dom-collections.iterator.js\");\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/helpers/objectSpread2.js */ \"./node_modules/@babel/runtime/helpers/objectSpread2.js\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/helpers/toConsumableArray.js */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\"));\n\nvar _definition = __webpack_require__(/*! @/api/bpm/definition */ \"./src/api/bpm/definition.js\");\n\nvar _dict = __webpack_require__(/*! @/utils/dict */ \"./src/utils/dict.js\");\n\nvar _store = _interopRequireDefault(__webpack_require__(/*! @/store */ \"./src/store/index.js\"));\n\nvar _formGenerator = __webpack_require__(/*! @/utils/formGenerator */ \"./src/utils/formGenerator.js\");\n\nvar _Parser = _interopRequireDefault(__webpack_require__(/*! @/components/parser/Parser */ \"./src/components/parser/Parser.vue\"));\n\nvar _processInstance = __webpack_require__(/*! @/api/bpm/processInstance */ \"./src/api/bpm/processInstance.js\");\n\nvar _task = __webpack_require__(/*! @/api/bpm/task */ \"./src/api/bpm/task.js\");\n\nvar _dateUtils = __webpack_require__(/*! @/utils/dateUtils */ \"./src/utils/dateUtils.js\");\n\nvar _user = __webpack_require__(/*! @/api/system/user */ \"./src/api/system/user.js\");\n\nvar _activity = __webpack_require__(/*! @/api/bpm/activity */ \"./src/api/bpm/activity.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n// 流程实例的详情页,可用于审批\nvar _default = {\n name: \"ProcessInstanceDetail\",\n components: {\n Parser: _Parser.default\n },\n data: function data() {\n return {\n // 遮罩层\n processInstanceLoading: true,\n // 流程实例\n id: undefined,\n // 流程实例的编号\n processInstance: {},\n // 流程表单详情\n detailForm: {\n fields: []\n },\n // BPMN 数据\n bpmnXML: null,\n bpmnControlForm: {\n prefix: \"activiti\"\n },\n activityList: [],\n // 审批记录\n tasksLoad: true,\n tasks: [],\n // 审批表单\n runningTasks: [],\n auditForms: [],\n auditRule: {\n reason: [{\n required: true,\n message: \"审批建议不能为空\",\n trigger: \"blur\"\n }]\n },\n // 转派审批人\n userOptions: [],\n updateAssignee: {\n open: false,\n form: {\n assigneeUserId: undefined\n },\n rules: {\n assigneeUserId: [{\n required: true,\n message: \"新审批人不能为空\",\n trigger: \"change\"\n }]\n }\n },\n // 数据字典\n categoryDictDatas: (0, _dict.getDictDatas)(_dict.DICT_TYPE.BPM_MODEL_CATEGORY)\n };\n },\n created: function created() {\n var _this = this;\n\n this.id = this.$route.query.id;\n\n if (!this.id) {\n this.$message.error('未传递 id 参数,无法查看流程信息');\n return;\n }\n\n this.getDetail(); // 获得用户列表\n\n this.userOptions = [];\n (0, _user.listSimpleUsers)().then(function (response) {\n var _this$userOptions;\n\n (_this$userOptions = _this.userOptions).push.apply(_this$userOptions, (0, _toConsumableArray2.default)(response.data));\n });\n },\n methods: {\n /** 获得流程实例 */\n getDetail: function getDetail() {\n var _this2 = this;\n\n // 获得流程实例相关\n this.processInstanceLoading = true;\n (0, _processInstance.getProcessInstance)(this.id).then(function (response) {\n if (!response.data) {\n _this2.$message.error('查询不到流程信息!');\n\n return;\n } // 设置流程信息\n\n\n _this2.processInstance = response.data; // 设置表单信息\n\n if (_this2.processInstance.processDefinition.formType === 10) {\n _this2.detailForm = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, JSON.parse(_this2.processInstance.processDefinition.formConf)), {}, {\n disabled: true,\n // 表单禁用\n formBtns: false,\n // 按钮隐藏\n fields: (0, _formGenerator.decodeFields)(_this2.processInstance.processDefinition.formFields)\n }); // 设置表单的值\n\n _this2.detailForm.fields.forEach(function (item) {\n var val = _this2.processInstance.formVariables[item.__vModel__];\n\n if (val) {\n item.__config__.defaultValue = val;\n }\n });\n } // 加载流程图\n\n\n (0, _definition.getProcessDefinitionBpmnXML)(_this2.processInstance.processDefinition.id).then(function (response) {\n _this2.bpmnXML = response.data;\n }); // 加载活动列表\n\n (0, _activity.getActivityList)({\n processInstanceId: _this2.processInstance.id\n }).then(function (response) {\n _this2.activityList = response.data;\n }); // 取消加载中\n\n _this2.processInstanceLoading = false;\n }); // 获得流程任务列表(审批记录)\n\n this.tasksLoad = true;\n this.runningTasks = [];\n this.auditForms = [];\n (0, _task.getTaskListByProcessInstanceId)(this.id).then(function (response) {\n // 审批记录\n _this2.tasks = response.data; // 排序,将未完成的排在前面,已完成的排在后面;\n\n _this2.tasks.sort(function (a, b) {\n // 有已完成的情况,按照完成时间倒序\n if (a.endTime && b.endTime) {\n return b.endTime - a.endTime;\n } else if (a.endTime) {\n return 1;\n } else if (b.endTime) {\n return -1; // 都是未完成,按照创建时间倒序\n } else {\n return b.createTime - a.createTime;\n }\n }); // 需要审核的记录\n\n\n var userId = _store.default.getters.userId;\n\n _this2.tasks.forEach(function (task) {\n if (task.result !== 1) {\n // 只有待处理才需要\n return;\n }\n\n if (!task.assigneeUser || task.assigneeUser.id !== userId) {\n // 自己不是处理人\n return;\n }\n\n _this2.runningTasks.push((0, _objectSpread2.default)({}, task));\n\n _this2.auditForms.push({\n reason: ''\n });\n }); // 取消加载中\n\n\n _this2.tasksLoad = false;\n });\n },\n\n /** 处理选择流程的按钮操作 **/\n handleSelect: function handleSelect(row) {\n // 设置选择的流程\n this.selectProcessInstance = row; // 流程表单\n\n if (row.formId) {\n // 设置对应的表单\n this.detailForm = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, JSON.parse(row.formConf)), {}, {\n fields: (0, _formGenerator.decodeFields)(row.formFields)\n });\n } else if (row.formCustomCreatePath) {\n this.$router.push({\n path: row.formCustomCreatePath\n }); // 这里暂时无需加载流程图,因为跳出到另外个 Tab;\n }\n },\n\n /** 提交按钮 */\n submitForm: function submitForm(params) {\n var _this3 = this;\n\n if (!params) {\n return;\n } // 设置表单禁用\n\n\n var conf = params.conf;\n conf.disabled = true; // 表单禁用\n\n conf.formBtns = false; // 按钮隐藏\n // 提交表单,创建流程\n\n var variables = params.values;\n (0, _processInstance.createProcessInstance)({\n processDefinitionId: this.selectProcessInstance.id,\n variables: variables\n }).then(function (response) {\n _this3.$modal.msgSuccess(\"发起流程成功\"); // 关闭当前窗口\n\n\n _this3.$tab.closeOpenPage();\n\n _this3.$router.go(-1);\n }).catch(function () {\n conf.disabled = false; // 表单开启\n\n conf.formBtns = true; // 按钮展示\n });\n },\n getDateStar: function getDateStar(ms) {\n return (0, _dateUtils.getDate)(ms);\n },\n getTimelineItemIcon: function getTimelineItemIcon(item) {\n if (item.result === 1) {\n return 'el-icon-time';\n }\n\n if (item.result === 2) {\n return 'el-icon-check';\n }\n\n if (item.result === 3) {\n return 'el-icon-close';\n }\n\n if (item.result === 4) {\n return 'el-icon-remove-outline';\n }\n\n return '';\n },\n getTimelineItemType: function getTimelineItemType(item) {\n if (item.result === 1) {\n return 'primary';\n }\n\n if (item.result === 2) {\n return 'success';\n }\n\n if (item.result === 3) {\n return 'danger';\n }\n\n if (item.result === 4) {\n return 'info';\n }\n\n return '';\n },\n\n /** 处理审批通过和不通过的操作 */\n handleAudit: function handleAudit(task, pass) {\n var _this4 = this;\n\n var index = this.runningTasks.indexOf(task);\n this.$refs['form' + index][0].validate(function (valid) {\n if (!valid) {\n return;\n }\n\n var data = {\n id: task.id,\n reason: _this4.auditForms[index].reason\n };\n\n if (pass) {\n (0, _task.approveTask)(data).then(function (response) {\n _this4.$modal.msgSuccess(\"审批通过成功!\");\n\n _this4.getDetail(); // 获得最新详情\n\n });\n } else {\n (0, _task.rejectTask)(data).then(function (response) {\n _this4.$modal.msgSuccess(\"审批不通过成功!\");\n\n _this4.getDetail(); // 获得最新详情\n\n });\n }\n });\n },\n\n /** 处理转派审批人 */\n handleUpdateAssignee: function handleUpdateAssignee(task) {\n // 设置表单\n this.resetUpdateAssigneeForm();\n this.updateAssignee.form.id = task.id; // 设置为打开\n\n this.updateAssignee.open = true;\n },\n\n /** 提交转派审批人 */\n submitUpdateAssigneeForm: function submitUpdateAssigneeForm() {\n var _this5 = this;\n\n this.$refs['updateAssigneeForm'].validate(function (valid) {\n if (!valid) {\n return;\n }\n\n (0, _task.updateTaskAssignee)(_this5.updateAssignee.form).then(function (response) {\n _this5.$modal.msgSuccess(\"转派任务成功!\");\n\n _this5.updateAssignee.open = false;\n\n _this5.getDetail(); // 获得最新详情\n\n });\n });\n },\n\n /** 取消转派审批人 */\n cancelUpdateAssigneeForm: function cancelUpdateAssigneeForm() {\n this.updateAssignee.open = false;\n this.resetUpdateAssigneeForm();\n },\n\n /** 重置转派审批人 */\n resetUpdateAssigneeForm: function resetUpdateAssigneeForm() {\n this.updateAssignee.form = {\n id: undefined,\n assigneeUserId: undefined\n };\n this.resetForm(\"updateAssigneeForm\");\n },\n\n /** 处理审批退回的操作 */\n handleDelegate: function handleDelegate(task) {\n this.$modal.msgError(\"暂不支持【委派】功能,可以使用【转派】替代!\");\n },\n\n /** 处理审批退回的操作 */\n handleBack: function handleBack(task) {\n this.$modal.msgError(\"暂不支持【退回】功能!\");\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/bpm/processInstance/detail.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"f587f70a-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/processInstance/detail.vue?vue&type=template&id=55373334&": +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/processInstance/detail.vue?vue&type=template&id=55373334&": /*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"f587f70a-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/processInstance/detail.vue?vue&type=template&id=55373334& ***! + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/processInstance/detail.vue?vue&type=template&id=55373334& ***! \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"app-container\" },\n [\n _vm._l(_vm.runningTasks, function (item, index) {\n return _c(\n \"el-card\",\n {\n directives: [\n {\n name: \"loading\",\n rawName: \"v-loading\",\n value: _vm.processInstanceLoading,\n expression: \"processInstanceLoading\",\n },\n ],\n key: index,\n staticClass: \"box-card\",\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"clearfix\",\n attrs: { slot: \"header\" },\n slot: \"header\",\n },\n [\n _c(\"span\", { staticClass: \"el-icon-picture-outline\" }, [\n _vm._v(\"审批任务【\" + _vm._s(item.name) + \"】\"),\n ]),\n ]\n ),\n _c(\n \"el-col\",\n { attrs: { span: 16, offset: 6 } },\n [\n _c(\n \"el-form\",\n {\n ref: \"form\" + index,\n refInFor: true,\n attrs: {\n model: _vm.auditForms[index],\n rules: _vm.auditRule,\n \"label-width\": \"100px\",\n },\n },\n [\n _vm.processInstance && _vm.processInstance.name\n ? _c(\"el-form-item\", { attrs: { label: \"流程名\" } }, [\n _vm._v(\" \" + _vm._s(_vm.processInstance.name) + \" \"),\n ])\n : _vm._e(),\n _vm.processInstance && _vm.processInstance.startUser\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"流程发起人\" } },\n [\n _vm._v(\n \" \" +\n _vm._s(_vm.processInstance.startUser.nickname) +\n \" \"\n ),\n _c(\n \"el-tag\",\n { attrs: { type: \"info\", size: \"mini\" } },\n [\n _vm._v(\n _vm._s(_vm.processInstance.startUser.deptName)\n ),\n ]\n ),\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"el-form-item\",\n { attrs: { label: \"审批建议\", prop: \"comment\" } },\n [\n _c(\"el-input\", {\n attrs: {\n type: \"textarea\",\n placeholder: \"请输入审批建议\",\n },\n model: {\n value: _vm.auditForms[index].comment,\n callback: function ($$v) {\n _vm.$set(_vm.auditForms[index], \"comment\", $$v)\n },\n expression: \"auditForms[index].comment\",\n },\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticStyle: {\n \"margin-left\": \"10%\",\n \"margin-bottom\": \"20px\",\n \"font-size\": \"14px\",\n },\n },\n [\n _c(\n \"el-button\",\n {\n attrs: {\n icon: \"el-icon-edit-outline\",\n type: \"success\",\n size: \"mini\",\n },\n on: {\n click: function ($event) {\n return _vm.handleAudit(item, true)\n },\n },\n },\n [_vm._v(\"通过\")]\n ),\n _c(\n \"el-button\",\n {\n attrs: {\n icon: \"el-icon-circle-close\",\n type: \"danger\",\n size: \"mini\",\n },\n on: {\n click: function ($event) {\n return _vm.handleAudit(item, false)\n },\n },\n },\n [_vm._v(\"不通过\")]\n ),\n _c(\n \"el-button\",\n {\n attrs: {\n icon: \"el-icon-edit-outline\",\n type: \"primary\",\n size: \"mini\",\n },\n on: {\n click: function ($event) {\n return _vm.handleUpdateAssignee(item)\n },\n },\n },\n [_vm._v(\"转办\")]\n ),\n _c(\n \"el-button\",\n {\n attrs: {\n icon: \"el-icon-edit-outline\",\n type: \"primary\",\n size: \"mini\",\n },\n on: {\n click: function ($event) {\n return _vm.handleDelegate(item)\n },\n },\n },\n [_vm._v(\"委派\")]\n ),\n _c(\n \"el-button\",\n {\n attrs: {\n icon: \"el-icon-refresh-left\",\n type: \"warning\",\n size: \"mini\",\n },\n on: {\n click: function ($event) {\n return _vm.handleBack(item)\n },\n },\n },\n [_vm._v(\"退回\")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n }),\n _c(\n \"el-card\",\n {\n directives: [\n {\n name: \"loading\",\n rawName: \"v-loading\",\n value: _vm.processInstanceLoading,\n expression: \"processInstanceLoading\",\n },\n ],\n staticClass: \"box-card\",\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"clearfix\",\n attrs: { slot: \"header\" },\n slot: \"header\",\n },\n [\n _c(\"span\", { staticClass: \"el-icon-document\" }, [\n _vm._v(\"申请信息【\" + _vm._s(_vm.processInstance.name) + \"】\"),\n ]),\n ]\n ),\n this.processInstance.processDefinition &&\n this.processInstance.processDefinition.formType === 10\n ? _c(\"el-col\", { attrs: { span: 16, offset: 6 } }, [\n _c(\n \"div\",\n [\n _c(\"parser\", {\n key: new Date().getTime(),\n attrs: { \"form-conf\": _vm.detailForm },\n on: { submit: _vm.submitForm },\n }),\n ],\n 1\n ),\n ])\n : _vm._e(),\n this.processInstance.processDefinition &&\n this.processInstance.processDefinition.formType === 20\n ? _c(\n \"div\",\n [\n _c(\n \"router-link\",\n {\n attrs: {\n to:\n this.processInstance.processDefinition\n .formCustomViewPath +\n \"?id=\" +\n this.processInstance.businessKey,\n },\n },\n [\n _c(\"el-button\", { attrs: { type: \"primary\" } }, [\n _vm._v(\"点击查看\"),\n ]),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n ],\n 1\n ),\n _c(\n \"el-card\",\n {\n directives: [\n {\n name: \"loading\",\n rawName: \"v-loading\",\n value: _vm.tasksLoad,\n expression: \"tasksLoad\",\n },\n ],\n staticClass: \"box-card\",\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"clearfix\",\n attrs: { slot: \"header\" },\n slot: \"header\",\n },\n [\n _c(\"span\", { staticClass: \"el-icon-picture-outline\" }, [\n _vm._v(\"审批记录\"),\n ]),\n ]\n ),\n _c(\"el-col\", { attrs: { span: 16, offset: 4 } }, [\n _c(\n \"div\",\n { staticClass: \"block\" },\n [\n _c(\n \"el-timeline\",\n _vm._l(_vm.tasks, function (item, index) {\n return _c(\n \"el-timeline-item\",\n {\n key: index,\n attrs: {\n icon: _vm.getTimelineItemIcon(item),\n type: _vm.getTimelineItemType(item),\n },\n },\n [\n _c(\"p\", { staticStyle: { \"font-weight\": \"700\" } }, [\n _vm._v(\"任务:\" + _vm._s(item.name)),\n ]),\n _c(\n \"el-card\",\n { attrs: { \"body-style\": { padding: \"10px\" } } },\n [\n item.assigneeUser\n ? _c(\n \"label\",\n {\n staticStyle: {\n \"font-weight\": \"normal\",\n \"margin-right\": \"30px\",\n },\n },\n [\n _vm._v(\n \" 审批人:\" +\n _vm._s(item.assigneeUser.nickname) +\n \" \"\n ),\n _c(\n \"el-tag\",\n { attrs: { type: \"info\", size: \"mini\" } },\n [\n _vm._v(\n _vm._s(item.assigneeUser.deptName)\n ),\n ]\n ),\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"label\",\n { staticStyle: { \"font-weight\": \"normal\" } },\n [_vm._v(\"创建时间:\")]\n ),\n _c(\n \"label\",\n {\n staticStyle: {\n color: \"#8a909c\",\n \"font-weight\": \"normal\",\n },\n },\n [_vm._v(_vm._s(_vm.parseTime(item.createTime)))]\n ),\n item.endTime\n ? _c(\n \"label\",\n {\n staticStyle: {\n \"margin-left\": \"30px\",\n \"font-weight\": \"normal\",\n },\n },\n [_vm._v(\"审批时间:\")]\n )\n : _vm._e(),\n item.endTime\n ? _c(\n \"label\",\n {\n staticStyle: {\n color: \"#8a909c\",\n \"font-weight\": \"normal\",\n },\n },\n [\n _vm._v(\n \" \" + _vm._s(_vm.parseTime(item.endTime))\n ),\n ]\n )\n : _vm._e(),\n item.durationInMillis\n ? _c(\n \"label\",\n {\n staticStyle: {\n \"margin-left\": \"30px\",\n \"font-weight\": \"normal\",\n },\n },\n [_vm._v(\"耗时:\")]\n )\n : _vm._e(),\n item.durationInMillis\n ? _c(\n \"label\",\n {\n staticStyle: {\n color: \"#8a909c\",\n \"font-weight\": \"normal\",\n },\n },\n [\n _vm._v(\n \" \" +\n _vm._s(\n _vm.getDateStar(item.durationInMillis)\n ) +\n \" \"\n ),\n ]\n )\n : _vm._e(),\n item.comment\n ? _c(\n \"p\",\n [\n _c(\n \"el-tag\",\n {\n attrs: {\n type: _vm.getTimelineItemType(item),\n },\n },\n [_vm._v(_vm._s(item.comment))]\n ),\n ],\n 1\n )\n : _vm._e(),\n ]\n ),\n ],\n 1\n )\n }),\n 1\n ),\n ],\n 1\n ),\n ]),\n ],\n 1\n ),\n _c(\n \"el-card\",\n {\n directives: [\n {\n name: \"loading\",\n rawName: \"v-loading\",\n value: _vm.processInstanceLoading,\n expression: \"processInstanceLoading\",\n },\n ],\n staticClass: \"box-card\",\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"clearfix\",\n attrs: { slot: \"header\" },\n slot: \"header\",\n },\n [\n _c(\"span\", { staticClass: \"el-icon-picture-outline\" }, [\n _vm._v(\"流程图\"),\n ]),\n ]\n ),\n _c(\n \"my-process-viewer\",\n _vm._b(\n {\n key: \"designer\",\n attrs: {\n activityData: _vm.activityList,\n processInstanceData: _vm.processInstance,\n taskData: _vm.tasks,\n },\n model: {\n value: _vm.bpmnXML,\n callback: function ($$v) {\n _vm.bpmnXML = $$v\n },\n expression: \"bpmnXML\",\n },\n },\n \"my-process-viewer\",\n _vm.bpmnControlForm,\n false\n )\n ),\n ],\n 1\n ),\n _c(\n \"el-dialog\",\n {\n attrs: {\n title: \"转派审批人\",\n visible: _vm.updateAssignee.open,\n width: \"500px\",\n \"append-to-body\": \"\",\n },\n on: {\n \"update:visible\": function ($event) {\n return _vm.$set(_vm.updateAssignee, \"open\", $event)\n },\n },\n },\n [\n _c(\n \"el-form\",\n {\n ref: \"updateAssigneeForm\",\n attrs: {\n model: _vm.updateAssignee.form,\n rules: _vm.updateAssignee.rules,\n \"label-width\": \"110px\",\n },\n },\n [\n _c(\n \"el-form-item\",\n { attrs: { label: \"新审批人\", prop: \"assigneeUserId\" } },\n [\n _c(\n \"el-select\",\n {\n staticStyle: { width: \"100%\" },\n attrs: { clearable: \"\" },\n model: {\n value: _vm.updateAssignee.form.assigneeUserId,\n callback: function ($$v) {\n _vm.$set(\n _vm.updateAssignee.form,\n \"assigneeUserId\",\n $$v\n )\n },\n expression: \"updateAssignee.form.assigneeUserId\",\n },\n },\n _vm._l(_vm.userOptions, function (item) {\n return _c(\"el-option\", {\n key: parseInt(item.id),\n attrs: {\n label: item.nickname,\n value: parseInt(item.id),\n },\n })\n }),\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticClass: \"dialog-footer\",\n attrs: { slot: \"footer\" },\n slot: \"footer\",\n },\n [\n _c(\n \"el-button\",\n {\n attrs: { type: \"primary\" },\n on: { click: _vm.submitUpdateAssigneeForm },\n },\n [_vm._v(\"确 定\")]\n ),\n _c(\"el-button\", { on: { click: _vm.cancelUpdateAssigneeForm } }, [\n _vm._v(\"取 消\"),\n ]),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/bpm/processInstance/detail.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22f587f70a-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"app-container\" },\n [\n _vm._l(_vm.runningTasks, function (item, index) {\n return _c(\n \"el-card\",\n {\n directives: [\n {\n name: \"loading\",\n rawName: \"v-loading\",\n value: _vm.processInstanceLoading,\n expression: \"processInstanceLoading\",\n },\n ],\n key: index,\n staticClass: \"box-card\",\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"clearfix\",\n attrs: { slot: \"header\" },\n slot: \"header\",\n },\n [\n _c(\"span\", { staticClass: \"el-icon-picture-outline\" }, [\n _vm._v(\"审批任务【\" + _vm._s(item.name) + \"】\"),\n ]),\n ]\n ),\n _c(\n \"el-col\",\n { attrs: { span: 16, offset: 6 } },\n [\n _c(\n \"el-form\",\n {\n ref: \"form\" + index,\n refInFor: true,\n attrs: {\n model: _vm.auditForms[index],\n rules: _vm.auditRule,\n \"label-width\": \"100px\",\n },\n },\n [\n _vm.processInstance && _vm.processInstance.name\n ? _c(\"el-form-item\", { attrs: { label: \"流程名\" } }, [\n _vm._v(\" \" + _vm._s(_vm.processInstance.name) + \" \"),\n ])\n : _vm._e(),\n _vm.processInstance && _vm.processInstance.startUser\n ? _c(\n \"el-form-item\",\n { attrs: { label: \"流程发起人\" } },\n [\n _vm._v(\n \" \" +\n _vm._s(_vm.processInstance.startUser.nickname) +\n \" \"\n ),\n _c(\n \"el-tag\",\n { attrs: { type: \"info\", size: \"mini\" } },\n [\n _vm._v(\n _vm._s(_vm.processInstance.startUser.deptName)\n ),\n ]\n ),\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"el-form-item\",\n { attrs: { label: \"审批建议\", prop: \"reason\" } },\n [\n _c(\"el-input\", {\n attrs: {\n type: \"textarea\",\n placeholder: \"请输入审批建议\",\n },\n model: {\n value: _vm.auditForms[index].reason,\n callback: function ($$v) {\n _vm.$set(_vm.auditForms[index], \"reason\", $$v)\n },\n expression: \"auditForms[index].reason\",\n },\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticStyle: {\n \"margin-left\": \"10%\",\n \"margin-bottom\": \"20px\",\n \"font-size\": \"14px\",\n },\n },\n [\n _c(\n \"el-button\",\n {\n attrs: {\n icon: \"el-icon-edit-outline\",\n type: \"success\",\n size: \"mini\",\n },\n on: {\n click: function ($event) {\n return _vm.handleAudit(item, true)\n },\n },\n },\n [_vm._v(\"通过\")]\n ),\n _c(\n \"el-button\",\n {\n attrs: {\n icon: \"el-icon-circle-close\",\n type: \"danger\",\n size: \"mini\",\n },\n on: {\n click: function ($event) {\n return _vm.handleAudit(item, false)\n },\n },\n },\n [_vm._v(\"不通过\")]\n ),\n _c(\n \"el-button\",\n {\n attrs: {\n icon: \"el-icon-edit-outline\",\n type: \"primary\",\n size: \"mini\",\n },\n on: {\n click: function ($event) {\n return _vm.handleUpdateAssignee(item)\n },\n },\n },\n [_vm._v(\"转办\")]\n ),\n _c(\n \"el-button\",\n {\n attrs: {\n icon: \"el-icon-edit-outline\",\n type: \"primary\",\n size: \"mini\",\n },\n on: {\n click: function ($event) {\n return _vm.handleDelegate(item)\n },\n },\n },\n [_vm._v(\"委派\")]\n ),\n _c(\n \"el-button\",\n {\n attrs: {\n icon: \"el-icon-refresh-left\",\n type: \"warning\",\n size: \"mini\",\n },\n on: {\n click: function ($event) {\n return _vm.handleBack(item)\n },\n },\n },\n [_vm._v(\"退回\")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n }),\n _c(\n \"el-card\",\n {\n directives: [\n {\n name: \"loading\",\n rawName: \"v-loading\",\n value: _vm.processInstanceLoading,\n expression: \"processInstanceLoading\",\n },\n ],\n staticClass: \"box-card\",\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"clearfix\",\n attrs: { slot: \"header\" },\n slot: \"header\",\n },\n [\n _c(\"span\", { staticClass: \"el-icon-document\" }, [\n _vm._v(\"申请信息【\" + _vm._s(_vm.processInstance.name) + \"】\"),\n ]),\n ]\n ),\n this.processInstance.processDefinition &&\n this.processInstance.processDefinition.formType === 10\n ? _c(\"el-col\", { attrs: { span: 16, offset: 6 } }, [\n _c(\n \"div\",\n [\n _c(\"parser\", {\n key: new Date().getTime(),\n attrs: { \"form-conf\": _vm.detailForm },\n on: { submit: _vm.submitForm },\n }),\n ],\n 1\n ),\n ])\n : _vm._e(),\n this.processInstance.processDefinition &&\n this.processInstance.processDefinition.formType === 20\n ? _c(\n \"div\",\n [\n _c(\n \"router-link\",\n {\n attrs: {\n to:\n this.processInstance.processDefinition\n .formCustomViewPath +\n \"?id=\" +\n this.processInstance.businessKey,\n },\n },\n [\n _c(\"el-button\", { attrs: { type: \"primary\" } }, [\n _vm._v(\"点击查看\"),\n ]),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n ],\n 1\n ),\n _c(\n \"el-card\",\n {\n directives: [\n {\n name: \"loading\",\n rawName: \"v-loading\",\n value: _vm.tasksLoad,\n expression: \"tasksLoad\",\n },\n ],\n staticClass: \"box-card\",\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"clearfix\",\n attrs: { slot: \"header\" },\n slot: \"header\",\n },\n [\n _c(\"span\", { staticClass: \"el-icon-picture-outline\" }, [\n _vm._v(\"审批记录\"),\n ]),\n ]\n ),\n _c(\"el-col\", { attrs: { span: 16, offset: 4 } }, [\n _c(\n \"div\",\n { staticClass: \"block\" },\n [\n _c(\n \"el-timeline\",\n _vm._l(_vm.tasks, function (item, index) {\n return _c(\n \"el-timeline-item\",\n {\n key: index,\n attrs: {\n icon: _vm.getTimelineItemIcon(item),\n type: _vm.getTimelineItemType(item),\n },\n },\n [\n _c(\"p\", { staticStyle: { \"font-weight\": \"700\" } }, [\n _vm._v(\"任务:\" + _vm._s(item.name)),\n ]),\n _c(\n \"el-card\",\n { attrs: { \"body-style\": { padding: \"10px\" } } },\n [\n item.assigneeUser\n ? _c(\n \"label\",\n {\n staticStyle: {\n \"font-weight\": \"normal\",\n \"margin-right\": \"30px\",\n },\n },\n [\n _vm._v(\n \" 审批人:\" +\n _vm._s(item.assigneeUser.nickname) +\n \" \"\n ),\n _c(\n \"el-tag\",\n { attrs: { type: \"info\", size: \"mini\" } },\n [\n _vm._v(\n _vm._s(item.assigneeUser.deptName)\n ),\n ]\n ),\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"label\",\n { staticStyle: { \"font-weight\": \"normal\" } },\n [_vm._v(\"创建时间:\")]\n ),\n _c(\n \"label\",\n {\n staticStyle: {\n color: \"#8a909c\",\n \"font-weight\": \"normal\",\n },\n },\n [_vm._v(_vm._s(_vm.parseTime(item.createTime)))]\n ),\n item.endTime\n ? _c(\n \"label\",\n {\n staticStyle: {\n \"margin-left\": \"30px\",\n \"font-weight\": \"normal\",\n },\n },\n [_vm._v(\"审批时间:\")]\n )\n : _vm._e(),\n item.endTime\n ? _c(\n \"label\",\n {\n staticStyle: {\n color: \"#8a909c\",\n \"font-weight\": \"normal\",\n },\n },\n [\n _vm._v(\n \" \" + _vm._s(_vm.parseTime(item.endTime))\n ),\n ]\n )\n : _vm._e(),\n item.durationInMillis\n ? _c(\n \"label\",\n {\n staticStyle: {\n \"margin-left\": \"30px\",\n \"font-weight\": \"normal\",\n },\n },\n [_vm._v(\"耗时:\")]\n )\n : _vm._e(),\n item.durationInMillis\n ? _c(\n \"label\",\n {\n staticStyle: {\n color: \"#8a909c\",\n \"font-weight\": \"normal\",\n },\n },\n [\n _vm._v(\n \" \" +\n _vm._s(\n _vm.getDateStar(item.durationInMillis)\n ) +\n \" \"\n ),\n ]\n )\n : _vm._e(),\n item.reason\n ? _c(\n \"p\",\n [\n _c(\n \"el-tag\",\n {\n attrs: {\n type: _vm.getTimelineItemType(item),\n },\n },\n [_vm._v(_vm._s(item.reason))]\n ),\n ],\n 1\n )\n : _vm._e(),\n ]\n ),\n ],\n 1\n )\n }),\n 1\n ),\n ],\n 1\n ),\n ]),\n ],\n 1\n ),\n _c(\n \"el-card\",\n {\n directives: [\n {\n name: \"loading\",\n rawName: \"v-loading\",\n value: _vm.processInstanceLoading,\n expression: \"processInstanceLoading\",\n },\n ],\n staticClass: \"box-card\",\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"clearfix\",\n attrs: { slot: \"header\" },\n slot: \"header\",\n },\n [\n _c(\"span\", { staticClass: \"el-icon-picture-outline\" }, [\n _vm._v(\"流程图\"),\n ]),\n ]\n ),\n _c(\n \"my-process-viewer\",\n _vm._b(\n {\n key: \"designer\",\n attrs: {\n activityData: _vm.activityList,\n processInstanceData: _vm.processInstance,\n taskData: _vm.tasks,\n },\n model: {\n value: _vm.bpmnXML,\n callback: function ($$v) {\n _vm.bpmnXML = $$v\n },\n expression: \"bpmnXML\",\n },\n },\n \"my-process-viewer\",\n _vm.bpmnControlForm,\n false\n )\n ),\n ],\n 1\n ),\n _c(\n \"el-dialog\",\n {\n attrs: {\n title: \"转派审批人\",\n visible: _vm.updateAssignee.open,\n width: \"500px\",\n \"append-to-body\": \"\",\n },\n on: {\n \"update:visible\": function ($event) {\n return _vm.$set(_vm.updateAssignee, \"open\", $event)\n },\n },\n },\n [\n _c(\n \"el-form\",\n {\n ref: \"updateAssigneeForm\",\n attrs: {\n model: _vm.updateAssignee.form,\n rules: _vm.updateAssignee.rules,\n \"label-width\": \"110px\",\n },\n },\n [\n _c(\n \"el-form-item\",\n { attrs: { label: \"新审批人\", prop: \"assigneeUserId\" } },\n [\n _c(\n \"el-select\",\n {\n staticStyle: { width: \"100%\" },\n attrs: { clearable: \"\" },\n model: {\n value: _vm.updateAssignee.form.assigneeUserId,\n callback: function ($$v) {\n _vm.$set(\n _vm.updateAssignee.form,\n \"assigneeUserId\",\n $$v\n )\n },\n expression: \"updateAssignee.form.assigneeUserId\",\n },\n },\n _vm._l(_vm.userOptions, function (item) {\n return _c(\"el-option\", {\n key: parseInt(item.id),\n attrs: {\n label: item.nickname,\n value: parseInt(item.id),\n },\n })\n }),\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticClass: \"dialog-footer\",\n attrs: { slot: \"footer\" },\n slot: \"footer\",\n },\n [\n _c(\n \"el-button\",\n {\n attrs: { type: \"primary\" },\n on: { click: _vm.submitUpdateAssigneeForm },\n },\n [_vm._v(\"确 定\")]\n ),\n _c(\"el-button\", { on: { click: _vm.cancelUpdateAssigneeForm } }, [\n _vm._v(\"取 消\"),\n ]),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/bpm/processInstance/detail.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), @@ -138,7 +138,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_f587f70a_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_detail_vue_vue_type_template_id_55373334___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"f587f70a-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./detail.vue?vue&type=template&id=55373334& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"f587f70a-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/processInstance/detail.vue?vue&type=template&id=55373334&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_f587f70a_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_detail_vue_vue_type_template_id_55373334___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_f587f70a_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_detail_vue_vue_type_template_id_55373334___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/bpm/processInstance/detail.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_detail_vue_vue_type_template_id_55373334___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./detail.vue?vue&type=template&id=55373334& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/processInstance/detail.vue?vue&type=template&id=55373334&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_detail_vue_vue_type_template_id_55373334___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_detail_vue_vue_type_template_id_55373334___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/bpm/processInstance/detail.vue?"); /***/ }) diff --git a/yudao-server/src/main/resources/admin-ui/static/js/10.js.gz b/yudao-server/src/main/resources/admin-ui/static/js/10.js.gz index 586747b6fd..387fe42ed3 100644 Binary files a/yudao-server/src/main/resources/admin-ui/static/js/10.js.gz and b/yudao-server/src/main/resources/admin-ui/static/js/10.js.gz differ diff --git a/yudao-server/src/main/resources/admin-ui/static/js/11.js b/yudao-server/src/main/resources/admin-ui/static/js/11.js index af6e90a73c..d6913ae267 100644 --- a/yudao-server/src/main/resources/admin-ui/static/js/11.js +++ b/yudao-server/src/main/resources/admin-ui/static/js/11.js @@ -12,15 +12,15 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"f587f70a-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/error/404.vue?vue&type=template&id=09c68b87&scoped=true&": +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/error/404.vue?vue&type=template&id=09c68b87&scoped=true&": /*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"f587f70a-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/error/404.vue?vue&type=template&id=09c68b87&scoped=true& ***! + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/error/404.vue?vue&type=template&id=09c68b87&scoped=true& ***! \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"wscn-http404-container\" }, [\n _c(\"div\", { staticClass: \"wscn-http404\" }, [\n _vm._m(0),\n _c(\n \"div\",\n { staticClass: \"bullshit\" },\n [\n _c(\"div\", { staticClass: \"bullshit__oops\" }, [_vm._v(\" 404错误! \")]),\n _c(\"div\", { staticClass: \"bullshit__headline\" }, [\n _vm._v(\" \" + _vm._s(_vm.message) + \" \"),\n ]),\n _c(\"div\", { staticClass: \"bullshit__info\" }, [\n _vm._v(\n \" 对不起,您正在寻找的页面不存在。尝试检查URL的错误,然后按浏览器上的刷新按钮或尝试在我们的应用程序中找到其他内容。 \"\n ),\n ]),\n _c(\n \"router-link\",\n { staticClass: \"bullshit__return-home\", attrs: { to: \"/\" } },\n [_vm._v(\" 返回首页 \")]\n ),\n ],\n 1\n ),\n ]),\n ])\n}\nvar staticRenderFns = [\n function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"pic-404\" }, [\n _c(\"img\", {\n staticClass: \"pic-404__parent\",\n attrs: { src: __webpack_require__(/*! @/assets/404_images/404.png */ \"./src/assets/404_images/404.png\"), alt: \"404\" },\n }),\n _c(\"img\", {\n staticClass: \"pic-404__child left\",\n attrs: {\n src: __webpack_require__(/*! @/assets/404_images/404_cloud.png */ \"./src/assets/404_images/404_cloud.png\"),\n alt: \"404\",\n },\n }),\n _c(\"img\", {\n staticClass: \"pic-404__child mid\",\n attrs: {\n src: __webpack_require__(/*! @/assets/404_images/404_cloud.png */ \"./src/assets/404_images/404_cloud.png\"),\n alt: \"404\",\n },\n }),\n _c(\"img\", {\n staticClass: \"pic-404__child right\",\n attrs: {\n src: __webpack_require__(/*! @/assets/404_images/404_cloud.png */ \"./src/assets/404_images/404_cloud.png\"),\n alt: \"404\",\n },\n }),\n ])\n },\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/error/404.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22f587f70a-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"wscn-http404-container\" }, [\n _c(\"div\", { staticClass: \"wscn-http404\" }, [\n _vm._m(0),\n _c(\n \"div\",\n { staticClass: \"bullshit\" },\n [\n _c(\"div\", { staticClass: \"bullshit__oops\" }, [_vm._v(\" 404错误! \")]),\n _c(\"div\", { staticClass: \"bullshit__headline\" }, [\n _vm._v(\" \" + _vm._s(_vm.message) + \" \"),\n ]),\n _c(\"div\", { staticClass: \"bullshit__info\" }, [\n _vm._v(\n \" 对不起,您正在寻找的页面不存在。尝试检查URL的错误,然后按浏览器上的刷新按钮或尝试在我们的应用程序中找到其他内容。 \"\n ),\n ]),\n _c(\n \"router-link\",\n { staticClass: \"bullshit__return-home\", attrs: { to: \"/\" } },\n [_vm._v(\" 返回首页 \")]\n ),\n ],\n 1\n ),\n ]),\n ])\n}\nvar staticRenderFns = [\n function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"pic-404\" }, [\n _c(\"img\", {\n staticClass: \"pic-404__parent\",\n attrs: { src: __webpack_require__(/*! @/assets/404_images/404.png */ \"./src/assets/404_images/404.png\"), alt: \"404\" },\n }),\n _c(\"img\", {\n staticClass: \"pic-404__child left\",\n attrs: {\n src: __webpack_require__(/*! @/assets/404_images/404_cloud.png */ \"./src/assets/404_images/404_cloud.png\"),\n alt: \"404\",\n },\n }),\n _c(\"img\", {\n staticClass: \"pic-404__child mid\",\n attrs: {\n src: __webpack_require__(/*! @/assets/404_images/404_cloud.png */ \"./src/assets/404_images/404_cloud.png\"),\n alt: \"404\",\n },\n }),\n _c(\"img\", {\n staticClass: \"pic-404__child right\",\n attrs: {\n src: __webpack_require__(/*! @/assets/404_images/404_cloud.png */ \"./src/assets/404_images/404_cloud.png\"),\n alt: \"404\",\n },\n }),\n ])\n },\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/error/404.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), @@ -112,7 +112,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_f587f70a_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_template_id_09c68b87_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"f587f70a-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./404.vue?vue&type=template&id=09c68b87&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"f587f70a-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/error/404.vue?vue&type=template&id=09c68b87&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_f587f70a_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_template_id_09c68b87_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_f587f70a_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_template_id_09c68b87_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/error/404.vue?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_template_id_09c68b87_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib??vue-loader-options!./404.vue?vue&type=template&id=09c68b87&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/error/404.vue?vue&type=template&id=09c68b87&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_template_id_09c68b87_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_template_id_09c68b87_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/error/404.vue?"); /***/ }) diff --git a/yudao-server/src/main/resources/admin-ui/static/js/11.js.gz b/yudao-server/src/main/resources/admin-ui/static/js/11.js.gz index 91f034a222..e99bfb736b 100644 Binary files a/yudao-server/src/main/resources/admin-ui/static/js/11.js.gz and b/yudao-server/src/main/resources/admin-ui/static/js/11.js.gz differ diff --git a/yudao-server/src/main/resources/admin-ui/static/js/12.js b/yudao-server/src/main/resources/admin-ui/static/js/12.js index 08e7c13f55..c885ee06de 100644 --- a/yudao-server/src/main/resources/admin-ui/static/js/12.js +++ b/yudao-server/src/main/resources/admin-ui/static/js/12.js @@ -8,41 +8,41 @@ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _login = __webpack_require__(/*! @/api/login */ \"./src/api/login.js\");\n\nvar _tenant = __webpack_require__(/*! @/api/system/tenant */ \"./src/api/system/tenant.js\");\n\nvar _jsCookie = _interopRequireDefault(__webpack_require__(/*! js-cookie */ \"./node_modules/js-cookie/dist/js.cookie.js\"));\n\nvar _jsencrypt = __webpack_require__(/*! @/utils/jsencrypt */ \"./src/utils/jsencrypt.js\");\n\nvar _constants = __webpack_require__(/*! @/utils/constants */ \"./src/utils/constants.js\");\n\nvar _ruoyi = __webpack_require__(/*! @/utils/ruoyi */ \"./src/utils/ruoyi.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n name: \"Login\",\n data: function data() {\n return {\n codeUrl: \"\",\n captchaEnable: true,\n tenantEnable: true,\n loginForm: {\n username: \"admin\",\n password: \"admin123\",\n rememberMe: false,\n code: \"\",\n uuid: \"\",\n tenantName: \"芋道源码\"\n },\n loginRules: {\n username: [{\n required: true,\n trigger: \"blur\",\n message: \"用户名不能为空\"\n }],\n password: [{\n required: true,\n trigger: \"blur\",\n message: \"密码不能为空\"\n }],\n code: [{\n required: true,\n trigger: \"change\",\n message: \"验证码不能为空\"\n }],\n tenantName: [{\n required: true,\n trigger: \"blur\",\n message: \"租户不能为空\"\n }, {\n validator: function validator(rule, value, callback) {\n (0, _tenant.getTenantIdByName)(value).then(function (res) {\n var tenantId = res.data;\n\n if (tenantId && tenantId >= 0) {\n // 设置租户\n _jsCookie.default.set(\"tenantId\", tenantId);\n\n callback();\n } else {\n callback('租户不存在');\n }\n });\n },\n trigger: 'blur'\n }]\n },\n loading: false,\n redirect: undefined,\n // 枚举\n SysUserSocialTypeEnum: _constants.SystemUserSocialTypeEnum\n };\n },\n // watch: {\n // $route: {\n // handler: function(route) {\n // this.redirect = route.query && route.query.redirect;\n // },\n // immediate: true\n // }\n // },\n created: function created() {\n // 租户开关\n this.tenantEnable = (0, _ruoyi.getTenantEnable)(); // 重定向地址\n\n this.redirect = this.$route.query.redirect;\n this.getCode();\n this.getCookie();\n },\n methods: {\n getCode: function getCode() {\n var _this = this;\n\n // 只有开启的状态,才加载验证码。默认开启\n if (!this.captchaEnable) {\n return;\n } // 请求远程,获得验证码\n\n\n (0, _login.getCodeImg)().then(function (res) {\n res = res.data;\n _this.captchaEnable = res.enable;\n\n if (_this.captchaEnable) {\n _this.codeUrl = \"data:image/gif;base64,\" + res.img;\n _this.loginForm.uuid = res.uuid;\n }\n });\n },\n getCookie: function getCookie() {\n var username = _jsCookie.default.get(\"username\");\n\n var password = _jsCookie.default.get(\"password\");\n\n var rememberMe = _jsCookie.default.get('rememberMe');\n\n var tenantName = _jsCookie.default.get('tenantName');\n\n this.loginForm = {\n username: username === undefined ? this.loginForm.username : username,\n password: password === undefined ? this.loginForm.password : (0, _jsencrypt.decrypt)(password),\n rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),\n tenantName: tenantName === undefined ? this.loginForm.tenantName : tenantName\n };\n },\n handleLogin: function handleLogin() {\n var _this2 = this;\n\n this.$refs.loginForm.validate(function (valid) {\n if (valid) {\n _this2.loading = true; // 设置 Cookie\n\n if (_this2.loginForm.rememberMe) {\n _jsCookie.default.set(\"username\", _this2.loginForm.username, {\n expires: 30\n });\n\n _jsCookie.default.set(\"password\", (0, _jsencrypt.encrypt)(_this2.loginForm.password), {\n expires: 30\n });\n\n _jsCookie.default.set('rememberMe', _this2.loginForm.rememberMe, {\n expires: 30\n });\n\n _jsCookie.default.set('tenantName', _this2.loginForm.tenantName, {\n expires: 30\n });\n } else {\n _jsCookie.default.remove(\"username\");\n\n _jsCookie.default.remove(\"password\");\n\n _jsCookie.default.remove('rememberMe');\n\n _jsCookie.default.remove('tenantName');\n } // 发起登陆\n\n\n _this2.$store.dispatch(\"Login\", _this2.loginForm).then(function () {\n _this2.$router.push({\n path: _this2.redirect || \"/\"\n }).catch(function () {});\n }).catch(function () {\n _this2.loading = false;\n\n _this2.getCode();\n });\n }\n });\n },\n doSocialLogin: function doSocialLogin(socialTypeEnum) {\n // 设置登录中\n this.loading = true; // 计算 redirectUri\n\n var redirectUri = location.origin + '/social-login?type=' + socialTypeEnum.type + '&redirect=' + (this.redirect || \"/\"); // 重定向不能丢\n // const redirectUri = 'http://127.0.0.1:48080/api/gitee/callback';\n // const redirectUri = 'http://127.0.0.1:48080/api/dingtalk/callback';\n // 进行跳转\n\n (0, _login.socialAuthRedirect)(socialTypeEnum.type, encodeURIComponent(redirectUri)).then(function (res) {\n // console.log(res.url);\n window.location.href = res.data;\n });\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/login.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n\n__webpack_require__(/*! core-js/modules/es.regexp.test.js */ \"./node_modules/core-js/modules/es.regexp.test.js\");\n\n__webpack_require__(/*! core-js/modules/es.error.cause.js */ \"./node_modules/core-js/modules/es.error.cause.js\");\n\nvar _login = __webpack_require__(/*! @/api/login */ \"./src/api/login.js\");\n\nvar _tenant = __webpack_require__(/*! @/api/system/tenant */ \"./src/api/system/tenant.js\");\n\nvar _jsCookie = _interopRequireDefault(__webpack_require__(/*! js-cookie */ \"./node_modules/js-cookie/dist/js.cookie.js\"));\n\nvar _jsencrypt = __webpack_require__(/*! @/utils/jsencrypt */ \"./src/utils/jsencrypt.js\");\n\nvar _constants = __webpack_require__(/*! @/utils/constants */ \"./src/utils/constants.js\");\n\nvar _ruoyi = __webpack_require__(/*! @/utils/ruoyi */ \"./src/utils/ruoyi.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n name: \"Login\",\n data: function data() {\n return {\n codeUrl: \"\",\n captchaEnable: true,\n tenantEnable: true,\n mobileCodeTimer: 0,\n loginForm: {\n loginType: \"uname\",\n username: \"admin\",\n password: \"admin123\",\n mobile: \"\",\n mobileCode: \"\",\n rememberMe: false,\n code: \"\",\n uuid: \"\",\n tenantName: \"芋道源码\"\n },\n scene: 21,\n LoginRules: {\n username: [{\n required: true,\n trigger: \"blur\",\n message: \"用户名不能为空\"\n }],\n password: [{\n required: true,\n trigger: \"blur\",\n message: \"密码不能为空\"\n }],\n code: [{\n required: true,\n trigger: \"change\",\n message: \"验证码不能为空\"\n }],\n mobile: [{\n required: true,\n trigger: \"blur\",\n message: \"手机号不能为空\"\n }, {\n validator: function validator(rule, value, callback) {\n if (/^1[0-9]\\d{9}$/.test(value) == false) {\n callback(new Error(\"手机号格式错误\"));\n } else {\n callback();\n }\n },\n trigger: \"blur\"\n }],\n tenantName: [{\n required: true,\n trigger: \"blur\",\n message: \"租户不能为空\"\n }, {\n validator: function validator(rule, value, callback) {\n // debugger\n (0, _tenant.getTenantIdByName)(value).then(function (res) {\n var tenantId = res.data;\n\n if (tenantId && tenantId >= 0) {\n // 设置租户\n _jsCookie.default.set(\"tenantId\", tenantId);\n\n callback();\n } else {\n callback('租户不存在');\n }\n });\n },\n trigger: 'blur'\n }]\n },\n loading: false,\n redirect: undefined,\n // 枚举\n SysUserSocialTypeEnum: _constants.SystemUserSocialTypeEnum\n };\n },\n // watch: {\n // $route: {\n // handler: function(route) {\n // this.redirect = route.query && route.query.redirect;\n // },\n // immediate: true\n // }\n // },\n created: function created() {\n // 租户开关\n this.tenantEnable = (0, _ruoyi.getTenantEnable)(); // 重定向地址\n\n this.redirect = this.$route.query.redirect;\n this.getCode();\n this.getCookie();\n },\n methods: {\n getCode: function getCode() {\n var _this = this;\n\n // 只有开启的状态,才加载验证码。默认开启\n if (!this.captchaEnable) {\n return;\n } // 请求远程,获得验证码\n\n\n (0, _login.getCodeImg)().then(function (res) {\n res = res.data;\n _this.captchaEnable = res.enable;\n\n if (_this.captchaEnable) {\n _this.codeUrl = \"data:image/gif;base64,\" + res.img;\n _this.loginForm.uuid = res.uuid;\n }\n });\n },\n getCookie: function getCookie() {\n var username = _jsCookie.default.get(\"username\");\n\n var password = _jsCookie.default.get(\"password\");\n\n var rememberMe = _jsCookie.default.get('rememberMe');\n\n var tenantName = _jsCookie.default.get('tenantName');\n\n var mobile = _jsCookie.default.get('mobile');\n\n var mobileCode = _jsCookie.default.get('mobileCode');\n\n var loginType = _jsCookie.default.get('loginType');\n\n this.loginForm = {\n username: username === undefined ? this.loginForm.username : username,\n password: password === undefined ? this.loginForm.password : (0, _jsencrypt.decrypt)(password),\n rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),\n tenantName: tenantName === undefined ? this.loginForm.tenantName : tenantName,\n mobile: mobile === undefined ? this.loginForm.mobile : mobile,\n mobileCode: mobileCode === undefined ? this.loginForm.mobileCode : mobileCode,\n loginType: loginType === undefined ? this.loginForm.loginType : loginType\n };\n },\n handleLogin: function handleLogin() {\n var _this2 = this;\n\n this.$refs.loginForm.validate(function (valid) {\n if (valid) {\n _this2.loading = true; // 设置 Cookie\n\n if (_this2.loginForm.rememberMe) {\n _jsCookie.default.set(\"username\", _this2.loginForm.username, {\n expires: 30\n });\n\n _jsCookie.default.set(\"password\", (0, _jsencrypt.encrypt)(_this2.loginForm.password), {\n expires: 30\n });\n\n _jsCookie.default.set('rememberMe', _this2.loginForm.rememberMe, {\n expires: 30\n });\n\n _jsCookie.default.set('tenantName', _this2.loginForm.tenantName, {\n expires: 30\n });\n } else {\n _jsCookie.default.remove(\"username\");\n\n _jsCookie.default.remove(\"password\");\n\n _jsCookie.default.remove('rememberMe');\n\n _jsCookie.default.remove('tenantName');\n } // 发起登陆\n\n\n console.log(\"发起登录\", _this2.loginForm);\n\n _this2.$store.dispatch(_this2.loginForm.loginType === \"sms\" ? \"SmsLogin\" : \"Login\", _this2.loginForm).then(function () {\n _this2.$router.push({\n path: _this2.redirect || \"/\"\n }).catch(function () {});\n }).catch(function () {\n _this2.loading = false;\n\n _this2.getCode();\n });\n }\n });\n },\n doSocialLogin: function doSocialLogin(socialTypeEnum) {\n // 设置登录中\n this.loading = true; // 计算 redirectUri\n\n var redirectUri = location.origin + '/social-login?type=' + socialTypeEnum.type + '&redirect=' + (this.redirect || \"/\"); // 重定向不能丢\n // const redirectUri = 'http://127.0.0.1:48080/api/gitee/callback';\n // const redirectUri = 'http://127.0.0.1:48080/api/dingtalk/callback';\n // 进行跳转\n\n (0, _login.socialAuthRedirect)(socialTypeEnum.type, encodeURIComponent(redirectUri)).then(function (res) {\n // console.log(res.url);\n window.location.href = res.data;\n });\n },\n\n /** ========== 以下为升级短信登录 ========== */\n getSmsCode: function getSmsCode() {\n var _this3 = this;\n\n if (this.mobileCodeTimer > 0) return;\n this.$refs.loginForm.validate(function (valid) {\n if (!valid) return;\n (0, _login.sendSmsCode)(_this3.loginForm.mobile, _this3.scene, _this3.loginForm.uuid, _this3.loginForm.code).then(function (res) {\n _this3.$modal.msgSuccess(\"获取验证码成功\");\n\n _this3.mobileCodeTimer = 60;\n var msgTimer = setInterval(function () {\n _this3.mobileCodeTimer = _this3.mobileCodeTimer - 1;\n\n if (_this3.mobileCodeTimer <= 0) {\n clearInterval(msgTimer);\n }\n }, 1000);\n });\n });\n }\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/login.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"f587f70a-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/login.vue?vue&type=template&id=7589b93f&": -/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"f587f70a-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/login.vue?vue&type=template&id=7589b93f& ***! - \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/login.vue?vue&type=template&id=7589b93f&scoped=true&": +/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/login.vue?vue&type=template&id=7589b93f&scoped=true& ***! + \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"login\" },\n [\n _c(\n \"el-form\",\n {\n ref: \"loginForm\",\n staticClass: \"login-form\",\n attrs: { model: _vm.loginForm, rules: _vm.loginRules },\n },\n [\n _c(\"h3\", { staticClass: \"title\" }, [_vm._v(\"芋道后台管理系统\")]),\n _vm.tenantEnable\n ? _c(\n \"el-form-item\",\n { attrs: { prop: \"tenantName\" } },\n [\n _c(\n \"el-input\",\n {\n attrs: {\n type: \"text\",\n \"auto-complete\": \"off\",\n placeholder: \"租户\",\n },\n model: {\n value: _vm.loginForm.tenantName,\n callback: function ($$v) {\n _vm.$set(_vm.loginForm, \"tenantName\", $$v)\n },\n expression: \"loginForm.tenantName\",\n },\n },\n [\n _c(\"svg-icon\", {\n staticClass: \"el-input__icon input-icon\",\n attrs: { slot: \"prefix\", \"icon-class\": \"tree\" },\n slot: \"prefix\",\n }),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"el-form-item\",\n { attrs: { prop: \"username\" } },\n [\n _c(\n \"el-input\",\n {\n attrs: {\n type: \"text\",\n \"auto-complete\": \"off\",\n placeholder: \"账号\",\n },\n model: {\n value: _vm.loginForm.username,\n callback: function ($$v) {\n _vm.$set(_vm.loginForm, \"username\", $$v)\n },\n expression: \"loginForm.username\",\n },\n },\n [\n _c(\"svg-icon\", {\n staticClass: \"el-input__icon input-icon\",\n attrs: { slot: \"prefix\", \"icon-class\": \"user\" },\n slot: \"prefix\",\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { prop: \"password\" } },\n [\n _c(\n \"el-input\",\n {\n attrs: {\n type: \"password\",\n \"auto-complete\": \"off\",\n placeholder: \"密码\",\n },\n nativeOn: {\n keyup: function ($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.handleLogin($event)\n },\n },\n model: {\n value: _vm.loginForm.password,\n callback: function ($$v) {\n _vm.$set(_vm.loginForm, \"password\", $$v)\n },\n expression: \"loginForm.password\",\n },\n },\n [\n _c(\"svg-icon\", {\n staticClass: \"el-input__icon input-icon\",\n attrs: { slot: \"prefix\", \"icon-class\": \"password\" },\n slot: \"prefix\",\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm.captchaEnable\n ? _c(\n \"el-form-item\",\n { attrs: { prop: \"code\" } },\n [\n _c(\n \"el-input\",\n {\n staticStyle: { width: \"63%\" },\n attrs: { \"auto-complete\": \"off\", placeholder: \"验证码\" },\n nativeOn: {\n keyup: function ($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n return _vm.handleLogin($event)\n },\n },\n model: {\n value: _vm.loginForm.code,\n callback: function ($$v) {\n _vm.$set(_vm.loginForm, \"code\", $$v)\n },\n expression: \"loginForm.code\",\n },\n },\n [\n _c(\"svg-icon\", {\n staticClass: \"el-input__icon input-icon\",\n attrs: { slot: \"prefix\", \"icon-class\": \"validCode\" },\n slot: \"prefix\",\n }),\n ],\n 1\n ),\n _c(\"div\", { staticClass: \"login-code\" }, [\n _c(\"img\", {\n staticClass: \"login-code-img\",\n attrs: { src: _vm.codeUrl },\n on: { click: _vm.getCode },\n }),\n ]),\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"el-checkbox\",\n {\n staticStyle: { margin: \"0px 0px 25px 0px\" },\n model: {\n value: _vm.loginForm.rememberMe,\n callback: function ($$v) {\n _vm.$set(_vm.loginForm, \"rememberMe\", $$v)\n },\n expression: \"loginForm.rememberMe\",\n },\n },\n [_vm._v(\"记住密码\")]\n ),\n _c(\n \"el-form-item\",\n { staticStyle: { width: \"100%\" } },\n [\n _c(\n \"el-button\",\n {\n staticStyle: { width: \"100%\" },\n attrs: {\n loading: _vm.loading,\n size: \"medium\",\n type: \"primary\",\n },\n nativeOn: {\n click: function ($event) {\n $event.preventDefault()\n return _vm.handleLogin($event)\n },\n },\n },\n [\n !_vm.loading\n ? _c(\"span\", [_vm._v(\"登 录\")])\n : _c(\"span\", [_vm._v(\"登 录 中...\")]),\n ]\n ),\n ],\n 1\n ),\n _c(\"el-form-item\", { staticStyle: { width: \"100%\" } }, [\n _c(\n \"div\",\n { staticClass: \"oauth-login\", staticStyle: { display: \"flex\" } },\n _vm._l(_vm.SysUserSocialTypeEnum, function (item) {\n return _c(\n \"div\",\n {\n key: item.type,\n staticClass: \"oauth-login-item\",\n on: {\n click: function ($event) {\n return _vm.doSocialLogin(item)\n },\n },\n },\n [\n _c(\"img\", {\n attrs: {\n src: item.img,\n height: \"25px\",\n width: \"25px\",\n alt: \"登录\",\n },\n }),\n _c(\"span\", [_vm._v(_vm._s(item.title))]),\n ]\n )\n }),\n 0\n ),\n ]),\n ],\n 1\n ),\n _vm._m(0),\n ],\n 1\n )\n}\nvar staticRenderFns = [\n function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"el-login-footer\" }, [\n _c(\"span\", [\n _vm._v(\"Copyright © 2020-2021 iocoder.cn All Rights Reserved.\"),\n ]),\n ])\n },\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/login.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%22f587f70a-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"container\" }, [\n _c(\"div\", { staticClass: \"logo\" }),\n _c(\"div\", { staticClass: \"content\" }, [\n _c(\"div\", { staticClass: \"pic\" }),\n _c(\"div\", { staticClass: \"field\" }, [\n _vm._m(0),\n _c(\n \"div\",\n { staticClass: \"form-cont\" },\n [\n _c(\n \"el-tabs\",\n {\n staticClass: \"form\",\n staticStyle: { float: \"none\" },\n model: {\n value: _vm.loginForm.loginType,\n callback: function ($$v) {\n _vm.$set(_vm.loginForm, \"loginType\", $$v)\n },\n expression: \"loginForm.loginType\",\n },\n },\n [\n _c(\"el-tab-pane\", {\n attrs: { label: \"账号密码登录\", name: \"uname\" },\n }),\n _c(\"el-tab-pane\", {\n attrs: { label: \"短信验证码登录\", name: \"sms\" },\n }),\n ],\n 1\n ),\n _c(\n \"div\",\n [\n _c(\n \"el-form\",\n {\n ref: \"loginForm\",\n staticClass: \"login-form\",\n attrs: { model: _vm.loginForm, rules: _vm.LoginRules },\n },\n [\n _vm.tenantEnable\n ? _c(\n \"el-form-item\",\n { attrs: { prop: \"tenantName\" } },\n [\n _c(\n \"el-input\",\n {\n attrs: {\n type: \"text\",\n \"auto-complete\": \"off\",\n placeholder: \"租户\",\n },\n model: {\n value: _vm.loginForm.tenantName,\n callback: function ($$v) {\n _vm.$set(_vm.loginForm, \"tenantName\", $$v)\n },\n expression: \"loginForm.tenantName\",\n },\n },\n [\n _c(\"svg-icon\", {\n staticClass: \"el-input__icon input-icon\",\n attrs: {\n slot: \"prefix\",\n \"icon-class\": \"tree\",\n },\n slot: \"prefix\",\n }),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.loginForm.loginType === \"uname\"\n ? _c(\n \"div\",\n [\n _c(\n \"el-form-item\",\n { attrs: { prop: \"username\" } },\n [\n _c(\n \"el-input\",\n {\n attrs: {\n type: \"text\",\n \"auto-complete\": \"off\",\n placeholder: \"账号\",\n },\n model: {\n value: _vm.loginForm.username,\n callback: function ($$v) {\n _vm.$set(_vm.loginForm, \"username\", $$v)\n },\n expression: \"loginForm.username\",\n },\n },\n [\n _c(\"svg-icon\", {\n staticClass: \"el-input__icon input-icon\",\n attrs: {\n slot: \"prefix\",\n \"icon-class\": \"user\",\n },\n slot: \"prefix\",\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { prop: \"password\" } },\n [\n _c(\n \"el-input\",\n {\n attrs: {\n type: \"password\",\n \"auto-complete\": \"off\",\n placeholder: \"密码\",\n },\n nativeOn: {\n keyup: function ($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n return _vm.handleLogin($event)\n },\n },\n model: {\n value: _vm.loginForm.password,\n callback: function ($$v) {\n _vm.$set(_vm.loginForm, \"password\", $$v)\n },\n expression: \"loginForm.password\",\n },\n },\n [\n _c(\"svg-icon\", {\n staticClass: \"el-input__icon input-icon\",\n attrs: {\n slot: \"prefix\",\n \"icon-class\": \"password\",\n },\n slot: \"prefix\",\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm.captchaEnable\n ? _c(\n \"el-form-item\",\n { attrs: { prop: \"code\" } },\n [\n _c(\n \"el-input\",\n {\n staticStyle: { width: \"63%\" },\n attrs: {\n \"auto-complete\": \"off\",\n placeholder: \"验证码\",\n },\n nativeOn: {\n keyup: function ($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n return _vm.handleLogin($event)\n },\n },\n model: {\n value: _vm.loginForm.code,\n callback: function ($$v) {\n _vm.$set(_vm.loginForm, \"code\", $$v)\n },\n expression: \"loginForm.code\",\n },\n },\n [\n _c(\"svg-icon\", {\n staticClass:\n \"el-input__icon input-icon\",\n attrs: {\n slot: \"prefix\",\n \"icon-class\": \"validCode\",\n },\n slot: \"prefix\",\n }),\n ],\n 1\n ),\n _c(\"div\", { staticClass: \"login-code\" }, [\n _c(\"img\", {\n staticClass: \"login-code-img\",\n attrs: { src: _vm.codeUrl },\n on: { click: _vm.getCode },\n }),\n ]),\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"el-checkbox\",\n {\n staticStyle: { margin: \"0 0 25px 0\" },\n model: {\n value: _vm.loginForm.rememberMe,\n callback: function ($$v) {\n _vm.$set(_vm.loginForm, \"rememberMe\", $$v)\n },\n expression: \"loginForm.rememberMe\",\n },\n },\n [_vm._v(\"记住密码\")]\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm.loginForm.loginType === \"sms\"\n ? _c(\n \"div\",\n [\n _c(\n \"el-form-item\",\n { attrs: { prop: \"mobile\" } },\n [\n _c(\n \"el-input\",\n {\n attrs: {\n type: \"text\",\n \"auto-complete\": \"off\",\n placeholder: \"请输入手机号\",\n },\n model: {\n value: _vm.loginForm.mobile,\n callback: function ($$v) {\n _vm.$set(_vm.loginForm, \"mobile\", $$v)\n },\n expression: \"loginForm.mobile\",\n },\n },\n [\n _c(\"svg-icon\", {\n staticClass: \"el-input__icon input-icon\",\n attrs: {\n slot: \"prefix\",\n \"icon-class\": \"phone\",\n },\n slot: \"prefix\",\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n _c(\n \"el-form-item\",\n { attrs: { prop: \"mobileCode\" } },\n [\n _c(\n \"el-input\",\n {\n attrs: {\n type: \"text\",\n \"auto-complete\": \"off\",\n placeholder: \"短信验证码\",\n },\n nativeOn: {\n keyup: function ($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k(\n $event.keyCode,\n \"enter\",\n 13,\n $event.key,\n \"Enter\"\n )\n ) {\n return null\n }\n return _vm.handleLogin($event)\n },\n },\n model: {\n value: _vm.loginForm.mobileCode,\n callback: function ($$v) {\n _vm.$set(\n _vm.loginForm,\n \"mobileCode\",\n $$v\n )\n },\n expression: \"loginForm.mobileCode\",\n },\n },\n [\n _c(\n \"template\",\n { slot: \"icon\" },\n [\n _c(\"svg-icon\", {\n staticClass:\n \"el-input__icon input-icon\",\n attrs: {\n slot: \"prefix\",\n \"icon-class\": \"password\",\n },\n slot: \"prefix\",\n }),\n ],\n 1\n ),\n _c(\"template\", { slot: \"append\" }, [\n _vm.mobileCodeTimer <= 0\n ? _c(\n \"span\",\n {\n staticClass: \"getMobileCode\",\n staticStyle: {\n cursor: \"pointer\",\n },\n on: { click: _vm.getSmsCode },\n },\n [_vm._v(\"获取验证码\")]\n )\n : _vm._e(),\n _vm.mobileCodeTimer > 0\n ? _c(\n \"span\",\n { staticClass: \"getMobileCode\" },\n [\n _vm._v(\n _vm._s(_vm.mobileCodeTimer) +\n \"秒后可重新获取\"\n ),\n ]\n )\n : _vm._e(),\n ]),\n ],\n 2\n ),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n _c(\n \"el-form-item\",\n { staticStyle: { width: \"100%\" } },\n [\n _c(\n \"el-button\",\n {\n staticStyle: { width: \"100%\" },\n attrs: {\n loading: _vm.loading,\n size: \"medium\",\n type: \"primary\",\n },\n nativeOn: {\n click: function ($event) {\n $event.preventDefault()\n return _vm.handleLogin($event)\n },\n },\n },\n [\n !_vm.loading\n ? _c(\"span\", [_vm._v(\"登 录\")])\n : _c(\"span\", [_vm._v(\"登 录 中...\")]),\n ]\n ),\n ],\n 1\n ),\n _c(\"el-form-item\", { staticStyle: { width: \"100%\" } }, [\n _c(\n \"div\",\n {\n staticClass: \"oauth-login\",\n staticStyle: { display: \"flex\" },\n },\n _vm._l(_vm.SysUserSocialTypeEnum, function (item) {\n return _c(\n \"div\",\n {\n key: item.type,\n staticClass: \"oauth-login-item\",\n on: {\n click: function ($event) {\n return _vm.doSocialLogin(item)\n },\n },\n },\n [\n _c(\"img\", {\n attrs: {\n src: item.img,\n height: \"25px\",\n width: \"25px\",\n alt: \"登录\",\n },\n }),\n _c(\"span\", [_vm._v(_vm._s(item.title))]),\n ]\n )\n }),\n 0\n ),\n ]),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ]),\n ]),\n _c(\"div\", { staticClass: \"footer\" }, [\n _vm._v(\" Copyright © 2020-2022 iocoder.cn All Rights Reserved. \"),\n ]),\n ])\n}\nvar staticRenderFns = [\n function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"h2\", { staticClass: \"mobile-title\" }, [\n _c(\"h3\", { staticClass: \"title\" }, [_vm._v(\"芋道后台管理系统\")]),\n ])\n },\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/login.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/login.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&": -/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/login.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss& ***! - \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/login.vue?vue&type=style&index=0&id=7589b93f&lang=scss&scoped=true&": +/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/login.vue?vue&type=style&index=0&id=7589b93f&lang=scss&scoped=true& ***! + \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".login {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n height: 100%;\\n background-image: url(\\\"http://static.yudao.iocoder.cn/login-background.jpg\\\");\\n background-size: cover;\\n}\\n.title {\\n margin: 0px auto 30px auto;\\n text-align: center;\\n color: #707070;\\n}\\n.login-form {\\n border-radius: 6px;\\n background: #ffffff;\\n width: 500px;\\n padding: 25px 25px 5px 25px;\\n}\\n.login-form .el-input {\\n height: 38px;\\n}\\n.login-form .el-input input {\\n height: 38px;\\n}\\n.login-form .input-icon {\\n height: 39px;\\n width: 14px;\\n margin-left: 2px;\\n}\\n.login-tip {\\n font-size: 13px;\\n text-align: center;\\n color: #bfbfbf;\\n}\\n.login-code {\\n width: 33%;\\n height: 38px;\\n float: right;\\n}\\n.login-code img {\\n cursor: pointer;\\n vertical-align: middle;\\n}\\n.el-login-footer {\\n height: 40px;\\n line-height: 40px;\\n position: fixed;\\n bottom: 0;\\n width: 100%;\\n text-align: center;\\n color: #fff;\\n font-family: Arial;\\n font-size: 12px;\\n letter-spacing: 1px;\\n}\\n.login-code-img {\\n height: 38px;\\n}\\n.oauth-login {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n cursor: pointer;\\n}\\n.oauth-login-item {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n margin-right: 10px;\\n}\\n.oauth-login-item img {\\n height: 25px;\\n width: 25px;\\n}\\n.oauth-login-item span:hover {\\n -webkit-text-decoration: underline red;\\n text-decoration: underline red;\\n color: red;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/login.vue?./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); +eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_GET_URL_IMPORT___ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\nvar ___CSS_LOADER_URL_IMPORT_0___ = __webpack_require__(/*! ../assets/images/bg.png */ \"./src/assets/images/bg.png\");\nvar ___CSS_LOADER_URL_IMPORT_1___ = __webpack_require__(/*! ../assets/logo/login-logo.png */ \"./src/assets/logo/login-logo.png\");\nvar ___CSS_LOADER_URL_IMPORT_2___ = __webpack_require__(/*! ../assets/images/pic.png */ \"./src/assets/images/pic.png\");\nvar ___CSS_LOADER_URL_IMPORT_3___ = __webpack_require__(/*! ../assets/images/bg-mobile.png */ \"./src/assets/images/bg-mobile.png\");\nvar ___CSS_LOADER_URL_IMPORT_4___ = __webpack_require__(/*! ../assets/images/icon.png */ \"./src/assets/images/icon.png\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\n// Module\nexports.push([module.i, \"/* ===== PC DESIGN ===== */\\n.container[data-v-7589b93f] {\\n width: inherit;\\n height: inherit;\\n min-width: 1080px;\\n min-height: 620px;\\n background-color: #e6ebf2;\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\n background-size: cover;\\n position: relative;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n font-size: 14px;\\n font-family: Microsoft YaHei;\\n font-weight: 400;\\n}\\n.container .login-code[data-v-7589b93f] {\\n width: 33%;\\n height: 38px;\\n float: right;\\n}\\n.container .login-code img[data-v-7589b93f] {\\n cursor: pointer;\\n width: 100%;\\n max-width: 100px;\\n height: auto;\\n vertical-align: middle;\\n}\\n.container .logo[data-v-7589b93f] {\\n width: 417px;\\n height: 64px;\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \");\\n background-size: contain;\\n position: absolute;\\n top: 50px;\\n left: 50%;\\n margin-left: -208.5px;\\n}\\n.container .content[data-v-7589b93f] {\\n width: 52vw;\\n height: 29.12vw;\\n background-color: #ffffff;\\n -webkit-box-shadow: 0px 16px 40px rgba(0, 0, 0, 0.07);\\n box-shadow: 0px 16px 40px rgba(0, 0, 0, 0.07);\\n border-radius: 20px;\\n position: relative;\\n}\\n.container .content .pic[data-v-7589b93f] {\\n width: 23vw;\\n height: inherit;\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \");\\n background-repeat: no-repeat;\\n background-size: cover;\\n border-radius: 20px 0 0 20px;\\n position: absolute;\\n top: 0;\\n left: 0;\\n}\\n.container .content .field[data-v-7589b93f] {\\n width: 29vw;\\n height: inherit;\\n position: absolute;\\n top: 0;\\n left: 23vw;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n}\\n.container .content .field .pc-title[data-v-7589b93f] {\\n width: 100%;\\n clear: both;\\n}\\n.container .content .field .mobile-title[data-v-7589b93f],\\n.container .content .field .mobile-switch[data-v-7589b93f] {\\n display: none;\\n}\\n.container .content .field .form[data-v-7589b93f] {\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n width: 320px;\\n}\\n.container .content .field .form[data-v-7589b93f] :deep(.el-tabs__content) {\\n padding: 20px 0 0;\\n}\\n.container .content .field .form[data-v-7589b93f] :deep(.el-tabs__item) {\\n width: 160px;\\n height: 56px;\\n padding: 0;\\n line-height: 56px;\\n color: #666666;\\n}\\n.container .content .field .form[data-v-7589b93f] :deep(.el-tabs__item.is-active) {\\n font-weight: bold;\\n color: #2F53EB;\\n}\\n.container .content .field .form[data-v-7589b93f] :deep(.el-tabs__active-bar) {\\n height: 3px;\\n border-radius: 2px;\\n}\\n.container .content .field .form[data-v-7589b93f] :deep(.el-input__inner) {\\n width: 100%;\\n height: 56px;\\n background: #f5f5f5;\\n border: 0;\\n border-radius: 28px;\\n text-align: center;\\n line-height: 19px;\\n color: #262626;\\n}\\n.container .content .field .form .code[data-v-7589b93f]:deep(.el-input__inner) {\\n padding: 0 24px;\\n text-align: left;\\n}\\n.container .content .field .form[data-v-7589b93f] :deep(.el-input__inner::-webkit-input-placeholder) {\\n /* WebKit browsers */\\n font-weight: 400;\\n color: #8C8C8C;\\n}\\n.container .content .field .form[data-v-7589b93f] :deep(.el-input__inner:-moz-placeholder) {\\n /* Mozilla Firefox 4 to 18 */\\n font-weight: 400;\\n color: #8C8C8C;\\n}\\n.container .content .field .form[data-v-7589b93f] :deep(.el-input__inner::-moz-placeholder) {\\n /* Mozilla Firefox 19+ */\\n font-weight: 400;\\n color: #8C8C8C;\\n opacity: 1;\\n}\\n.container .content .field .form[data-v-7589b93f] :deep(.el-input__inner:-ms-input-placeholder) {\\n /* Internet Explorer 10+ */\\n font-weight: 400;\\n color: #8C8C8C !important;\\n}\\n.container .content .field .form[data-v-7589b93f] :deep(.el-form-item) {\\n position: relative;\\n}\\n.container .content .field .form :deep(.el-form-item) .button-code[data-v-7589b93f] {\\n height: 56px;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n position: absolute;\\n top: 0;\\n right: 20px;\\n z-index: 1;\\n line-height: 20px;\\n font-size: 14px;\\n font-family: PingFang SC;\\n font-weight: 400;\\n color: #2F53EB;\\n}\\n.container .content .field .form :deep(.el-form-item) .button-code span[data-v-7589b93f] {\\n padding-left: 15px;\\n border-left: 2px solid #D9D9D9;\\n}\\n.container .content .field .form[data-v-7589b93f] :deep(.el-form-item__error) {\\n padding-left: 24px;\\n}\\n.container .content .field .form .button[data-v-7589b93f] {\\n width: 100%;\\n height: 50px;\\n background: rgba(24, 144, 255, 0.2);\\n border: 0;\\n border-radius: 24px;\\n margin-bottom: 20px;\\n line-height: 26px;\\n font-size: 20px;\\n color: #FFFFFF;\\n}\\n.container .content .field .form .button-active[data-v-7589b93f] {\\n background: #2F53EB;\\n -webkit-box-shadow: 0px 2px 8px rgba(0, 80, 184, 0.2);\\n box-shadow: 0px 2px 8px rgba(0, 80, 184, 0.2);\\n}\\n.container .footer[data-v-7589b93f] {\\n height: 16px;\\n line-height: 16px;\\n font-size: 12px;\\n color: #8c8c8c;\\n position: absolute;\\n bottom: 30px;\\n}\\n.container .footer a[data-v-7589b93f],\\n.container .footer a[data-v-7589b93f]:hover,\\n.container .footer a[data-v-7589b93f]:active {\\n color: inherit;\\n text-decoration: none;\\n}\\n@media screen and (min-width: 599px) and (max-width: 1366px) {\\n.container .content[data-v-7589b93f] {\\n width: 710px;\\n height: 397px;\\n}\\n.container .content .pic[data-v-7589b93f] {\\n width: 314px;\\n}\\n.container .content .field[data-v-7589b93f] {\\n width: calc(710px - 314px);\\n left: 314px;\\n}\\n.container .content .field .form[data-v-7589b93f] {\\n width: 320px;\\n}\\n.container .content .field .form[data-v-7589b93f] :deep(.el-input__inner) {\\n width: 320px;\\n height: 56px;\\n}\\n.container .content .field .form .button[data-v-7589b93f] {\\n height: 50px;\\n}\\n}\\n/* ===== MOBILE DESIGN ===== */\\n@media screen and (max-width: 599px) {\\n.container[data-v-7589b93f] {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \");\\n min-width: 280px;\\n min-height: 568px;\\n font-size: 17px;\\n font-family: PingFang SC;\\n font-weight: bold;\\n}\\n.container .logo[data-v-7589b93f] {\\n display: none;\\n}\\n.container .content[data-v-7589b93f] {\\n width: 87vw;\\n height: 87vw;\\n min-width: 250px;\\n min-height: 340px;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n}\\n.container .content .pic[data-v-7589b93f] {\\n display: none;\\n}\\n.container .content .field[data-v-7589b93f] {\\n width: inherit;\\n min-height: inherit;\\n left: 0;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n}\\n.container .content .field .mobile-title[data-v-7589b93f] {\\n margin: 0 0 20px;\\n display: block;\\n}\\n.container .content .field .form[data-v-7589b93f] {\\n width: 75vw;\\n}\\n.container .content .field .form[data-v-7589b93f] :deep(.el-tabs__header) {\\n display: none;\\n}\\n.container .content .field .form[data-v-7589b93f] :deep(.el-tabs__content) {\\n padding: 0;\\n}\\n.container .content .field .form[data-v-7589b93f] :deep(.el-input__inner) {\\n height: 48px;\\n line-height: 24px;\\n text-align: center;\\n color: #262626;\\n}\\n.container .content .field .form :deep(.el-form-item) .button-code[data-v-7589b93f] {\\n height: 48px;\\n}\\n.container .content .field .form .button[data-v-7589b93f] {\\n height: 48px;\\n line-height: 24px;\\n color: #FFFFFF;\\n}\\n.container .content .field .mobile-switch[data-v-7589b93f] {\\n display: block;\\n line-height: 20px;\\n font-size: 14px;\\n font-weight: 400;\\n color: #595959;\\n margin: 0;\\n}\\n.container .content .field .mobile-switch .icon[data-v-7589b93f] {\\n width: 14px;\\n height: 14px;\\n display: inline-block;\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \");\\n background-size: cover;\\n}\\n.container .content .field .mobile-switch[data-v-7589b93f]:hover {\\n cursor: pointer;\\n}\\n.container .footer[data-v-7589b93f] {\\n font-size: 12px;\\n font-family: PingFang SC;\\n font-weight: 400;\\n line-height: 17px;\\n color: #333333;\\n opacity: 0.6;\\n position: absolute;\\n bottom: 20px;\\n}\\n}\\n.oauth-login[data-v-7589b93f] {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: cen;\\n -ms-flex-align: cen;\\n align-items: cen;\\n cursor: pointer;\\n}\\n.oauth-login-item[data-v-7589b93f] {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n margin-right: 10px;\\n}\\n.oauth-login-item img[data-v-7589b93f] {\\n height: 25px;\\n width: 25px;\\n}\\n.oauth-login-item span[data-v-7589b93f]:hover {\\n -webkit-text-decoration: underline red;\\n text-decoration: underline red;\\n color: red;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/login.vue?./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), -/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/login.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&": -/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/login.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss& ***! - \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/login.vue?vue&type=style&index=0&id=7589b93f&lang=scss&scoped=true&": +/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/login.vue?vue&type=style&index=0&id=7589b93f&lang=scss&scoped=true& ***! + \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("// style-loader: Adds some css to the DOM by adding a \ No newline at end of file diff --git a/yudao-ui-admin/src/components/generator/config.js b/yudao-ui-admin/src/components/generator/config.js index be7354b854..780a1bb678 100644 --- a/yudao-ui-admin/src/components/generator/config.js +++ b/yudao-ui-admin/src/components/generator/config.js @@ -499,7 +499,8 @@ export const selectComponents = [ __slot__: { 'list-type': true }, - action: 'https://jsonplaceholder.typicode.com/posts/', + // action: process.env.VUE_APP_BASE_API + "/admin-api/infra/file/upload", // 请求地址 + action: '/infra/file/upload', // 请求地址 disabled: false, accept: '', name: 'file', diff --git a/yudao-ui-admin/src/components/parser/Parser.vue b/yudao-ui-admin/src/components/parser/Parser.vue index 779cf17828..51398d646e 100644 --- a/yudao-ui-admin/src/components/parser/Parser.vue +++ b/yudao-ui-admin/src/components/parser/Parser.vue @@ -1,6 +1,7 @@ + diff --git a/yudao-ui-admin/src/views/system/oauth2/client/index.vue b/yudao-ui-admin/src/views/system/oauth2/client/index.vue new file mode 100755 index 0000000000..4f474ab2f6 --- /dev/null +++ b/yudao-ui-admin/src/views/system/oauth2/client/index.vue @@ -0,0 +1,306 @@ + + + diff --git a/yudao-ui-admin/src/views/system/session/index.vue b/yudao-ui-admin/src/views/system/oauth2/token/index.vue similarity index 55% rename from yudao-ui-admin/src/views/system/session/index.vue rename to yudao-ui-admin/src/views/system/oauth2/token/index.vue index 10135403ca..a6cb9131cd 100644 --- a/yudao-ui-admin/src/views/system/session/index.vue +++ b/yudao-ui-admin/src/views/system/oauth2/token/index.vue @@ -3,11 +3,14 @@ - - + + - - + + + + 搜索 @@ -16,20 +19,28 @@ - - - - - - + + + + + + + + + + @@ -40,10 +51,10 @@