From cbf72ac85d7c78d87570833ae15bf0aaa233b85c Mon Sep 17 00:00:00 2001 From: gazebo Date: Sat, 28 Jul 2018 22:20:24 +0800 Subject: [PATCH] - fix early miscommit pendingOrderGapMax. - don't update order status when it's already finished. --- business/controller/controller.go | 2 +- business/scheduler/defsch/defsch.go | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/business/controller/controller.go b/business/controller/controller.go index 0658ba275..2ed4155b0 100644 --- a/business/controller/controller.go +++ b/business/controller/controller.go @@ -14,7 +14,7 @@ import ( ) const ( - pendingOrderGapMax = 200 * 24 * time.Hour // 每次重启机子时,要检查几天内的订单状态 + pendingOrderGapMax = 2 * 24 * time.Hour // 每次重启机子时,要检查几天内的订单状态 maxTimeHandlePendingOrder = 2 * time.Second //处理pending order的最长时间 maxSleepGapHandlePendingOrder = 5 * time.Millisecond // 每个pending order的最长时间间隙 ) diff --git a/business/scheduler/defsch/defsch.go b/business/scheduler/defsch/defsch.go index a9a5c9476..952b3d336 100644 --- a/business/scheduler/defsch/defsch.go +++ b/business/scheduler/defsch/defsch.go @@ -282,7 +282,7 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo if !isPending { globals.SugarLogger.Infof("OnWaybillStatusChanged WaybillStatusFailed, bill:%v", bill) bill.WaybillVendorID = model.VendorIDUnknown - s.updateOrderByBill(order, bill, true) + s.updateOrderByBill(order, bill, false) } } else { globals.SugarLogger.Warnf("OnWaybillStatusChanged Failed bill:%v shouldn't got here, order details:%v", bill, order) @@ -293,7 +293,7 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo s.resetTimer(savedOrderInfo, scheduler.TimerStatusTypeWaybill, bill.Status, false) if !isPending { bill.WaybillVendorID = model.VendorIDUnknown - s.updateOrderByBill(order, bill, true) + s.updateOrderByBill(order, bill, false) if bill.WaybillVendorID != order.VendorID { // 3方的运单取消才会重新发起创建3方订单,购物平台的运单取消后,它本身还会再创建新运单(NewWabill事件有相应TIMER)),至少京东是这样的,暂时按京东的行为来 s.createWaybillOn3rdProviders(savedOrderInfo, nil) } @@ -557,13 +557,16 @@ func (s *DefScheduler) updateOrderByStatus(order *model.GoodsOrder, status *mode } func (s *DefScheduler) updateOrderByBill(order *model.GoodsOrder, bill *model.Waybill, revertStatus bool) { + if order.Status > model.OrderStatusEndBegin { + return + } if bill.WaybillVendorID == model.VendorIDUnknown { bill.VendorWaybillID = "" } s.CurOrderManager.UpdateWaybillVendorID(bill, revertStatus) order.WaybillVendorID = bill.WaybillVendorID order.VendorWaybillID = bill.VendorWaybillID - if revertStatus && order.Status < model.OrderStatusEndBegin { + if revertStatus { order.Status = model.OrderStatusFinishedPickup } }