From 308b5b2cefe3d12ae719b00c133946029a678e73 Mon Sep 17 00:00:00 2001 From: gazebo Date: Thu, 19 Jul 2018 12:27:53 +0800 Subject: [PATCH] - fixed a bug, savedOrderInfo.timer is nil. --- business/scheduler/defsch/defsch.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/business/scheduler/defsch/defsch.go b/business/scheduler/defsch/defsch.go index 15a25a8f2..b5c9b4444 100644 --- a/business/scheduler/defsch/defsch.go +++ b/business/scheduler/defsch/defsch.go @@ -86,7 +86,7 @@ func (s *DefScheduler) OnOrderStatusChanged(status *model.OrderStatus) (err erro } s.resetTimer(status.Status, savedOrderInfo, gap) } else { - savedOrderInfo.timer.Stop() + s.stopTimer(savedOrderInfo) s.orderMap.Delete(jxutils.GetUniversalOrderIDFromOrderStatus(status)) } return err @@ -114,7 +114,7 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill) (err error) { if findIt { switch bill.Status { case model.WaybillStatusAccepted: - savedOrderInfo.timer.Stop() // todo 这里应该另外启动一个TIMER + s.stopTimer(savedOrderInfo) // todo 这里应该另外启动一个TIMER s.cancelOtherWaybills(bill) s.CurOrderManager.UpdateWaybillVendorID(bill) @@ -245,10 +245,14 @@ func (s *DefScheduler) getLatestPickupTimeout(order *model.GoodsOrder, configTim return jxutils.GetRealTimeout(beginTime, configTimeout) } -func (s *DefScheduler) resetTimer(status int, savedOrderInfo *WatchOrderInfo, gap time.Duration) { +func (s *DefScheduler) stopTimer(savedOrderInfo *WatchOrderInfo) { if savedOrderInfo.timer != nil { savedOrderInfo.timer.Stop() } +} + +func (s *DefScheduler) resetTimer(status int, savedOrderInfo *WatchOrderInfo, gap time.Duration) { + s.stopTimer(savedOrderInfo) config := s.mergeOrderStatusConfig(status, s.GetPurchasePlatformFromVendorID(savedOrderInfo.order.VendorID).GetStatusActionConfig(status)) if config != nil && config.TimeoutAction != nil { var timeout time.Duration