From 41ab1e1665b9f993fd5ae1169c9d77aac2f25235 Mon Sep 17 00:00:00 2001 From: 18278715334 <18278715334@163.com> Date: Sat, 27 Dec 2025 14:48:32 +0800 Subject: [PATCH] fix --- .../api/internal/queue/paySuccessNotify.go | 56 +++++++++---------- 1 file changed, 25 insertions(+), 31 deletions(-) diff --git a/app/main/api/internal/queue/paySuccessNotify.go b/app/main/api/internal/queue/paySuccessNotify.go index c125fd3..472eb12 100644 --- a/app/main/api/internal/queue/paySuccessNotify.go +++ b/app/main/api/internal/queue/paySuccessNotify.go @@ -146,40 +146,34 @@ func (l *PaySuccessNotifyUserHandler) ProcessTask(ctx context.Context, t *asynq. if err != nil { return l.handleError(ctx, err, order, query) } - // responseData 对这个进行筛选筛选Success == true 的,此时调用成功的模块数据将产品关联的模块产品成本价(cost_price )累加到order.SalesCost中 - // 同时在响应数据中添加成本价信息 - for i, data := range responseData { - if data.Success { - // 通过API ID查找对应的feature,获取其成本价 - feature, err := l.svcCtx.FeatureModel.FindOneByApiId(ctx, data.ApiID) - if err != nil { - logx.Errorf("查找API ID %s 对应的feature失败: %v", data.ApiID, err) - continue + + // 计算成功模块的总成本价 + totalCostPrice := 0.0 + if responseData != nil { + for _, item := range responseData { + if item.Success { + // 根据API ID查找功能模块 + feature, err := l.svcCtx.FeatureModel.FindOneByApiId(ctx, item.ApiID) + if err != nil { + logx.Errorf("查找功能模块失败, API ID: %s, 错误: %v", item.ApiID, err) + continue + } + // 累加成本价 + totalCostPrice += feature.CostPrice } - order.SalesCost += feature.CostPrice - - // 将成本价信息添加到响应数据中 - // 首先解析原始数据 - var originalData map[string]interface{} - if err := json.Unmarshal(data.Data, &originalData); err != nil { - logx.Errorf("解析API %s 的响应数据失败: %v", data.ApiID, err) - continue - } - - // 添加成本价字段 - originalData["cost_price"] = feature.CostPrice - - // 重新序列化数据 - updatedData, err := json.Marshal(originalData) - if err != nil { - logx.Errorf("序列化API %s 的更新后数据失败: %v", data.ApiID, err) - continue - } - - // 更新responseData中的Data字段 - responseData[i].Data = json.RawMessage(updatedData) } } + + // 更新订单的销售成本 + order.SalesCost = totalCostPrice + updateOrderErr := l.svcCtx.OrderModel.UpdateWithVersion(ctx, nil, order) + if updateOrderErr != nil { + logx.Errorf("更新订单销售成本失败, 订单ID: %d, 错误: %v", order.Id, updateOrderErr) + // 注意:这里不返回错误,因为订单销售成本更新失败不应影响整个查询流程 + } else { + logx.Infof("成功更新订单销售成本, 订单ID: %d, 总成本价: %f", order.Id, totalCostPrice) + } + // 对返回的类型进行二进制转换 combinedResponse, marshalErr := json.Marshal(responseData) if marshalErr != nil {