- 主运单取消时设置订单TIMER,只有在配送中状态的订单才会马上新建运单

- 非自配送门店转3方配送至少要求拣货完成后5分钟才能操作
This commit is contained in:
gazebo
2019-04-02 18:45:01 +08:00
parent 2b539fc531
commit 77aa71577f
2 changed files with 10 additions and 2 deletions

View File

@@ -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)
}
}

View File

@@ -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