From 59b14d0a76c794b2da0d142ce1d02ee9ac799598 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 31 Jul 2019 10:59:47 +0800 Subject: [PATCH] =?UTF-8?q?!=20=E4=BF=AE=E6=94=B9=E4=B8=89=E6=96=B9?= =?UTF-8?q?=E8=BF=90=E5=8D=95=E5=88=9B=E5=BB=BA=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B9=B3=E5=8F=B0=E9=85=8D=E9=80=81=E5=B0=8F?= =?UTF-8?q?=E8=B4=B9handleWaybillTip?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jxcallback/scheduler/defsch/defsch.go | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 28cf3ccff..ad14b3e23 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -69,7 +69,8 @@ type WatchOrderInfo struct { timer *time.Timer timerTime time.Time - retryCount int // 失败后尝试的次数,调试阶段可能出现死循化,阻止这种情况发生 + retryCount int // 失败后尝试的次数,调试阶段可能出现死循化,阻止这种情况发生 + isNeedCreate3rdWaybill bool } type StatusActionConfig struct { @@ -336,12 +337,13 @@ func (s *DefScheduler) OnOrderStatusChanged(order *model.GoodsOrder, status *mod s.orderMap.Delete(jxutils.GetUniversalOrderIDFromOrderStatus(status)) } } - // if savedOrderInfo.order.Status == model.OrderStatusFinishedPickup { - // order := savedOrderInfo.order - // utils.AfterFuncWithRecover(minAddWaybillTipMinute*time.Minute, func() { - // s.handleWaybillTip(order) - // }) - // } + if savedOrderInfo.order.Status == model.OrderStatusFinishedPickup { + utils.AfterFuncWithRecover(minAddWaybillTipMinute*time.Minute, func() { + jxutils.CallMsgHandlerAsync(func() { + s.handleWaybillTip(savedOrderInfo) + }, jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID)) + }) + } } if order.LockStatus != model.OrderStatusUnknown { s.stopTimer(savedOrderInfo) @@ -591,8 +593,10 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf if err = s.canOrderCreateWaybillNormally(order); err == nil { if (order.DeliveryFlag & model.OrderDeliveryFlagMaskScheduleDisabled) == 0 { if savedOrderInfo.retryCount <= maxWaybillRetryCount { - savedOrderInfo.retryCount++ - _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, false, 0, 0, 0) + savedOrderInfo.isNeedCreate3rdWaybill = true + if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, false, 1000, 1000, s.getMaxDeliveryFee(order)); err == nil { + savedOrderInfo.retryCount++ + } } else { err = fmt.Errorf("订单:%s已经自动创建过了%d次运单,请人工处理", order.VendorOrderID, savedOrderInfo.retryCount) globals.SugarLogger.Infof("createWaybillOn3rdProviders [运营2]同一订单orderID:%s尝试了%d次创建运单失败, 停止调度,如果还需要发单,请人工处理", order.VendorOrderID, savedOrderInfo.retryCount) @@ -986,7 +990,8 @@ func (s *DefScheduler) getMaxDeliveryFee(order *model.GoodsOrder) (maxDeliveryFe return maxDeliveryFee } -func (s *DefScheduler) handleWaybillTip(order2 *model.GoodsOrder) { +func (s *DefScheduler) handleWaybillTip(savedOrderInfo *WatchOrderInfo) { + order2 := savedOrderInfo.order if order, err := partner.CurOrderManager.LoadOrder(order2.VendorOrderID, order2.VendorID); err == nil { if order.Status == model.OrderStatusFinishedPickup { if tipFee := s.getWaybillTip(order); tipFee > 0 { @@ -1002,9 +1007,14 @@ func (s *DefScheduler) handleWaybillTip(order2 *model.GoodsOrder) { } partner.CurOrderManager.OnOrderMsg(order, vendorStatus, remark) } + if savedOrderInfo.isNeedCreate3rdWaybill { + s.createWaybillOn3rdProviders(savedOrderInfo, nil) + } } utils.AfterFuncWithRecover(5*time.Minute, func() { - s.handleWaybillTip(order) + jxutils.CallMsgHandlerAsync(func() { + s.handleWaybillTip(savedOrderInfo) + }, jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID)) }) } }