# V11 团课预约取消测试数据文档 ## 文档说明 本文档描述了用于测试团课预约取消功能的测试数据,包含三种会员卡类型的取消预约场景。 ## 测试场景概览 | 序号 | 场景描述 | 用户 | 会员卡类型 | | :--- | :--- | :--- | :--- | | 1 | 使用时长卡预约后取消 | 张三 | 时长卡(30天) | | 2 | 使用次数卡预约后取消 | 李四 | 次数卡(10次) | | 3 | 使用储值卡预约后取消 | 王五 | 储值卡(500元) | ## 测试用户数据 ### 1. 张三(时长卡用户) | 字段 | 值 | | :--- | :--- | | 会员编号 | `MEM_TEST_ZHANG` | | 昵称 | 张三_时长卡用户 | | 手机号 | 13800002001 | | 性别 | 男(1) | #### 会员卡信息 | 字段 | 值 | | :--- | :--- | | 卡类型 | 时长卡(TIME_CARD) | | 卡名称 | 30天时长卡 | | 状态 | ACTIVE(有效) | | 到期时间 | 2026-07-02 23:59:59 | | 购买时间 | 2026-06-02 10:00:00 | --- ### 2. 李四(次数卡用户) | 字段 | 值 | | :--- | :--- | | 会员编号 | `MEM_TEST_LI` | | 昵称 | 李四_次数卡用户 | | 手机号 | 13800002002 | | 性别 | 男(1) | #### 会员卡信息 | 字段 | 值 | | :--- | :--- | | 卡类型 | 次数卡(COUNT_CARD) | | 卡名称 | 10次卡 | | 状态 | ACTIVE(有效) | | 剩余次数 | 5次 | | 到期时间 | 2026-12-31 23:59:59 | --- ### 3. 王五(储值卡用户) | 字段 | 值 | | :--- | :--- | | 会员编号 | `MEM_TEST_WANG` | | 昵称 | 王五_储值卡用户 | | 手机号 | 13800002003 | | 性别 | 女(2) | #### 会员卡信息 | 字段 | 值 | | :--- | :--- | | 卡类型 | 储值卡(STORED_VALUE_CARD) | | 卡名称 | 储值卡500 | | 状态 | ACTIVE(有效) | | 剩余金额 | 200.00元 | | 到期时间 | 2027-06-02 23:59:59 | --- ## 测试课程数据 ### 晚间瑜伽_取消测试 | 字段 | 值 | | :--- | :--- | | 课程名称 | 晚间瑜伽_取消测试 | | 教练ID | 101 | | 课程类型 | 1 | | 开始时间 | 2026-06-15 19:00:00 | | 结束时间 | 2026-06-15 20:00:00 | | 上课地点 | 瑜伽教室 | | 最大人数 | 20人 | | 当前人数 | 3人(三位测试用户) | | 状态 | 0(正常) | | 次数消耗 | 1次 | | 储值消耗 | 30.00元 | --- ## 预约记录数据 ### 预约状态说明 | 状态码 | 含义 | | :--- | :--- | | `0` | 已预约(等待取消) | | `1` | 已取消 | | `2` | 已出席 | | `3` | 缺席 | ### 预约记录详情 | 用户 | 预约时间 | 状态 | 课程名称 | | :--- | :--- | :--- | :--- | | 张三 | 2026-06-02 11:00:00 | 0(已预约) | 晚间瑜伽_取消测试 | | 李四 | 2026-06-02 11:30:00 | 0(已预约) | 晚间瑜伽_取消测试 | | 王五 | 2026-06-02 12:00:00 | 0(已预约) | 晚间瑜伽_取消测试 | --- ## 测试用例设计 ### 场景1:时长卡用户取消预约 **前置条件:** - 张三持有有效时长卡 - 张三已成功预约课程 - 当前时间 < 课程开始时间 **测试步骤:** 1. 调用取消预约接口,传入张三的预约记录ID 2. 验证预约状态变为 `1`(已取消) 3. 验证课程当前人数减1 4. 验证时长卡状态保持不变(时长卡取消预约不影响卡状态) **预期结果:** - 预约记录状态更新为已取消 - 课程剩余名额增加1 - 时长卡有效期不受影响 --- ### 场景2:次数卡用户取消预约 **前置条件:** - 李四持有次数卡,剩余5次 - 李四已成功预约课程(已扣除1次) - 当前时间 < 课程开始时间 **测试步骤:** 1. 调用取消预约接口,传入李四的预约记录ID 2. 验证预约状态变为 `1`(已取消) 3. 验证课程当前人数减1 4. 验证次数卡剩余次数恢复为5次(返还1次) **预期结果:** - 预约记录状态更新为已取消 - 课程剩余名额增加1 - 次数卡返还1次,剩余次数恢复为5次 --- ### 场景3:储值卡用户取消预约 **前置条件:** - 王五持有储值卡,余额200元 - 王五已成功预约课程(已扣除30元) - 当前时间 < 课程开始时间 **测试步骤:** 1. 调用取消预约接口,传入王五的预约记录ID 2. 验证预约状态变为 `1`(已取消) 3. 验证课程当前人数减1 4. 验证储值卡余额恢复为200元(返还30元) **预期结果:** - 预约记录状态更新为已取消 - 课程剩余名额增加1 - 储值卡返还30元,余额恢复为200元 --- ## 数据文件位置 ``` manage-db/src/main/resources/db/migration/V11__Insert_Cancel_Booking_Test_Data.sql ``` ## 数据依赖 | 依赖文件 | 说明 | | :--- | :--- | | `V6__Create_GroupCourse_table.sql` | 团课相关表结构 | | `V8__Create_Member_And_MemberCard.sql` | 会员和会员卡表结构 | | `V9__Add_GroupCourse_Booking_Snapshot_Fields.sql` | 预约快照字段 | --- ## 注意事项 1. 测试数据中使用的日期均为未来日期,确保测试时课程尚未开始 2. 会员卡状态均为 ACTIVE,确保可以正常预约 3. 取消预约功能应在课程开始前24小时内允许操作(具体时间限制由业务逻辑决定) 4. 取消预约后应记录操作日志和交易流水