fix-statistics-permissions.sql 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. -- ==========================================
  2. -- 统计权限修复脚本
  3. -- 功能:确保只有维护管理员和超级管理员才能查看统计卡片
  4. -- 时间:2025-06-30 18:58:00
  5. -- 说明:修复统计权限分配,移除维修人员的统计权限
  6. -- ==========================================
  7. -- 第一步:确保统计权限项存在
  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. )
  13. SELECT
  14. 2120, '统计数据', 2110, 10, '', '',
  15. '', 1, 0, 'F', '0', '0',
  16. 'pm:repairOrder:statistics', '#', 1, now(), 1, now(), '获取报修统计数据'
  17. WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2120);
  18. -- 第二步:移除维修人员的统计权限(如果存在)
  19. DELETE FROM sys_role_menu
  20. WHERE role_id = 5 AND menu_id = 2120;
  21. -- 第三步:确保超级管理员有统计权限
  22. INSERT IGNORE INTO sys_role_menu (role_id, menu_id) VALUES
  23. (1, 2120); -- admin角色
  24. -- 第四步:确保物业维修管理员有统计权限
  25. INSERT IGNORE INTO sys_role_menu (role_id, menu_id) VALUES
  26. (6, 2120); -- property_maintenance_admin角色
  27. -- 第五步:验证权限分配结果
  28. SELECT '=== 统计权限分配验证 ===' as section;
  29. -- 检查统计权限项是否存在
  30. SELECT
  31. menu_id, menu_name, perms, menu_type, status
  32. FROM sys_menu
  33. WHERE menu_id = 2120;
  34. -- 检查哪些角色有统计权限
  35. SELECT
  36. '当前拥有统计权限的角色' as info_type,
  37. rm.role_id,
  38. r.role_name,
  39. r.role_key,
  40. r.status as role_status
  41. FROM sys_role_menu rm
  42. JOIN sys_role r ON rm.role_id = r.role_id
  43. WHERE rm.menu_id = 2120
  44. ORDER BY rm.role_id;
  45. -- 检查维修人员是否还有统计权限(应该为空)
  46. SELECT
  47. '维修人员统计权限检查' as info_type,
  48. CASE
  49. WHEN COUNT(*) = 0 THEN '✓ 正确:维修人员没有统计权限'
  50. ELSE '✗ 错误:维修人员仍有统计权限'
  51. END as result
  52. FROM sys_role_menu
  53. WHERE role_id = 5 AND menu_id = 2120;
  54. -- 检查物业维修管理员是否有统计权限
  55. SELECT
  56. '物业维修管理员统计权限检查' as info_type,
  57. CASE
  58. WHEN COUNT(*) > 0 THEN '✓ 正确:物业维修管理员有统计权限'
  59. ELSE '✗ 错误:物业维修管理员缺少统计权限'
  60. END as result
  61. FROM sys_role_menu
  62. WHERE role_id = 6 AND menu_id = 2120;
  63. -- 第六步:权限分配总结
  64. SELECT '=== 权限分配总结 ===' as section;
  65. SELECT
  66. '统计权限分配已修复' as status,
  67. '只有超级管理员和物业维修管理员可以查看统计卡片' as permission_rule,
  68. '维修人员和其他角色无法查看统计功能' as restriction;
  69. -- 第七步:测试指导
  70. SELECT '=== 测试指导 ===' as section;
  71. SELECT
  72. '使用以下账号测试权限是否正确' as test_guide,
  73. 'admin/admin123 - 应该能看到统计卡片' as test_case_1,
  74. 'property_admin_test/admin123 - 应该能看到统计卡片' as test_case_2,
  75. 'maintenance_test/admin123 - 不应该看到统计卡片' as test_case_3,
  76. '前端会根据用户角色自动隐藏/显示统计区域' as frontend_behavior;
  77. -- 第八步:完成提示
  78. SELECT
  79. '统计权限修复完成' as completion_status,
  80. '需要重启前端和后端服务以确保权限生效' as next_step,
  81. '运行 test/statistics-permission-test.js 验证权限配置' as verification;