- fix resetTimer error.

This commit is contained in:
gazebo
2018-07-26 14:31:20 +08:00
parent 2b481691bf
commit 157ddbe590
2 changed files with 14 additions and 9 deletions

View File

@@ -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
}

View File

@@ -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 {