! 新增饿百假接单消息,将饿百的接单当成拣货完成

This commit is contained in:
gazebo
2019-03-26 16:23:46 +08:00
parent 087feb94ed
commit d8a3d69f19

View File

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