饿百在发送运单取消事件后,如果订单没有及时(具体时间未知)转出自送,则订单会被取消,且不会发送订单取消事件
This commit is contained in:
@@ -300,19 +300,20 @@ func init() {
|
|||||||
// 饿百转自送的时机不太清楚,暂时禁用超时转自送,在饿百运单取消时还是会自动创建
|
// 饿百转自送的时机不太清楚,暂时禁用超时转自送,在饿百运单取消时还是会自动创建
|
||||||
// 非自配送商家使用
|
// 非自配送商家使用
|
||||||
order := savedOrderInfo.order
|
order := savedOrderInfo.order
|
||||||
return savedOrderInfo.isDeliveryCompetition &&
|
return order.VendorID != model.VendorIDEBAI &&
|
||||||
model.IsOrderDeliveryByPlatform(order) &&
|
|
||||||
order.VendorID == bill.WaybillVendorID &&
|
order.VendorID == bill.WaybillVendorID &&
|
||||||
order.VendorID != model.VendorIDEBAI &&
|
savedOrderInfo.isDeliveryCompetition &&
|
||||||
|
model.IsOrderDeliveryByPlatform(order) &&
|
||||||
order.DeliveryType != model.OrderDeliveryTypeSelfTake &&
|
order.DeliveryType != model.OrderDeliveryTypeSelfTake &&
|
||||||
isOrderCanSwitch2SelfDeliver(order)
|
isOrderCanSwitch2SelfDeliver(order) &&
|
||||||
|
(order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
//*
|
//*
|
||||||
model.WaybillStatusCanceled: &StatusActionConfig{
|
model.WaybillStatusCanceled: &StatusActionConfig{
|
||||||
StatusActionParams: partner.StatusActionParams{
|
StatusActionParams: partner.StatusActionParams{
|
||||||
TimerType: partner.TimerTypeBaseNow,
|
TimerType: partner.TimerTypeBaseNow,
|
||||||
Timeout: 5 * time.Second,
|
Timeout: 1 * time.Second,
|
||||||
},
|
},
|
||||||
TimeoutAction: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
|
TimeoutAction: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
|
||||||
return sch.createWaybillOn3rdProviders(savedOrderInfo, ebaiCancelWaybillMaxFee, nil)
|
return sch.createWaybillOn3rdProviders(savedOrderInfo, ebaiCancelWaybillMaxFee, nil)
|
||||||
@@ -320,13 +321,13 @@ func init() {
|
|||||||
ShouldSetTimer: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool {
|
ShouldSetTimer: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool {
|
||||||
order := savedOrderInfo.order
|
order := savedOrderInfo.order
|
||||||
// 非自配送商家使用
|
// 非自配送商家使用
|
||||||
return (order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) &&
|
return order.VendorID == model.VendorIDEBAI &&
|
||||||
savedOrderInfo.isDeliveryCompetition &&
|
|
||||||
order.VendorID == bill.WaybillVendorID &&
|
order.VendorID == bill.WaybillVendorID &&
|
||||||
|
savedOrderInfo.isDeliveryCompetition &&
|
||||||
model.IsOrderDeliveryByPlatform(order) &&
|
model.IsOrderDeliveryByPlatform(order) &&
|
||||||
order.VendorID == model.VendorIDEBAI &&
|
|
||||||
order.DeliveryType != model.OrderDeliveryTypeSelfTake &&
|
order.DeliveryType != model.OrderDeliveryTypeSelfTake &&
|
||||||
isOrderCanSwitch2SelfDeliver(order)
|
isOrderCanSwitch2SelfDeliver(order) &&
|
||||||
|
(order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
//*/
|
//*/
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ const (
|
|||||||
fakeUserUndoApplyCancel = "fake_user_undo_apply_cancel"
|
fakeUserUndoApplyCancel = "fake_user_undo_apply_cancel"
|
||||||
fakeAcceptOrder = "fake_accept_order"
|
fakeAcceptOrder = "fake_accept_order"
|
||||||
fakeOrderAdjustFinished = "fake_order_adjust_finished"
|
fakeOrderAdjustFinished = "fake_order_adjust_finished"
|
||||||
|
fakeOrderCanceled = "fake_order_canceled"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 饿百的接单会直接召唤配送,为了统一将饿百的接单影射成拣货完成,然后模拟一个接单消息
|
// 饿百的接单会直接召唤配送,为了统一将饿百的接单影射成拣货完成,然后模拟一个接单消息
|
||||||
@@ -50,6 +51,7 @@ var (
|
|||||||
fakeOrderAdjustFinished: model.OrderStatusAdjust,
|
fakeOrderAdjustFinished: model.OrderStatusAdjust,
|
||||||
fakeUserApplyCancel: model.OrderStatusApplyCancel,
|
fakeUserApplyCancel: model.OrderStatusApplyCancel,
|
||||||
fakeUserUndoApplyCancel: model.OrderStatusUndoApplyCancel,
|
fakeUserUndoApplyCancel: model.OrderStatusUndoApplyCancel,
|
||||||
|
fakeOrderCanceled: model.OrderStatusCanceled,
|
||||||
}
|
}
|
||||||
|
|
||||||
skuActTypeMap = map[string]int{
|
skuActTypeMap = map[string]int{
|
||||||
@@ -341,8 +343,11 @@ func (p *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName s
|
|||||||
if err = api.EbaiAPI.OrderSwitchselfdelivery(order.VendorOrderID); err != nil {
|
if err = api.EbaiAPI.OrderSwitchselfdelivery(order.VendorOrderID); err != nil {
|
||||||
if utils.IsErrMatch(err, "301251", nil) {
|
if utils.IsErrMatch(err, "301251", nil) {
|
||||||
if deliveryStatus, err2 := api.EbaiAPI.OrderDeliveryGet(order.VendorOrderID); err2 == nil {
|
if deliveryStatus, err2 := api.EbaiAPI.OrderDeliveryGet(order.VendorOrderID); err2 == nil {
|
||||||
if utils.Int64ToStr(utils.MustInterface2Int64(deliveryStatus["status"])) == ebaiapi.WaybillStatusSelfDelivery {
|
deliveryStatus := utils.Int64ToStr(utils.MustInterface2Int64(deliveryStatus["status"]))
|
||||||
|
if deliveryStatus == ebaiapi.WaybillStatusSelfDelivery {
|
||||||
err = nil
|
err = nil
|
||||||
|
} else if deliveryStatus == ebaiapi.WaybillStatusDeliveryCancled {
|
||||||
|
p.trySyncCancelStatus(order.VendorOrderID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -355,6 +360,16 @@ func (p *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName s
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *PurchaseHandler) trySyncCancelStatus(vendorOrderID string) (err error) {
|
||||||
|
orderInfo, err := api.EbaiAPI.OrderGet2(vendorOrderID)
|
||||||
|
if err == nil {
|
||||||
|
if utils.Int2Str(orderInfo.Order.Status) == ebaiapi.OrderStatusCanceled {
|
||||||
|
p.postFakeMsg(vendorOrderID, fakeOrderCanceled)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
// 将订单从购物平台配送转为自送后又送达
|
// 将订单从购物平台配送转为自送后又送达
|
||||||
func (p *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) {
|
func (p *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) {
|
||||||
globals.SugarLogger.Debugf("ebai Swtich2SelfDelivered orderID:%s", order.VendorOrderID)
|
globals.SugarLogger.Debugf("ebai Swtich2SelfDelivered orderID:%s", order.VendorOrderID)
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package ebai
|
package ebai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
@@ -9,6 +11,10 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
timeout4WaybillCancel = 10 * time.Minute // 饿百发送运单取消消息10分钟后,如果没有转自送,就要取消订单,且不再发送订单取消消息
|
||||||
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
VendorWaybillStatus2StatusMap = map[string]int{
|
VendorWaybillStatus2StatusMap = map[string]int{
|
||||||
ebaiapi.WaybillStatusNew: model.WaybillStatusUnknown,
|
ebaiapi.WaybillStatusNew: model.WaybillStatusUnknown,
|
||||||
@@ -44,6 +50,14 @@ func (c *PurchaseHandler) onWaybillMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaiap
|
|||||||
order.CourierName = utils.Interface2String(result["name"])
|
order.CourierName = utils.Interface2String(result["name"])
|
||||||
order.CourierMobile = utils.Interface2String(result["phone"])
|
order.CourierMobile = utils.Interface2String(result["phone"])
|
||||||
}
|
}
|
||||||
|
} else if order.Status == model.WaybillStatusCanceled {
|
||||||
|
utils.AfterFuncWithRecover(timeout4WaybillCancel, func() {
|
||||||
|
if localOrder, err2 := partner.CurOrderManager.LoadOrder(order.VendorOrderID, model.VendorIDEBAI); err2 == nil {
|
||||||
|
if localOrder.Status < model.OrderStatusEndBegin {
|
||||||
|
c.trySyncCancelStatus(order.VendorOrderID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
return api.EbaiAPI.Err2CallbackResponse(msg.Cmd, partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus)
|
return api.EbaiAPI.Err2CallbackResponse(msg.Cmd, partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user