- 饿百运单取消事件创建三方运单不直接由取消事件触发,改过TIMER延迟5秒触发,以避免饿百订单取消时不必要的创建三方运单的问题

This commit is contained in:
gazebo
2019-05-31 14:07:06 +08:00
parent 0114f078dd
commit d67e84f3f3

View File

@@ -72,7 +72,7 @@ type WatchOrderInfo struct {
type StatusActionConfig struct { type StatusActionConfig struct {
partner.StatusActionParams partner.StatusActionParams
TimeoutAction func(savedOrderInfo *WatchOrderInfo) (err error) // 超时后需要执行的动作为nil表示此状态不需要执行监控 nil在GetStatusActionConfig返回时表示不修改缺省 TimeoutAction func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) // 超时后需要执行的动作为nil表示此状态不需要执行监控 nil在GetStatusActionConfig返回时表示不修改缺省
ShouldSetTimer func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool ShouldSetTimer func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool
} }
@@ -141,7 +141,7 @@ func init() {
TimerType: partner.TimerTypeBaseStatusTime, TimerType: partner.TimerTypeBaseStatusTime,
Timeout: 10 * time.Millisecond, Timeout: 10 * time.Millisecond,
}, },
TimeoutAction: func(savedOrderInfo *WatchOrderInfo) (err error) { TimeoutAction: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
order := savedOrderInfo.order order := savedOrderInfo.order
mobile := order.ConsigneeMobile mobile := order.ConsigneeMobile
if order.ConsigneeMobile2 != "" { if order.ConsigneeMobile2 != "" {
@@ -184,7 +184,7 @@ func init() {
Timeout: time2AutoPickupMin, Timeout: time2AutoPickupMin,
TimeoutGap: second2AutoPickupGap, TimeoutGap: second2AutoPickupGap,
}, },
TimeoutAction: func(savedOrderInfo *WatchOrderInfo) (err error) { TimeoutAction: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
if savedOrderInfo.autoPickupTimeoutMinute > 0 { if savedOrderInfo.autoPickupTimeoutMinute > 0 {
if err = sch.autoPickupGood(savedOrderInfo); err != nil { if err = sch.autoPickupGood(savedOrderInfo); err != nil {
partner.CurOrderManager.OnOrderMsg(savedOrderInfo.order, "自动拣货失败", err.Error()) partner.CurOrderManager.OnOrderMsg(savedOrderInfo.order, "自动拣货失败", err.Error())
@@ -202,7 +202,7 @@ func init() {
Timeout: 1 * time.Second, Timeout: 1 * time.Second,
TimeoutGap: 0, TimeoutGap: 0,
}, },
TimeoutAction: func(savedOrderInfo *WatchOrderInfo) (err error) { TimeoutAction: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
if savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore { // 自配送商家使用 if savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore { // 自配送商家使用
return sch.createWaybillOn3rdProviders(savedOrderInfo, nil) return sch.createWaybillOn3rdProviders(savedOrderInfo, nil)
} }
@@ -220,7 +220,7 @@ func init() {
TimerType: partner.TimerTypeBaseStatusTime, TimerType: partner.TimerTypeBaseStatusTime,
Timeout: minute2Schedule3rdCarrier * time.Minute, Timeout: minute2Schedule3rdCarrier * time.Minute,
}, },
TimeoutAction: func(savedOrderInfo *WatchOrderInfo) (err error) { TimeoutAction: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
// 饿百转自送的时机不太清楚,暂时禁用超时转自送,在饿百运单取消时还是会自动创建 // 饿百转自送的时机不太清楚,暂时禁用超时转自送,在饿百运单取消时还是会自动创建
if savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore && savedOrderInfo.order.VendorID != model.VendorIDEBAI { // 非自配送商家使用 if savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore && savedOrderInfo.order.VendorID != model.VendorIDEBAI { // 非自配送商家使用
return sch.createWaybillOn3rdProviders(savedOrderInfo, nil) return sch.createWaybillOn3rdProviders(savedOrderInfo, nil)
@@ -228,29 +228,36 @@ func init() {
return nil return nil
}, },
ShouldSetTimer: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool { ShouldSetTimer: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool {
return savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore && savedOrderInfo.order.VendorID != model.VendorIDEBAI return savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore &&
savedOrderInfo.order.VendorID == bill.WaybillVendorID &&
savedOrderInfo.order.VendorID != model.VendorIDEBAI
}, },
}, },
/* //*
model.WaybillStatusCanceled: &StatusActionConfig{ model.WaybillStatusCanceled: &StatusActionConfig{
StatusActionParams: partner.StatusActionParams{ StatusActionParams: partner.StatusActionParams{
TimerType: partner.TimerTypeBaseOrderCreatedAt, TimerType: partner.TimerTypeBaseNow,
Timeout: minute2Schedule3rdCarrier4Ebai * time.Minute, Timeout: 5 * time.Second,
},
TimeoutAction: func(savedOrderInfo *WatchOrderInfo) (err error) {
// 饿百转自送的时机不太清楚,暂时禁用超时转自送,在饿百运单取消时还是会自动创建
order := savedOrderInfo.order
if (order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) && savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore && order.VendorID == model.VendorIDEBAI { // 非自配送商家使用
return sch.createWaybillOn3rdProviders(savedOrderInfo, nil)
}
return nil
},
ShouldSetTimer: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool {
order := savedOrderInfo.order
return (order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) && savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore && order.VendorID == model.VendorIDEBAI
},
}, },
*/ TimeoutAction: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
order := savedOrderInfo.order
if (order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) &&
savedOrderInfo.order.VendorID == bill.WaybillVendorID &&
savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore &&
order.VendorID == model.VendorIDEBAI { // 非自配送商家使用
return sch.createWaybillOn3rdProviders(savedOrderInfo, nil)
}
return nil
},
ShouldSetTimer: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool {
order := savedOrderInfo.order
return (order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) &&
savedOrderInfo.order.VendorID == bill.WaybillVendorID &&
savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore &&
order.VendorID == model.VendorIDEBAI
},
},
//*/
}, },
} }
} }
@@ -483,7 +490,7 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
// 之前的条件是order.Status < model.OrderStatusDelivering但像订单902322817000122确实有在配送中取消状态改成非订单结束状态都可以 // 之前的条件是order.Status < model.OrderStatusDelivering但像订单902322817000122确实有在配送中取消状态改成非订单结束状态都可以
// OrderStatusFinishedPickup状态的订单依赖于TIMER重新建运单 // OrderStatusFinishedPickup状态的订单依赖于TIMER重新建运单
if bill.DeliveryFlag&model.WaybillDeliveryFlagMaskActiveCancel == 0 { if bill.DeliveryFlag&model.WaybillDeliveryFlagMaskActiveCancel == 0 {
if (order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) && (bill.WaybillVendorID != order.VendorID || bill.WaybillVendorID == model.VendorIDEBAI) { if (order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) && (bill.WaybillVendorID != order.VendorID /* || bill.WaybillVendorID == model.VendorIDEBAI*/) {
s.createWaybillOn3rdProviders(savedOrderInfo, nil) s.createWaybillOn3rdProviders(savedOrderInfo, nil)
} }
} }
@@ -733,7 +740,7 @@ func (s *DefScheduler) resetTimer(savedOrderInfo *WatchOrderInfo, bill *model.Wa
timeout = 0 timeout = 0
} }
if timeout == 0 { if timeout == 0 {
config.TimeoutAction(savedOrderInfo) config.TimeoutAction(savedOrderInfo, bill)
} else { } else {
timerName := "" timerName := ""
if statusType == scheduler.TimerStatusTypeOrder { if statusType == scheduler.TimerStatusTypeOrder {
@@ -748,7 +755,7 @@ func (s *DefScheduler) resetTimer(savedOrderInfo *WatchOrderInfo, bill *model.Wa
jxutils.CallMsgHandlerAsync(func() { jxutils.CallMsgHandlerAsync(func() {
globals.SugarLogger.Debugf("fire timer:%s, orderID:%s", timerName, order.VendorOrderID) globals.SugarLogger.Debugf("fire timer:%s, orderID:%s", timerName, order.VendorOrderID)
savedOrderInfo := s.loadSavedOrderFromMap(model.Order2Status(order), true) savedOrderInfo := s.loadSavedOrderFromMap(model.Order2Status(order), true)
config.TimeoutAction(savedOrderInfo) config.TimeoutAction(savedOrderInfo, bill)
savedOrderInfo.timerStatus = 0 savedOrderInfo.timerStatus = 0
savedOrderInfo.timerStatusType = scheduler.TimerStatusTypeUnknown savedOrderInfo.timerStatusType = scheduler.TimerStatusTypeUnknown
}, jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID)) }, jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID))