diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 35894d518..c2caacc96 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -324,11 +324,14 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo s.resetTimer(savedOrderInfo, bill, isPending) } } else { - s.updateBillsInfo(savedOrderInfo, bill) + isBillExist := s.updateBillsInfo(savedOrderInfo, bill) + if !isBillExist { + globals.SugarLogger.Warnf("OnWaybillStatusChanged bill not exist! orderID:%s, bill:%v", bill.VendorOrderID, bill) + } switch bill.Status { case model.WaybillStatusAccepted: s.resetTimer(savedOrderInfo, bill, isPending) - if !isPending { + if (isBillExist || bill.WaybillVendorID != model.VendorIDDada) && !isPending { // todo 达达运单有错序的情况,临时看看 isBillAlreadyCandidate := s.isBillCandidate(order, bill) // todo 购买平台的运单,优先级最高,但这样写也可能带来问题,即在这个时间,因为之前3方已经接单,已经发出了转自送请求(而且可能成功了),所以加个状态判断 if order.WaybillVendorID == model.VendorIDUnknown || @@ -802,9 +805,10 @@ func (s *DefScheduler) updateOrderByBill(order *model.GoodsOrder, bill *model.Wa } } -func (s *DefScheduler) updateBillsInfo(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) { +func (s *DefScheduler) updateBillsInfo(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (isBillExist bool) { if savedOrderInfo != nil { if savedBill := savedOrderInfo.waybills[bill.WaybillVendorID]; savedBill != nil { + isBillExist = true if savedBill.Status > bill.Status { bill.Status = savedBill.Status } else if bill.Status > savedBill.Status { @@ -812,6 +816,7 @@ func (s *DefScheduler) updateBillsInfo(savedOrderInfo *WatchOrderInfo, bill *mod } } } + return isBillExist } func (s *DefScheduler) autoPickupGood(order *model.GoodsOrder) (err error) {