-- ========================================
-- 修复题库导入问题
-- 问题：考试管理中无法看到新建的题库
-- 原因：题库的 create_user_id 字段为空或不匹配
-- ========================================

-- 第1步：检查数据库表结构
-- ========================================

-- 检查 study_question_bank 表是否有 create_user_id 字段
SHOW COLUMNS FROM study_question_bank LIKE 'create_user_id';

-- 如果上面的查询没有结果，说明缺少字段，需要添加
-- 执行下面的 ALTER TABLE 语句：

-- ALTER TABLE study_question_bank 
-- ADD COLUMN create_user_id BIGINT(20) NULL COMMENT '创建人ID（教师ID）' 
-- AFTER question_count;


-- ========================================
-- 第2步：查找当前登录用户的ID
-- ========================================

-- 方法1：查找admin用户
SELECT user_id, user_name, nick_name 
FROM sys_user 
WHERE user_name = 'admin';

-- 方法2：查找所有教师用户
SELECT user_id, user_name, nick_name 
FROM sys_user 
WHERE del_flag = '0'
ORDER BY create_time;

-- ⚠️ 记住你的用户ID，下面需要使用


-- ========================================
-- 第3步：诊断题库数据
-- ========================================

-- 3.1 查看所有题库
SELECT 
    id,
    bank_name,
    question_count,
    create_user_id,
    create_by,
    create_time
FROM study_question_bank
ORDER BY create_time DESC;

-- 3.2 找出 create_user_id 为空的题库
SELECT 
    id,
    bank_name,
    question_count,
    create_by,
    create_time
FROM study_question_bank
WHERE create_user_id IS NULL
ORDER BY create_time DESC;


-- ========================================
-- 第4步：修复题库数据
-- ========================================

-- 方法A：根据 create_by 自动关联用户ID
UPDATE study_question_bank b
INNER JOIN sys_user u ON b.create_by = u.user_name
SET b.create_user_id = u.user_id
WHERE b.create_user_id IS NULL;

-- 验证修复结果
SELECT 
    b.id,
    b.bank_name,
    b.create_user_id,
    b.create_by,
    u.user_name,
    u.nick_name
FROM study_question_bank b
LEFT JOIN sys_user u ON b.create_user_id = u.user_id
ORDER BY b.create_time DESC;


-- 方法B：如果方法A没有成功，手动设置到你的用户ID
-- ⚠️ 请将下面的 1 替换为你的实际用户ID（从第2步获取）

-- 预览将要修改的题库
SELECT 
    id,
    bank_name,
    create_by,
    '将设置 create_user_id = 1' AS 操作
FROM study_question_bank
WHERE create_user_id IS NULL;

-- 确认无误后，执行更新
-- UPDATE study_question_bank 
-- SET create_user_id = 1  -- ⚠️ 替换为你的用户ID
-- WHERE create_user_id IS NULL;


-- ========================================
-- 第5步：同步题目数量
-- ========================================

-- 重新统计每个题库的题目数量
UPDATE study_question_bank b
SET question_count = (
    SELECT COUNT(*) 
    FROM study_question_bank_item i 
    WHERE i.bank_id = b.id
);

-- 验证
SELECT 
    b.id,
    b.bank_name,
    b.question_count AS 记录的数量,
    COUNT(i.id) AS 实际数量,
    CASE 
        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;


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

-- 6.1 模拟后端查询：获取指定用户的题库
-- ⚠️ 将 1 替换为你的用户ID
SELECT 
    id,
    bank_name,
    subject_name,
    question_count,
    create_time
FROM study_question_bank
WHERE create_user_id = 1  -- ⚠️ 替换为你的用户ID
ORDER BY create_time DESC;

-- 如果上面的查询有结果，说明修复成功！


-- ========================================
-- 第7步：测试完整流程
-- ========================================

-- 7.1 创建一个测试题库（确保字段完整）
-- INSERT INTO study_question_bank (
--     bank_name, 
--     subject_id, 
--     subject_name, 
--     description, 
--     question_count,
--     create_user_id,  -- 重要！
--     create_by, 
--     create_time
-- ) VALUES (
--     '测试题库', 
--     1, 
--     '数学', 
--     '测试用题库', 
--     0,
--     1,  -- ⚠️ 你的用户ID
--     'admin',  -- ⚠️ 你的用户名
--     NOW()
-- );

-- 7.2 查询刚创建的题库
SELECT * FROM study_question_bank 
WHERE bank_name = '测试题库';


-- ========================================
-- 完成！
-- ========================================
-- 
-- 现在执行以下操作：
-- 1. ✓ 刷新后台管理页面
-- 2. ✓ 进入【考试管理】→【创建考试】
-- 3. ✓ 选择出题方式为【从题库抽取】
-- 4. ✓ 下拉框应该能看到你的题库了
-- 
-- 如果仍然看不到：
-- 1. 检查浏览器控制台是否有错误
-- 2. 检查后端日志 (/study/questionBank/my-banks 接口)
-- 3. 确认当前登录用户ID与题库的 create_user_id 一致
-- 4. 清除浏览器缓存并重新登录
