- 将加小费从每5分钟加1元改为每10分钟加1元

- 添加isAddWaybillTipDisabled,避免在平台快递接单后(但没有发送订单配送中消息)无谓的尝试加小费
This commit is contained in:
gazebo
2019-07-31 14:17:37 +08:00
parent 2487598e87
commit 289ca5a6ec

View File

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