feat(退款): AUG26-006 补充当前退款套餐已用量与总量
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m33s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m33s
补齐 PRD §2.3.1「退款管理补充字段」:退款列表、详情与导出新增 「当前退款套餐已用量」与「当前退款套餐总量」两个纯展示字段。 - 套餐定位口径与退款套餐失效保持一致,按优先级取唯一一条: 冻结的 package_usage_id(且属于该订单)→ 订单主套餐 → 订单任一套餐, 同级按标识升序。不按当前世代或当前生效套餐推断;不按套餐状态过滤, 使退款后套餐转已失效时仍能回看用量。 - 列表与详情用固定两次查询批量解析(按标识、按订单),查询次数不随条数增长; 详情复用同一函数。解析不到套餐或记录已物理删除时返回 0,不阻断读取。 - 导出新增两列并改用同一优先级的 LATERAL 取法,不再依赖只按 r.package_usage_id 的 join——生产库 1296 条退款仅 157 条带该字段,旧取法会让多数行显示零值。 - 不改变退款金额校验、冻结实收、套餐失效、接续、停机与佣金回溯任何规则。 验证:测试库 junhong_cmp_test 实测冻结记录、订单主套餐回退、记录缺失返回 0 三项 解析场景与「4 条退款固定 2 次查询」;并以同批 43 条退款对拍 Go 解析器与导出 SQL, 口径不一致 0 条;导出 43 行列数与表头一致。无迁移、无接口路径变化。
This commit is contained in:
@@ -257,6 +257,10 @@ func (s *Service) List(ctx context.Context, req *dto.RefundListRequest) (*dto.Re
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
packageUsages, err := s.loadRefundPackageUsages(ctx, requests)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
items := make([]dto.RefundResponse, 0, len(requests))
|
||||
for _, r := range requests {
|
||||
@@ -264,6 +268,7 @@ func (s *Service) List(ctx context.Context, req *dto.RefundListRequest) (*dto.Re
|
||||
item.SubmitterName = submitterNames[r.Creator]
|
||||
applyApprovalSummary(item, approvalSummaries, r)
|
||||
item.Attempts = attemptResponses[r.ID]
|
||||
applyRefundPackageUsage(item, packageUsages[r.ID])
|
||||
items = append(items, *item)
|
||||
}
|
||||
|
||||
@@ -314,6 +319,11 @@ func (s *Service) GetByID(ctx context.Context, id uint) (*dto.RefundResponse, er
|
||||
return nil, err
|
||||
}
|
||||
resp.Attempts = attemptResponses[refund.ID]
|
||||
packageUsages, err := s.loadRefundPackageUsages(ctx, []*model.RefundRequest{refund})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
applyRefundPackageUsage(resp, packageUsages[refund.ID])
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user