Files
hzdyjs/test/complete-permission-config.sql
T
2025-06-30 20:33:58 +08:00

161 lines
7.8 KiB
SQL

-- ==========================================
-- 物业报修管理完整权限配置脚本
-- 功能:为报修管理模块添加完整的权限配置到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;