assign-maintenance-permissions.sql 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. -- ==========================================
  2. -- 维修角色权限分配脚本
  3. -- 功能:为维修人员和物业维修管理员分配适当的功能权限
  4. -- 时间:2025-06-30 13:50:00
  5. -- 说明:基于业务需求分配差异化权限
  6. -- ==========================================
  7. -- 第一步:为维修人员(role_id: 5)分配权限
  8. -- 维修人员需要:查看工单、处理自己的维修任务、查看维修分类
  9. INSERT IGNORE INTO sys_role_menu (role_id, menu_id) VALUES
  10. -- 报修管理基础权限
  11. (5, 2110), -- 报修管理页面
  12. (5, 2111), -- 报修查询
  13. (5, 2117), -- 开始维修
  14. (5, 2118), -- 完成维修
  15. (5, 2121), -- 生成工单号
  16. -- 维修分类查看权限
  17. (5, 2130), -- 维修分类页面
  18. (5, 2131), -- 分类查询
  19. (5, 2136), -- 分类树查询
  20. (5, 2137); -- 分类选项
  21. -- 第二步:为物业维修管理员(role_id: 6)分配权限
  22. -- 物业维修管理员需要:管理所有工单、分配任务、查看统计、管理分类
  23. INSERT IGNORE INTO sys_role_menu (role_id, menu_id) VALUES
  24. -- 报修管理全权限(除删除外)
  25. (6, 2110), -- 报修管理页面
  26. (6, 2111), -- 报修查询
  27. (6, 2112), -- 报修新增
  28. (6, 2113), -- 报修修改
  29. (6, 2115), -- 报修导出
  30. (6, 2116), -- 工单分派
  31. (6, 2117), -- 开始维修
  32. (6, 2118), -- 完成维修
  33. (6, 2119), -- 取消工单
  34. (6, 2120), -- 统计数据
  35. (6, 2121), -- 生成工单号
  36. -- 维修分类管理权限
  37. (6, 2130), -- 维修分类页面
  38. (6, 2131), -- 分类查询
  39. (6, 2132), -- 分类新增
  40. (6, 2133), -- 分类修改
  41. (6, 2135), -- 分类导出
  42. (6, 2136), -- 分类树查询
  43. (6, 2137); -- 分类选项
  44. -- 第三步:为两个角色分配物业管理主菜单权限(如果存在)
  45. -- 确保用户能看到物业管理菜单入口
  46. INSERT IGNORE INTO sys_role_menu (role_id, menu_id)
  47. SELECT 5, menu_id FROM sys_menu WHERE menu_name = '物业管理' AND menu_type = 'M'
  48. UNION ALL
  49. SELECT 6, menu_id FROM sys_menu WHERE menu_name = '物业管理' AND menu_type = 'M';
  50. -- 第四步:验证权限分配结果
  51. SELECT '权限分配验证' as message,
  52. '维修人员权限数' as role_type,
  53. (SELECT COUNT(*) FROM sys_role_menu WHERE role_id = 5) as permission_count
  54. UNION ALL
  55. SELECT '权限分配验证' as message,
  56. '物业维修管理员权限数' as role_type,
  57. (SELECT COUNT(*) FROM sys_role_menu WHERE role_id = 6) as permission_count;
  58. -- 详细权限分配情况
  59. SELECT
  60. r.role_name as '角色名称',
  61. m.menu_name as '菜单/功能名称',
  62. m.perms as '权限标识',
  63. CASE m.menu_type
  64. WHEN 'M' THEN '目录'
  65. WHEN 'C' THEN '菜单'
  66. WHEN 'F' THEN '按钮'
  67. END as '权限类型'
  68. FROM sys_role_menu rm
  69. JOIN sys_role r ON rm.role_id = r.role_id
  70. JOIN sys_menu m ON rm.menu_id = m.menu_id
  71. WHERE rm.role_id IN (5, 6)
  72. AND m.perms LIKE 'pm:%'
  73. ORDER BY r.role_id, m.menu_id;
  74. -- 第五步:权限差异化说明
  75. SELECT '权限设计说明' as info_type, '维修人员:只能处理维修任务,无管理权限' as description
  76. UNION ALL
  77. SELECT '权限设计说明' as info_type, '物业维修管理员:可管理工单、分配任务、查看统计' as description;