-- =====================================================
-- 迁移 V32: 修复 V31 迁移问题并完成三层结构修复
--
-- 这个迁移脚本会：
-- 1. 检查并修复可能存在的部分数据
-- 2. 使用 INSERT IGNORE 避免重复键错误
-- 3. 完成三层课程结构的修复
-- =====================================================

-- 临时禁用外键约束
SET FOREIGN_KEY_CHECKS = 0;

-- =====================================================
-- 第一步：清理可能存在的错误数据
-- =====================================================

-- 删除自引用的 course_collection_package 关联
DELETE FROM `course_collection_package` WHERE `collection_id` = `package_id`;

-- 删除错误的 course_collection 数据（ID 3, 4, 5）
DELETE FROM `course_collection` WHERE `id` IN (3, 4, 5);

-- 清理 tenant_package 中的 collection_id 引用
UPDATE `tenant_package` SET `collection_id` = NULL WHERE `collection_id` IN (3, 4, 5);

-- =====================================================
-- 第二步：创建课程套餐数据（使用 INSERT IGNORE）
-- =====================================================

INSERT IGNORE INTO `course_collection` (`id`, `name`, `description`, `price`, `discount_price`, `discount_type`, `grade_levels`, `package_count`, `status`, `submitted_at`, `submitted_by`, `reviewed_at`, `reviewed_by`, `review_comment`, `published_at`, `create_by`, `created_at`, `update_by`, `updated_at`, `deleted`) VALUES
(100, '完整阅读能力培养课程体系', '涵盖小班至学前班的完整阅读能力培养体系，包含语言启蒙、艺术创作、科学探索等多个领域的课程包', 29999, 24999, 'FIXED', '["小班", "中班", "大班", "学前班"]', 3, 'PUBLISHED', NOW(), 1, NOW(), 1, '审核通过', NOW(), 'system', NOW(), 'system', NOW(), 0);

-- =====================================================
-- 第三步：创建课程包数据（使用 INSERT IGNORE）
-- =====================================================

INSERT IGNORE INTO `course_package` (`id`, `name`, `description`, `price`, `discount_price`, `discount_type`, `grade_levels`, `course_count`, `status`, `submitted_at`, `submitted_by`, `reviewed_at`, `reviewed_by`, `review_comment`, `published_at`, `create_by`, `created_at`, `update_by`, `updated_at`, `deleted`) VALUES
(101, '语言启蒙课程包', '通过绘本阅读培养幼儿的语言表达能力和阅读兴趣', 9999, 7999, 'FIXED', '["小班", "中班"]', 3, 'PUBLISHED', NOW(), 1, NOW(), 1, '审核通过', NOW(), 'system', NOW(), 'system', NOW(), 0),
(102, '艺术创作课程包', '通过艺术活动培养幼儿的审美能力和创造力', 9999, 7999, 'FIXED', '["小班", "中班", "大班"]', 3, 'PUBLISHED', NOW(), 1, NOW(), 1, '审核通过', NOW(), 'system', NOW(), 'system', NOW(), 0),
(103, '科学探索课程包', '通过科学活动培养幼儿的探究精神和逻辑思维', 9999, 7999, 'FIXED', '["中班", "大班", "学前班"]', 4, 'PUBLISHED', NOW(), 1, NOW(), 1, '审核通过', NOW(), 'system', NOW(), 'system', NOW(), 0);

-- =====================================================
-- 第四步：创建关联数据（使用 INSERT IGNORE）
-- =====================================================

INSERT IGNORE INTO `course_collection_package` (`id`, `collection_id`, `package_id`, `sort_order`, `create_by`, `created_at`, `update_by`, `updated_at`, `deleted`) VALUES
(101, 100, 101, 1, 'system', NOW(), 'system', NOW(), 0),
(102, 100, 102, 2, 'system', NOW(), 'system', NOW(), 0),
(103, 100, 103, 3, 'system', NOW(), 'system', NOW(), 0);

-- =====================================================
-- 第五步：创建课程数据（使用 INSERT IGNORE）
-- =====================================================

