From d67e84f3f3714b9d0f310e90ffd2710396b27255 Mon Sep 17 00:00:00 2001 From: gazebo Date: Fri, 31 May 2019 14:07:06 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E9=A5=BF=E7=99=BE=E8=BF=90=E5=8D=95?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E4=BA=8B=E4=BB=B6=E5=88=9B=E5=BB=BA=E4=B8=89?= =?UTF-8?q?=E6=96=B9=E8=BF=90=E5=8D=95=E4=B8=8D=E7=9B=B4=E6=8E=A5=E7=94=B1?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E4=BA=8B=E4=BB=B6=E8=A7=A6=E5=8F=91=EF=BC=8C?= =?UTF-8?q?=E6=94=B9=E8=BF=87TIMER=E5=BB=B6=E8=BF=9F5=E7=A7=92=E8=A7=A6?= =?UTF-8?q?=E5=8F=91=EF=BC=8C=E4=BB=A5=E9=81=BF=E5=85=8D=E9=A5=BF=E7=99=BE?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=8F=96=E6=B6=88=E6=97=B6=E4=B8=8D=E5=BF=85?= =?UTF-8?q?=E8=A6=81=E7=9A=84=E5=88=9B=E5=BB=BA=E4=B8=89=E6=96=B9=E8=BF=90?= =?UTF-8?q?=E5=8D=95=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jxcallback/scheduler/defsch/defsch.go | 63 ++++++++++--------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 658e022a4..c368005df 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -72,7 +72,7 @@ type WatchOrderInfo struct { type StatusActionConfig struct { 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 } @@ -141,7 +141,7 @@ func init() { TimerType: partner.TimerTypeBaseStatusTime, Timeout: 10 * time.Millisecond, }, - TimeoutAction: func(savedOrderInfo *WatchOrderInfo) (err error) { + TimeoutAction: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) { order := savedOrderInfo.order mobile := order.ConsigneeMobile if order.ConsigneeMobile2 != "" { @@ -184,7 +184,7 @@ func init() { Timeout: time2AutoPickupMin, TimeoutGap: second2AutoPickupGap, }, - TimeoutAction: func(savedOrderInfo *WatchOrderInfo) (err error) { + TimeoutAction: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) { if savedOrderInfo.autoPickupTimeoutMinute > 0 { if err = sch.autoPickupGood(savedOrderInfo); err != nil { partner.CurOrderManager.OnOrderMsg(savedOrderInfo.order, "自动拣货失败", err.Error()) @@ -202,7 +202,7 @@ func init() { Timeout: 1 * time.Second, TimeoutGap: 0, }, - TimeoutAction: func(savedOrderInfo *WatchOrderInfo) (err error) { + TimeoutAction: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) { if savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore { // 自配送商家使用 return sch.createWaybillOn3rdProviders(savedOrderInfo, nil) } @@ -220,7 +220,7 @@ func init() { TimerType: partner.TimerTypeBaseStatusTime, 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 { // 非自配送商家使用 return sch.createWaybillOn3rdProviders(savedOrderInfo, nil) @@ -228,29 +228,36 @@ func init() { return nil }, 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{ - StatusActionParams: partner.StatusActionParams{ - TimerType: partner.TimerTypeBaseOrderCreatedAt, - Timeout: minute2Schedule3rdCarrier4Ebai * time.Minute, - }, - 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 - }, + //* + model.WaybillStatusCanceled: &StatusActionConfig{ + StatusActionParams: partner.StatusActionParams{ + TimerType: partner.TimerTypeBaseNow, + Timeout: 5 * time.Second, }, - */ + 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确实有在配送中取消状态,改成非订单结束状态都可以 // OrderStatusFinishedPickup状态的订单依赖于TIMER重新建运单 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) } } @@ -733,7 +740,7 @@ func (s *DefScheduler) resetTimer(savedOrderInfo *WatchOrderInfo, bill *model.Wa timeout = 0 } if timeout == 0 { - config.TimeoutAction(savedOrderInfo) + config.TimeoutAction(savedOrderInfo, bill) } else { timerName := "" if statusType == scheduler.TimerStatusTypeOrder { @@ -748,7 +755,7 @@ func (s *DefScheduler) resetTimer(savedOrderInfo *WatchOrderInfo, bill *model.Wa jxutils.CallMsgHandlerAsync(func() { globals.SugarLogger.Debugf("fire timer:%s, orderID:%s", timerName, order.VendorOrderID) savedOrderInfo := s.loadSavedOrderFromMap(model.Order2Status(order), true) - config.TimeoutAction(savedOrderInfo) + config.TimeoutAction(savedOrderInfo, bill) savedOrderInfo.timerStatus = 0 savedOrderInfo.timerStatusType = scheduler.TimerStatusTypeUnknown }, jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID))