fix
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user