You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
4.3 KiB
78 lines
4.3 KiB
-- 审核监督权限完整修复(可重复执行)
|
|
-- 问题:旧权限码 alarm-audit:* 与前端 alarm:audit:* / 后端 alarm:query|audit|detail 不一致
|
|
-- 且「审核表决」「查看详情」功能点可能未挂在「审核监督」页面下
|
|
|
|
BEGIN;
|
|
|
|
CREATE TEMP TABLE IF NOT EXISTS tmp_audit_page (menu_id BIGINT PRIMARY KEY) ON COMMIT DROP;
|
|
TRUNCATE tmp_audit_page;
|
|
|
|
INSERT INTO tmp_audit_page (menu_id)
|
|
SELECT menu_id FROM t_menu
|
|
WHERE deleted_flag = 0 AND menu_type = 2
|
|
AND (path = '/business/alarm/audit-list' OR menu_name = '审核监督')
|
|
LIMIT 1;
|
|
|
|
-- 1) 旧码原地升级
|
|
UPDATE t_menu
|
|
SET web_perms = 'alarm:audit:query', api_perms = 'alarm:query', menu_name = '查询', perms_type = 1, update_time = NOW()
|
|
WHERE web_perms = 'alarm-audit:query' AND menu_type = 3 AND deleted_flag = 0;
|
|
|
|
UPDATE t_menu
|
|
SET web_perms = 'alarm:audit:do', api_perms = 'alarm:audit', menu_name = '审核表决', perms_type = 1, update_time = NOW()
|
|
WHERE web_perms IN ('alarm-audit:handle', 'alarm-audit:audit', 'alarm:audit') AND menu_type = 3 AND deleted_flag = 0
|
|
AND parent_id IN (SELECT menu_id FROM tmp_audit_page);
|
|
|
|
-- 2) 补全「审核监督」下三个功能点(web_perms 全局唯一,按码插入)
|
|
INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, frame_flag, cache_flag, visible_flag, disabled_flag,
|
|
perms_type, api_perms, web_perms, context_menu_id, deleted_flag, create_user_id, create_time, update_time)
|
|
SELECT '查询', 3, p.menu_id, 10, false, false, true, false, 1, 'alarm:query', 'alarm:audit:query', p.menu_id, false, 1, NOW(), NOW()
|
|
FROM tmp_audit_page p
|
|
WHERE NOT EXISTS (SELECT 1 FROM t_menu x WHERE x.web_perms = 'alarm:audit:query' AND x.deleted_flag = 0);
|
|
|
|
INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, frame_flag, cache_flag, visible_flag, disabled_flag,
|
|
perms_type, api_perms, web_perms, context_menu_id, deleted_flag, create_user_id, create_time, update_time)
|
|
SELECT '审核表决', 3, p.menu_id, 20, false, false, true, false, 1, 'alarm:audit', 'alarm:audit:do', p.menu_id, false, 1, NOW(), NOW()
|
|
FROM tmp_audit_page p
|
|
WHERE NOT EXISTS (SELECT 1 FROM t_menu x WHERE x.web_perms = 'alarm:audit:do' AND x.deleted_flag = 0);
|
|
|
|
INSERT INTO t_menu (menu_name, menu_type, parent_id, sort, frame_flag, cache_flag, visible_flag, disabled_flag,
|
|
perms_type, api_perms, web_perms, context_menu_id, deleted_flag, create_user_id, create_time, update_time)
|
|
SELECT '查看详情', 3, p.menu_id, 30, false, false, true, false, 1, 'alarm:detail', 'alarm:audit:detail', p.menu_id, false, 1, NOW(), NOW()
|
|
FROM tmp_audit_page p
|
|
WHERE NOT EXISTS (SELECT 1 FROM t_menu x WHERE x.web_perms = 'alarm:audit:detail' AND x.deleted_flag = 0);
|
|
|
|
-- 3) api_perms 兜底
|
|
UPDATE t_menu SET api_perms = 'alarm:query', update_time = NOW()
|
|
WHERE web_perms = 'alarm:audit:query' AND deleted_flag = 0 AND COALESCE(api_perms, '') <> 'alarm:query';
|
|
|
|
UPDATE t_menu SET api_perms = 'alarm:audit', update_time = NOW()
|
|
WHERE web_perms = 'alarm:audit:do' AND deleted_flag = 0 AND COALESCE(api_perms, '') <> 'alarm:audit';
|
|
|
|
UPDATE t_menu SET api_perms = 'alarm:detail', update_time = NOW()
|
|
WHERE web_perms = 'alarm:audit:detail' AND deleted_flag = 0 AND COALESCE(api_perms, '') <> 'alarm:detail';
|
|
|
|
-- 4) 审核组三角色 + JZ_ADMIN:绑定「接报案中心」目录 + 「审核监督」页面及全部功能点
|
|
INSERT INTO t_role_menu (role_id, menu_id, create_time, update_time)
|
|
SELECT r.role_id, m.menu_id, NOW(), NOW()
|
|
FROM t_role r
|
|
CROSS JOIN t_menu m
|
|
WHERE r.role_code IN ('alarm_audit_legal', 'alarm_audit_lawyer', 'alarm_audit_jz', 'JZ_ADMIN')
|
|
AND m.deleted_flag = 0
|
|
AND (
|
|
m.menu_name = '接报案中心' AND m.menu_type = 1
|
|
OR m.path = '/business/alarm/audit-list'
|
|
OR m.parent_id IN (SELECT menu_id FROM tmp_audit_page)
|
|
OR m.menu_id IN (SELECT menu_id FROM tmp_audit_page)
|
|
)
|
|
AND NOT EXISTS (SELECT 1 FROM t_role_menu rm WHERE rm.role_id = r.role_id AND rm.menu_id = m.menu_id);
|
|
|
|
COMMIT;
|
|
|
|
-- 验证
|
|
SELECT m.menu_id, m.menu_name, m.web_perms, m.api_perms, m.parent_id
|
|
FROM t_menu m
|
|
WHERE m.deleted_flag = 0
|
|
AND (m.menu_id IN (SELECT menu_id FROM t_menu WHERE path = '/business/alarm/audit-list' AND deleted_flag = 0)
|
|
OR m.parent_id IN (SELECT menu_id FROM t_menu WHERE path = '/business/alarm/audit-list' AND deleted_flag = 0))
|
|
ORDER BY m.menu_type, m.sort, m.menu_id;
|
|
|