- use GoodsOrder.PickDeadline to set auto pick timer, resetTimer
This commit is contained in:
@@ -25,8 +25,8 @@ const (
|
||||
time2Delivered = 1 * time.Hour // 正常从下单到送达的时间。
|
||||
time2Schedule3rdCarrier = 20 // 京东要求5分钟后才能转自送,保险起见,设置为5分半钟
|
||||
// time2Schedule3rdCarrierGap4OrderStatus = 3 * time.Minute // 京东要求是运单状态为待抢单且超时5分钟,但为了防止没有运单事件,所以就拣货完成事件开始算,添加3分钟
|
||||
time2AutoPickupMin = 15 * time.Minute
|
||||
time2AutoPickupGap = 5 * 60 //随机5分钟
|
||||
time2AutoPickupMin = 15 * time.Minute // 自动拣货等待时间,这个只有在没有PickDeadline信息才有用,否则会根据PickDeadline设置
|
||||
time2AutoPickupGap = 5 * 60 //随机5分钟
|
||||
|
||||
// (把pending order timerout 在-pendingOrderTimerMinMinSecond至pendingOrderTimerMaxSecond映射到pendingOrderTimerMinSecond至pendingOrderTimerMaxSecond)
|
||||
pendingOrderTimerMinMinSecond = 5 * 60 // 5分钟
|
||||
@@ -657,21 +657,30 @@ func (s *DefScheduler) resetTimer(savedOrderInfo *WatchOrderInfo, bill *model.Wa
|
||||
s.stopTimer(savedOrderInfo)
|
||||
}
|
||||
if config != nil && config.TimeoutAction != nil && config.TimerType != scheduler.TimerTypeByPass {
|
||||
// 对于自动拣货,以订单中的设置为准
|
||||
if statusType == scheduler.TimerStatusTypeOrder && status == model.OrderStatusAccepted && savedOrderInfo.autoPickupTimeoutMinute > 1 {
|
||||
config.Timeout = time.Duration(savedOrderInfo.autoPickupTimeoutMinute) * time.Minute
|
||||
nowTime := time.Now()
|
||||
configTimerType := config.TimerType
|
||||
if statusType == scheduler.TimerStatusTypeOrder && status == model.OrderStatusAccepted { // 自动拣货的TIMER,特殊处理
|
||||
if !utils.IsTimeZero(order.PickDeadline) { // 如果有PickDeadline值,特殊处理
|
||||
configTimerType = scheduler.TimerTypeBaseNow
|
||||
config.Timeout = order.PickDeadline.Sub(nowTime) - 5*time.Second
|
||||
if config.TimeoutGap != 0 {
|
||||
config.Timeout -= time.Duration(config.TimeoutGap) * time.Second
|
||||
}
|
||||
} else if savedOrderInfo.autoPickupTimeoutMinute > 1 { // 对于自动拣货,以订单中的设置为准
|
||||
config.Timeout = time.Duration(savedOrderInfo.autoPickupTimeoutMinute) * time.Minute
|
||||
}
|
||||
}
|
||||
var timeout time.Duration
|
||||
switch config.TimerType {
|
||||
switch configTimerType {
|
||||
case scheduler.TimerTypeBaseNow:
|
||||
timeout = config.Timeout
|
||||
case scheduler.TimerTypeBaseStatusTime:
|
||||
timeout = statusTime.Sub(time.Now()) + config.Timeout
|
||||
timeout = statusTime.Sub(nowTime) + config.Timeout
|
||||
case scheduler.TimerTypeBaseExpectedDeliveredTime:
|
||||
if order.BusinessType == model.BusinessTypeDingshida && order.ExpectedDeliveredTime != utils.DefaultTimeValue {
|
||||
if order.BusinessType == model.BusinessTypeDingshida && !utils.IsTimeZero(order.ExpectedDeliveredTime) {
|
||||
statusTime = order.ExpectedDeliveredTime.Add(-time2Delivered)
|
||||
}
|
||||
timeout = statusTime.Sub(time.Now()) + config.Timeout
|
||||
timeout = statusTime.Sub(nowTime) + config.Timeout
|
||||
default:
|
||||
panic("TimerType is wrong!!!")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user