- fixed panic caused by other status in mergeOrderStatusConfig.
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user