处理饿百订单有时取不到一些字段的情况

This commit is contained in:
gazebo
2019-12-31 08:52:38 +08:00
parent d3a02ef958
commit d01efb378c

View File

@@ -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)