| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- -- ============================================================
- -- 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;
|