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