diff --git a/business/partner/purchase/ebai/order.go b/business/partner/purchase/ebai/order.go index 7f13d3ec8..a15219474 100644 --- a/business/partner/purchase/ebai/order.go +++ b/business/partner/purchase/ebai/order.go @@ -88,11 +88,18 @@ func (p *PurchaseHandler) GetOrderStatus(vendorOrgCode, vendorOrderID string) (s } func (p *PurchaseHandler) getOrder(vendorOrderID string) (order *model.GoodsOrder, orderMap map[string]interface{}, err error) { - result, err := api.EbaiAPI.OrderGet(vendorOrderID) - if err == nil { - order = p.Map2Order(result) + for i := 0; i < 2; i++ { + orderMap, err = api.EbaiAPI.OrderGet(vendorOrderID) + if err == nil { + order = p.Map2Order(orderMap) + // 饿百订单有时会出现取不到baidu_shop_id的情况,返回错误让服务器重试 + if order.VendorStoreID != "" { + break + } + } + time.Sleep(100 * time.Millisecond) } - return order, result, err + return order, orderMap, err } func (p *PurchaseHandler) GetOrder4PartRefund(vendorOrderID string) (order *model.GoodsOrder, err error) { @@ -187,15 +194,15 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo vendorOrderID := orderMap["order_id"].(string) order = &model.GoodsOrder{ VendorOrderID: vendorOrderID, - VendorOrderID2: orderMap["eleme_order_id"].(string), + VendorOrderID2: utils.Interface2String(orderMap["eleme_order_id"]), VendorID: model.VendorIDEBAI, - VendorStoreID: shopMap["baidu_shop_id"].(string), + VendorStoreID: utils.Interface2String(shopMap["baidu_shop_id"]), StoreID: int(utils.Str2Int64WithDefault(utils.Interface2String(shopMap["id"]), 0)), - StoreName: shopMap["name"].(string), + StoreName: utils.Interface2String(shopMap["name"]), VendorUserID: utils.Interface2String(userMap["user_id"]), - ConsigneeName: userMap["name"].(string), - ConsigneeMobile: jxutils.FormalizeMobile(userMap["phone"].(string)), - ConsigneeAddress: userMap["address"].(string), + ConsigneeName: utils.Interface2String(userMap["name"]), + ConsigneeMobile: jxutils.FormalizeMobile(utils.Interface2String(userMap["phone"])), + ConsigneeAddress: utils.Interface2String(userMap["address"]), CoordinateType: model.CoordinateTypeBaiDu, BuyerComment: utils.TrimBlankChar(utils.Interface2String(orderMap["remark"])), ExpectedDeliveredTime: getTimeFromInterface(orderMap["send_time"]), @@ -453,6 +460,10 @@ func (c *PurchaseHandler) onOrderNew(msg *ebaiapi.CallbackMsg, orderStatus *mode vendorOrderID := GetOrderIDFromMsg(msg) order, orderMap, err := c.getOrder(vendorOrderID) if err == nil { + // 饿百订单有时会出现取不到baidu_shop_id的情况,返回错误让服务器重试 + if order.VendorStoreID == "" { + return api.EbaiAPI.Err2CallbackResponse(msg.Cmd, fmt.Errorf("订单%s的baidu_shop_id为空", order.VendorOrderID), "") + } if err = partner.CurOrderManager.OnOrderNew(order, orderStatus); err == nil { utils.CallFuncAsync(func() { c.OnOrderDetail(orderMap, partner.CreatedPeration)