退款订单列表增加金额汇总

refundOrder/list 响应增加 totalMoney(单位:分),走 $sum 聚合统计
整个筛选结果的退款金额,而不是当前这一页 —— 按渠道搜出几百笔时
只汇总当页会得出错误金额。

命中数为 0 时直接返回,不再多跑一次聚合和列表查询。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-11-11 17:49:17 +08:00
co-authored by Claude Opus 5
parent 3c8cefbb2a
commit e1674ec96b
3 changed files with 35 additions and 2 deletions
+23
View File
@@ -93,6 +93,29 @@ func CountRefundOrders(ctx context.Context, filter bson.M) (int64, error) {
return count, nil
}
// SumRefundOrderMoney 按同一 filter 汇总退款金额(单位:分)。
// 走聚合而不是把 money 累加在业务层,是为了统计整个查询结果而不只是当前这一页。
func SumRefundOrderMoney(ctx context.Context, filter bson.M) (int64, error) {
var ret []struct {
TotalMoney int64 `bson:"totalMoney"`
}
pipeline := []bson.M{
{"$match": filter},
{"$group": bson.M{
"_id": nil,
"totalMoney": bson.M{"$sum": "$" + FN.RefundOrder.Money},
}},
}
if err := db.Aggregate(ctx, &ret, pipeline); err != nil {
log.Warn("refundOrderMod SumMoney failed", log.E(err), log.Any("filter", filter))
return 0, err
}
if len(ret) == 0 {
return 0, nil // 没有命中任何记录
}
return ret[0].TotalMoney, nil
}
func DelOneRefundOrder(ctx context.Context, filter bson.M) (int64, error) {
count, err := db.DeleteOne(ctx, filter)
if err != nil {