-- ========================================== -- 物业报修管理完整权限配置脚本 -- 功能:为报修管理模块添加完整的权限配置到sys_menu表 -- 时间:2025-06-30 -- 说明:解决报修管理接口权限访问问题 -- ========================================== -- 清理可能存在的旧数据(谨慎使用) -- DELETE FROM sys_role_menu WHERE menu_id BETWEEN 2100 AND 2199; -- DELETE FROM sys_menu WHERE menu_id BETWEEN 2100 AND 2199; -- ========================================== -- 第一部分:主菜单 - 物业管理 -- ========================================== INSERT INTO sys_menu ( menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark ) VALUES ( 2100, '物业管理', 0, 6, 'pm', NULL, '', 1, 0, 'M', '0', '0', '', 'tool', 1, sysdate(), 1, sysdate(), '物业管理模块' ); -- ========================================== -- 第二部分:报修管理菜单和权限 -- ========================================== -- 报修管理主菜单 INSERT INTO sys_menu ( menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark ) VALUES ( 2110, '报修管理', 2100, 1, 'repairOrder', 'pm/repairOrder/index', '', 1, 0, 'C', '0', '0', 'pm:repairOrder:list', 'form', 1, sysdate(), 1, sysdate(), '报修工单管理' ); -- 报修管理功能权限按钮 INSERT INTO sys_menu ( menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark ) VALUES -- 基础CRUD权限 (2111, '报修查询', 2110, 1, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:query', '#', 1, sysdate(), 1, sysdate(), '查询报修工单详情'), (2112, '报修新增', 2110, 2, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:add', '#', 1, sysdate(), 1, sysdate(), '新增报修工单'), (2113, '报修修改', 2110, 3, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:edit', '#', 1, sysdate(), 1, sysdate(), '修改报修工单'), (2114, '报修删除', 2110, 4, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:remove', '#', 1, sysdate(), 1, sysdate(), '删除报修工单'), (2115, '报修导出', 2110, 5, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:export', '#', 1, sysdate(), 1, sysdate(), '导出报修工单'), -- 业务流程权限 (2116, '工单分派', 2110, 6, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:assign', '#', 1, sysdate(), 1, sysdate(), '分派维修工单'), (2117, '开始维修', 2110, 7, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:start', '#', 1, sysdate(), 1, sysdate(), '开始维修工单'), (2118, '完成维修', 2110, 8, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:finish', '#', 1, sysdate(), 1, sysdate(), '完成维修工单'), (2119, '取消工单', 2110, 9, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:cancel', '#', 1, sysdate(), 1, sysdate(), '取消维修工单'), -- 统计和工具权限 (2120, '统计数据', 2110, 10, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:statistics', '#', 1, sysdate(), 1, sysdate(), '获取报修统计数据'), (2121, '生成工单号', 2110, 11, '', '', '', 1, 0, 'F', '0', '0', 'pm:repairOrder:generateOrderNo', '#', 1, sysdate(), 1, sysdate(), '生成工单编号'); -- ========================================== -- 第三部分:维修分类菜单和权限 -- ========================================== -- 维修分类主菜单 INSERT INTO sys_menu ( menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark ) VALUES ( 2130, '维修分类', 2100, 2, 'repairCategory', 'pm/repairCategory/index', '', 1, 0, 'C', '0', '0', 'pm:category:list', 'tree', 1, sysdate(), 1, sysdate(), '维修分类管理' ); -- 维修分类功能权限按钮 INSERT INTO sys_menu ( menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark ) VALUES -- 基础CRUD权限 (2131, '分类查询', 2130, 1, '', '', '', 1, 0, 'F', '0', '0', 'pm:category:query', '#', 1, sysdate(), 1, sysdate(), '查询维修分类详情'), (2132, '分类新增', 2130, 2, '', '', '', 1, 0, 'F', '0', '0', 'pm:category:add', '#', 1, sysdate(), 1, sysdate(), '新增维修分类'), (2133, '分类修改', 2130, 3, '', '', '', 1, 0, 'F', '0', '0', 'pm:category:edit', '#', 1, sysdate(), 1, sysdate(), '修改维修分类'), (2134, '分类删除', 2130, 4, '', '', '', 1, 0, 'F', '0', '0', 'pm:category:remove', '#', 1, sysdate(), 1, sysdate(), '删除维修分类'), (2135, '分类导出', 2130, 5, '', '', '', 1, 0, 'F', '0', '0', 'pm:category:export', '#', 1, sysdate(), 1, sysdate(), '导出维修分类'), -- 特殊功能权限 (2136, '分类树查询', 2130, 6, '', '', '', 1, 0, 'F', '0', '0', 'pm:category:tree', '#', 1, sysdate(), 1, sysdate(), '获取维修分类树形结构'), (2137, '分类选项', 2130, 7, '', '', '', 1, 0, 'F', '0', '0', 'pm:category:options', '#', 1, sysdate(), 1, sysdate(), '获取维修分类下拉选项'); -- ========================================== -- 第四部分:为admin角色分配权限 -- ========================================== -- 为admin角色(role_id=1)分配所有物业管理权限 INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, menu_id FROM sys_menu WHERE menu_id BETWEEN 2100 AND 2199 ON DUPLICATE KEY UPDATE role_id = role_id; -- 避免重复插入 -- ========================================== -- 第五部分:验证和清理 -- ========================================== -- 验证权限配置是否正确 SELECT '=== 菜单权限配置验证 ===' AS section, NULL AS menu_id, NULL AS menu_name, NULL AS menu_type, NULL AS perms, NULL AS has_role_permission UNION ALL SELECT CASE WHEN m.menu_type = 'M' THEN '📁 主菜单' WHEN m.menu_type = 'C' THEN '📄 页面菜单' WHEN m.menu_type = 'F' THEN '🔘 功能按钮' ELSE '❓ 未知类型' END AS section, m.menu_id, m.menu_name, m.menu_type, m.perms, CASE WHEN rm.role_id IS NOT NULL THEN '✅ 已分配' ELSE '❌ 未分配' END AS has_role_permission FROM sys_menu m LEFT JOIN sys_role_menu rm ON m.menu_id = rm.menu_id AND rm.role_id = 1 WHERE m.menu_id BETWEEN 2100 AND 2199 ORDER BY m.menu_id; -- 统计权限配置结果 SELECT '权限配置统计' AS summary, COUNT(*) AS total_menus, SUM(CASE WHEN menu_type = 'M' THEN 1 ELSE 0 END) AS main_menus, SUM(CASE WHEN menu_type = 'C' THEN 1 ELSE 0 END) AS page_menus, SUM(CASE WHEN menu_type = 'F' THEN 1 ELSE 0 END) AS function_buttons, SUM(CASE WHEN perms IS NOT NULL AND perms != '' THEN 1 ELSE 0 END) AS with_permissions FROM sys_menu WHERE menu_id BETWEEN 2100 AND 2199; -- 检查admin角色权限分配 SELECT '权限分配统计' AS summary, COUNT(rm.menu_id) AS assigned_permissions, (SELECT COUNT(*) FROM sys_menu WHERE menu_id BETWEEN 2100 AND 2199) AS total_permissions, CONCAT( ROUND(COUNT(rm.menu_id) * 100.0 / (SELECT COUNT(*) FROM sys_menu WHERE menu_id BETWEEN 2100 AND 2199), 2), '%' ) AS assignment_rate FROM sys_role_menu rm WHERE rm.role_id = 1 AND rm.menu_id BETWEEN 2100 AND 2199; -- 重要提示信息 SELECT '🎉 物业报修管理权限配置完成!' AS message, '请执行以下步骤完成配置:' AS next_steps, '1. 重新登录系统刷新权限缓存' AS step1, '2. 修改Controller权限注解' AS step2, '3. 重启后端服务' AS step3, '4. 测试API接口访问' AS step4;