diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 980161698..cf74f1fd6 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -259,10 +259,13 @@ func (s *DefScheduler) OnOrderStatusChanged(status *model.OrderStatus, isPending // 1,在订单相应事件中取消不是candidate的运单 // 2,在接收到运单接单时根据状态判断马上取消些运单 // 3,在转自送失败(或状态已经是自送时)取消运单 - curWaybill := savedOrderInfo.waybills[savedOrderInfo.order.WaybillVendorID] - if status.Status == model.OrderStatusDelivered || status.Status == model.OrderStatusFinished { - if curWaybill != nil && curWaybill.WaybillVendorID != curWaybill.OrderVendorID { - globals.SugarLogger.Infof("OnOrderStatusChanged [运营2]订单orderID:%s可能被手动点击送达,会对程序状态产生不利影响,请通知门店不要这样操作!", status.VendorOrderID) + var curWaybill *model.Waybill + if !(status.Status == model.OrderStatusCanceled) { // 订单取消时,取消所有运单 + curWaybill = savedOrderInfo.waybills[savedOrderInfo.order.WaybillVendorID] + if status.Status == model.OrderStatusDelivered || status.Status == model.OrderStatusFinished { + if curWaybill != nil && curWaybill.WaybillVendorID != curWaybill.OrderVendorID { + globals.SugarLogger.Infof("OnOrderStatusChanged [运营2]订单orderID:%s可能被手动点击送达,会对程序状态产生不利影响,请通知门店不要这样操作!", status.VendorOrderID) + } } } s.cancelOtherWaybills(savedOrderInfo, curWaybill, partner.CancelWaybillReasonOther, partner.CancelWaybillReasonStrOrderAlreadyFinished) @@ -546,8 +549,12 @@ func (s *DefScheduler) cancelOtherWaybills(savedOrderInfo *WatchOrderInfo, bill2 } } } - for _, v := range toBeDeleted { - s.removeWaybillFromMap(savedOrderInfo, v.WaybillVendorID) + if len(toBeDeleted) > 0 { + for _, v := range toBeDeleted { + s.removeWaybillFromMap(savedOrderInfo, v.WaybillVendorID) + } + } else { + globals.SugarLogger.Debugf("cancelOtherWaybills, orderID:%s, bill:%v cancel 0 bills", savedOrderInfo.order.VendorOrderID, bill2Keep) } } else { globals.SugarLogger.Debugf("cancelOtherWaybills, orderID:%s, bill:%v stop schedule", savedOrderInfo.order.VendorOrderID, bill2Keep)