split-t5-role-assignments.sql 4.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. -- ============================================================
  2. -- Task 5: 更新7个角色的权限分配
  3. -- 删除旧权限,按Tab添加新权限
  4. -- ============================================================
  5. -- ============================================================
  6. -- 预清理:删除所有旧 hidd:objhidd:* 分配(已替换为Tab级)
  7. -- ============================================================
  8. DELETE FROM sys_role_menu
  9. WHERE menu_id IN (2730,2731,2732,2733,2735,2736,2667,2668,2669)
  10. AND role_id IN (3,4,5,6,7,8);
  11. -- ============================================================
  12. -- 1. 已建工程管理单位 (role_id=3)
  13. -- Tabs: selfEng + subEng
  14. -- ============================================================
  15. INSERT INTO sys_role_menu (role_id, menu_id)
  16. SELECT 3, menu_id FROM sys_menu WHERE menu_id BETWEEN 2880 AND 2887;
  17. -- ============================================================
  18. -- 2. 中小型技术服务单位 (role_id=4)
  19. -- Tabs: selfEng + subEng
  20. -- ============================================================
  21. INSERT INTO sys_role_menu (role_id, menu_id)
  22. SELECT 4, menu_id FROM sys_menu WHERE menu_id BETWEEN 2880 AND 2887;
  23. -- ============================================================
  24. -- 3. 在建项目施工单位 (role_id=5)
  25. -- Tab: bidEng
  26. -- ============================================================
  27. INSERT INTO sys_role_menu (role_id, menu_id)
  28. SELECT 5, menu_id FROM sys_menu WHERE menu_id BETWEEN 2890 AND 2896;
  29. -- ============================================================
  30. -- 4. 在建项目监理单位 (role_id=6)
  31. -- Tabs: bidEng + consEng
  32. -- ============================================================
  33. INSERT INTO sys_role_menu (role_id, menu_id)
  34. SELECT 6, menu_id FROM sys_menu WHERE menu_id BETWEEN 2890 AND 2896;
  35. INSERT INTO sys_role_menu (role_id, menu_id)
  36. SELECT 6, menu_id FROM sys_menu WHERE menu_id BETWEEN 2900 AND 2903;
  37. -- ============================================================
  38. -- 5. 在建项目法人单位 (role_id=7)
  39. -- Tabs: bidEng + partEng
  40. -- ============================================================
  41. INSERT INTO sys_role_menu (role_id, menu_id)
  42. SELECT 7, menu_id FROM sys_menu WHERE menu_id BETWEEN 2890 AND 2896;
  43. INSERT INTO sys_role_menu (role_id, menu_id)
  44. SELECT 7, menu_id FROM sys_menu WHERE menu_id BETWEEN 2910 AND 2913;
  45. -- ============================================================
  46. -- 6. 水行政主管单位 (role_id=8)
  47. -- Tab: subEng (只保留 subEng:export, 其他无需改)
  48. -- ============================================================
  49. INSERT INTO sys_role_menu (role_id, menu_id)
  50. SELECT 8, 2887 WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = 8 AND menu_id = 2887);
  51. -- 水行政主管单位的隐患上报(2667)/退回(2668)/督办(2669) 保持不变
  52. -- 它们直接挂在2000下,没有跨Tab问题
  53. -- ============================================================
  54. -- 7. 月报表权限拆分分配
  55. -- hidd:month:supervise → hidd:month:agree, hidd:month:disagree
  56. -- hidd:month:report → hidd:month:recall
  57. -- ============================================================
  58. -- 水行政主管(8) 和 水利部(9) 需要月报审批功能
  59. INSERT INTO sys_role_menu (role_id, menu_id)
  60. SELECT r.role_id::bigint, m.menu_id
  61. FROM (VALUES (8), (9)) AS r(role_id), sys_menu m
  62. WHERE m.menu_id IN (2920, 2921, 2922)
  63. AND NOT EXISTS (SELECT 1 FROM sys_role_menu rm WHERE rm.role_id = r.role_id AND rm.menu_id = m.menu_id);
  64. -- ============================================================
  65. -- 8. 事故月报权限拆分分配
  66. -- acci:month:supervise → acci:month:approve, acci:month:unlock
  67. -- acci:month:report → acci:month:revoke
  68. -- ============================================================
  69. -- 水行政主管(8) 和 水利部(9) 需要事故月报审批功能
  70. INSERT INTO sys_role_menu (role_id, menu_id)
  71. SELECT r.role_id::bigint, m.menu_id
  72. FROM (VALUES (8), (9)) AS r(role_id), sys_menu m
  73. WHERE m.menu_id IN (2930, 2931)
  74. AND NOT EXISTS (SELECT 1 FROM sys_role_menu rm WHERE rm.role_id = r.role_id AND rm.menu_id = m.menu_id);
  75. -- ============================================================
  76. -- 验证
  77. -- ============================================================
  78. SELECT rm.role_id, r.role_name, m.menu_id, m.menu_name, m.perms
  79. FROM sys_role_menu rm
  80. JOIN sys_menu m ON m.menu_id = rm.menu_id
  81. LEFT JOIN sys_role r ON r.role_id::text = rm.role_id::text
  82. 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')
  83. ORDER BY rm.role_id, m.menu_id;