- dont' create 3rd waybill when purchase platfrom waybill canceled.
This commit is contained in:
@@ -294,7 +294,9 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
||||
if !isPending {
|
||||
bill.WaybillVendorID = model.VendorIDUnknown
|
||||
s.updateOrderByBill(order, bill, true)
|
||||
s.createWaybillOn3rdProviders(savedOrderInfo, nil)
|
||||
if bill.WaybillVendorID != order.VendorID { // 3方的运单取消才会重新发起创建3方订单,购物平台的运单取消后,它本身还会再创建新运单(NewWabill事件有相应TIMER)),至少京东是这样的,暂时按京东的行为来
|
||||
s.createWaybillOn3rdProviders(savedOrderInfo, nil)
|
||||
}
|
||||
}
|
||||
}
|
||||
case model.WaybillStatusDelivering:
|
||||
@@ -347,10 +349,10 @@ func (s *DefScheduler) removeWaybillFromMap(savedOrderInfo *WatchOrderInfo, bill
|
||||
func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInfo, excludeBill *model.Waybill) (err error) {
|
||||
order := savedOrderInfo.order
|
||||
globals.SugarLogger.Debugf("createWaybillOn3rdProviders, orderID:%s, status:%d, excludeBill:%v", order.VendorOrderID, order.Status, excludeBill)
|
||||
savedOrderInfo.retryCount++
|
||||
if savedOrderInfo.retryCount <= maxWaybillRetryCount {
|
||||
if order.Status == model.OrderStatusFinishedPickup {
|
||||
if savedOrderInfo.isNeed3rdDelivery || savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore {
|
||||
if order.Status == model.OrderStatusFinishedPickup {
|
||||
if savedOrderInfo.isNeed3rdDelivery || savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore {
|
||||
savedOrderInfo.retryCount++
|
||||
if savedOrderInfo.retryCount <= maxWaybillRetryCount {
|
||||
successCount := 0
|
||||
for vendorID := range s.DeliveryPlatformHandlers {
|
||||
if (excludeBill == nil || vendorID != excludeBill.WaybillVendorID) && s.DeliveryPlatformHandlers[vendorID].Use4CreateWaybill {
|
||||
@@ -364,15 +366,15 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf
|
||||
}
|
||||
globals.SugarLogger.Infof("createWaybillOn3rdProviders, orderID:%s all failed", order.VendorOrderID)
|
||||
return scheduler.ErrCanNotCreateAtLeastOneWaybill
|
||||
} else {
|
||||
globals.SugarLogger.Warnf("createWaybillOn3rdProviders, orderID:%s failed %d times, stop schedule", order.VendorOrderID, savedOrderInfo.retryCount)
|
||||
}
|
||||
globals.SugarLogger.Debugf("createWaybillOn3rdProviders, orderID:%s, store:%d dont't support 3rd delivery platform", order.VendorOrderID, jxutils.GetJxStoreIDFromOrder(order))
|
||||
} else {
|
||||
globals.SugarLogger.Debugf("createWaybillOn3rdProviders, orderID:%s, status:%d doesn't match model.OrderStatusFinishedPickup, bypass", order.VendorOrderID, order.Status)
|
||||
}
|
||||
} else {
|
||||
globals.SugarLogger.Warnf("OnWaybillStatusChanged Canceled failed %d times, stop schedule", savedOrderInfo.retryCount)
|
||||
}
|
||||
return nil
|
||||
return err
|
||||
}
|
||||
|
||||
func (s *DefScheduler) cancelOtherWaybills(savedOrderInfo *WatchOrderInfo, bill2Keep *model.Waybill) (err error) {
|
||||
|
||||
Reference in New Issue
Block a user