This commit is contained in:
2025-12-27 14:48:32 +08:00
parent cc1680cf01
commit 41ab1e1665

View File

@@ -146,40 +146,34 @@ func (l *PaySuccessNotifyUserHandler) ProcessTask(ctx context.Context, t *asynq.
if err != nil { if err != nil {
return l.handleError(ctx, err, order, query) return l.handleError(ctx, err, order, query)
} }
// responseData 对这个进行筛选筛选Success == true 的此时调用成功的模块数据将产品关联的模块产品成本价cost_price 累加到order.SalesCost中
// 同时在响应数据中添加成本价信息 // 计算成功模块的总成本价
for i, data := range responseData { totalCostPrice := 0.0
if data.Success { if responseData != nil {
// 通过API ID查找对应的feature获取其成本价 for _, item := range responseData {
feature, err := l.svcCtx.FeatureModel.FindOneByApiId(ctx, data.ApiID) if item.Success {
// 根据API ID查找功能模块
feature, err := l.svcCtx.FeatureModel.FindOneByApiId(ctx, item.ApiID)
if err != nil { if err != nil {
logx.Errorf("查找API ID %s 对应的feature失败: %v", data.ApiID, err) logx.Errorf("查找功能模块失败, API ID: %s, 错误: %v", item.ApiID, err)
continue continue
} }
order.SalesCost += feature.CostPrice // 累加成本价
totalCostPrice += 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) combinedResponse, marshalErr := json.Marshal(responseData)
if marshalErr != nil { if marshalErr != nil {