-- ============================================
-- 检查和恢复学员数据的SQL脚本
-- ============================================

-- 步骤1：查看当前所有学员的数据（检查哪些数据丢失了）
SELECT 
  user_id AS '信息编号',
  user_name AS '账号',
  nick_name AS '罪犯姓名',
  sex AS '性别',
  prison_name AS '监狱',
  prison_area AS '监区',
  ethnicity AS '民族',
  education_level AS '文化程度',
  crime_name AS '罪名',
  sentence_term AS '刑期',
  sentence_start_date AS '刑期起日',
  sentence_end_date AS '刑期止日',
  entry_date AS '入监时间',
  student_status AS '学员状态',
  remark AS '备注'
FROM sys_user 
WHERE remark LIKE '%注册类型:student%' 
  AND del_flag = '0'
ORDER BY user_id;

-- 步骤2：查看最近的操作日志（可能包含更新前的数据）
-- 查询最近修改用户的操作日志
SELECT 
    oper_id AS '日志ID',
    oper_time AS '操作时间',
    oper_name AS '操作人',
    oper_param AS '请求参数',
    json_result AS '返回结果（更新后的数据）'
FROM sys_oper_log 
WHERE title = '用户管理' 
  AND business_type = 2  -- 2表示修改操作
  AND oper_time >= DATE_SUB(NOW(), INTERVAL 2 DAY)  -- 最近2天的操作
ORDER BY oper_time DESC
LIMIT 100;

-- 步骤3：如果有备份，请先恢复备份
-- 如果没有备份，需要手动恢复数据

-- 步骤4：手动恢复数据的示例SQL（请根据实际情况修改）
-- 以下是一个示例，请根据您的实际数据修改：

-- 示例：恢复某个学员的数据（请根据实际情况修改user_id和数据）
-- UPDATE sys_user 
-- SET 
--   prison_name = '第一监狱',           -- 请根据实际情况修改
--   prison_area = '一监区',             -- 请根据实际情况修改
--   ethnicity = '汉族',                 -- 请根据实际情况修改
--   education_level = '初中',           -- 请根据实际情况修改
--   crime_name = '盗窃罪',              -- 请根据实际情况修改
--   sentence_term = 3,                  -- 请根据实际情况修改
--   sentence_start_date = '2023-01-01', -- 请根据实际情况修改
--   sentence_end_date = '2026-01-01',   -- 请根据实际情况修改
--   entry_date = '2023-01-15',          -- 请根据实际情况修改
--   student_status = 'incarcerated'     -- 设置为在押状态
-- WHERE user_id = 110;  -- 替换为实际的user_id

-- 步骤5：批量恢复多个学员的数据（如果有相同的模式）
-- 例如，如果多个学员都是从"第一监狱"的"一监区"，可以批量恢复：
-- UPDATE sys_user 
-- SET prison_name = '第一监狱',
--     prison_area = '一监区'
-- WHERE remark LIKE '%注册类型:student%' 
--   AND del_flag = '0'
--   AND (prison_name IS NULL OR prison_name = '');

