-- 检查题库导入问题诊断SQL
-- 问题：在考试管理中无法看到新建的题库

-- ========================================
-- 第1步：检查题库数据
-- ========================================

-- 1.1 查看所有题库及其创建者信息
SELECT 
    id AS 题库ID,
    bank_name AS 题库名称,
    subject_name AS 科目,
    question_count AS 题目数量,
    create_user_id AS 创建用户ID,
    create_by AS 创建者用户名,
    create_time AS 创建时间
FROM study_question_bank
ORDER BY create_time DESC;

-- 1.2 检查哪些题库的 create_user_id 为空
SELECT 
    id AS 题库ID,
    bank_name AS 题库名称,
    CASE 
        WHEN create_user_id IS NULL THEN '❌ create_user_id为空'
        ELSE '✓ 有创建用户ID'
    END AS 状态,
    create_by AS 创建者用户名,
    create_time AS 创建时间
FROM study_question_bank
ORDER BY create_time DESC;


-- ========================================
-- 第2步：检查用户信息
-- ========================================

-- 2.1 查看当前登录用户的ID（需要在实际使用时替换）
-- 从 sys_user 表查找你的用户ID
SELECT 
    user_id AS 用户ID,
    user_name AS 用户名,
    nick_name AS 昵称,
    create_time AS 创建时间
FROM sys_user
WHERE user_name = 'admin'  -- ⚠️ 替换为你的登录用户名
   OR nick_name LIKE '%教师%';


-- ========================================
-- 第3步：检查题库与用户的关联
-- ========================================

-- 3.1 检查题库是否关联到正确的用户
SELECT 
    b.id AS 题库ID,
    b.bank_name AS 题库名称,
    b.create_user_id AS 创建用户ID,
    u.user_name AS 创建用户名,
    u.nick_name AS 用户昵称,
    CASE 
        WHEN b.create_user_id IS NULL THEN '❌ 未关联用户'
        WHEN u.user_id IS NULL THEN '❌ 用户不存在'
        ELSE '✓ 正常'
    END AS 关联状态
FROM study_question_bank b
LEFT JOIN sys_user u ON b.create_user_id = u.user_id
ORDER BY b.create_time DESC;


-- ========================================
-- 第4步：检查题库中的题目
-- ========================================

-- 4.1 查看题库中是否有题目
SELECT 
    b.id AS 题库ID,
    b.bank_name AS 题库名称,
    b.question_count AS 记录的题目数,
    COUNT(i.id) AS 实际题目数,
    CASE 
        WHEN COUNT(i.id) = 0 THEN '❌ 题库为空'
        WHEN b.question_count != COUNT(i.id) THEN '⚠️ 数量不一致'
        ELSE '✓ 正常'
    END AS 状态
FROM study_question_bank b
LEFT JOIN study_question_bank_item i ON b.id = i.bank_id
GROUP BY b.id, b.bank_name, b.question_count
ORDER BY b.create_time DESC;

-- 4.2 查看题目详情
SELECT 
    i.id AS 题目ID,
    i.bank_id AS 题库ID,
    b.bank_name AS 题库名称,
    i.question_type AS 题型,
    LEFT(i.question_content, 50) AS 题目内容,
    i.create_time AS 创建时间
FROM study_question_bank_item i
LEFT JOIN study_question_bank b ON i.bank_id = b.id
ORDER BY i.create_time DESC
LIMIT 20;


-- ========================================
-- 第5步：修复方案（根据诊断结果选择执行）
-- ========================================

-- 方案A：如果 create_user_id 为空，手动关联到当前用户
-- ⚠️ 执行前请先确认你的用户ID！
-- 例如：假设你的用户ID是 1（admin通常是1）

-- 查看需要修复的题库
SELECT 
    id AS 题库ID,
    bank_name AS 题库名称,
    create_by AS 创建者
FROM study_question_bank
WHERE create_user_id IS NULL;

-- 修复：将 create_user_id 设置为当前用户ID
-- UPDATE study_question_bank 
-- SET create_user_id = 1  -- ⚠️ 替换为你的用户ID
-- WHERE create_user_id IS NULL;


-- 方案B：如果题库的 question_count 不准确，重新统计
UPDATE study_question_bank b
SET question_count = (
    SELECT COUNT(*) 
    FROM study_question_bank_item i 
    WHERE i.bank_id = b.id
);


-- ========================================
-- 第6步：验证修复结果
-- ========================================

-- 6.1 验证：模拟后端查询（当前用户的题库）
-- ⚠️ 将 1 替换为你的实际用户ID
SELECT 
    id AS 题库ID,
    bank_name AS 题库名称,
    subject_name AS 科目,
    question_count AS 题目数量,
    create_time AS 创建时间
FROM study_question_bank
WHERE create_user_id = 1  -- ⚠️ 替换为你的用户ID
ORDER BY create_time DESC;

-- 6.2 如果上面的查询有结果，说明修复成功
-- 刷新考试管理页面，应该能看到题库了


-- ========================================
-- 使用说明
-- ========================================
-- 
-- 1. 先执行第1-4步的诊断SQL，查看问题原因
-- 2. 根据诊断结果，选择执行第5步的修复SQL
-- 3. 执行第6步验证修复结果
-- 4. 刷新前端页面（考试管理 → 创建考试 → 选择题库）
--
-- 常见问题：
-- Q1: 题库列表为空
-- A1: create_user_id 为空，执行方案A修复
--
-- Q2: 题库有题目但显示数量为0
-- A2: question_count 不准确，执行方案B修复
--
-- Q3: 题库和题目都存在但考试管理中看不到
-- A3: create_user_id 与当前登录用户ID不匹配，执行方案A修复
--
