diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index d27b74bf1..30e8ef220 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -47,6 +47,7 @@ const ( dingShiDaAheadTime = 30 * time.Minute // 定时达订单开始召唤配送的提前时间 minAddWaybillTipMinute = 15 // 最少开始加小费分钟(距离拣货完成) + addWaybillTipGap = 10 // 加一元小费间隔的分钟数 ) const ( @@ -63,6 +64,7 @@ type WatchOrderInfo struct { autoPickupTimeoutMinute int // 0表示禁用,1表示用缺省值time2AutoPickupMin,其它表示分钟数 storeDeliveryType int isDeliveryCompetition bool + isAddWaybillTipDisabled bool waybills map[int]*model.Waybill // 这个waybills里的状态信息是不真实的,只使用id相关的信息 timerStatusType int // 0表示订单,1表示运单 @@ -451,6 +453,7 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo s.cancelOtherWaybillsCheckOrderDeliveryFlag(savedOrderInfo, bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonStrNotAcceptIntime) if model.IsWaybillPlatformOwn(bill) { + savedOrderInfo.isAddWaybillTipDisabled = true if bill.Status == model.WaybillStatusDelivering { // 强制将订单状态置为配送中? order.Status = model.OrderStatusDelivering @@ -487,6 +490,9 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo case model.WaybillStatusAcceptCanceled: if s.isBillCandidate(order, bill) { s.resetTimer(savedOrderInfo, bill, isPending) + if model.IsWaybillPlatformOwn(bill) { + savedOrderInfo.isAddWaybillTipDisabled = false + } if !isPending { s.updateOrderByBill(order, nil, true) } @@ -992,7 +998,7 @@ func (s *DefScheduler) getWaybillTip(order *model.GoodsOrder) (tipFee int64) { } timeGap1 := time.Now().Sub(startTime) if timeGap1 > 0 { - timeGap := int64(timeGap1/(5*time.Minute)) + 1 + timeGap := int64(timeGap1/(addWaybillTipGap*time.Minute)) + 1 tipFee = timeGap * 100 if tipFee > 600 { tipFee = 600 @@ -1015,21 +1021,23 @@ func (s *DefScheduler) handleWaybillTip(savedOrderInfo *WatchOrderInfo) { if order, err := partner.CurOrderManager.LoadOrder(order2.VendorOrderID, order2.VendorID); err == nil { if order.Status == model.OrderStatusFinishedPickup && order.DeliveryFlag&model.OrderDeliveryFlagMaskScheduleDisabled == 0 { - if tipFee := s.getWaybillTip(order); tipFee > 0 { - if handler, ok := partner.GetPurchasePlatformFromVendorID(order.VendorID).(partner.IUpdateWaybillTip); ok && handler != nil { - err := handler.UpdateWaybillTip(jxcontext.AdminCtx, order, tipFee) - vendorStatus := fmt.Sprintf("添加小费:%s", jxutils.IntPrice2StandardCurrencyString(tipFee)) - remark := "" - if err == nil { - vendorStatus += "成功" - } else { - vendorStatus += "失败" - remark = fmt.Sprint(err) + if !savedOrderInfo.isAddWaybillTipDisabled { + if tipFee := s.getWaybillTip(order); tipFee > 0 { + if handler, ok := partner.GetPurchasePlatformFromVendorID(order.VendorID).(partner.IUpdateWaybillTip); ok && handler != nil { + err := handler.UpdateWaybillTip(jxcontext.AdminCtx, order, tipFee) + vendorStatus := fmt.Sprintf("添加小费:%s", jxutils.IntPrice2StandardCurrencyString(tipFee)) + remark := "" + if err == nil { + vendorStatus += "成功" + } else { + vendorStatus += "失败" + remark = fmt.Sprint(err) + } + partner.CurOrderManager.OnOrderMsg(order, vendorStatus, remark) + } + if savedOrderInfo.isNeedCreate3rdWaybill { + s.createWaybillOn3rdProviders(savedOrderInfo, nil) } - partner.CurOrderManager.OnOrderMsg(order, vendorStatus, remark) - } - if savedOrderInfo.isNeedCreate3rdWaybill { - s.createWaybillOn3rdProviders(savedOrderInfo, nil) } } utils.AfterFuncWithRecover(5*time.Minute, func() {