diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 944164de7..fb576df02 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -410,7 +410,7 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo case model.WaybillStatusCanceled: s.removeWaybillFromMap(savedOrderInfo, bill.WaybillVendorID) if s.isBillCandidate(order, bill) || order.WaybillVendorID == model.VendorIDUnknown { - s.resetTimer(savedOrderInfo, bill, isPending) + s.resetTimer(savedOrderInfo, nil, isPending) if !isPending { if s.IsOrderHasWaybill(order) { bill.WaybillVendorID = model.VendorIDUnknown @@ -419,7 +419,8 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo // 3方的运单取消才会重新发起创建3方订单,购物平台的运单取消后,它本身还会再创建新运单(NewWaybill事件有相应TIMER)),至少京东是这样的,暂时按京东的行为来 // 现在发现饿百取消订单后不会再创建运单了,所以饿百运单取消也允许直接创建三方运单 // 之前的条件是order.Status < model.OrderStatusDelivering,但像订单902322817000122确实有在配送中取消状态,改成非订单结束状态都可以 - if order.Status < model.OrderStatusEndBegin && (bill.WaybillVendorID != order.VendorID || order.VendorID == model.VendorIDEBAI) { + // OrderStatusFinishedPickup状态的订单依赖于TIMER重新建运单 + if order.Status >= model.OrderStatusDelivering && order.Status < model.OrderStatusEndBegin && (bill.WaybillVendorID != order.VendorID || order.VendorID == model.VendorIDEBAI) { s.createWaybillOn3rdProviders(savedOrderInfo, nil) } } diff --git a/business/jxcallback/scheduler/defsch/defsch_ext.go b/business/jxcallback/scheduler/defsch/defsch_ext.go index b7a22b17f..7e96b9657 100644 --- a/business/jxcallback/scheduler/defsch/defsch_ext.go +++ b/business/jxcallback/scheduler/defsch/defsch_ext.go @@ -2,6 +2,7 @@ package defsch import ( "fmt" + "time" "git.rosy.net.cn/jx-callback/business/partner/delivery" @@ -111,6 +112,12 @@ func (s *DefScheduler) CreateWaybillOnProvidersEx(ctx *jxcontext.Context, vendor } savedOrderInfo := s.loadSavedOrderFromMap(status, true) if savedOrderInfo != nil { + order := savedOrderInfo.order + if scheduler.StoreDeliveryTypeByStore != s.GetStoreDeliveryType(order, nil) && + order.Status == model.OrderStatusFinishedPickup && + time.Now().Sub(order.StatusTime) < minMinute2Schedule3rdCarrier*time.Minute { + return nil, fmt.Errorf("非自配送门店转3方配送至少要求拣货完成后%d分钟才能操作", minMinute2Schedule3rdCarrier) + } bills, err = s.CreateWaybillOnProviders4SavedOrder(ctx, savedOrderInfo, forceCreate) } else { err = scheduler.ErrCanNotFindOrder