89 lines
2.8 KiB
SQL
89 lines
2.8 KiB
SQL
-- ============================================
|
|
-- 检查和清理"所有用户"权限记录
|
|
-- ============================================
|
|
-- 说明:在权限系统中,如果 psy_scale_permission 表中存在
|
|
-- user_id、role_id、dept_id 都为空的记录,则表示"所有用户"都有权限
|
|
-- 这可能导致用户看到未明确授权的量表/问卷
|
|
-- ============================================
|
|
|
|
-- 1. 查看所有"所有用户"权限记录
|
|
SELECT
|
|
p.permission_id,
|
|
p.scale_id,
|
|
CASE
|
|
WHEN p.scale_id < 0 THEN (SELECT questionnaire_name FROM psy_questionnaire WHERE questionnaire_id = -p.scale_id)
|
|
ELSE (SELECT scale_name FROM psy_scale WHERE scale_id = p.scale_id)
|
|
END AS scale_name,
|
|
CASE
|
|
WHEN p.scale_id < 0 THEN '问卷'
|
|
ELSE '量表'
|
|
END AS type,
|
|
p.start_time,
|
|
p.end_time,
|
|
p.status,
|
|
p.create_time,
|
|
p.remark
|
|
FROM psy_scale_permission p
|
|
WHERE p.user_id IS NULL
|
|
AND p.role_id IS NULL
|
|
AND p.dept_id IS NULL;
|
|
|
|
-- 2. 统计"所有用户"权限的数量
|
|
SELECT
|
|
COUNT(*) AS all_users_permission_count,
|
|
SUM(CASE WHEN status = '0' THEN 1 ELSE 0 END) AS active_count,
|
|
SUM(CASE WHEN status = '1' THEN 1 ELSE 0 END) AS inactive_count
|
|
FROM psy_scale_permission
|
|
WHERE user_id IS NULL
|
|
AND role_id IS NULL
|
|
AND dept_id IS NULL;
|
|
|
|
-- 3. 查看哪些量表/问卷被设置为"所有用户"可见
|
|
SELECT
|
|
CASE
|
|
WHEN p.scale_id < 0 THEN '问卷'
|
|
ELSE '量表'
|
|
END AS type,
|
|
CASE
|
|
WHEN p.scale_id < 0 THEN (SELECT questionnaire_name FROM psy_questionnaire WHERE questionnaire_id = -p.scale_id)
|
|
ELSE (SELECT scale_name FROM psy_scale WHERE scale_id = p.scale_id)
|
|
END AS name,
|
|
p.scale_id,
|
|
p.status,
|
|
p.start_time,
|
|
p.end_time
|
|
FROM psy_scale_permission p
|
|
WHERE p.user_id IS NULL
|
|
AND p.role_id IS NULL
|
|
AND p.dept_id IS NULL
|
|
AND p.status = '0' -- 只看有效的
|
|
ORDER BY type, name;
|
|
|
|
-- ============================================
|
|
-- 清理操作(谨慎执行!)
|
|
-- ============================================
|
|
|
|
-- 4. 【可选】禁用所有"所有用户"权限(将状态改为无效)
|
|
-- UPDATE psy_scale_permission
|
|
-- SET status = '1',
|
|
-- update_time = NOW(),
|
|
-- remark = CONCAT(IFNULL(remark, ''), ' [已禁用-原为所有用户权限]')
|
|
-- WHERE user_id IS NULL
|
|
-- AND role_id IS NULL
|
|
-- AND dept_id IS NULL
|
|
-- AND status = '0';
|
|
|
|
-- 5. 【可选】删除所有"所有用户"权限记录
|
|
-- DELETE FROM psy_scale_permission
|
|
-- WHERE user_id IS NULL
|
|
-- AND role_id IS NULL
|
|
-- AND dept_id IS NULL;
|
|
|
|
-- 6. 【可选】删除指定量表/问卷的"所有用户"权限
|
|
-- 将 YOUR_SCALE_ID 替换为实际的量表ID
|
|
-- DELETE FROM psy_scale_permission
|
|
-- WHERE scale_id = YOUR_SCALE_ID
|
|
-- AND user_id IS NULL
|
|
-- AND role_id IS NULL
|
|
-- AND dept_id IS NULL;
|