diff --git a/business/partner/purchase/ebai/order.go b/business/partner/purchase/ebai/order.go index 9c07bc7cb..e49c77d60 100644 --- a/business/partner/purchase/ebai/order.go +++ b/business/partner/purchase/ebai/order.go @@ -10,6 +10,7 @@ import ( "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" + "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" ) @@ -168,8 +169,10 @@ func (c *PurchaseHandler) onOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaiapi. retVal = c.onOrderNew(msg) } else { status := c.callbackMsg2Status(msg) - err := partner.CurOrderManager.OnOrderStatusChanged(status) - retVal = api.EbaiAPI.Err2CallbackResponse(msg.Cmd, err, nil) + if status != nil { + err := partner.CurOrderManager.OnOrderStatusChanged(status) + retVal = api.EbaiAPI.Err2CallbackResponse(msg.Cmd, err, nil) + } } return retVal } @@ -185,19 +188,23 @@ func (c *PurchaseHandler) onOrderNew(msg *ebaiapi.CallbackMsg) (response *ebaiap }) } -func (c *PurchaseHandler) callbackMsg2Status(msg *ebaiapi.CallbackMsg) *model.OrderStatus { - vendorStatus := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["status"])) - orderID := GetOrderIDFromMsg(msg) - orderStatus := &model.OrderStatus{ - VendorOrderID: orderID, - VendorID: model.VendorIDEBAI, - OrderType: model.OrderTypeOrder, - RefVendorOrderID: orderID, - RefVendorID: model.VendorIDEBAI, - VendorStatus: vendorStatus, - Status: c.GetStatusFromVendorStatus(vendorStatus), - StatusTime: utils.Timestamp2Time(msg.Timestamp), - Remark: utils.Interface2String(msg.Body["reason"]), +func (c *PurchaseHandler) callbackMsg2Status(msg *ebaiapi.CallbackMsg) (orderStatus *model.OrderStatus) { + if status, ok := msg.Body["status"]; ok { + vendorStatus := utils.Int64ToStr(utils.MustInterface2Int64(status)) + orderID := GetOrderIDFromMsg(msg) + orderStatus = &model.OrderStatus{ + VendorOrderID: orderID, + VendorID: model.VendorIDEBAI, + OrderType: model.OrderTypeOrder, + RefVendorOrderID: orderID, + RefVendorID: model.VendorIDEBAI, + VendorStatus: vendorStatus, + Status: c.GetStatusFromVendorStatus(vendorStatus), + StatusTime: utils.Timestamp2Time(msg.Timestamp), + Remark: utils.Interface2String(msg.Body["reason"]), + } + } else { + globals.SugarLogger.Infof("ebai callbackMsg2Status can not find status field in msg:%s", utils.Format4Output(msg, false)) } return orderStatus }