complete-permission-config.sql 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. -- ==========================================
  2. -- 物业报修管理完整权限配置脚本
  3. -- 功能:为报修管理模块添加完整的权限配置到sys_menu表
  4. -- 时间:2025-06-30
  5. -- 说明:解决报修管理接口权限访问问题
  6. -- ==========================================
  7. -- 清理可能存在的旧数据(谨慎使用)
  8. -- DELETE FROM sys_role_menu WHERE menu_id BETWEEN 2100 AND 2199;
  9. -- DELETE FROM sys_menu WHERE menu_id BETWEEN 2100 AND 2199;
  10. -- ==========================================
  11. -- 第一部分:主菜单 - 物业管理
  12. -- ==========================================
  13. INSERT INTO sys_menu (
  14. menu_id, menu_name, parent_id, order_num, path, component,
  15. query_param, is_frame, is_cache, menu_type, visible, status,
  16. perms, icon, create_by, create_time, update_by, update_time, remark
  17. ) VALUES (
  18. 2100, '物业管理', 0, 6, 'pm', NULL,
  19. '', 1, 0, 'M', '0', '0',
  20. '', 'tool', 1, sysdate(), 1, sysdate(), '物业管理模块'
  21. );
  22. -- ==========================================
  23. -- 第二部分:报修管理菜单和权限
  24. -- ==========================================
  25. -- 报修管理主菜单
  26. INSERT INTO sys_menu (
  27. menu_id, menu_name, parent_id, order_num, path, component,
  28. query_param, is_frame, is_cache, menu_type, visible, status,
  29. perms, icon, create_by, create_time, update_by, update_time, remark
  30. ) VALUES (
  31. 2110, '报修管理', 2100, 1, 'repairOrder', 'pm/repairOrder/index',
  32. '', 1, 0, 'C', '0', '0',
  33. 'pm:repairOrder:list', 'form', 1, sysdate(), 1, sysdate(), '报修工单管理'
  34. );
  35. -- 报修管理功能权限按钮
  36. INSERT INTO sys_menu (
  37. menu_id, menu_name, parent_id, order_num, path, component,
  38. query_param, is_frame, is_cache, menu_type, visible, status,
  39. perms, icon, create_by, create_time, update_by, update_time, remark
  40. ) VALUES
  41. -- 基础CRUD权限
  42. (2111, '报修查询', 2110, 1, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:query', '#', 1, sysdate(), 1, sysdate(), '查询报修工单详情'),
  43. (2112, '报修新增', 2110, 2, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:add', '#', 1, sysdate(), 1, sysdate(), '新增报修工单'),
  44. (2113, '报修修改', 2110, 3, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:edit', '#', 1, sysdate(), 1, sysdate(), '修改报修工单'),
  45. (2114, '报修删除', 2110, 4, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:remove', '#', 1, sysdate(), 1, sysdate(), '删除报修工单'),
  46. (2115, '报修导出', 2110, 5, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:export', '#', 1, sysdate(), 1, sysdate(), '导出报修工单'),
  47. -- 业务流程权限
  48. (2116, '工单分派', 2110, 6, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:assign', '#', 1, sysdate(), 1, sysdate(), '分派维修工单'),
  49. (2117, '开始维修', 2110, 7, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:start', '#', 1, sysdate(), 1, sysdate(), '开始维修工单'),
  50. (2118, '完成维修', 2110, 8, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:finish', '#', 1, sysdate(), 1, sysdate(), '完成维修工单'),
  51. (2119, '取消工单', 2110, 9, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:cancel', '#', 1, sysdate(), 1, sysdate(), '取消维修工单'),
  52. -- 统计和工具权限
  53. (2120, '统计数据', 2110, 10, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:statistics', '#', 1, sysdate(), 1, sysdate(), '获取报修统计数据'),
  54. (2121, '生成工单号', 2110, 11, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:generateOrderNo', '#', 1, sysdate(), 1, sysdate(), '生成工单编号');
  55. -- ==========================================
  56. -- 第三部分:维修分类菜单和权限
  57. -- ==========================================
  58. -- 维修分类主菜单
  59. INSERT INTO sys_menu (
  60. menu_id, menu_name, parent_id, order_num, path, component,
  61. query_param, is_frame, is_cache, menu_type, visible, status,
  62. perms, icon, create_by, create_time, update_by, update_time, remark
  63. ) VALUES (
  64. 2130, '维修分类', 2100, 2, 'repairCategory', 'pm/repairCategory/index',
  65. '', 1, 0, 'C', '0', '0',
  66. 'pm:category:list', 'tree', 1, sysdate(), 1, sysdate(), '维修分类管理'
  67. );
  68. -- 维修分类功能权限按钮
  69. INSERT INTO sys_menu (
  70. menu_id, menu_name, parent_id, order_num, path, component,
  71. query_param, is_frame, is_cache, menu_type, visible, status,
  72. perms, icon, create_by, create_time, update_by, update_time, remark
  73. ) VALUES
  74. -- 基础CRUD权限
  75. (2131, '分类查询', 2130, 1, '', '', '', 1, 0, 'F', '0', '0', 'pm:category:query', '#', 1, sysdate(), 1, sysdate(), '查询维修分类详情'),
  76. (2132, '分类新增', 2130, 2, '', '', '', 1, 0, 'F', '0', '0', 'pm:category:add', '#', 1, sysdate(), 1, sysdate(), '新增维修分类'),
  77. (2133, '分类修改', 2130, 3, '', '', '', 1, 0, 'F', '0', '0', 'pm:category:edit', '#', 1, sysdate(), 1, sysdate(), '修改维修分类'),
  78. (2134, '分类删除', 2130, 4, '', '', '', 1, 0, 'F', '0', '0', 'pm:category:remove', '#', 1, sysdate(), 1, sysdate(), '删除维修分类'),
  79. (2135, '分类导出', 2130, 5, '', '', '', 1, 0, 'F', '0', '0', 'pm:category:export', '#', 1, sysdate(), 1, sysdate(), '导出维修分类'),
  80. -- 特殊功能权限
  81. (2136, '分类树查询', 2130, 6, '', '', '', 1, 0, 'F', '0', '0', 'pm:category:tree', '#', 1, sysdate(), 1, sysdate(), '获取维修分类树形结构'),
  82. (2137, '分类选项', 2130, 7, '', '', '', 1, 0, 'F', '0', '0', 'pm:category:options', '#', 1, sysdate(), 1, sysdate(), '获取维修分类下拉选项');
  83. -- ==========================================
  84. -- 第四部分:为admin角色分配权限
  85. -- ==========================================
  86. -- 为admin角色(role_id=1)分配所有物业管理权限
  87. INSERT INTO sys_role_menu (role_id, menu_id)
  88. SELECT 1, menu_id FROM sys_menu WHERE menu_id BETWEEN 2100 AND 2199
  89. ON DUPLICATE KEY UPDATE role_id = role_id; -- 避免重复插入
  90. -- ==========================================
  91. -- 第五部分:验证和清理
  92. -- ==========================================
  93. -- 验证权限配置是否正确
  94. SELECT
  95. '=== 菜单权限配置验证 ===' AS section,
  96. NULL AS menu_id, NULL AS menu_name, NULL AS menu_type, NULL AS perms, NULL AS has_role_permission
  97. UNION ALL
  98. SELECT
  99. CASE
  100. WHEN m.menu_type = 'M' THEN '📁 主菜单'
  101. WHEN m.menu_type = 'C' THEN '📄 页面菜单'
  102. WHEN m.menu_type = 'F' THEN '🔘 功能按钮'
  103. ELSE '❓ 未知类型'
  104. END AS section,
  105. m.menu_id,
  106. m.menu_name,
  107. m.menu_type,
  108. m.perms,
  109. CASE WHEN rm.role_id IS NOT NULL THEN '✅ 已分配' ELSE '❌ 未分配' END AS has_role_permission
  110. FROM sys_menu m
  111. LEFT JOIN sys_role_menu rm ON m.menu_id = rm.menu_id AND rm.role_id = 1
  112. WHERE m.menu_id BETWEEN 2100 AND 2199
  113. ORDER BY m.menu_id;
  114. -- 统计权限配置结果
  115. SELECT
  116. '权限配置统计' AS summary,
  117. COUNT(*) AS total_menus,
  118. SUM(CASE WHEN menu_type = 'M' THEN 1 ELSE 0 END) AS main_menus,
  119. SUM(CASE WHEN menu_type = 'C' THEN 1 ELSE 0 END) AS page_menus,
  120. SUM(CASE WHEN menu_type = 'F' THEN 1 ELSE 0 END) AS function_buttons,
  121. SUM(CASE WHEN perms IS NOT NULL AND perms != '' THEN 1 ELSE 0 END) AS with_permissions
  122. FROM sys_menu
  123. WHERE menu_id BETWEEN 2100 AND 2199;
  124. -- 检查admin角色权限分配
  125. SELECT
  126. '权限分配统计' AS summary,
  127. COUNT(rm.menu_id) AS assigned_permissions,
  128. (SELECT COUNT(*) FROM sys_menu WHERE menu_id BETWEEN 2100 AND 2199) AS total_permissions,
  129. CONCAT(
  130. ROUND(COUNT(rm.menu_id) * 100.0 / (SELECT COUNT(*) FROM sys_menu WHERE menu_id BETWEEN 2100 AND 2199), 2),
  131. '%'
  132. ) AS assignment_rate
  133. FROM sys_role_menu rm
  134. WHERE rm.role_id = 1 AND rm.menu_id BETWEEN 2100 AND 2199;
  135. -- 重要提示信息
  136. SELECT
  137. '🎉 物业报修管理权限配置完成!' AS message,
  138. '请执行以下步骤完成配置:' AS next_steps,
  139. '1. 重新登录系统刷新权限缓存' AS step1,
  140. '2. 修改Controller权限注解' AS step2,
  141. '3. 重启后端服务' AS step3,
  142. '4. 测试API接口访问' AS step4;