diff --git a/business/elm/controller/order.go b/business/elm/controller/order.go index 7f4455679..e22a0ceff 100644 --- a/business/elm/controller/order.go +++ b/business/elm/controller/order.go @@ -69,21 +69,22 @@ func (o *OrderController) OrderStatusChanged(msg *elmapi.CallbackMsg, orderId st err := db.Read(rec, "OrderId") if err != nil { globals.SugarLogger.Warnf("error when calling ReadOrCreate, error:%v", err) - return errResponseDBError - } - if rec.Type != msg.Type { - err = globals2.FreshFoodAPI.ELMOrderStatus(orderId, msg.Type, utils.GetCurTimeStr()) - if err != nil { - return errResponseInternal - } else { - rec.Type = msg.Type - utils.CallFuncLogError(func() error { - _, err := db.Update(rec, "Type") - return err - }, globals2.ErrStrAccessDB) - } } else { - globals.SugarLogger.Infof("duplicate elm msg received:%v", msg) + if rec.Type != msg.Type { + err = globals2.FreshFoodAPI.ELMOrderStatus(orderId, msg.Type, utils.GetCurTimeStr()) + if err == nil { + rec.Type = msg.Type + err = utils.CallFuncLogError(func() error { + _, err := db.Update(rec, "Type") + return err + }, globals2.ErrStrAccessDB) + } + } else { + globals.SugarLogger.Infof("duplicate elm msg received:%v", msg) + } + } + if err != nil { + return errResponseInternal } return elmapi.SuccessResponse } diff --git a/business/jd/controller/order.go b/business/jd/controller/order.go index e1fe54b70..10851a447 100644 --- a/business/jd/controller/order.go +++ b/business/jd/controller/order.go @@ -85,7 +85,7 @@ func (c *OrderController) OrderStatus(order *jdapi.CallbackOrderMsg) *jdapi.Call if order.StatusID != jdapi.OrderStatusNew && order.StatusID != jdapi.OrderStatusAdjust { err := normalOrderStatus(order) if err != nil { - return &jdapi.CallbackResponse{jdapi.ResponseCodeAccessFailed, err.Error(), ""} + return jdapi.Err2CallbackResponse(err, "") } } else { db := orm.NewOrm() @@ -129,7 +129,7 @@ func (c *OrderController) OrderStatus(order *jdapi.CallbackOrderMsg) *jdapi.Call } } else { globals.SugarLogger.Errorf("error when calling ReadOrCreate:%v", err) - return &jdapi.CallbackResponse{jdapi.ResponseCodeAccessFailed, err.Error(), ""} + return jdapi.Err2CallbackResponse(err, "") } } return jdapi.SuccessResponse @@ -137,9 +137,8 @@ func (c *OrderController) OrderStatus(order *jdapi.CallbackOrderMsg) *jdapi.Call func (c *OrderController) OrderDeliveryStatus(jdOrderDeliveryStatusMsg *jdapi.CallbackDeliveryStatusMsg) *jdapi.CallbackResponse { if err := globals2.FreshFoodAPI.JDOrderDeliveryStatus(jdOrderDeliveryStatusMsg); err != nil { - return &jdapi.CallbackResponse{jdapi.ResponseCodeAccessFailed, err.Error(), ""} + return jdapi.Err2CallbackResponse(err, "") } - return jdapi.SuccessResponse } @@ -181,8 +180,7 @@ func newOrder(order *jdapi.CallbackOrderMsg) error { return err }, globals2.ErrStrAccessDB) err = utils.CallFuncLogError(func() error { - err := globals2.FreshFoodAPI.NewJDOrder(rec, order.StatusID == jdapi.OrderStatusNew) - return err + return globals2.FreshFoodAPI.NewJDOrder(rec, order.StatusID == jdapi.OrderStatusNew) }, globals2.ErrStrAccessDB) } else { globals.SugarLogger.Errorf("can not get jdorder info:%v", order.BillID) @@ -204,25 +202,21 @@ func normalOrderStatus(order *jdapi.CallbackOrderMsg) error { err := db.Read(rec, "JdOrderId") if err != nil { globals.SugarLogger.Warnf("error when accessing db:%v", err) - return err + } else { + if rec.OrderStatus == utils.Str2Int(order.StatusID) { + globals.SugarLogger.Infof("Duplicate message order:%v", order) + } else { + rec.OrderStatus = utils.Str2Int(order.StatusID) + rec.OrderStatusTime = order.Timestamp + + if err = globals2.FreshFoodAPI.JDOrderStatus(rec); err == nil { + rec.Code = "0" + err = utils.CallFuncLogError(func() error { + _, err := db.Update(rec, "OrderStatus", "OrderStatusTime", "Code") + return err + }, globals2.ErrStrAccessDB) + } + } } - - if rec.OrderStatus == utils.Str2Int(order.StatusID) { - globals.SugarLogger.Infof("Duplicate message order:%v", order) - return nil - } - - rec.OrderStatus = utils.Str2Int(order.StatusID) - rec.OrderStatusTime = order.Timestamp - - if err = globals2.FreshFoodAPI.JDOrderStatus(rec); err != nil { - return err - } - - rec.Code = "0" - utils.CallFuncLogError(func() error { - _, err := db.Update(rec, "OrderStatus", "OrderStatusTime", "Code") - return err - }, globals2.ErrStrAccessDB) return err }