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

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 (
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,
},
}