-- ============================================================ -- Task 5: 更新7个角色的权限分配 -- 删除旧权限,按Tab添加新权限 -- ============================================================ -- ============================================================ -- 预清理:删除所有旧 hidd:objhidd:* 分配(已替换为Tab级) -- ============================================================ DELETE FROM sys_role_menu WHERE menu_id IN (2730,2731,2732,2733,2735,2736,2667,2668,2669) AND role_id IN (3,4,5,6,7,8); -- ============================================================ -- 1. 已建工程管理单位 (role_id=3) -- Tabs: selfEng + subEng -- ============================================================ INSERT INTO sys_role_menu (role_id, menu_id) SELECT 3, menu_id FROM sys_menu WHERE menu_id BETWEEN 2880 AND 2887; -- ============================================================ -- 2. 中小型技术服务单位 (role_id=4) -- Tabs: selfEng + subEng -- ============================================================ INSERT INTO sys_role_menu (role_id, menu_id) SELECT 4, menu_id FROM sys_menu WHERE menu_id BETWEEN 2880 AND 2887; -- ============================================================ -- 3. 在建项目施工单位 (role_id=5) -- Tab: bidEng -- ============================================================ INSERT INTO sys_role_menu (role_id, menu_id) SELECT 5, menu_id FROM sys_menu WHERE menu_id BETWEEN 2890 AND 2896; -- ============================================================ -- 4. 在建项目监理单位 (role_id=6) -- Tabs: bidEng + consEng -- ============================================================ INSERT INTO sys_role_menu (role_id, menu_id) SELECT 6, menu_id FROM sys_menu WHERE menu_id BETWEEN 2890 AND 2896; INSERT INTO sys_role_menu (role_id, menu_id) SELECT 6, menu_id FROM sys_menu WHERE menu_id BETWEEN 2900 AND 2903; -- ============================================================ -- 5. 在建项目法人单位 (role_id=7) -- Tabs: bidEng + partEng -- ============================================================ INSERT INTO sys_role_menu (role_id, menu_id) SELECT 7, menu_id FROM sys_menu WHERE menu_id BETWEEN 2890 AND 2896; INSERT INTO sys_role_menu (role_id, menu_id) SELECT 7, menu_id FROM sys_menu WHERE menu_id BETWEEN 2910 AND 2913; -- ============================================================ -- 6. 水行政主管单位 (role_id=8) -- Tab: subEng (只保留 subEng:export, 其他无需改) -- ============================================================ INSERT INTO sys_role_menu (role_id, menu_id) SELECT 8, 2887 WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = 8 AND menu_id = 2887); -- 水行政主管单位的隐患上报(2667)/退回(2668)/督办(2669) 保持不变 -- 它们直接挂在2000下,没有跨Tab问题 -- ============================================================ -- 7. 月报表权限拆分分配 -- hidd:month:supervise → hidd:month:agree, hidd:month:disagree -- hidd:month:report → hidd:month:recall -- ============================================================ -- 水行政主管(8) 和 水利部(9) 需要月报审批功能 INSERT INTO sys_role_menu (role_id, menu_id) SELECT r.role_id::bigint, m.menu_id FROM (VALUES (8), (9)) AS r(role_id), sys_menu m WHERE m.menu_id IN (2920, 2921, 2922) AND NOT EXISTS (SELECT 1 FROM sys_role_menu rm WHERE rm.role_id = r.role_id AND rm.menu_id = m.menu_id); -- ============================================================ -- 8. 事故月报权限拆分分配 -- acci:month:supervise → acci:month:approve, acci:month:unlock -- acci:month:report → acci:month:revoke -- ============================================================ -- 水行政主管(8) 和 水利部(9) 需要事故月报审批功能 INSERT INTO sys_role_menu (role_id, menu_id) SELECT r.role_id::bigint, m.menu_id FROM (VALUES (8), (9)) AS r(role_id), sys_menu m WHERE m.menu_id IN (2930, 2931) AND NOT EXISTS (SELECT 1 FROM sys_role_menu rm WHERE rm.role_id = r.role_id AND rm.menu_id = m.menu_id); -- ============================================================ -- 验证 -- ============================================================ SELECT rm.role_id, r.role_name, m.menu_id, m.menu_name, m.perms FROM sys_role_menu rm JOIN sys_menu m ON m.menu_id = rm.menu_id LEFT JOIN sys_role r ON r.role_id::text = rm.role_id::text WHERE m.menu_id >= 2880 OR m.perms IN ('hidd:selfEng:add','hidd:bidEng:add','hidd:consEng:add','hidd:partEng:add','hidd:month:agree','hidd:month:disagree','hidd:month:recall','acci:month:approve','acci:month:unlock') ORDER BY rm.role_id, m.menu_id;