diff --git a/business/elm/controller/order.go b/business/elm/controller/order.go index 68d096c9c..69a6b764c 100644 --- a/business/elm/controller/order.go +++ b/business/elm/controller/order.go @@ -71,20 +71,28 @@ func (o *OrderController) NewOrder(msg *elmapi.CallbackMsg, orderId string, user retVal = errResponseDBError } else { if created || rec.Type != msg.Type { + // todo 回调消息里已经有详情,这里是否有必要再取一次? result, err := globals2.ElmAPI.GetOrder(orderId) if err != nil { retVal = errResponseCallELMAPIError } else { - err = globals2.FreshFoodAPI.NewELMOrder(result) - if err != nil { - retVal = errResponseInternal + rec.Data = string(utils.MustMarshal(result)) + num, err := db.Update(rec, "Data") + if err != nil || num != 1 { + globals.SugarLogger.Warnf("error in updating order data:%v, error:%v, num:%d", msg, err, num) + retVal = errResponseDataError + } else { + err = globals2.FreshFoodAPI.NewELMOrder(result) + if err != nil { + retVal = errResponseInternal + } } } + OnNewOrder(orderId, userMobile) } else { globals.SugarLogger.Infof("duplicate elm msg received:%v", msg) } } - OnNewOrder(orderId, userMobile) return retVal }