! 修改三方运单创建逻辑,添加平台配送小费handleWaybillTip

This commit is contained in:
gazebo
2019-07-31 10:59:47 +08:00
parent 3f90b2d74e
commit 59b14d0a76

View File

@@ -69,7 +69,8 @@ type WatchOrderInfo struct {
timer *time.Timer timer *time.Timer
timerTime time.Time timerTime time.Time
retryCount int // 失败后尝试的次数,调试阶段可能出现死循化,阻止这种情况发生 retryCount int // 失败后尝试的次数,调试阶段可能出现死循化,阻止这种情况发生
isNeedCreate3rdWaybill bool
} }
type StatusActionConfig struct { type StatusActionConfig struct {
@@ -336,12 +337,13 @@ func (s *DefScheduler) OnOrderStatusChanged(order *model.GoodsOrder, status *mod
s.orderMap.Delete(jxutils.GetUniversalOrderIDFromOrderStatus(status)) s.orderMap.Delete(jxutils.GetUniversalOrderIDFromOrderStatus(status))
} }
} }
// if savedOrderInfo.order.Status == model.OrderStatusFinishedPickup { if savedOrderInfo.order.Status == model.OrderStatusFinishedPickup {
// order := savedOrderInfo.order utils.AfterFuncWithRecover(minAddWaybillTipMinute*time.Minute, func() {
// utils.AfterFuncWithRecover(minAddWaybillTipMinute*time.Minute, func() { jxutils.CallMsgHandlerAsync(func() {
// s.handleWaybillTip(order) s.handleWaybillTip(savedOrderInfo)
// }) }, jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID))
// } })
}
} }
if order.LockStatus != model.OrderStatusUnknown { if order.LockStatus != model.OrderStatusUnknown {
s.stopTimer(savedOrderInfo) s.stopTimer(savedOrderInfo)
@@ -591,8 +593,10 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf
if err = s.canOrderCreateWaybillNormally(order); err == nil { if err = s.canOrderCreateWaybillNormally(order); err == nil {
if (order.DeliveryFlag & model.OrderDeliveryFlagMaskScheduleDisabled) == 0 { if (order.DeliveryFlag & model.OrderDeliveryFlagMaskScheduleDisabled) == 0 {
if savedOrderInfo.retryCount <= maxWaybillRetryCount { if savedOrderInfo.retryCount <= maxWaybillRetryCount {
savedOrderInfo.retryCount++ savedOrderInfo.isNeedCreate3rdWaybill = true
_, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, false, 0, 0, 0) if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, false, 1000, 1000, s.getMaxDeliveryFee(order)); err == nil {
savedOrderInfo.retryCount++
}
} else { } else {
err = fmt.Errorf("订单:%s已经自动创建过了%d次运单请人工处理", order.VendorOrderID, savedOrderInfo.retryCount) err = fmt.Errorf("订单:%s已经自动创建过了%d次运单请人工处理", order.VendorOrderID, savedOrderInfo.retryCount)
globals.SugarLogger.Infof("createWaybillOn3rdProviders [运营2]同一订单orderID:%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 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, err := partner.CurOrderManager.LoadOrder(order2.VendorOrderID, order2.VendorID); err == nil {
if order.Status == model.OrderStatusFinishedPickup { if order.Status == model.OrderStatusFinishedPickup {
if tipFee := s.getWaybillTip(order); tipFee > 0 { if tipFee := s.getWaybillTip(order); tipFee > 0 {
@@ -1002,9 +1007,14 @@ func (s *DefScheduler) handleWaybillTip(order2 *model.GoodsOrder) {
} }
partner.CurOrderManager.OnOrderMsg(order, vendorStatus, remark) partner.CurOrderManager.OnOrderMsg(order, vendorStatus, remark)
} }
if savedOrderInfo.isNeedCreate3rdWaybill {
s.createWaybillOn3rdProviders(savedOrderInfo, nil)
}
} }
utils.AfterFuncWithRecover(5*time.Minute, func() { utils.AfterFuncWithRecover(5*time.Minute, func() {
s.handleWaybillTip(order) jxutils.CallMsgHandlerAsync(func() {
s.handleWaybillTip(savedOrderInfo)
}, jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID))
}) })
} }
} }