-- V12: 团课预约时间冲突测试数据
-- 测试场景：会员预约两个时间重叠的团课时，系统应检测到时间冲突并拒绝预约

-- ============================================
-- 1. 创建测试会员
-- ============================================

INSERT INTO member_user (member_no, nickname, phone, gender, is_deleted, created_at, updated_at) VALUES
    ('MEM_TIME_CONFLICT', '时间冲突测试会员', '13800009999', 1, false, '2026-06-02 10:00:00', '2026-06-02 10:00:00');

-- ============================================
-- 2. 创建时间冲突的团课
-- ============================================

-- 团课A: 6月15日 13:00 - 15:00
INSERT INTO group_course (course_name, coach_id, course_type, start_time, end_time, max_members, current_members, status, location, description, point_card_amount, stored_value_amount, create_by, created_at, updated_at) VALUES
    ('时间冲突测试_A_13点-15点', 102, 2, '2026-06-15 13:00:00', '2026-06-15 15:00:00', 20, 0, '0', '综合训练区', '测试用团课A，用于验证时间冲突检测', 1, 0.00, 'admin', '2026-06-02 10:00:00', '2026-06-02 10:00:00');

-- 团课B: 6月15日 14:00 - 16:00 (与团课A时间重叠)
INSERT INTO group_course (course_name, coach_id, course_type, start_time, end_time, max_members, current_members, status, location, description, point_card_amount, stored_value_amount, create_by, created_at, updated_at) VALUES
    ('时间冲突测试_B_14点-16点', 103, 1, '2026-06-15 14:00:00', '2026-06-15 16:00:00', 15, 0, '0', '普拉提教室', '测试用团课B，与团课A时间重叠（14:00-15:00）', 1, 0.00, 'admin', '2026-06-02 10:00:00', '2026-06-02 10:00:00');

-- 团课C: 6月15日 10:00 - 12:00 (不冲突，作为对照)
INSERT INTO group_course (course_name, coach_id, course_type, start_time, end_time, max_members, current_members, status, location, description, point_card_amount, stored_value_amount, create_by, created_at, updated_at) VALUES
    ('时间冲突测试_C_10点-12点', 101, 1, '2026-06-15 10:00:00', '2026-06-15 12:00:00', 15, 0, '0', '瑜伽教室', '测试用团课C，与团课A/B不冲突', 1, 0.00, 'admin', '2026-06-02 10:00:00', '2026-06-02 10:00:00');

-- ============================================
-- 3. 会员卡记录（用于预约）
-- ============================================

-- 为时间冲突测试会员创建有效次数卡
INSERT INTO member_card_record (member_id, member_card_id, status, remaining_times, remaining_amount, expire_time, purchase_time, version, card_composition, created_at, updated_at) VALUES
    ((SELECT id FROM member_user WHERE member_no = 'MEM_TIME_CONFLICT'), (SELECT member_card_id FROM member_card WHERE member_card_name = '10次卡'), 'ACTIVE', 10, 0.00, '2026-12-31 23:59:59', '2026-06-02 10:00:00', 0, '{}', '2026-06-02 10:00:00', '2026-06-02 10:00:00');

-- ============================================
-- 4. 测试场景说明
-- ============================================
-- 
-- 测试步骤：
-- 1. 使用会员 MEM_TIME_CONFLICT 预约团课A (course_name='时间冲突测试_A_13点-15点')
--    → 预期：预约成功
-- 
-- 2. 使用会员 MEM_TIME_CONFLICT 预约团课B (course_name='时间冲突测试_B_14点-16点')
--    → 预期：预约失败，提示时间冲突（14:00-15:00与已预约的团课A重叠）
-- 
-- 3. 使用会员 MEM_TIME_CONFLICT 预约团课C (course_name='时间冲突测试_C_10点-12点')
--    → 预期：预约成功（与团课A时间不冲突）
-- 
-- 时间冲突判断逻辑：
-- 新课程开始时间 < 已预约课程结束时间 AND 新课程结束时间 > 已预约课程开始时间
-- 即：newStartTime < existingEndTime AND newEndTime > existingStartTime
-- 
-- 本测试数据中的时间关系：
-- - 团课A: 13:00 - 15:00
-- - 团课B: 14:00 - 16:00
--   → 14:00 < 15:00 AND 16:00 > 13:00 → 冲突
-- - 团课C: 10:00 - 12:00
--   → 10:00 < 15:00 AND 12:00 > 13:00 → 12:00 > 13:00 不成立 → 不冲突