All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m33s
- 删除 model/commission.go 中与 constants 包冲突的旧常量(值=1/2) - 所有服务层改用 constants.CommissionStatusReleased(值=3)写入和查询 - 数据库迁移:status 1→3(已发放),2→4(已失效) - 修复佣金明细列表接口,通过 JOIN 关联返回 order_no、iccid、virtual_no、order_created_at - 新增 seller_shop_id / seller_shop_name 销售来源字段 - 统计接口过滤条件从精确匹配改为排除无效(NOT IN 4,99) - 更新 OpenAPI 文档及 commission-record-query spec
2.9 KiB
2.9 KiB
Why
佣金系统存在状态常量定义冲突和接口数据不完整两大问题:
- 常量冲突:
model/commission.go和pkg/constants/iot.go定义了两套不同的佣金状态常量,值 1 在 model 包表示"已入账",在 constants 包表示"已冻结",导致佣金记录显示错误 - 接口缺陷:
/commission-records接口返回的 ICCID、OrderNo、VirtualNo 等字段全部为空,且缺少销售来源店铺信息
这些问题导致:差价佣金被错误显示为"已冻结"、佣金明细无法关联到具体订单和卡、无法追溯佣金产生的销售来源。
What Changes
1. 统一佣金状态常量
- 删除
model/commission.go中的旧常量定义 - 统一使用
pkg/constants/iot.go的四态定义(已冻结→解冻中→已发放→已失效) - 迁移数据库中 status 值(1→3, 2→4)
- 修复 12 处引用旧常量的代码位置
2. 修复 commission-records 接口关联查询
- Store 层实现 JOIN 关联查询(订单表、卡表、设备表)
- 实现 ICCID、OrderNo、DeviceNo 的过滤条件
- Service 层正确填充 OrderNo、ICCID、VirtualNo、OrderCreatedAt 字段
3. 新增销售来源店铺信息
- DTO 新增 SellerShopID、SellerShopName 字段
- 关联查询订单的
seller_shop_id显示销售来源
4. 修复佣金统计查询语义
GetStats和GetDailyStats的过滤条件从"精确匹配已发放(status=1)"改为"排除无效和待审(status NOT IN 4,99)"- 使总佣金统计包含冻结中的佣金(面向未来的正确语义)
5. 数据迁移
- 编写数据库迁移脚本转换历史数据
Capabilities
New Capabilities
commission-record-query: 佣金记录完整查询能力- 支持关联查询订单、卡、设备信息
- 支持按 ICCID、订单号、设备号过滤
- 显示销售来源店铺信息
Modified Capabilities
commission-status: 佣金状态定义- 状态值从二态(已入账、已失效)扩展为四态(已冻结、解冻中、已发放、已失效)
Impact
受影响代码
| 文件 | 影响 |
|---|---|
model/commission.go |
删除旧常量定义 |
pkg/constants/iot.go |
确认常量定义正确 |
internal/service/commission_calculation/service.go |
替换常量引用(3处) |
internal/service/shop_commission/service.go |
替换常量引用 + 填充关联字段(2处) |
internal/service/refund/service.go |
替换常量引用(1处) |
internal/service/recharge/service.go |
替换常量引用(1处) |
internal/store/postgres/commission_record_store.go |
实现过滤条件和 JOIN;修复统计查询语义 |
internal/model/dto/shop_commission_dto.go |
DTO 新增字段 |
受影响接口
GET /api/admin/shops/:shop_id/commission-records- 返回值结构变更(新增字段)
数据库迁移
tb_commission_record.status: 1→3, 2→4
依赖项
- 无新增外部依赖