diff --git a/business/controller/controller.go b/business/controller/controller.go index 5cb1b7552..0658ba275 100644 --- a/business/controller/controller.go +++ b/business/controller/controller.go @@ -14,7 +14,9 @@ import ( ) const ( - pendingOrderGapMax = 2 * 24 * time.Hour // 每次重启机子时,要检查几天内的订单状态 + pendingOrderGapMax = 200 * 24 * time.Hour // 每次重启机子时,要检查几天内的订单状态 + maxTimeHandlePendingOrder = 2 * time.Second //处理pending order的最长时间 + maxSleepGapHandlePendingOrder = 5 * time.Millisecond // 每个pending order的最长时间间隙 ) var ( @@ -102,6 +104,12 @@ func LoadPendingOrders() { sortOrders = append(sortOrders, bill) } sort.Sort(sortOrders) + + sleepGap := maxTimeHandlePendingOrder / time.Duration(len(sortOrders)) + if sleepGap > maxSleepGapHandlePendingOrder { + sleepGap = maxSleepGapHandlePendingOrder + } + lastTime := time.Now() for _, item := range sortOrders { if order, ok := item.(*model.GoodsOrder); ok { jxutils.CallMsgHandlerAsync(func() { @@ -117,5 +125,11 @@ func LoadPendingOrders() { scheduler.CurrentScheduler.OnWaybillStatusChanged(bill, true) }, bill.VendorOrderID) } + curTime := time.Now() + timeout := sleepGap - curTime.Sub(lastTime) + if timeout > 0 { + time.Sleep(timeout) + } + lastTime = curTime } }