-- ============================================ -- 检查和清理"所有用户"权限记录 -- ============================================ -- 说明:在权限系统中,如果 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;