test(distribution): 补齐分销全场景E2E与HTTP接口全链路集成测试

- 新增端到端测试场景:
  - 场景 1: 主站收号分站加价售卖与批次结算全链路
  - 场景 2: 分站收号主站售卖、独立鉴权、大盘统计与提现全流程
  - 场景 3: 三方模式跨站流转、专属支付通道自动路由与双站批次独立结算
  - 场景 4: 分站自收自售、3天冷却期自动释放及幂等防护
  - 场景 5: 结算后退款回冲金库钱包、掏空后透支扣减与仲裁风险隔离
  - 场景 6: 一键开站、成员JWT鉴权、品牌个性化、三模解析与货架同步加价
- 新增 distribution/handler_integration_test.go:覆盖 30+ 分销 HTTP 接口(前台公开端点、分站管理员登录/信息端点、站长运营端点及总台管理端点)
- 修复并对齐底层逻辑:
  - FindOrder & ListOrders:多参与方按 PartyID 准确隔离各站收益与提价统计
  - SnapshotPaidOrderTx:规范多方模式下 PartyTypeSite 的 SiteID/PartyID
  - 增加 ErrInsufficientBalance 哨兵错误并在 handler 映射为 400
This commit is contained in:
yml2213
2026-09-11 11:20:07 +08:00
parent 9ae763dee6
commit ef91b24bf2
6 changed files with 1938 additions and 11 deletions
@@ -242,7 +242,11 @@ func SnapshotPaidOrderTx(tx *gorm.DB, orderID uint64, grossPaidCent int64) error
partyID = *listing.DistributionSiteID
}
}
parties = append(parties, model.DistributionOrderParty{OrderID: order.ID, SiteID: *order.DistributionSiteID, PartyRole: split.PartyRole, PartyType: partyType, PartyID: partyID, Ratio: split.Ratio, IncomeAmountCent: split.AmountCent, ProfitAmountCent: split.AmountCent})
partySiteID := *order.DistributionSiteID
if partyType == PartyTypeSite && partyID > 0 {
partySiteID = partyID
}
parties = append(parties, model.DistributionOrderParty{OrderID: order.ID, SiteID: partySiteID, PartyRole: split.PartyRole, PartyType: partyType, PartyID: partyID, Ratio: split.Ratio, IncomeAmountCent: split.AmountCent, ProfitAmountCent: split.AmountCent})
}
if len(parties) == 0 {
return nil