feat: 新增套餐使用记录实付金额快照字段 paid_amount
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m19s

- 新增迁移 000129:tb_package_usage 添加 paid_amount BIGINT 字段,存量数据通过 JOIN tb_order 回填
- PackageUsage Model 新增 PaidAmount *int64 字段
- 4 个写入点(order service 主套餐/加油包、auto_purchase 主套餐/加油包)赋值 order.ActualPaidAmount
- AssetPackageResponse DTO 新增 paid_amount 字段
- GetCurrentPackage / GetPackages 填充 paid_amount,接口直接返回购买价格无需 JOIN 订单表
This commit is contained in:
2026-04-18 10:19:21 +08:00
parent 4b8784d5e7
commit 2b3a9cb33f
15 changed files with 391 additions and 5 deletions

View File

@@ -108,22 +108,28 @@
- `activated_at`: 生效时间
- `expires_at`: 过期时间
- `status`: 套餐状态0-待生效 1-生效中 2-已用完 3-已过期 4-已失效)
- `paid_amount`: 购买时实付金额(分),线下支付或无订单分配时为 null
#### Scenario: 查询卡的套餐历史
- **WHEN** 管理员调用 `GET /api/admin/assets/card/123/packages`,该卡有 3 条套餐记录(含 1 条已失效)
- **THEN** 系统返回全部 3 条记录,按创建时间倒序排列
- **THEN** 系统返回全部 3 条记录,按创建时间倒序排列,每条记录含 `paid_amount` 字段
#### Scenario: 查询设备的套餐历史
- **WHEN** 管理员调用 `GET /api/admin/assets/device/456/packages`
- **THEN** 系统返回该设备 device_id 下的所有套餐记录
- **THEN** 系统返回该设备 device_id 下的所有套餐记录,含 `paid_amount` 字段
#### Scenario: 资产无套餐记录
- **WHEN** 管理员查询一张从未购买过套餐的卡
- **THEN** 系统返回空数组,不报错
#### Scenario: 线下支付套餐的 paid_amount 为 null
- **WHEN** 管理员查询一张通过线下支付购买套餐的卡
- **THEN** 对应套餐记录的 `paid_amount` 字段缺省omitempty不展示
---
### Requirement: 当前主套餐详情查询
@@ -138,12 +144,13 @@
**响应字段**:
- 完整套餐信息(同套餐历史列表中的单条记录字段)
- `paid_amount`: 购买时实付金额(分),线下支付或无订单分配时为 null
- 当无生效主套餐时,返回 HTTP 404
#### Scenario: 返回当前主套餐
#### Scenario: 返回当前主套餐(含实付金额)
- **WHEN** 管理员调用 `GET /api/admin/assets/card/123/current-package`,该卡有 1 个生效主套餐和 1 个加油包
- **THEN** 系统只返回主套餐信息,不包含加油包
- **WHEN** 管理员调用 `GET /api/admin/assets/card/123/current-package`,该卡有 1 个生效主套餐和 1 个加油包,主套餐 `paid_amount = 9900`
- **THEN** 系统只返回主套餐信息,响应中包含 `paid_amount: 9900`不包含加油包
#### Scenario: 无当前生效主套餐