diff --git a/business/partner/purchase/ebai/order.go b/business/partner/purchase/ebai/order.go index a8af0cccd..fd8f425be 100644 --- a/business/partner/purchase/ebai/order.go +++ b/business/partner/purchase/ebai/order.go @@ -21,16 +21,21 @@ import ( ) const ( - acceptOrderDelay = 180 * time.Second - fakePickedUp = "9527" + // acceptOrderDelay = 180 * time.Second + pickupOrderDelay = 240 * time.Second + pickupOrderGap = 30 + // fakePickedUp = "9527" fakeUserApplyCancel = "user_apply_cancel" + fakeAcceptOrder = "accept_order" ) +// 饿百的接单会直接召唤配送,为了统一将饿百的接单影射成拣货完成,然后模拟一个接单消息 + var ( VendorStatus2StatusMap = map[string]int{ ebaiapi.OrderStatusNew: model.OrderStatusNew, - ebaiapi.OrderStatusAccepted: model.OrderStatusAccepted, - fakePickedUp: model.OrderStatusFinishedPickup, + fakeAcceptOrder: model.OrderStatusAccepted, + ebaiapi.OrderStatusAccepted: model.OrderStatusFinishedPickup, fakeUserApplyCancel: model.OrderStatusApplyCancel, ebaiapi.OrderStatusCourierAccepted: model.OrderStatusDelivering, ebaiapi.OrderStatusCourierPickedup: model.OrderStatusDelivering, @@ -148,22 +153,25 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo func (p *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) { globals.SugarLogger.Debugf("ebai AcceptOrRefuseOrder orderID:%s", order.VendorOrderID) - if globals.EnableStoreWrite && globals.EnableEbaiStoreWrite { - if isAcceptIt { - err = api.EbaiAPI.OrderConfirm(order.VendorOrderID) - } else { - err = api.EbaiAPI.OrderCancel(order.VendorOrderID, ebaiapi.CancelTypeCustom, "bu") + if isAcceptIt { + if globals.EnableStoreWrite && globals.EnableEbaiStoreWrite { + p.postFakeOrderAcceptMsg(order.VendorOrderID) } + } else { + err = api.EbaiAPI.OrderCancel(order.VendorOrderID, ebaiapi.CancelTypeCustom, "bu") } return err } func (p *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDeilivery bool, userName string) (err error) { globals.SugarLogger.Debugf("ebai PickupGoods orderID:%s", order.VendorOrderID) - if globals.EnableStoreWrite && globals.EnableEbaiStoreWrite && !isSelfDeilivery { - err = api.EbaiAPI.OrderCallDelivery(order.VendorOrderID) + if globals.EnableStoreWrite && globals.EnableEbaiStoreWrite { + if !isSelfDeilivery { + err = api.EbaiAPI.OrderCallDelivery(order.VendorOrderID) + } else { + err = api.EbaiAPI.OrderConfirm(order.VendorOrderID) + } } - p.postFakeFinishedPickupMsg(order.VendorOrderID) // 饿百没有拣货完成事件,模拟发送 return err } @@ -211,18 +219,18 @@ func (c *PurchaseHandler) onOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaiapi. err := partner.CurOrderManager.OnOrderStatusChanged(status) // 如果订单所属的门店是专送模式,直接跳到拣货完成,因为饿百没有拣货完成的概念,接单就视为拣货完成 - if status.Status == model.OrderStatusAccepted { - postFakeFinishedPickupMsg := true - vendorOrderID := GetOrderIDFromMsg(msg) - if order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, model.VendorIDEBAI); err == nil { - if c.getOrderStoreDeliveryType(order) != scheduler.StoreDeliveryTypeByPlatform { - postFakeFinishedPickupMsg = false - } - } - if postFakeFinishedPickupMsg { - c.postFakeFinishedPickupMsg(vendorOrderID) - } - } + // if status.Status == model.OrderStatusAccepted { + // postFakeFinishedPickupMsg := true + // vendorOrderID := GetOrderIDFromMsg(msg) + // if order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, model.VendorIDEBAI); err == nil { + // if c.getOrderStoreDeliveryType(order) != scheduler.StoreDeliveryTypeByPlatform { + // postFakeFinishedPickupMsg = false + // } + // } + // if postFakeFinishedPickupMsg { + // c.postFakeOrderAcceptMsg(vendorOrderID) + // } + // } retVal = api.EbaiAPI.Err2CallbackResponse(msg.Cmd, err, nil) } else { retVal = api.EbaiAPI.Err2CallbackResponse(msg.Cmd, nil, nil) @@ -278,9 +286,10 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *ebaiapi.CallbackMsg) (orderSta } func (c *PurchaseHandler) GetStatusActionTimeout(statusType, status int) (params *partner.StatusActionParams) { - if statusType == scheduler.TimerStatusTypeOrder && status == model.OrderStatusNew { - params = &partner.StatusActionParams{ // 饿百开了专送店的订单没有拣货状态,接单后就为拣货完成,所以要延迟接单,否则门店来不及备货 - Timeout: acceptOrderDelay, + if statusType == scheduler.TimerStatusTypeOrder && status == model.OrderStatusAccepted { + params = &partner.StatusActionParams{ // 饿百要求在5分钟内拣货,不然订单会被取消 + Timeout: pickupOrderDelay, + TimeoutGap: pickupOrderGap, } } return params @@ -304,12 +313,12 @@ func (c *PurchaseHandler) getOrderStoreDeliveryType(order *model.GoodsOrder) (de return scheduler.StoreDeliveryTypeByPlatform } -func (c *PurchaseHandler) postFakeFinishedPickupMsg(vendorOrderID string) { +func (c *PurchaseHandler) postFakeOrderAcceptMsg(vendorOrderID string) { msg := &ebaiapi.CallbackMsg{ Cmd: ebaiapi.CmdOrderStatus, Timestamp: time.Now().Unix(), Body: map[string]interface{}{ - "status": json.Number(fakePickedUp), // json.Number实际是string + "status": json.Number(fakeAcceptOrder), // json.Number实际是string "order_id": vendorOrderID, }, }