- 三方配送检查平台门店的DeliveryCompetition配置

This commit is contained in:
gazebo
2019-07-31 11:22:15 +08:00
parent 59b14d0a76
commit 907f2b1739

View File

@@ -62,6 +62,7 @@ type WatchOrderInfo struct {
autoPickupTimeoutMinute int // 0表示禁用1表示用缺省值time2AutoPickupMin其它表示分钟数 autoPickupTimeoutMinute int // 0表示禁用1表示用缺省值time2AutoPickupMin其它表示分钟数
storeDeliveryType int storeDeliveryType int
isDeliveryCompetition bool
waybills map[int]*model.Waybill // 这个waybills里的状态信息是不真实的只使用id相关的信息 waybills map[int]*model.Waybill // 这个waybills里的状态信息是不真实的只使用id相关的信息
timerStatusType int // 0表示订单1表示运单 timerStatusType int // 0表示订单1表示运单
@@ -126,6 +127,7 @@ func (s *WatchOrderInfo) updateOrderStoreFeature(order *model.GoodsOrder) (err e
} }
s.autoPickupTimeoutMinute = int(storeMap.AutoPickup) s.autoPickupTimeoutMinute = int(storeMap.AutoPickup)
s.storeDeliveryType = FixedScheduler.GetStoreDeliveryType(order, storeMap) s.storeDeliveryType = FixedScheduler.GetStoreDeliveryType(order, storeMap)
s.isDeliveryCompetition = storeMap.DeliveryCompetition != 0
globals.SugarLogger.Debugf("updateOrderStoreFeature orderID:%s, s.storeDeliveryType:%d", order.VendorOrderID, s.storeDeliveryType) globals.SugarLogger.Debugf("updateOrderStoreFeature orderID:%s, s.storeDeliveryType:%d", order.VendorOrderID, s.storeDeliveryType)
} }
return err return err
@@ -225,13 +227,17 @@ func init() {
}, },
TimeoutAction: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) { TimeoutAction: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
// 饿百转自送的时机不太清楚,暂时禁用超时转自送,在饿百运单取消时还是会自动创建 // 饿百转自送的时机不太清楚,暂时禁用超时转自送,在饿百运单取消时还是会自动创建
if savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore && savedOrderInfo.order.VendorID != model.VendorIDEBAI { // 非自配送商家使用 if savedOrderInfo.isDeliveryCompetition &&
savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore &&
savedOrderInfo.order.VendorID == bill.WaybillVendorID &&
savedOrderInfo.order.VendorID != model.VendorIDEBAI { // 非自配送商家使用
return sch.createWaybillOn3rdProviders(savedOrderInfo, nil) return sch.createWaybillOn3rdProviders(savedOrderInfo, nil)
} }
return nil return nil
}, },
ShouldSetTimer: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool { ShouldSetTimer: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool {
return savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore && return savedOrderInfo.isDeliveryCompetition &&
savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore &&
savedOrderInfo.order.VendorID == bill.WaybillVendorID && savedOrderInfo.order.VendorID == bill.WaybillVendorID &&
savedOrderInfo.order.VendorID != model.VendorIDEBAI savedOrderInfo.order.VendorID != model.VendorIDEBAI
}, },
@@ -245,6 +251,7 @@ func init() {
TimeoutAction: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) { TimeoutAction: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) {
order := savedOrderInfo.order order := savedOrderInfo.order
if (order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) && if (order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) &&
savedOrderInfo.isDeliveryCompetition &&
savedOrderInfo.order.VendorID == bill.WaybillVendorID && savedOrderInfo.order.VendorID == bill.WaybillVendorID &&
savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore && savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore &&
order.VendorID == model.VendorIDEBAI { // 非自配送商家使用 order.VendorID == model.VendorIDEBAI { // 非自配送商家使用
@@ -255,6 +262,7 @@ func init() {
ShouldSetTimer: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool { ShouldSetTimer: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool {
order := savedOrderInfo.order order := savedOrderInfo.order
return (order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) && return (order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) &&
savedOrderInfo.isDeliveryCompetition &&
savedOrderInfo.order.VendorID == bill.WaybillVendorID && savedOrderInfo.order.VendorID == bill.WaybillVendorID &&
savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore && savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore &&
order.VendorID == model.VendorIDEBAI order.VendorID == model.VendorIDEBAI
@@ -991,31 +999,35 @@ func (s *DefScheduler) getMaxDeliveryFee(order *model.GoodsOrder) (maxDeliveryFe
} }
func (s *DefScheduler) handleWaybillTip(savedOrderInfo *WatchOrderInfo) { func (s *DefScheduler) handleWaybillTip(savedOrderInfo *WatchOrderInfo) {
order2 := savedOrderInfo.order if savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore &&
if order, err := partner.CurOrderManager.LoadOrder(order2.VendorOrderID, order2.VendorID); err == nil { savedOrderInfo.isDeliveryCompetition {
if order.Status == model.OrderStatusFinishedPickup { order2 := savedOrderInfo.order
if tipFee := s.getWaybillTip(order); tipFee > 0 { if order, err := partner.CurOrderManager.LoadOrder(order2.VendorOrderID, order2.VendorID); err == nil {
if handler, ok := partner.GetPurchasePlatformFromVendorID(order.VendorID).(partner.IUpdateWaybillTip); ok && handler != nil { if order.Status == model.OrderStatusFinishedPickup &&
err := handler.UpdateWaybillTip(jxcontext.AdminCtx, order, tipFee) order.DeliveryFlag&model.OrderDeliveryFlagMaskScheduleDisabled == 0 {
vendorStatus := fmt.Sprintf("添加小费:%s", jxutils.IntPrice2StandardCurrencyString(tipFee)) if tipFee := s.getWaybillTip(order); tipFee > 0 {
remark := "" if handler, ok := partner.GetPurchasePlatformFromVendorID(order.VendorID).(partner.IUpdateWaybillTip); ok && handler != nil {
if err == nil { err := handler.UpdateWaybillTip(jxcontext.AdminCtx, order, tipFee)
vendorStatus += "成功" vendorStatus := fmt.Sprintf("添加小费:%s", jxutils.IntPrice2StandardCurrencyString(tipFee))
} else { remark := ""
vendorStatus += "失败" if err == nil {
remark = fmt.Sprint(err) 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() {
jxutils.CallMsgHandlerAsync(func() {
s.handleWaybillTip(savedOrderInfo)
}, jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID))
})
} }
utils.AfterFuncWithRecover(5*time.Minute, func() {
jxutils.CallMsgHandlerAsync(func() {
s.handleWaybillTip(savedOrderInfo)
}, jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID))
})
} }
} }
} }