完成模块2

This commit was merged in pull request #14.
This commit is contained in:
2026-06-02 16:58:49 +08:00
parent bdcd3b2bf0
commit 8af444b7ee
36 changed files with 3576 additions and 105 deletions
@@ -0,0 +1,204 @@
# 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. 取消预约后应记录操作日志和交易流水