diff --git a/business/scheduler/defsch/defsch.go b/business/scheduler/defsch/defsch.go index 6be81e22e..8978dce72 100644 --- a/business/scheduler/defsch/defsch.go +++ b/business/scheduler/defsch/defsch.go @@ -61,7 +61,7 @@ func init() { // 以下是订单 func (s *DefScheduler) OnOrderNew(order *model.GoodsOrder) (err error) { - config := s.mergeOrderStartConfig(order.Status, s.GetPurchasePlatformFromVendorID(order.VendorID).GetStatusActionConfig(order.Status)) + config := s.mergeOrderStatusConfig(order.Status, s.GetPurchasePlatformFromVendorID(order.VendorID).GetStatusActionConfig(order.Status)) watchInfo := &WatchOrderInfo{ order: order, timer: time.AfterFunc(jxutils.GetRealTimeout(order.OrderCreatedAt, config.Timeout), func() { @@ -77,10 +77,10 @@ func (s *DefScheduler) OnOrderStatusChanged(status *model.OrderStatus) (err erro if savedOrderInfo.timer != nil { savedOrderInfo.timer.Stop() } - if status.Status < model.OrderStatusEndBegin { + if status.Status > model.OrderStatusUnknown && status.Status < model.OrderStatusEndBegin { s.updateOrderByStatus(savedOrderInfo.order, status) - config := s.mergeOrderStartConfig(status.Status, s.GetPurchasePlatformFromVendorID(status.VendorID).GetStatusActionConfig(status.Status)) - if config.TimeoutAction != nil { + config := s.mergeOrderStatusConfig(status.Status, s.GetPurchasePlatformFromVendorID(status.VendorID).GetStatusActionConfig(status.Status)) + if config != nil && config.TimeoutAction != nil { var timeout time.Duration if status.Status == model.OrderStatusAccepted { savedOrderInfo := s.loadWatchOrderFromMap(status.VendorOrderID, status.VendorID) @@ -273,10 +273,15 @@ func (s *DefScheduler) handleAutoAcceptOrder(orderID string, vendorID int, userM return handleType } -func (s *DefScheduler) mergeOrderStartConfig(status int, config *scheduler.StatusActionConfig) (retVal *scheduler.StatusActionConfig) { - retVal = &scheduler.StatusActionConfig{ - Timeout: s.defWorkflowConfig[status].Timeout, - TimeoutAction: s.defWorkflowConfig[status].TimeoutAction, +func (s *DefScheduler) mergeOrderStatusConfig(status int, config *scheduler.StatusActionConfig) (retVal *scheduler.StatusActionConfig) { + defConfig := s.defWorkflowConfig[status] + if defConfig == nil && config == nil { + return nil + } + retVal = &scheduler.StatusActionConfig{} + if defConfig != nil { + retVal.Timeout = defConfig.Timeout + retVal.TimeoutAction = defConfig.TimeoutAction } if config != nil { if config.Timeout >= 0 {