From 580d1d9047609fd97b39e69da905d0836b59be4c Mon Sep 17 00:00:00 2001 From: chenbowen Date: Mon, 29 Dec 2025 11:13:29 +0800 Subject: [PATCH 1/4] =?UTF-8?q?1.=20=E8=A1=A5=E5=85=A8=E5=9F=BA=E5=87=86?= =?UTF-8?q?=E7=9A=84=E8=8F=9C=E5=8D=95=20sql=20=E8=AF=AD=E5=8F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/dm/ruoyi-vue-pro-dm8.sql | 309 ++++++++++++++++++++++++++++++++++- 1 file changed, 308 insertions(+), 1 deletion(-) diff --git a/sql/dm/ruoyi-vue-pro-dm8.sql b/sql/dm/ruoyi-vue-pro-dm8.sql index 1aa21a6d..53667219 100644 --- a/sql/dm/ruoyi-vue-pro-dm8.sql +++ b/sql/dm/ruoyi-vue-pro-dm8.sql @@ -331,6 +331,8 @@ CREATE TABLE infra_file ( name varchar(256) DEFAULT NULL NULL, path varchar(512) NOT NULL, url varchar(1024) NOT NULL, + hash varchar(64) DEFAULT NULL NULL, + aes_iv varchar(128) DEFAULT NULL NULL, type varchar(128) DEFAULT NULL NULL, size int NOT NULL, creator varchar(64) DEFAULT '' NULL, @@ -345,6 +347,8 @@ COMMENT ON COLUMN infra_file.config_id IS '配置编号'; COMMENT ON COLUMN infra_file.name IS '文件名'; COMMENT ON COLUMN infra_file.path IS '文件路径'; COMMENT ON COLUMN infra_file.url IS '文件 URL'; +COMMENT ON COLUMN infra_file.hash IS '文件哈希值(SHA-256)'; +COMMENT ON COLUMN infra_file.aes_iv IS 'AES加密时的随机IV(Base64编码)'; COMMENT ON COLUMN infra_file.type IS '文件类型'; COMMENT ON COLUMN infra_file.size IS '文件大小'; COMMENT ON COLUMN infra_file.creator IS '创建者'; @@ -354,6 +358,8 @@ COMMENT ON COLUMN infra_file.update_time IS '更新时间'; COMMENT ON COLUMN infra_file.deleted IS '是否删除'; COMMENT ON TABLE infra_file IS '文件表'; +CREATE INDEX idx_infra_file_hash ON infra_file(hash); + -- ---------------------------- -- Table structure for infra_file_config -- ---------------------------- @@ -1586,6 +1592,116 @@ INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) VALUES (5010, '租户切换', 'system:tenant:visit', 3, 999, 1138, '', '', '', '', 0, '1', '1', '1', '1', '2025-05-05 15:25:32', '1', '2025-05-05 15:25:32', '0'); INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) VALUES (5013, '公司切换', 'system:company:visit', 3, 100, 103, '', '', '', '', 0, '1', '1', '1', '1', '2025-12-05 09:00:00', '1', '2025-12-05 09:00:00', '0'); INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) VALUES (5014, '部门切换', 'system:dept:visit', 3, 101, 103, '', '', '', '', 0, '1', '1', '1', '1', '2025-12-05 09:00:00', '1', '2025-12-05 09:00:00', '0'); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1953701540574969857, '系统序列号管理', '', 2, 0, 1, 'sequence', '', 'system/sequence/index', 'Sequence', 0, 1, 1, 1, '', '2025-08-08 14:38:20.455625', '', '2025-08-08 14:38:20.455626', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1953706417225150470, '系统序列号导出', 'system:sequence:export', 3, 5, 1953701540574969857, '', '', '', null, 0, 1, 1, 1, '', '2025-08-08 14:38:20.580376', '', '2025-08-08 14:38:20.580377', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1953706417225150469, '系统序列号删除', 'system:sequence:delete', 3, 4, 1953701540574969857, '', '', '', null, 0, 1, 1, 1, '', '2025-08-08 14:38:20.553819', '', '2025-08-08 14:38:20.553820', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1953706417225150468, '系统序列号更新', 'system:sequence:update', 3, 3, 1953701540574969857, '', '', '', null, 0, 1, 1, 1, '', '2025-08-08 14:38:20.522730', '', '2025-08-08 14:38:20.522731', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1953706417225150467, '系统序列号创建', 'system:sequence:create', 3, 2, 1953701540574969857, '', '', '', null, 0, 1, 1, 1, '', '2025-08-08 14:38:20.499928', '', '2025-08-08 14:38:20.499929', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1953706417225150466, '系统序列号查询', 'system:sequence:query', 3, 1, 1953701540574969857, '', '', '', null, 0, 1, 1, 1, '', '2025-08-08 14:38:20.483702', '', '2025-08-08 14:38:20.483703', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2739, '消息中心', '', 1, 7, 1, 'messages', 'ep:chat-dot-round', '', '', 0, 1, 1, 1, '1', '2024-04-22 23:54:30.000000', '1', '2024-04-23 09:36:35.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2144, '站内信管理', '', 1, 3, 2739, 'notify', 'ep:message-box', null, null, 0, 1, 1, 1, '1', '2023-01-28 10:25:18.000000', '1', '2024-04-22 23:56:12.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2151, '消息记录', '', 2, 0, 2144, 'notify-message', 'fa:edit', 'system/notify/message/index', 'SystemNotifyMessage', 0, 1, 1, 1, '', '2023-01-28 04:28:22.000000', '1', '2024-02-29 08:49:22.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2152, '站内信消息查询', 'system:notify-message:query', 3, 1, 2151, '', '', '', null, 0, 1, 1, 1, '', '2023-01-28 04:28:22.000000', '', '2023-01-28 04:28:22.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2145, '模板管理', '', 2, 0, 2144, 'notify-template', 'fa:archive', 'system/notify/template/index', 'SystemNotifyTemplate', 0, 1, 1, 1, '', '2023-01-28 02:26:42.000000', '1', '2024-02-29 08:49:14.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2150, '发送测试站内信', 'system:notify-template:send-notify', 3, 5, 2145, '', '', '', null, 0, 1, 1, 1, '1', '2023-01-28 10:54:43.000000', '1', '2023-01-28 10:54:43.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2149, '站内信模板删除', 'system:notify-template:delete', 3, 4, 2145, '', '', '', null, 0, 1, 1, 1, '', '2023-01-28 02:26:42.000000', '', '2023-01-28 02:26:42.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2148, '站内信模板更新', 'system:notify-template:update', 3, 3, 2145, '', '', '', null, 0, 1, 1, 1, '', '2023-01-28 02:26:42.000000', '', '2023-01-28 02:26:42.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2147, '站内信模板创建', 'system:notify-template:create', 3, 2, 2145, '', '', '', null, 0, 1, 1, 1, '', '2023-01-28 02:26:42.000000', '', '2023-01-28 02:26:42.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2146, '站内信模板查询', 'system:notify-template:query', 3, 1, 2145, '', '', '', null, 0, 1, 1, 1, '', '2023-01-28 02:26:42.000000', '', '2023-01-28 02:26:42.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2130, '邮箱管理', '', 2, 2, 2739, 'mail', 'fa-solid:mail-bulk', null, null, 0, 1, 1, 1, '1', '2023-01-25 17:27:44.000000', '1', '2024-04-22 23:56:08.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2141, '邮件记录', '', 2, 0, 2130, 'mail-log', 'fa:edit', 'system/mail/log/index', 'SystemMailLog', 0, 1, 1, 1, '', '2023-01-26 02:16:50.000000', '1', '2024-02-29 08:48:51.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2142, '日志查询', 'system:mail-log:query', 3, 1, 2141, '', '', '', null, 0, 1, 1, 1, '', '2023-01-26 02:16:50.000000', '', '2023-01-26 02:16:50.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2136, '邮件模版', '', 2, 0, 2130, 'mail-template', 'fa:tag', 'system/mail/template/index', 'SystemMailTemplate', 0, 1, 1, 1, '', '2023-01-25 12:05:31.000000', '1', '2024-02-29 08:48:41.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2143, '发送测试邮件', 'system:mail-template:send-mail', 3, 5, 2136, '', '', '', null, 0, 1, 1, 1, '1', '2023-01-26 23:29:15.000000', '1', '2023-01-26 23:29:15.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2140, '模版删除', 'system:mail-template:delete', 3, 4, 2136, '', '', '', null, 0, 1, 1, 1, '', '2023-01-25 12:05:31.000000', '', '2023-01-25 12:05:31.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2139, '模版更新', 'system:mail-template:update', 3, 3, 2136, '', '', '', null, 0, 1, 1, 1, '', '2023-01-25 12:05:31.000000', '', '2023-01-25 12:05:31.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2138, '模版创建', 'system:mail-template:create', 3, 2, 2136, '', '', '', null, 0, 1, 1, 1, '', '2023-01-25 12:05:31.000000', '', '2023-01-25 12:05:31.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2137, '模版查询', 'system:mail-template:query', 3, 1, 2136, '', '', '', null, 0, 1, 1, 1, '', '2023-01-25 12:05:31.000000', '', '2023-01-25 12:05:31.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2131, '邮箱账号', '', 2, 0, 2130, 'mail-account', 'fa:universal-access', 'system/mail/account/index', 'SystemMailAccount', 0, 1, 1, 1, '', '2023-01-25 09:33:48.000000', '1', '2024-02-29 08:48:16.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2135, '账号删除', 'system:mail-account:delete', 3, 4, 2131, '', '', '', null, 0, 1, 1, 1, '', '2023-01-25 09:33:48.000000', '', '2023-01-25 09:33:48.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2134, '账号更新', 'system:mail-account:update', 3, 3, 2131, '', '', '', null, 0, 1, 1, 1, '', '2023-01-25 09:33:48.000000', '', '2023-01-25 09:33:48.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2133, '账号创建', 'system:mail-account:create', 3, 2, 2131, '', '', '', null, 0, 1, 1, 1, '', '2023-01-25 09:33:48.000000', '', '2023-01-25 09:33:48.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2132, '账号查询', 'system:mail-account:query', 3, 1, 2131, '', '', '', null, 0, 1, 1, 1, '', '2023-01-25 09:33:48.000000', '', '2023-01-25 09:33:48.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1093, '短信管理', '', 1, 1, 2739, 'sms', 'ep:message', null, null, 0, 1, 1, 1, '1', '2021-04-05 01:10:16.000000', '1', '2024-04-22 23:56:03.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1107, '短信日志', '', 2, 2, 1093, 'sms-log', 'fa:edit', 'system/sms/log/index', 'SystemSmsLog', 0, 1, 1, 1, '', '2021-04-11 08:37:05.000000', '1', '2024-02-29 08:49:02.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1109, '短信日志导出', 'system:sms-log:export', 3, 5, 1107, '', '', '', null, 0, 1, 1, 1, '', '2021-04-11 08:37:05.000000', '', '2022-04-20 17:03:10.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1108, '短信日志查询', 'system:sms-log:query', 3, 1, 1107, '', '', '', null, 0, 1, 1, 1, '', '2021-04-11 08:37:05.000000', '', '2022-04-20 17:03:10.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1100, '短信模板', '', 2, 1, 1093, 'sms-template', 'ep:connection', 'system/sms/template/index', 'SystemSmsTemplate', 0, 1, 1, 1, '', '2021-04-01 17:35:17.000000', '1', '2024-02-29 01:16:18.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1106, '发送测试短信', 'system:sms-template:send-sms', 3, 6, 1100, '', '', '', null, 0, 1, 1, 1, '1', '2021-04-11 00:26:40.000000', '1', '2022-04-20 17:03:10.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1105, '短信模板导出', 'system:sms-template:export', 3, 5, 1100, '', '', '', null, 0, 1, 1, 1, '', '2021-04-01 17:35:17.000000', '', '2022-04-20 17:03:10.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1104, '短信模板删除', 'system:sms-template:delete', 3, 4, 1100, '', '', '', null, 0, 1, 1, 1, '', '2021-04-01 17:35:17.000000', '', '2022-04-20 17:03:10.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1103, '短信模板更新', 'system:sms-template:update', 3, 3, 1100, '', '', '', null, 0, 1, 1, 1, '', '2021-04-01 17:35:17.000000', '', '2022-04-20 17:03:10.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1102, '短信模板创建', 'system:sms-template:create', 3, 2, 1100, '', '', '', null, 0, 1, 1, 1, '', '2021-04-01 17:35:17.000000', '', '2022-04-20 17:03:10.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1101, '短信模板查询', 'system:sms-template:query', 3, 1, 1100, '', '', '', null, 0, 1, 1, 1, '', '2021-04-01 17:35:17.000000', '', '2022-04-20 17:03:10.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1094, '短信渠道', '', 2, 0, 1093, 'sms-channel', 'fa:stack-exchange', 'system/sms/channel/index', 'SystemSmsChannel', 0, 1, 1, 1, '', '2021-04-01 11:07:15.000000', '1', '2024-02-29 01:15:54.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1098, '短信渠道删除', 'system:sms-channel:delete', 3, 4, 1094, '', '', '', null, 0, 1, 1, 1, '', '2021-04-01 11:07:15.000000', '', '2022-04-20 17:03:10.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1097, '短信渠道更新', 'system:sms-channel:update', 3, 3, 1094, '', '', '', null, 0, 1, 1, 1, '', '2021-04-01 11:07:15.000000', '', '2022-04-20 17:03:10.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1096, '短信渠道创建', 'system:sms-channel:create', 3, 2, 1094, '', '', '', null, 0, 1, 1, 1, '', '2021-04-01 11:07:15.000000', '', '2022-04-20 17:03:10.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1095, '短信渠道查询', 'system:sms-channel:query', 3, 1, 1094, '', '', '', null, 0, 1, 1, 1, '', '2021-04-01 11:07:15.000000', '', '2022-04-20 17:03:10.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (107, '通知公告', '', 2, 4, 2739, 'notice', 'ep:takeaway-box', 'system/notice/index', 'SystemNotice', 0, 1, 1, 1, 'admin', '2021-01-05 17:03:48.000000', '1', '2024-04-22 23:56:17.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1039, '公告删除', 'system:notice:delete', 3, 4, 107, '', '', '', null, 0, 1, 1, 1, 'admin', '2021-01-05 17:03:48.000000', '1', '2022-04-20 17:03:10.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1038, '公告修改', 'system:notice:update', 3, 3, 107, '', '', '', null, 0, 1, 1, 1, 'admin', '2021-01-05 17:03:48.000000', '1', '2022-04-20 17:03:10.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1037, '公告新增', 'system:notice:create', 3, 2, 107, '', '', '', null, 0, 1, 1, 1, 'admin', '2021-01-05 17:03:48.000000', '1', '2022-04-20 17:03:10.000000', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1036, '公告查询', 'system:notice:query', 3, 1, 107, '#', '#', '', null, 0, 1, 1, 1, 'admin', '2021-01-05 17:03:48.000000', '', '2022-04-20 17:03:10.000000', 0); + +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (6500, '数据总线', '', 1, 20, 1, 'databus', 'ep:data-board', '', 'DatabusRoot', 0, 1, 1, 1, 'admin', '2025-10-17 17:14:18.690389', 'admin', '2025-10-17 17:14:18.690390', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123500, '数据同步', '', 1, 50, 6500, 'sync', 'ep:connection', null, null, 0, 1, 1, 1, '', '2025-11-25 17:28:16.048176', '1', '2025-11-25 17:33:29.370218', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2874, '全量同步任务', '', 2, 6, 1861234567890123500, 'fulltask', 'ep:upload', 'databus/sync/fulltask/index', 'DatabusSyncFullTask', 0, 1, 1, 0, 'admin', '2025-11-28 18:24:33.619358', 'admin', '2025-11-28 18:24:33.619360', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2878, '全量同步任务取消', 'databus:sync:full-task:cancel', 3, 4, 2874, '', '', '', '', 0, 1, 1, 0, 'admin', '2025-11-28 18:24:33.619369', 'admin', '2025-11-28 18:24:33.619369', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2877, '全量同步任务执行', 'databus:sync:full-task:execute', 3, 3, 2874, '', '', '', '', 0, 1, 1, 0, 'admin', '2025-11-28 18:24:33.619368', 'admin', '2025-11-28 18:24:33.619368', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2876, '全量同步任务创建', 'databus:sync:full-task:create', 3, 2, 2874, '', '', '', '', 0, 1, 1, 0, 'admin', '2025-11-28 18:24:33.619367', 'admin', '2025-11-28 18:24:33.619367', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (2875, '全量同步任务查询', 'databus:sync:full-task:query', 3, 1, 2874, '', '', '', '', 0, 1, 1, 0, 'admin', '2025-11-28 18:24:33.619366', 'admin', '2025-11-28 18:24:33.619366', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123523, '死信队列', '', 2, 5, 1861234567890123500, 'deadletter', 'ep:warning', 'databus/sync/deadletter/index', 'DatabusSyncDeadLetter', 0, 1, 1, 1, '', '2025-11-25 17:28:16.259929', '', '2025-11-25 17:28:16.259932', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123527, '忽略死信', 'databus:sync:dead-letter:ignore', 3, 4, 1861234567890123523, '', '', '', null, 0, 1, 1, 1, '', '2025-11-25 17:28:16.282800', '', '2025-11-25 17:28:16.282802', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123526, '重新投递', 'databus:sync:dead-letter:reprocess', 3, 3, 1861234567890123523, '', '', '', null, 0, 1, 1, 1, '', '2025-11-25 17:28:16.277958', '', '2025-11-25 17:28:16.277960', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123525, '查看详情', 'databus:sync:dead-letter:detail', 3, 2, 1861234567890123523, '', '', '', null, 0, 1, 1, 1, '', '2025-11-25 17:28:16.271126', '', '2025-11-25 17:28:16.271128', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123524, '查询死信', 'databus:sync:dead-letter:query', 3, 1, 1861234567890123523, '', '', '', null, 0, 1, 1, 1, '', '2025-11-25 17:28:16.267617', '', '2025-11-25 17:28:16.267619', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123519, '同步日志', '', 2, 4, 1861234567890123500, 'pushlog', 'ep:document', 'databus/sync/pushlog/index', 'DatabusSyncLog', 0, 1, 1, 1, '', '2025-11-25 17:28:16.210732', '', '2025-11-25 17:28:16.210733', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123522, '导出日志', 'databus:sync:log:export', 3, 3, 1861234567890123519, '', '', '', null, 0, 1, 1, 1, '', '2025-11-25 17:28:16.252291', '', '2025-11-25 17:28:16.252296', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123521, '查看详情', 'databus:sync:log:detail', 3, 2, 1861234567890123519, '', '', '', null, 0, 1, 1, 1, '', '2025-11-25 17:28:16.230811', '', '2025-11-25 17:28:16.230816', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123520, '查询日志', 'databus:sync:log:query', 3, 1, 1861234567890123519, '', '', '', null, 0, 1, 1, 1, '', '2025-11-25 17:28:16.220956', '', '2025-11-25 17:28:16.220959', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123513, '订阅管理', '', 2, 3, 1861234567890123500, 'subscription', 'ep:guide', 'databus/sync/subscription/index', 'DatabusSyncSubscription', 0, 1, 1, 1, '', '2025-11-25 17:28:16.163388', '1', '2025-11-28 18:48:54.496674', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123518, '导出订阅', 'databus:sync:subscription:export', 3, 5, 1861234567890123513, '', '', '', null, 1, 1, 1, 1, '', '2025-11-25 17:28:16.203898', '', '2025-11-25 17:28:16.203899', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123517, '删除订阅', 'databus:sync:subscription:delete', 3, 4, 1861234567890123513, '', '', '', null, 1, 1, 1, 1, '', '2025-11-25 17:28:16.197362', '', '2025-11-25 17:28:16.197363', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123516, '更新订阅', 'databus:sync:subscription:update', 3, 3, 1861234567890123513, '', '', '', null, 1, 1, 1, 1, '', '2025-11-25 17:28:16.191555', '', '2025-11-25 17:28:16.191556', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123515, '创建订阅', 'databus:sync:subscription:create', 3, 2, 1861234567890123513, '', '', '', null, 1, 1, 1, 1, '', '2025-11-25 17:28:16.185782', '', '2025-11-25 17:28:16.185783', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123514, '查询订阅', 'databus:sync:subscription:query', 3, 1, 1861234567890123513, '', '', '', null, 1, 1, 1, 1, '', '2025-11-25 17:28:16.177918', '', '2025-11-25 17:28:16.177920', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123507, '客户端管理', '', 2, 2, 1861234567890123500, 'client', 'ep:monitor', 'databus/sync/client/index', 'DatabusSyncClient', 0, 1, 1, 1, '', '2025-11-25 17:28:16.111525', '', '2025-11-25 17:28:16.111526', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123512, '导出客户端', 'databus:sync:client:export', 3, 5, 1861234567890123507, '', '', '', null, 0, 1, 1, 1, '', '2025-11-25 17:28:16.158423', '', '2025-11-25 17:28:16.158424', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123511, '删除客户端', 'databus:sync:client:delete', 3, 4, 1861234567890123507, '', '', '', null, 0, 1, 1, 1, '', '2025-11-25 17:28:16.147803', '', '2025-11-25 17:28:16.147804', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123510, '更新客户端', 'databus:sync:client:update', 3, 3, 1861234567890123507, '', '', '', null, 0, 1, 1, 1, '', '2025-11-25 17:28:16.137440', '', '2025-11-25 17:28:16.137441', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123509, '创建客户端', 'databus:sync:client:create', 3, 2, 1861234567890123507, '', '', '', null, 0, 1, 1, 1, '', '2025-11-25 17:28:16.125308', '', '2025-11-25 17:28:16.125310', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123508, '查询客户端', 'databus:sync:client:query', 3, 1, 1861234567890123507, '', '', '', null, 0, 1, 1, 1, '', '2025-11-25 17:28:16.117846', '', '2025-11-25 17:28:16.117847', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123501, '事件管理', '', 2, 1, 1861234567890123500, 'event', 'ep:bell', 'databus/sync/event/index', 'DatabusSyncEvent', 0, 1, 1, 1, '', '2025-11-25 17:28:16.052979', '1', '2025-11-25 17:34:34.591416', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123506, '导出事件', 'databus:sync:event:export', 3, 5, 1861234567890123501, '', '', '', null, 0, 1, 1, 1, '', '2025-11-25 17:28:16.101020', '', '2025-11-25 17:28:16.101037', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123505, '删除事件', 'databus:sync:event:delete', 3, 4, 1861234567890123501, '', '', '', null, 0, 1, 1, 1, '', '2025-11-25 17:28:16.086845', '', '2025-11-25 17:28:16.086847', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123504, '更新事件', 'databus:sync:event:update', 3, 3, 1861234567890123501, '', '', '', null, 0, 1, 1, 1, '', '2025-11-25 17:28:16.079252', '', '2025-11-25 17:28:16.079256', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123503, '创建事件', 'databus:sync:event:create', 3, 2, 1861234567890123501, '', '', '', null, 0, 1, 1, 1, '', '2025-11-25 17:28:16.071706', '', '2025-11-25 17:28:16.071710', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (1861234567890123502, '查询事件', 'databus:sync:event:query', 3, 1, 1861234567890123501, '', '', '', null, 0, 1, 1, 1, '', '2025-11-25 17:28:16.060256', '', '2025-11-25 17:28:16.060257', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (6504, '访问日志', 'databus:gateway:access-log:query', 2, 40, 6500, 'access-log', 'ep:document', 'databus/accesslog/index', 'DatabusAccessLog', 0, 1, 1, 1, 'admin', '2025-10-29 14:39:35.126020', 'admin', '2025-10-29 14:39:35.126022', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (650401, '访问日志查询', 'databus:gateway:access-log:query', 3, 1, 6504, '', '', '', '', 0, 1, 1, 1, 'admin', '2025-10-29 14:39:35.160454', 'admin', '2025-10-29 14:39:35.160456', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (6503, '限流策略', 'databus:policy:query', 2, 30, 6500, 'policy/rate-limit', 'ep:stopwatch', 'databus/policy/RateLimitPolicy', 'DatabusRateLimitPolicy', 0, 1, 1, 1, 'admin', '2025-10-17 17:14:18.690396', 'admin', '2025-10-17 17:14:18.690396', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (650304, '策略删除', 'databus:policy:delete', 3, 4, 6503, '', '', '', '', 0, 1, 1, 1, 'admin', '2025-10-17 17:14:18.734365', 'admin', '2025-10-17 17:14:18.734365', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (650303, '策略修改', 'databus:policy:update', 3, 3, 6503, '', '', '', '', 0, 1, 1, 1, 'admin', '2025-10-17 17:14:18.734363', 'admin', '2025-10-17 17:14:18.734363', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (650302, '策略新增', 'databus:policy:create', 3, 2, 6503, '', '', '', '', 0, 1, 1, 1, 'admin', '2025-10-17 17:14:18.734362', 'admin', '2025-10-17 17:14:18.734362', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (650301, '策略查询', 'databus:policy:query', 3, 1, 6503, '', '', '', '', 0, 1, 1, 1, 'admin', '2025-10-17 17:14:18.734360', 'admin', '2025-10-17 17:14:18.734360', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (6502, '客户端凭证', 'databus:credential:query', 2, 20, 6500, 'credential', 'ep:key', 'databus/credential/index', 'DatabusCredential', 0, 1, 1, 1, 'admin', '2025-10-17 17:14:18.690395', 'admin', '2025-10-17 17:14:18.690395', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (650204, '凭证删除', 'databus:credential:delete', 3, 4, 6502, '', '', '', '', 0, 1, 1, 1, 'admin', '2025-10-17 17:14:18.734358', 'admin', '2025-10-17 17:14:18.734358', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (650203, '凭证修改', 'databus:credential:update', 3, 3, 6502, '', '', '', '', 0, 1, 1, 1, 'admin', '2025-10-17 17:14:18.734356', 'admin', '2025-10-17 17:14:18.734356', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (650202, '凭证新增', 'databus:credential:create', 3, 2, 6502, '', '', '', '', 0, 1, 1, 1, 'admin', '2025-10-17 17:14:18.734354', 'admin', '2025-10-17 17:14:18.734354', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (650201, '凭证查询', 'databus:credential:query', 3, 1, 6502, '', '', '', '', 0, 1, 1, 1, 'admin', '2025-10-17 17:14:18.734352', 'admin', '2025-10-17 17:14:18.734352', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (6501, 'API 定义', 'databus:gateway:query', 2, 10, 6500, 'gateway', 'ep:list', 'databus/gateway/index', 'DatabusGateway', 0, 1, 1, 1, 'admin', '2025-10-17 17:14:18.690394', 'admin', '2025-10-17 17:14:18.690394', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (650110, 'API版本对比', 'databus:gateway:version:compare', 3, 10, 6501, '', '', '', '', 0, 1, 1, 1, 'admin', '2025-10-30 14:37:51.432572', 'admin', '2025-10-30 14:37:51.432572', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (650109, 'API版本回滚', 'databus:gateway:version:rollback', 3, 9, 6501, '', '', '', '', 0, 1, 1, 1, 'admin', '2025-10-30 14:37:51.432571', 'admin', '2025-10-30 14:37:51.432571', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (650108, 'API版本详情', 'databus:gateway:version:detail', 3, 8, 6501, '', '', '', '', 0, 1, 1, 1, 'admin', '2025-10-30 14:37:51.432570', 'admin', '2025-10-30 14:37:51.432570', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (650107, 'API版本历史', 'databus:gateway:version:query', 3, 7, 6501, '', '', '', '', 0, 1, 1, 1, 'admin', '2025-10-30 14:37:51.432564', 'admin', '2025-10-30 14:37:51.432566', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (650106, 'API 刷新', 'databus:gateway:refresh', 3, 6, 6501, '', '', '', '', 0, 1, 1, 1, 'admin', '2025-10-17 17:14:18.734350', 'admin', '2025-10-17 17:14:18.734351', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (650105, 'API 调试', 'databus:gateway:invoke', 3, 5, 6501, '', '', '', '', 0, 1, 1, 1, 'admin', '2025-10-17 17:14:18.734349', 'admin', '2025-10-17 17:14:18.734349', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (650104, 'API 删除', 'databus:gateway:delete', 3, 4, 6501, '', '', '', '', 0, 1, 1, 1, 'admin', '2025-10-17 17:14:18.734347', 'admin', '2025-10-17 17:14:18.734347', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (650103, 'API 编辑', 'databus:gateway:update', 3, 3, 6501, '', '', '', '', 0, 1, 1, 1, 'admin', '2025-10-17 17:14:18.734345', 'admin', '2025-10-17 17:14:18.734345', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (650102, 'API 新建', 'databus:gateway:create', 3, 2, 6501, '', '', '', '', 0, 1, 1, 1, 'admin', '2025-10-17 17:14:18.734343', 'admin', '2025-10-17 17:14:18.734344', 0); +insert into SYSTEM_MENU (ID, NAME, PERMISSION, TYPE, SORT, PARENT_ID, PATH, ICON, COMPONENT, COMPONENT_NAME, STATUS, VISIBLE, KEEP_ALIVE, ALWAYS_SHOW, CREATOR, CREATE_TIME, UPDATER, UPDATE_TIME, DELETED) values (650101, 'API 查询', 'databus:gateway:query', 3, 1, 6501, '', '', '', '', 0, 1, 1, 1, 'admin', '2025-10-17 17:14:18.734335', 'admin', '2025-10-17 17:14:18.734338', 0); + COMMIT; -- SET IDENTITY_INSERT system_menu OFF; -- @formatter:on @@ -3897,6 +4013,7 @@ CREATE TABLE infra_bsn_file ( file_id bigint NOT NULL, file_name varchar(500) DEFAULT '' NULL, src varchar(100) DEFAULT '' NULL, + status smallint DEFAULT 1 NOT NULL, creator varchar(64) DEFAULT '' NULL, create_time datetime DEFAULT CURRENT_TIMESTAMP NOT NULL, updater varchar(64) DEFAULT '' NULL, @@ -3911,13 +4028,14 @@ COMMENT ON COLUMN infra_bsn_file.bsn_cd IS '业务编码'; COMMENT ON COLUMN infra_bsn_file.file_id IS '附件fileId'; COMMENT ON COLUMN infra_bsn_file.file_name IS '附件名称'; COMMENT ON COLUMN infra_bsn_file.src IS '附件来源'; +COMMENT ON COLUMN infra_bsn_file.status IS '状态(1-正常,0-禁用)'; COMMENT ON COLUMN infra_bsn_file.creator IS '创建者'; COMMENT ON COLUMN infra_bsn_file.create_time IS '创建时间'; COMMENT ON COLUMN infra_bsn_file.updater IS '更新者'; COMMENT ON COLUMN infra_bsn_file.update_time IS '最后更新时间'; COMMENT ON COLUMN infra_bsn_file.deleted IS '是否删除'; COMMENT ON COLUMN infra_bsn_file.tenant_id IS '租户编号'; -COMMENT ON TABLE infra_bsn_file IS '业务附件表'; +COMMENT ON TABLE infra_bsn_file IS '业务附件关联表'; -- ---------------------------- -- Table structure for system_seq @@ -4004,3 +4122,192 @@ COMMENT ON COLUMN system_seq_rcd.updater IS '更新者'; COMMENT ON COLUMN system_seq_rcd.update_time IS '更新时间'; COMMENT ON COLUMN system_seq_rcd.deleted IS '是否删除'; COMMENT ON TABLE system_seq_rcd IS '系统序列号记录表'; + + +INSERT INTO system_menu( + id, name, permission, type, sort, parent_id, + path, icon, component, status, component_name +) +VALUES ( + '1948328245618204673', '业务附件关联管理', '', 2, 0, 1243, + 'business-file', '', 'infra/businessfile/index', 0, 'BusinessFile' + ); + +INSERT INTO system_menu( + id, name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '1951092724040097793', '业务附件关联查询', 'infra:business-file:query', 3, 1, 1948328245618204673, + '', '', '', 0 + ); +INSERT INTO system_menu( + id, name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '1951092724040097794', '业务附件关联创建', 'infra:business-file:create', 3, 2, 1948328245618204673, + '', '', '', 0 + ); +INSERT INTO system_menu( + id, name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '1951092724040097795', '业务附件关联更新', 'infra:business-file:update', 3, 3, 1948328245618204673, + '', '', '', 0 + ); +INSERT INTO system_menu( + id, name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '1951092724040097796', '业务附件关联删除', 'infra:business-file:delete', 3, 4, 1948328245618204673, + '', '', '', 0 + ); +INSERT INTO system_menu( + id, name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '1951092724040097797', '业务附件关联导出', 'infra:business-file:export', 3, 5, 1948328245618204673, + '', '', '', 0 + ); + +-- 数据命名与简写标准菜单 +INSERT INTO system_menu( + id, name, permission, type, sort, parent_id, + path, icon, component, status, component_name +) +VALUES ( + '1947909810016006146', '数据命名与简写标准管理', '', 2, 0, 2, + 'standard-name', '', 'infra/standardname/index', 0, 'StandardName' + ); + +INSERT INTO system_menu( + id, name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '1953301310553645058', '数据命名与简写标准查询', 'infra:standard-name:query', 3, 1, 1947909810016006146, + '', '', '', 0 + ); +INSERT INTO system_menu( + id, name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '1953301310553645059', '数据命名与简写标准创建', 'infra:standard-name:create', 3, 2, 1947909810016006146, + '', '', '', 0 + ); +INSERT INTO system_menu( + id, name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '1953301310553645060', '数据命名与简写标准更新', 'infra:standard-name:update', 3, 3, 1947909810016006146, + '', '', '', 0 + ); +INSERT INTO system_menu( + id, name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '1953301310553645061', '数据命名与简写标准删除', 'infra:standard-name:delete', 3, 4, 1947909810016006146, + '', '', '', 0 + ); +INSERT INTO system_menu( + id, name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '1953301310553645062', '数据命名与简写标准导出', 'infra:standard-name:export', 3, 5, 1947909810016006146, + '', '', '', 0 + ); + +-- 系统序列号菜单 +INSERT INTO system_menu( + id, name, permission, type, sort, parent_id, + path, icon, component, status, component_name +) +VALUES ( + '1953701540574969857', '系统序列号管理', '', 2, 0, 1, + 'sequence', '', 'system/sequence/index', 0, 'Sequence' + ); + +INSERT INTO system_menu( + id, name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '1953702581324398594', '系统序列号查询', 'system:sequence:query', 3, 1, 1953701540574969857, + '', '', '', 0 + ); +INSERT INTO system_menu( + id, name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '1953702581324398595', '系统序列号创建', 'system:sequence:create', 3, 2, 1953701540574969857, + '', '', '', 0 + ); +INSERT INTO system_menu( + id, name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '1953702581324398596', '系统序列号更新', 'system:sequence:update', 3, 3, 1953701540574969857, + '', '', '', 0 + ); +INSERT INTO system_menu( + id, name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '1953702581324398597', '系统序列号删除', 'system:sequence:delete', 3, 4, 1953701540574969857, + '', '', '', 0 + ); +INSERT INTO system_menu( + id, name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '1953702581324398598', '系统序列号导出', 'system:sequence:export', 3, 5, 1953701540574969857, + '', '', '', 0 + ); + +-- 系统序列号相关字典数据初始化 +INSERT INTO system_dict_type (id, name, type, status, remark, creator, create_time, updater, update_time, deleted, deleted_time) +VALUES (500, '系统序列号循环类型', 'system_sequence_cycle_type', 0, '系统序列号循环类型枚举', 'admin', SYSDATE, 'admin', SYSDATE, 0, NULL); + +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 + (5001, 1, '年循环', 'Y', 'system_sequence_cycle_type', 0, 'primary', '', '年循环。示例: 2025', 'admin', SYSDATE, 'admin', SYSDATE, 0), + (5002, 2, '年-月循环', 'Y-M', 'system_sequence_cycle_type', 0, 'success', '', '年-月循环。示例: 2025-08', 'admin', SYSDATE, 'admin', SYSDATE, 0), + (5003, 3, '年月紧凑', 'YM', 'system_sequence_cycle_type', 0, 'info', '', '年月紧凑。示例: 202508', 'admin', SYSDATE, 'admin', SYSDATE, 0), + (5004, 4, '两位年+月', 'yM', 'system_sequence_cycle_type', 0, 'warning', '', '两位年+月。示例: 2508', 'admin', SYSDATE, 'admin', SYSDATE, 0), + (5005, 5, '年-月-日循环', 'Y-M-D', 'system_sequence_cycle_type', 0, 'primary', '', '年-月-日循环。示例: 2025-08-08', 'admin', SYSDATE, 'admin', SYSDATE, 0), + (5006, 6, '年月日紧凑', 'YMD', 'system_sequence_cycle_type', 0, 'success', '', '年月日紧凑。示例: 20250808', 'admin', SYSDATE, 'admin', SYSDATE, 0), + (5007, 7, '两位年+月日', 'yMD', 'system_sequence_cycle_type', 0, 'info', '', '两位年+月日。示例: 250808', 'admin', SYSDATE, 'admin', SYSDATE, 0), + (5008, 8, '自定义循环值', 'CUST', 'system_sequence_cycle_type', 0, 'warning', '', '自定义循环值;若未传 circulationValue,则默认用 seqId', 'admin', SYSDATE, 'admin', SYSDATE, 0), + (5009, 9, '仅前缀', 'PFX', 'system_sequence_cycle_type', 0, 'danger', '', '仅前缀,不需要时间循环值(不设置则不抛错)', 'admin', SYSDATE, 'admin', SYSDATE, 0); + +INSERT INTO system_dict_type (id, name, type, status, remark, creator, create_time, updater, update_time, deleted, deleted_time) +VALUES (501, '系统序列号分段类型', 'system_sequence_detail_type', 0, '系统序列号分段类型枚举', 'admin', SYSDATE, 'admin', SYSDATE, 0, NULL); + +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 + (5011, 1, '默认字符分段', 'STR', 'system_sequence_detail_type', 0, 'primary', '', '固定字符串分段', 'admin', SYSDATE, 'admin', SYSDATE, 0), + (5012, 2, '给定字符分段', 'INPUT', 'system_sequence_detail_type', 0, 'success', '', '根据输入参数动态生成的字符分段', 'admin', SYSDATE, 'admin', SYSDATE, 0), + (5013, 3, '日期分段', 'DATE', 'system_sequence_detail_type', 0, 'info', '', '基于日期格式的分段', 'admin', SYSDATE, 'admin', SYSDATE, 0), + (5014, 4, '流水号分段', 'SEQ', 'system_sequence_detail_type', 0, 'warning', '', '自增流水号分段', 'admin', SYSDATE, 'admin', SYSDATE, 0); + +INSERT INTO system_dict_type (id, name, type, status, remark, creator, create_time, updater, update_time, deleted, deleted_time) +VALUES (502, '系统序列号分段规则类型', 'system_sequence_detail_rule_type', 0, '系统序列号分段规则类型枚举', 'admin', SYSDATE, 'admin', SYSDATE, 0, NULL); + +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 + (5021, 1, '固定值', 'FIXED', 'system_sequence_detail_rule_type', 0, 'primary', '', '固定字符串值', 'admin', SYSDATE, 'admin', SYSDATE, 0), + (5022, 2, '日期格式', 'DATE', 'system_sequence_detail_rule_type', 0, 'success', '', '日期格式规则', 'admin', SYSDATE, 'admin', SYSDATE, 0), + (5023, 3, '数字格式', 'NUMBER', 'system_sequence_detail_rule_type', 0, 'info', '', '数字格式规则', 'admin', SYSDATE, 'admin', SYSDATE, 0), + (5024, 4, '自定义格式', 'CUSTOM', 'system_sequence_detail_rule_type', 0, 'warning', '', '自定义格式规则', 'admin', SYSDATE, 'admin', SYSDATE, 0); From b81e8c6df2824371fba35a4739d3b0da0b4501ac Mon Sep 17 00:00:00 2001 From: ranke <213539@qq.com> Date: Tue, 30 Dec 2025 18:07:58 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E7=AE=A1=E6=8E=A7=E6=8C=89=E9=92=AE=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=8F=AF=E7=94=A8=E9=85=8D=E7=BD=AE=E5=8A=9F=E8=83=BD?= =?UTF-8?q?.=20http://172.16.46.63:31560/index.php=3Fm=3Dtask&f=3Dview&tas?= =?UTF-8?q?kID=3D551?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 15 ++++++++++++++- sql/dm/bpm.sql | 2 ++ sql/dm/流程定义扩展信息表新增字段_20251230.sql | 10 ++++++++++ .../definition/vo/model/BpmModelMetaInfoVO.java | 4 ++++ .../admin/definition/vo/model/BpmModelRespVO.java | 1 + .../definition/vo/model/BpmModelSaveReqVO.java | 1 + .../convert/task/BpmProcessInstanceConvert.java | 13 ++++++++++--- .../definition/BpmProcessDefinitionInfoDO.java | 7 +++++++ 8 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 sql/dm/流程定义扩展信息表新增字段_20251230.sql diff --git a/pom.xml b/pom.xml index 7e0b370a..22c6cba2 100644 --- a/pom.xml +++ b/pom.xml @@ -219,7 +219,7 @@ ZT 中铜 ZStack 私服 - http://172.16.46.63:30708/repository/test/ + http://172.16.46.63:30708/repository/zt-cloud/ @@ -242,6 +242,19 @@ 1.0.0 + + klw-dev + + dev + + 172.16.46.63:30848 + klw + DEFAULT_GROUP + nacos + P@ssword25 + 1.0.0 + + env-prod diff --git a/sql/dm/bpm.sql b/sql/dm/bpm.sql index 04bc442b..a0501d50 100644 --- a/sql/dm/bpm.sql +++ b/sql/dm/bpm.sql @@ -120,6 +120,7 @@ CREATE TABLE bpm_process_definition_info ( simple_model text NULL, sort bigint DEFAULT 0 NULL, visible bit DEFAULT '1' NOT NULL, + restart bit DEFAULT '1' NOT NULL, start_user_ids varchar(256) DEFAULT NULL NULL, start_dept_ids varchar(256) DEFAULT NULL NULL, manager_user_ids varchar(256) DEFAULT NULL NULL, @@ -156,6 +157,7 @@ COMMENT ON COLUMN bpm_process_definition_info.form_custom_view_path IS '自定 COMMENT ON COLUMN bpm_process_definition_info.simple_model IS 'SIMPLE 设计器模型数据 JSON 格式'; COMMENT ON COLUMN bpm_process_definition_info.sort IS '排序值'; COMMENT ON COLUMN bpm_process_definition_info.visible IS '是否可见'; +COMMENT ON COLUMN bpm_process_definition_info.restart IS '是否允许重新发起'; COMMENT ON COLUMN bpm_process_definition_info.start_user_ids IS '可发起用户编号数组'; COMMENT ON COLUMN bpm_process_definition_info.start_dept_ids IS '可发起部门编号数组'; COMMENT ON COLUMN bpm_process_definition_info.manager_user_ids IS '可管理用户编号数组'; diff --git a/sql/dm/流程定义扩展信息表新增字段_20251230.sql b/sql/dm/流程定义扩展信息表新增字段_20251230.sql new file mode 100644 index 00000000..938b3946 --- /dev/null +++ b/sql/dm/流程定义扩展信息表新增字段_20251230.sql @@ -0,0 +1,10 @@ +-- 达梦8数据库DDL脚本 +-- 为 bpm_process_definition_info 表添加 restart 字段 + +-- 是否允许重新发起 +ALTER TABLE bpm_process_definition_info ADD COLUMN restart bit DEFAULT '1' NOT NULL; + +-- 添加字段注释 +COMMENT ON COLUMN bpm_process_definition_info.restart IS '是否允许重新发起'; + + diff --git a/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/controller/admin/definition/vo/model/BpmModelMetaInfoVO.java b/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/controller/admin/definition/vo/model/BpmModelMetaInfoVO.java index cabc1fd1..dcc06fc9 100644 --- a/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/controller/admin/definition/vo/model/BpmModelMetaInfoVO.java +++ b/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/controller/admin/definition/vo/model/BpmModelMetaInfoVO.java @@ -56,6 +56,10 @@ public class BpmModelMetaInfoVO { @NotNull(message = "是否可见不能为空") private Boolean visible; + @Schema(description = "是否允许重新发起", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") + @NotNull(message = "是否允许重新发起不能为空") + private Boolean restart; + @Schema(description = "可发起用户编号数组", example = "[1,2,3]") private List startUserIds; diff --git a/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/controller/admin/definition/vo/model/BpmModelRespVO.java b/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/controller/admin/definition/vo/model/BpmModelRespVO.java index e0b32f3c..63ef57d5 100644 --- a/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/controller/admin/definition/vo/model/BpmModelRespVO.java +++ b/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/controller/admin/definition/vo/model/BpmModelRespVO.java @@ -5,6 +5,7 @@ import com.zt.plat.module.bpm.controller.admin.base.user.UserSimpleBaseVO; import com.zt.plat.module.bpm.controller.admin.definition.vo.model.simple.BpmSimpleModelNodeVO; import com.zt.plat.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionRespVO; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; import lombok.Data; import java.time.LocalDateTime; diff --git a/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/controller/admin/definition/vo/model/BpmModelSaveReqVO.java b/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/controller/admin/definition/vo/model/BpmModelSaveReqVO.java index 905e6166..6d573413 100644 --- a/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/controller/admin/definition/vo/model/BpmModelSaveReqVO.java +++ b/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/controller/admin/definition/vo/model/BpmModelSaveReqVO.java @@ -4,6 +4,7 @@ import com.zt.plat.module.bpm.controller.admin.definition.vo.model.simple.BpmSim import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.Valid; import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import lombok.Data; @Schema(description = "管理后台 - 流程模型的保存 Request VO") diff --git a/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/convert/task/BpmProcessInstanceConvert.java b/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/convert/task/BpmProcessInstanceConvert.java index 791e6949..87652f87 100644 --- a/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/convert/task/BpmProcessInstanceConvert.java +++ b/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/convert/task/BpmProcessInstanceConvert.java @@ -87,9 +87,16 @@ public interface BpmProcessInstanceConvert { }); } } - // 摘要 - respVO.setSummary(FlowableUtils.getSummary(processDefinitionInfoMap.get(respVO.getProcessDefinitionId()), - pageResult.getList().get(i).getProcessVariables())); + BpmProcessDefinitionInfoDO processDefinitionInfo = processDefinitionInfoMap.get(respVO.getProcessDefinitionId()); + if (processDefinitionInfo != null) { + // 摘要 + respVO.setSummary(FlowableUtils.getSummary(processDefinitionInfo, + pageResult.getList().get(i).getProcessVariables())); + // 是否可见 + respVO.getProcessDefinition().setVisible(processDefinitionInfo.getVisible()); + // 是否可以重新发起流程 + respVO.getProcessDefinition().setRestart(processDefinitionInfo.getRestart()); + } // 表单 respVO.setFormVariables(pageResult.getList().get(i).getProcessVariables()); } diff --git a/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/dal/dataobject/definition/BpmProcessDefinitionInfoDO.java b/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/dal/dataobject/definition/BpmProcessDefinitionInfoDO.java index 0ebef4b0..349f4049 100644 --- a/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/dal/dataobject/definition/BpmProcessDefinitionInfoDO.java +++ b/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/dal/dataobject/definition/BpmProcessDefinitionInfoDO.java @@ -129,6 +129,13 @@ public class BpmProcessDefinitionInfoDO extends BaseDO { * 目的:如果 false 不可见,则不展示在“发起流程”的列表里 */ private Boolean visible; + + /** + * 是否允许重新发起 + * + * 目的:如果 false 则不可以重新发起流程 + */ + private Boolean restart; /** * 排序值 */ From 4579259973199a8e2758e6c2aa67a5740247f127 Mon Sep 17 00:00:00 2001 From: chenbowen Date: Tue, 30 Dec 2025 18:27:47 +0800 Subject: [PATCH 3/4] =?UTF-8?q?1.=20=E6=81=A2=E5=A4=8D=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E7=A7=81=E6=9C=8D=E5=BA=93=E7=9A=84=E6=8C=87=E5=90=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 22c6cba2..16bfa99f 100644 --- a/pom.xml +++ b/pom.xml @@ -219,7 +219,7 @@ ZT 中铜 ZStack 私服 - http://172.16.46.63:30708/repository/zt-cloud/ + http://172.16.46.63:30708/repository/test/ From 6ac75110191ec0d5eb6e5f9483be8b5a09da9b46 Mon Sep 17 00:00:00 2001 From: chenbowen Date: Tue, 30 Dec 2025 18:38:07 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=BF=BD=E7=95=A5?= =?UTF-8?q?=E5=85=AC=E5=8F=B8=E4=BB=A5=E5=8F=8A=E9=83=A8=E9=97=A8=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=9D=83=E9=99=90=E7=9A=84=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/util/BusinessDeptHandleUtil.java | 4 + .../docs/数据权限忽略与上下文说明.md | 42 +++++++++++ .../ZtDataPermissionAutoConfiguration.java | 12 +++ .../CompanyDataPermissionIgnore.java | 21 ++++++ .../annotation/DeptDataPermissionIgnore.java | 21 ++++++ .../CompanyDataPermissionIgnoreAspect.java | 31 ++++++++ .../aop/DeptDataPermissionIgnoreAspect.java | 31 ++++++++ .../core/db/DataPermissionRuleHandler.java | 11 +++ .../company/CompanyDataPermissionRule.java | 5 ++ .../rule/dept/DeptDataPermissionRule.java | 21 ++++-- .../rule/dept/DeptDataPermissionRuleTest.java | 75 +++++++++++++++++-- 11 files changed, 261 insertions(+), 13 deletions(-) create mode 100644 zt-framework/zt-spring-boot-starter-biz-data-permission/docs/数据权限忽略与上下文说明.md create mode 100644 zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/annotation/CompanyDataPermissionIgnore.java create mode 100644 zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/annotation/DeptDataPermissionIgnore.java create mode 100644 zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/aop/CompanyDataPermissionIgnoreAspect.java create mode 100644 zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/aop/DeptDataPermissionIgnoreAspect.java diff --git a/zt-framework/zt-spring-boot-starter-biz-business/src/main/java/com/zt/plat/framework/business/core/util/BusinessDeptHandleUtil.java b/zt-framework/zt-spring-boot-starter-biz-business/src/main/java/com/zt/plat/framework/business/core/util/BusinessDeptHandleUtil.java index 03502d9c..0f18c4bb 100644 --- a/zt-framework/zt-spring-boot-starter-biz-business/src/main/java/com/zt/plat/framework/business/core/util/BusinessDeptHandleUtil.java +++ b/zt-framework/zt-spring-boot-starter-biz-business/src/main/java/com/zt/plat/framework/business/core/util/BusinessDeptHandleUtil.java @@ -8,6 +8,7 @@ import com.zt.plat.framework.common.util.json.JsonUtils; import com.zt.plat.framework.common.util.spring.SpringUtils; import com.zt.plat.framework.security.core.LoginUser; import com.zt.plat.framework.tenant.core.context.CompanyContextHolder; +import com.zt.plat.framework.tenant.core.context.DeptContextHolder; import com.zt.plat.framework.web.core.util.WebFrameworkUtils; import com.zt.plat.module.system.api.dept.DeptApi; import com.zt.plat.module.system.api.dept.dto.CompanyDeptInfoRespDTO; @@ -197,6 +198,9 @@ public class BusinessDeptHandleUtil { } CompanyContextHolder.setIgnore(false); CompanyContextHolder.setCompanyId(Long.valueOf(info.getCompanyId())); + DeptContextHolder.setIgnore(false); + DeptContextHolder.setCompanyId(Long.valueOf(info.getCompanyId())); + DeptContextHolder.setDeptId(Long.valueOf(info.getDeptId())); return true; } } diff --git a/zt-framework/zt-spring-boot-starter-biz-data-permission/docs/数据权限忽略与上下文说明.md b/zt-framework/zt-spring-boot-starter-biz-data-permission/docs/数据权限忽略与上下文说明.md new file mode 100644 index 00000000..669a0729 --- /dev/null +++ b/zt-framework/zt-spring-boot-starter-biz-data-permission/docs/数据权限忽略与上下文说明.md @@ -0,0 +1,42 @@ +# 数据权限忽略与上下文覆盖说明 + +本文说明新增的公司/部门数据权限忽略能力,以及部门上下文对数据权限的覆盖策略。 + +## 新增注解 + +- `@CompanyDataPermissionIgnore(enable = "true")` +- `@DeptDataPermissionIgnore(enable = "true")` + +用法: +- 可标记在类或方法上。 +- `enable` 支持 Spring EL,计算结果为 `true` 时生效,默认开启。 +- 生效后,在方法执行期间临时设置忽略标记,结束后自动恢复。 + +## 忽略生效范围 + +- 公司数据权限:切面在进入方法时将 `CompanyContextHolder.setIgnore(true)`,数据权限规则检测到后直接放行。 +- 部门数据权限:切面在进入方法时将 `DeptContextHolder.setIgnore(true)`,部门数据权限规则检测到后直接放行。 + +## 部门上下文覆盖策略 + +当未忽略部门数据权限且上下文存在有效部门 ID 时: +- 优先使用上下文中的单一部门作为过滤条件,避免因默认的 `ALL` 或“无部门且不可查看自己”导致放行或误判无权。 +- 上下文部门不会修改原有的数据权限 DTO,仅在当前计算中使用。 +- 若上下文公司与缓存公司不一致,会记录告警日志,但仍按上下文部门过滤。 + +## 典型场景 + +1) **任务/全局调用需要暂时关闭数据权限** + - 在方法上标记 `@DeptDataPermissionIgnore` 或 `@CompanyDataPermissionIgnore`。 + +2) **带部门上下文的接口调用** + - 请求预先设置 `DeptContextHolder.setContext(deptId, companyId)`。 + - 即便数据权限声明为 `all=true`,也会按该部门过滤,避免读出全量。 + +3) **无部门权限但指定了上下文部门** + - 即使 `deptIds` 为空且 `self=false`,只要上下文提供部门,也会使用该部门过滤,而非直接判定无权。 + +## 注意事项 + +- 忽略标记只作用于当前线程上下文,切面会在 `finally` 中恢复旧值,嵌套调用安全。 +- 若需要同时忽略公司与部门数据权限,可叠加两个注解或在业务代码中分别设置忽略标记。 diff --git a/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/config/ZtDataPermissionAutoConfiguration.java b/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/config/ZtDataPermissionAutoConfiguration.java index 0a1c5350..1c7d9e91 100644 --- a/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/config/ZtDataPermissionAutoConfiguration.java +++ b/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/config/ZtDataPermissionAutoConfiguration.java @@ -1,6 +1,8 @@ package com.zt.plat.framework.datapermission.config; +import com.zt.plat.framework.datapermission.core.aop.CompanyDataPermissionIgnoreAspect; import com.zt.plat.framework.datapermission.core.aop.DataPermissionAnnotationAdvisor; +import com.zt.plat.framework.datapermission.core.aop.DeptDataPermissionIgnoreAspect; import com.zt.plat.framework.datapermission.core.db.DataPermissionRuleHandler; import com.zt.plat.framework.datapermission.core.rule.DataPermissionRule; import com.zt.plat.framework.datapermission.core.rule.DataPermissionRuleFactory; @@ -43,4 +45,14 @@ public class ZtDataPermissionAutoConfiguration { return new DataPermissionAnnotationAdvisor(); } + @Bean + public DeptDataPermissionIgnoreAspect deptDataPermissionIgnoreAspect() { + return new DeptDataPermissionIgnoreAspect(); + } + + @Bean + public CompanyDataPermissionIgnoreAspect companyDataPermissionIgnoreAspect() { + return new CompanyDataPermissionIgnoreAspect(); + } + } diff --git a/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/annotation/CompanyDataPermissionIgnore.java b/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/annotation/CompanyDataPermissionIgnore.java new file mode 100644 index 00000000..ecc4f1bb --- /dev/null +++ b/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/annotation/CompanyDataPermissionIgnore.java @@ -0,0 +1,21 @@ +package com.zt.plat.framework.datapermission.core.annotation; + +import java.lang.annotation.*; + +/** + * 忽略公司数据权限的注解。 + *

+ * 标记在方法或类上时,匹配的调用会临时忽略公司类型的数据权限规则。 + */ +@Target({ElementType.TYPE, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Inherited +public @interface CompanyDataPermissionIgnore { + + /** + * 是否开启忽略,默认开启。 + * 支持 Spring EL 表达式,返回 true 时生效。 + */ + String enable() default "true"; +} \ No newline at end of file diff --git a/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/annotation/DeptDataPermissionIgnore.java b/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/annotation/DeptDataPermissionIgnore.java new file mode 100644 index 00000000..de80a7d1 --- /dev/null +++ b/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/annotation/DeptDataPermissionIgnore.java @@ -0,0 +1,21 @@ +package com.zt.plat.framework.datapermission.core.annotation; + +import java.lang.annotation.*; + +/** + * 忽略部门数据权限的注解。 + *

+ * 标记在方法或类上时,匹配的调用会临时忽略部门类型的数据权限规则。 + */ +@Target({ElementType.TYPE, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Inherited +public @interface DeptDataPermissionIgnore { + + /** + * 是否开启忽略,默认开启。 + * 支持 Spring EL 表达式,返回 true 时生效。 + */ + String enable() default "true"; +} \ No newline at end of file diff --git a/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/aop/CompanyDataPermissionIgnoreAspect.java b/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/aop/CompanyDataPermissionIgnoreAspect.java new file mode 100644 index 00000000..ae051a25 --- /dev/null +++ b/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/aop/CompanyDataPermissionIgnoreAspect.java @@ -0,0 +1,31 @@ +package com.zt.plat.framework.datapermission.core.aop; + +import com.zt.plat.framework.common.util.spring.SpringExpressionUtils; +import com.zt.plat.framework.datapermission.core.annotation.CompanyDataPermissionIgnore; +import com.zt.plat.framework.tenant.core.context.CompanyContextHolder; +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; + +/** + * 公司数据权限忽略切面,基于 {@link CompanyDataPermissionIgnore} 注解。 + */ +@Aspect +@Slf4j +public class CompanyDataPermissionIgnoreAspect { + + @Around("@within(companyDataPermissionIgnore) || @annotation(companyDataPermissionIgnore)") + public Object around(ProceedingJoinPoint joinPoint, CompanyDataPermissionIgnore companyDataPermissionIgnore) throws Throwable { + boolean oldIgnore = CompanyContextHolder.isIgnore(); + try { + Object enable = SpringExpressionUtils.parseExpression(companyDataPermissionIgnore.enable()); + if (Boolean.TRUE.equals(enable)) { + CompanyContextHolder.setIgnore(true); + } + return joinPoint.proceed(); + } finally { + CompanyContextHolder.setIgnore(oldIgnore); + } + } +} \ No newline at end of file diff --git a/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/aop/DeptDataPermissionIgnoreAspect.java b/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/aop/DeptDataPermissionIgnoreAspect.java new file mode 100644 index 00000000..4ee9054e --- /dev/null +++ b/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/aop/DeptDataPermissionIgnoreAspect.java @@ -0,0 +1,31 @@ +package com.zt.plat.framework.datapermission.core.aop; + +import com.zt.plat.framework.common.util.spring.SpringExpressionUtils; +import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore; +import com.zt.plat.framework.tenant.core.context.DeptContextHolder; +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; + +/** + * 部门数据权限忽略切面,基于 {@link DeptDataPermissionIgnore} 注解。 + */ +@Aspect +@Slf4j +public class DeptDataPermissionIgnoreAspect { + + @Around("@within(deptDataPermissionIgnore) || @annotation(deptDataPermissionIgnore)") + public Object around(ProceedingJoinPoint joinPoint, DeptDataPermissionIgnore deptDataPermissionIgnore) throws Throwable { + boolean oldIgnore = DeptContextHolder.shouldIgnore(); + try { + Object enable = SpringExpressionUtils.parseExpression(deptDataPermissionIgnore.enable()); + if (Boolean.TRUE.equals(enable)) { + DeptContextHolder.setIgnore(true); + } + return joinPoint.proceed(); + } finally { + DeptContextHolder.setIgnore(oldIgnore); + } + } +} \ No newline at end of file diff --git a/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/db/DataPermissionRuleHandler.java b/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/db/DataPermissionRuleHandler.java index aa93b5fe..d23e9ac8 100644 --- a/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/db/DataPermissionRuleHandler.java +++ b/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/db/DataPermissionRuleHandler.java @@ -10,7 +10,9 @@ import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.operators.conditional.AndExpression; import net.sf.jsqlparser.schema.Table; +import java.util.HashSet; import java.util.List; +import java.util.Set; import static com.zt.plat.framework.security.core.util.SecurityFrameworkUtils.skipPermissionCheck; @@ -41,6 +43,7 @@ public class DataPermissionRuleHandler implements MultiDataPermissionHandler { } // 生成条件 + final Set processed = new HashSet<>(); Expression allExpression = null; for (DataPermissionRule rule : rules) { // 判断表名是否匹配 @@ -49,6 +52,14 @@ public class DataPermissionRuleHandler implements MultiDataPermissionHandler { continue; } + // 同一张表 + 同一别名 + 同一规则 在一次 SQL 解析内仅处理一次,避免重复拼接条件 + String aliasName = table.getAlias() == null ? "" : table.getAlias().getName(); + String key = tableName + "|" + aliasName + "|" + rule.getClass().getName(); + if (processed.contains(key)) { + continue; + } + processed.add(key); + // 单条规则的条件 Expression oneExpress = rule.getExpression(tableName, table.getAlias()); if (oneExpress == null) { diff --git a/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/rule/company/CompanyDataPermissionRule.java b/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/rule/company/CompanyDataPermissionRule.java index 5b46c28f..c02348c6 100644 --- a/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/rule/company/CompanyDataPermissionRule.java +++ b/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/rule/company/CompanyDataPermissionRule.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil; import com.zt.plat.framework.common.util.collection.CollectionUtils; import com.zt.plat.framework.datapermission.core.rule.DataPermissionRule; import com.zt.plat.framework.mybatis.core.util.MyBatisUtils; +import com.zt.plat.framework.tenant.core.context.CompanyContextHolder; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import net.sf.jsqlparser.expression.*; @@ -46,6 +47,10 @@ public class CompanyDataPermissionRule implements DataPermissionRule { @Override public Expression getExpression(String tableName, Alias tableAlias) { + // 显式忽略公司数据权限时直接放行 + if (CompanyContextHolder.isIgnore()) { + return null; + } // 业务拼接 Company 的条件 if (getLoginUserCompanyId() == null) { // 如果没有登录用户的公司编号,则不需要拼接条件 diff --git a/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java b/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java index e54a7f54..ea4a8a93 100644 --- a/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java +++ b/zt-framework/zt-spring-boot-starter-biz-data-permission/src/main/java/com/zt/plat/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java @@ -156,21 +156,28 @@ public class DeptDataPermissionRule implements DataPermissionRule { } } - // 情况一,如果是 ALL 可查看全部,则无需拼接条件 - if (deptDataPermission.getAll()) { + // 计算有效的部门与自查标记:当存在上下文部门且未被忽略时,强制仅使用该部门,以避免默认全量或空权限分支 + Set effectiveDeptIds = deptDataPermission.getDeptIds(); + Boolean effectiveSelf = deptDataPermission.getSelf(); + if (!DeptContextHolder.shouldIgnore() && ctxDeptId != null && ctxDeptId > 0L) { + effectiveDeptIds = CollUtil.newHashSet(ctxDeptId); + } + + // 情况一:仅当不存在上下文部门时,且 ALL 可查看全部,才无需拼接条件;若存在上下文部门则仍需基于该部门过滤 + if (ctxDeptId == null && deptDataPermission.getAll()) { return null; } - // 情况二,即不能查看部门,又不能查看自己,则说明 100% 无权限 - if (CollUtil.isEmpty(deptDataPermission.getDeptIds()) - && Boolean.FALSE.equals(deptDataPermission.getSelf())) { + // 情况二:仅在有效部门集合为空且不可查看自己时,才认为无权限;若上下文提供部门,则跳过该兜底 + if (CollUtil.isEmpty(effectiveDeptIds) + && Boolean.FALSE.equals(effectiveSelf)) { return new EqualsTo(null, null); // WHERE null = null,可以保证返回的数据为空 } // 情况三,拼接 Dept 和 Company User 的条件,最后组合 - Expression deptExpression = buildDeptExpression(tableName, tableAlias, deptDataPermission.getDeptIds()); + Expression deptExpression = buildDeptExpression(tableName, tableAlias, effectiveDeptIds); // Expression deptExpression = buildDeptExpression(tableName, tableAlias, deptDataPermission.getDeptIds()); - Expression userExpression = buildUserExpression(tableName, tableAlias, deptDataPermission.getSelf(), loginUser.getId()); + Expression userExpression = buildUserExpression(tableName, tableAlias, effectiveSelf, loginUser.getId()); if (deptExpression == null && userExpression == null) { // TODO ZT:获得不到条件的时候,暂时不抛出异常,而是不返回数据 log.warn("[getExpression][LoginUser({}) Table({}/{}) DeptDataPermission({}) 构建的条件为空]", diff --git a/zt-framework/zt-spring-boot-starter-biz-data-permission/src/test/java/com/zt/plat/framework/datapermission/core/rule/dept/DeptDataPermissionRuleTest.java b/zt-framework/zt-spring-boot-starter-biz-data-permission/src/test/java/com/zt/plat/framework/datapermission/core/rule/dept/DeptDataPermissionRuleTest.java index 77f194ce..e68941db 100644 --- a/zt-framework/zt-spring-boot-starter-biz-data-permission/src/test/java/com/zt/plat/framework/datapermission/core/rule/dept/DeptDataPermissionRuleTest.java +++ b/zt-framework/zt-spring-boot-starter-biz-data-permission/src/test/java/com/zt/plat/framework/datapermission/core/rule/dept/DeptDataPermissionRuleTest.java @@ -264,7 +264,7 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest { } } - @Test // 上下文部门存在且公司一致时,清空原集合并覆盖为单一 deptId + @Test // 上下文部门存在且公司一致时,表达式按上下文 deptId 生效,但不修改原数据权限集合 void testGetExpression_deptContextOverride_companyMatch() { try (MockedStatic secMock = mockStatic(SecurityFrameworkUtils.class); MockedStatic deptCtxMock = mockStatic(DeptContextHolder.class); @@ -292,12 +292,13 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest { Expression expression = rule.getExpression(tableName, tableAlias); assertEquals("u.dept_id IN (99)", expression.toString()); - assertEquals(CollUtil.newLinkedHashSet(99L), deptDataPermission.getDeptIds()); + // 原始权限对象不被修改,只是临时使用上下文 deptId 计算 + assertEquals(CollUtil.newLinkedHashSet(10L, 20L), deptDataPermission.getDeptIds()); assertEquals(1L, deptDataPermission.getCompanyId()); } } - @Test // 上下文部门存在但公司不一致时,记录告警并保持原逻辑(不覆盖) + @Test // 上下文部门存在但公司不一致时,仍按上下文 deptId 过滤,原数据权限保持不变 void testGetExpression_deptContextOverride_companyMismatch() { try (MockedStatic secMock = mockStatic(SecurityFrameworkUtils.class); MockedStatic deptCtxMock = mockStatic(DeptContextHolder.class); @@ -324,10 +325,72 @@ class DeptDataPermissionRuleTest extends BaseMockitoUnitTest { Expression expression = rule.getExpression(tableName, tableAlias); - assertEquals("u.dept_id IN (10)", expression.toString()); - assertEquals(CollUtil.newLinkedHashSet(10L), deptDataPermission.getDeptIds()); - assertEquals(1L, deptDataPermission.getCompanyId()); + assertEquals("u.dept_id IN (99)", expression.toString()); + // 原始权限对象不被修改 + assertEquals(CollUtil.newLinkedHashSet(10L), deptDataPermission.getDeptIds()); + assertEquals(1L, deptDataPermission.getCompanyId()); } } + @Test // ALL 权限但存在上下文部门时,仍按上下文部门过滤 + void testGetExpression_allPermission_withCtxDept() { + try (MockedStatic secMock = mockStatic(SecurityFrameworkUtils.class); + MockedStatic deptCtxMock = mockStatic(DeptContextHolder.class); + MockedStatic companyCtxMock = mockStatic(CompanyContextHolder.class)) { + + String tableName = "t_user"; + Alias tableAlias = new Alias("u"); + LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L) + .setUserType(UserTypeEnum.ADMIN.getValue())); + secMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser); + + DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO() + .setAll(true) + .setDeptIds(CollUtil.newLinkedHashSet(10L)); + when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(success(deptDataPermission)); + + deptCtxMock.when(DeptContextHolder::shouldIgnore).thenReturn(false); + deptCtxMock.when(DeptContextHolder::getDeptId).thenReturn(99L); + deptCtxMock.when(DeptContextHolder::getCompanyId).thenReturn(1L); + companyCtxMock.when(CompanyContextHolder::getCompanyId).thenReturn(1L); + companyCtxMock.when(CompanyContextHolder::isIgnore).thenReturn(false); + + rule.addDeptColumn(tableName, "dept_id"); + + Expression expression = rule.getExpression(tableName, tableAlias); + + assertEquals("u.dept_id IN (99)", expression.toString()); + } + } + + @Test // 无部门且不可查看自己,但上下文提供部门时,应使用上下文部门而非判定无权限 + void testGetExpression_noDeptNoSelf_withCtxDept() { + try (MockedStatic secMock = mockStatic(SecurityFrameworkUtils.class); + MockedStatic deptCtxMock = mockStatic(DeptContextHolder.class); + MockedStatic companyCtxMock = mockStatic(CompanyContextHolder.class)) { + + String tableName = "t_user"; + Alias tableAlias = new Alias("u"); + LoginUser loginUser = randomPojo(LoginUser.class, o -> o.setId(1L) + .setUserType(UserTypeEnum.ADMIN.getValue())); + secMock.when(SecurityFrameworkUtils::getLoginUser).thenReturn(loginUser); + + DeptDataPermissionRespDTO deptDataPermission = new DeptDataPermissionRespDTO() + .setSelf(false); + when(permissionApi.getDeptDataPermission(same(1L))).thenReturn(success(deptDataPermission)); + + deptCtxMock.when(DeptContextHolder::shouldIgnore).thenReturn(false); + deptCtxMock.when(DeptContextHolder::getDeptId).thenReturn(88L); + deptCtxMock.when(DeptContextHolder::getCompanyId).thenReturn(1L); + companyCtxMock.when(CompanyContextHolder::getCompanyId).thenReturn(1L); + companyCtxMock.when(CompanyContextHolder::isIgnore).thenReturn(false); + + rule.addDeptColumn(tableName, "dept_id"); + + Expression expression = rule.getExpression(tableName, tableAlias); + + assertEquals("u.dept_id IN (88)", expression.toString()); + } + } + }