update-button-permissions.sql 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. -- ==========================================
  2. -- 报修管理按钮权限更新脚本
  3. -- 功能:根据角色限制更新按钮权限配置
  4. -- 时间:2025-06-30 17:35:00
  5. -- 说明:实现基于角色的按钮权限控制
  6. -- ==========================================
  7. -- 1. 新增按钮权限到sys_menu表
  8. INSERT INTO sys_menu (
  9. menu_id, menu_name, parent_id, order_num, path, component,
  10. query_param, is_frame, is_cache, menu_type, visible, status,
  11. perms, icon, create_by, create_time, update_by, update_time, remark
  12. ) VALUES
  13. -- 更新进度权限(仅维修人员)
  14. (2141, '更新进度', 2110, 12, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:updateProgress', '#', 1, now(), 1, now(), '更新维修进度权限'),
  15. -- 完成工单权限(仅维修人员)
  16. (2142, '完成工单', 2110, 13, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:complete', '#', 1, now(), 1, now(), '完成工单权限'),
  17. -- 服务评价权限(仅报修人)
  18. (2143, '服务评价', 2110, 14, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:evaluate', '#', 1, now(), 1, now(), '服务评价权限'),
  19. -- 查看进度权限(所有用户)
  20. (2144, '查看进度', 2110, 15, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:progress', '#', 1, now(), 1, now(), '查看工单进度权限')
  21. ON DUPLICATE KEY UPDATE
  22. menu_name = VALUES(menu_name),
  23. perms = VALUES(perms),
  24. remark = VALUES(remark),
  25. update_time = now();
  26. -- 2. 为超级管理员分配所有权限
  27. INSERT IGNORE INTO sys_role_menu (role_id, menu_id)
  28. SELECT 1, menu_id FROM sys_menu WHERE menu_id BETWEEN 2141 AND 2144;
  29. -- 3. 为物业维修管理员分配权限(除服务评价外)
  30. INSERT IGNORE INTO sys_role_menu (role_id, menu_id)
  31. SELECT 6, menu_id FROM sys_menu WHERE menu_id IN (2141, 2142, 2144);
  32. -- 4. 为维修人员分配权限(更新进度、完成工单、查看进度)
  33. INSERT IGNORE INTO sys_role_menu (role_id, menu_id)
  34. SELECT 5, menu_id FROM sys_menu WHERE menu_id IN (2141, 2142, 2144);
  35. -- 5. 为所有用户分配基础查看权限
  36. -- 注意:服务评价权限(2143)不在这里分配,需要前端业务逻辑控制
  37. -- 6. 验证权限配置
  38. SELECT
  39. m.menu_id,
  40. m.menu_name,
  41. m.perms,
  42. GROUP_CONCAT(r.role_name ORDER BY r.role_id) as assigned_roles
  43. FROM sys_menu m
  44. LEFT JOIN sys_role_menu rm ON m.menu_id = rm.menu_id
  45. LEFT JOIN sys_role r ON rm.role_id = r.role_id
  46. WHERE m.menu_id BETWEEN 2141 AND 2144
  47. GROUP BY m.menu_id, m.menu_name, m.perms
  48. ORDER BY m.menu_id;
  49. -- 输出配置完成信息
  50. SELECT '按钮权限配置完成' as message,
  51. 'pm:repairOrder:updateProgress - 仅维修人员' as update_progress,
  52. 'pm:repairOrder:complete - 仅维修人员' as complete_order,
  53. 'pm:repairOrder:evaluate - 业务逻辑控制' as evaluate_service,
  54. 'pm:repairOrder:progress - 所有用户' as view_progress;