From 157ddbe590b5c8453afd6af577ace69949a2122b Mon Sep 17 00:00:00 2001 From: gazebo Date: Thu, 26 Jul 2018 14:31:20 +0800 Subject: [PATCH] - fix resetTimer error. --- business/scheduler/defsch/defsch.go | 15 ++++++++++----- business/scheduler/scheduler.go | 8 ++++---- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/business/scheduler/defsch/defsch.go b/business/scheduler/defsch/defsch.go index 91bd906a0..62cd209e9 100644 --- a/business/scheduler/defsch/defsch.go +++ b/business/scheduler/defsch/defsch.go @@ -352,7 +352,7 @@ func (s *DefScheduler) resetTimer(savedOrderInfo *WatchOrderInfo, statusType, st if config == nil || config.TimerType != scheduler.TimerTypeByPass { s.stopTimer(savedOrderInfo) } - if config != nil && config.TimeoutAction != nil && config.TimerType != scheduler.TimerTypeNoTimer && config.TimerType != scheduler.TimerTypeByPass { + if config != nil && config.TimeoutAction != nil && config.TimerType != scheduler.TimerTypeByPass { var timeout time.Duration switch config.TimerType { case scheduler.TimerTypeBaseNow: @@ -389,7 +389,7 @@ func (s *DefScheduler) resetTimer(savedOrderInfo *WatchOrderInfo, statusType, st }, order.VendorOrderID) }) } - globals.SugarLogger.Debugf("resetTimer orderID:%s, status:%d, timeout:%v", order.VendorOrderID, status, timeout) + globals.SugarLogger.Debugf("resetTimer, orderID:%s, status:%d, timeout:%v", order.VendorOrderID, status, timeout) } } } @@ -433,13 +433,18 @@ func (s *DefScheduler) mergeOrderStatusConfig(statusType, status int, config *sc } retVal = &scheduler.StatusActionConfig{} if defConfig != nil { - retVal.Timeout = defConfig.Timeout - retVal.TimeoutAction = defConfig.TimeoutAction + *retVal = *defConfig } if config != nil { - if config.Timeout >= 0 { + if config.Timeout != 0 { retVal.Timeout = config.Timeout } + if config.TimerType != scheduler.TimerTypeNoOverride { + retVal.TimerType = config.TimerType + } + if config.TimeoutGap != 0 { + retVal.TimeoutGap = config.TimeoutGap + } if config.TimeoutAction != nil { retVal.TimeoutAction = config.TimeoutAction } diff --git a/business/scheduler/scheduler.go b/business/scheduler/scheduler.go index 68b1c3519..7f2884ef0 100644 --- a/business/scheduler/scheduler.go +++ b/business/scheduler/scheduler.go @@ -17,7 +17,7 @@ const ( ) const ( - TimerTypeNoTimer = 0 // 即此状态没有TIMER(但为停掉之前的TIMER,如果要保持TIMER应该用TimerTypeByPass),状态没有配置缺省就是没有TIMER + TimerTypeNoOverride = 0 // GetStatusActionConfig 返回表示不修改缺省配置 TimerTypeByPass = 1 TimerTypeBaseNow = 2 TimerTypeBaseStatusTime = 3 @@ -38,9 +38,9 @@ var ( type StatusActionConfig struct { TimerType int // 参见上面的相关常量定义 - Timeout time.Duration // 超时时间,为0表示立即执行(其实也不能立即执行,因为有最小时间限制) - TimeoutGap int // 以秒为单位的随机时间,0表示不随机 - TimeoutAction func(order *model.GoodsOrder) (err error) // 超时后需要执行的动作,为nil表示此状态不需要执行监控 + Timeout time.Duration // 超时时间,0在GetStatusActionConfig返回时表示不修改缺省 + TimeoutGap int // 以秒为单位的随机时间,0在GetStatusActionConfig返回时表示不修改缺省 + TimeoutAction func(order *model.GoodsOrder) (err error) // 超时后需要执行的动作,为nil表示此状态不需要执行监控, nil在GetStatusActionConfig返回时表示不修改缺省 } type PurchasePlatformHandler interface {