Files
hzdyjs/backend/script/sql/update/20250723/fix-xljk-admin-permissions.sql
T
2025-07-25 11:27:52 +08:00

62 lines
2.5 KiB
SQL

-- ==========================================
-- 修复心理健康管理员角色权限
-- 版本:V1.0.0
-- 功能:为心理健康管理员角色添加心理健康测评的查询权限
-- 作者:Cursor AI
-- 时间:2025-07-23
-- ==========================================
-- 设置字符集
SET NAMES utf8mb4;
-- 1. 检查心理健康管理员角色是否存在
SELECT @role_id := role_id FROM sys_role WHERE role_key = 'xljk_admin' LIMIT 1;
-- 2. 如果角色不存在,创建心理健康管理员角色
INSERT INTO sys_role (role_id, role_name, role_key, role_sort, data_scope, menu_check_strictly, dept_check_strictly, status, del_flag, create_by, create_time, remark)
SELECT 117, '心理健康管理员', 'xljk_admin', 7, '1', '1', '1', '0', '0', 1, NOW(), '心理健康管理员'
WHERE NOT EXISTS (SELECT 1 FROM sys_role WHERE role_key = 'xljk_admin');
-- 3. 重新获取角色ID
SELECT @role_id := role_id FROM sys_role WHERE role_key = 'xljk_admin' LIMIT 1;
-- 4. 为心理健康管理员角色分配心理健康测评菜单权限
-- 检查是否已经有菜单权限
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT @role_id, 2300
FROM dual
WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = @role_id AND menu_id = 2300);
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT @role_id, 2310
FROM dual
WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = @role_id AND menu_id = 2310);
-- 5. 为心理健康管理员角色分配心理健康测评查询和导出权限
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT @role_id, 2311
FROM dual
WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = @role_id AND menu_id = 2311);
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT @role_id, 2315
FROM dual
WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = @role_id AND menu_id = 2315);
-- 6. 为心理健康管理员角色分配心理健康测评统计权限
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT @role_id, menu_id
FROM sys_menu
WHERE perms = 'xljk:evaluation:statistics'
AND NOT EXISTS (
SELECT 1 FROM sys_role_menu
WHERE role_id = @role_id
AND menu_id = (SELECT menu_id FROM sys_menu WHERE perms = 'xljk:evaluation:statistics' LIMIT 1)
);
-- 7. 验证结果
SELECT '心理健康管理员角色权限修复完成!' AS result;
SELECT CONCAT('心理健康管理员角色ID: ', @role_id) AS role_info;
SELECT CONCAT('已分配菜单权限: ', COUNT(*)) AS menu_count
FROM sys_role_menu
WHERE role_id = @role_id;