From 907f2b17395bd91f225213ab05241ac624410c85 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 31 Jul 2019 11:22:15 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=B8=89=E6=96=B9=E9=85=8D=E9=80=81?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E5=B9=B3=E5=8F=B0=E9=97=A8=E5=BA=97=E7=9A=84?= =?UTF-8?q?DeliveryCompetition=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jxcallback/scheduler/defsch/defsch.go | 60 +++++++++++-------- 1 file changed, 36 insertions(+), 24 deletions(-) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index ad14b3e23..ecf13a3d0 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -62,6 +62,7 @@ type WatchOrderInfo struct { autoPickupTimeoutMinute int // 0表示禁用,1表示用缺省值time2AutoPickupMin,其它表示分钟数 storeDeliveryType int + isDeliveryCompetition bool waybills map[int]*model.Waybill // 这个waybills里的状态信息是不真实的,只使用id相关的信息 timerStatusType int // 0表示订单,1表示运单 @@ -126,6 +127,7 @@ func (s *WatchOrderInfo) updateOrderStoreFeature(order *model.GoodsOrder) (err e } s.autoPickupTimeoutMinute = int(storeMap.AutoPickup) s.storeDeliveryType = FixedScheduler.GetStoreDeliveryType(order, storeMap) + s.isDeliveryCompetition = storeMap.DeliveryCompetition != 0 globals.SugarLogger.Debugf("updateOrderStoreFeature orderID:%s, s.storeDeliveryType:%d", order.VendorOrderID, s.storeDeliveryType) } return err @@ -225,13 +227,17 @@ func init() { }, 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 nil }, 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 != model.VendorIDEBAI }, @@ -245,6 +251,7 @@ func init() { TimeoutAction: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (err error) { order := savedOrderInfo.order if (order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) && + savedOrderInfo.isDeliveryCompetition && savedOrderInfo.order.VendorID == bill.WaybillVendorID && savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore && order.VendorID == model.VendorIDEBAI { // 非自配送商家使用 @@ -255,6 +262,7 @@ func init() { ShouldSetTimer: func(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) bool { order := savedOrderInfo.order return (order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) && + savedOrderInfo.isDeliveryCompetition && savedOrderInfo.order.VendorID == bill.WaybillVendorID && savedOrderInfo.storeDeliveryType != scheduler.StoreDeliveryTypeByStore && order.VendorID == model.VendorIDEBAI @@ -991,31 +999,35 @@ func (s *DefScheduler) getMaxDeliveryFee(order *model.GoodsOrder) (maxDeliveryFe } 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 { - 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.storeDeliveryType != scheduler.StoreDeliveryTypeByStore && + savedOrderInfo.isDeliveryCompetition { + order2 := savedOrderInfo.order + 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) + } + 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)) - }) } } }