INSERT IGNORE INTO `course` (`id`, `tenant_id`, `name`, `category`, `description`, `cover_url`, `age_range`, `difficulty_level`, `duration_minutes`, `status`, `is_system`, `core_content`, `objectives`, `schedule_ref_data`, `created_at`, `updated_at`, `deleted`) VALUES
(101, NULL, '小猪佩奇绘本阅读导入课', '语言艺术', '通过小猪佩奇绘本导入阅读主题，激发幼儿兴趣', '/courses/peppa-intro/cover.jpg', '3-6 岁', 'BEGINNER', 20, 'PUBLISHED', 1, '语言导入课程', '激发阅读兴趣', '[{"lessonType":"导入课","recommendation":"每学期开学第一周进行，作为整个阅读体系的导入课程。建议1-2课时完成。","sessions":2}]', NOW(), NOW(), 0),
(102, NULL, '小猪佩奇集体阅读课', '语言艺术', '集体阅读小猪佩奇绘本，培养集体阅读习惯', '/courses/peppa-collective/cover.jpg', '3-6 岁', 'BEGINNER', 30, 'PUBLISHED', 1, '语言集体课程', '培养集体阅读能力', '[{"lessonType":"集体课","recommendation":"每月进行2次，建议安排在周五上午。每次30-35分钟，包含共读、讨论、表演环节。","sessions":8,"frequency":"每月2次"}]', NOW(), NOW(), 0),
(103, NULL, '语言领域课程-小猪佩奇', '语言艺术', '深入学习语言领域的知识点和能力', '/courses/peppa-language/cover.jpg', '3-6 岁', 'BEGINNER', 25, 'PUBLISHED', 1, '五大领域语言课程', '提升语言表达能力', '[{"lessonType":"五大领域语言课","recommendation":"每周2次，建议安排在周二和周四。每次25分钟，重点培养听说能力。","sessions":16,"frequency":"每周2次"}]', NOW(), NOW(), 0),
(104, NULL, '彩虹色的花导入课', '艺术创作', '导入艺术创作主题', '/courses/rainbow-intro/cover.jpg', '3-5 岁', 'BEGINNER', 20, 'PUBLISHED', 1, '艺术导入课程', '激发艺术兴趣', '[{"lessonType":"导入课","recommendation":"每学期开学第一周进行","sessions":1}]', NOW(), NOW(), 0),
(105, NULL, '彩虹色的花集体创作课', '艺术创作', '集体进行艺术创作', '/courses/rainbow-collective/cover.jpg', '3-5 岁', 'BEGINNER', 35, 'PUBLISHED', 1, '艺术集体课程', '培养集体创作能力', '[{"lessonType":"集体课","recommendation":"每月1次，建议安排在周三下午","sessions":4}]', NOW(), NOW(), 0),
(106, NULL, '艺术领域课程-彩虹色的花', '艺术创作', '五大领域艺术课程', '/courses/rainbow-art/cover.jpg', '3-5 岁', 'BEGINNER', 30, 'PUBLISHED', 1, '五大领域艺术课程', '提升艺术表现能力', '[{"lessonType":"五大领域艺术课","recommendation":"每周1次，建议安排在周一上午","sessions":8}]', NOW(), NOW(), 0),
(107, NULL, '牙齿大街的新鲜事导入课', '科学探索', '导入科学探索主题', '/courses/teeth-intro/cover.jpg', '4-6 岁', 'INTERMEDIATE', 20, 'PUBLISHED', 1, '科学导入课程', '激发科学探索兴趣', '[{"lessonType":"导入课","recommendation":"每学期开学第一周进行","sessions":1}]', NOW(), NOW(), 0),
(108, NULL, '牙齿大街集体探究课', '科学探索', '集体进行科学探究', '/courses/teeth-collective/cover.jpg', '4-6 岁', 'INTERMEDIATE', 35, 'PUBLISHED', 1, '科学集体课程', '培养集体探究能力', '[{"lessonType":"集体课","recommendation":"每月1次，建议安排在周二下午","sessions":4}]', NOW(), NOW(), 0),
(109, NULL, '健康领域课程-牙齿大街', '科学探索', '五大领域健康课程', '/courses/teeth-health/cover.jpg', '4-6 岁', 'INTERMEDIATE', 30, 'PUBLISHED', 1, '五大领域健康课程', '培养健康意识', '[{"lessonType":"五大领域健康课","recommendation":"每周1次，建议安排在周三上午","sessions":8}]', NOW(), NOW(), 0),
(110, NULL, '科学领域课程-牙齿大街', '科学探索', '五大领域科学课程', '/courses/teeth-science/cover.jpg', '4-6 岁', 'INTERMEDIATE', 30, 'PUBLISHED', 1, '五大领域科学课程', '培养科学探究能力', '[{"lessonType":"五大领域科学课","recommendation":"每周1次，建议安排在周五上午","sessions":8}]', NOW(), NOW(), 0);

-- =====================================================
-- 第六步：创建课程包与课程的关联（使用 INSERT IGNORE）
-- =====================================================

INSERT IGNORE INTO `course_package_course` (`id`, `package_id`, `course_id`, `grade_level`, `sort_order`) VALUES
(1001, 101, 101, '小班', 1),
(1002, 101, 102, '小班', 2),
(1003, 101, 103, '小班', 3),
(1004, 102, 104, '小班', 1),
(1005, 102, 105, '小班', 2),
(1006, 102, 106, '小班', 3),
(1007, 103, 107, '中班', 1),
(1008, 103, 108, '中班', 2),
(1009, 103, 109, '中班', 3),
(1010, 103, 110, '中班', 4);

-- =====================================================
-- 第七步：更新租户套餐关联
-- =====================================================

-- 将租户的套餐关联更新到新的课程套餐（collection_id = 100）
UPDATE `tenant_package` SET `collection_id` = 100 WHERE `id` IN (1, 2);

-- 重新启用外键约束
SET FOREIGN_KEY_CHECKS = 1;

-- =====================================================
-- V32 迁移完成
-- =====================================================
