- 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) {
|
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{
|
watchInfo := &WatchOrderInfo{
|
||||||
order: order,
|
order: order,
|
||||||
timer: time.AfterFunc(jxutils.GetRealTimeout(order.OrderCreatedAt, config.Timeout), func() {
|
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 {
|
if savedOrderInfo.timer != nil {
|
||||||
savedOrderInfo.timer.Stop()
|
savedOrderInfo.timer.Stop()
|
||||||
}
|
}
|
||||||
if status.Status < model.OrderStatusEndBegin {
|
if status.Status > model.OrderStatusUnknown && status.Status < model.OrderStatusEndBegin {
|
||||||
s.updateOrderByStatus(savedOrderInfo.order, status)
|
s.updateOrderByStatus(savedOrderInfo.order, status)
|
||||||
config := s.mergeOrderStartConfig(status.Status, s.GetPurchasePlatformFromVendorID(status.VendorID).GetStatusActionConfig(status.Status))
|
config := s.mergeOrderStatusConfig(status.Status, s.GetPurchasePlatformFromVendorID(status.VendorID).GetStatusActionConfig(status.Status))
|
||||||
if config.TimeoutAction != nil {
|
if config != nil && config.TimeoutAction != nil {
|
||||||
var timeout time.Duration
|
var timeout time.Duration
|
||||||
if status.Status == model.OrderStatusAccepted {
|
if status.Status == model.OrderStatusAccepted {
|
||||||
savedOrderInfo := s.loadWatchOrderFromMap(status.VendorOrderID, status.VendorID)
|
savedOrderInfo := s.loadWatchOrderFromMap(status.VendorOrderID, status.VendorID)
|
||||||
@@ -273,10 +273,15 @@ func (s *DefScheduler) handleAutoAcceptOrder(orderID string, vendorID int, userM
|
|||||||
return handleType
|
return handleType
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *DefScheduler) mergeOrderStartConfig(status int, config *scheduler.StatusActionConfig) (retVal *scheduler.StatusActionConfig) {
|
func (s *DefScheduler) mergeOrderStatusConfig(status int, config *scheduler.StatusActionConfig) (retVal *scheduler.StatusActionConfig) {
|
||||||
retVal = &scheduler.StatusActionConfig{
|
defConfig := s.defWorkflowConfig[status]
|
||||||
Timeout: s.defWorkflowConfig[status].Timeout,
|
if defConfig == nil && config == nil {
|
||||||
TimeoutAction: s.defWorkflowConfig[status].TimeoutAction,
|
return nil
|
||||||
|
}
|
||||||
|
retVal = &scheduler.StatusActionConfig{}
|
||||||
|
if defConfig != nil {
|
||||||
|
retVal.Timeout = defConfig.Timeout
|
||||||
|
retVal.TimeoutAction = defConfig.TimeoutAction
|
||||||
}
|
}
|
||||||
if config != nil {
|
if config != nil {
|
||||||
if config.Timeout >= 0 {
|
if config.Timeout >= 0 {
|
||||||
|
|||||||
Reference in New Issue
Block a user