- 饿百运单取消事件创建三方运单不直接由取消事件触发,改过TIMER延迟5秒触发,以避免饿百订单取消时不必要的创建三方运单的问题
This commit is contained in:
@@ -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))
|
||||||
|
|||||||
Reference in New Issue
Block a user