From 8ff383410be227c8c023bba9c8a22177f709d10f Mon Sep 17 00:00:00 2001 From: gazebo Date: Sat, 30 Mar 2019 18:21:19 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E9=87=8D=E6=9E=84canOrderCreateWaybillNorm?= =?UTF-8?q?ally?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jxcallback/scheduler/defsch/defsch.go | 24 ++++---- .../jxcallback/scheduler/defsch/defsch_ext.go | 56 ++++++++++--------- business/partner/delivery/delivery.go | 2 +- 3 files changed, 46 insertions(+), 36 deletions(-) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 05e1c9618..18f63eb63 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -483,19 +483,23 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf if order.VendorID == model.VendorIDELM { return nil } - if (order.DeliveryFlag & model.OrderDeliveryFlagMaskScheduleDisabled) == 0 { - if savedOrderInfo.retryCount <= maxWaybillRetryCount { - _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.NewWithOnlyUserName("admin"), savedOrderInfo, false) + if err = s.canOrderCreateWaybillNormally(order); err == nil { + if (order.DeliveryFlag & model.OrderDeliveryFlagMaskScheduleDisabled) == 0 { + if savedOrderInfo.retryCount <= maxWaybillRetryCount { + _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.NewWithOnlyUserName("admin"), savedOrderInfo, false) + } else { + err = fmt.Errorf("订单:%s已经自动创建过了%d次运单,请人工处理", order.VendorOrderID, savedOrderInfo.retryCount) + globals.SugarLogger.Infof("createWaybillOn3rdProviders [运营]同一订单orderID:%s尝试了%d次创建运单失败, 停止调度,如果还需要发单,请人工处理", order.VendorOrderID, savedOrderInfo.retryCount) + } } else { - err = fmt.Errorf("订单:%s已经自动创建过了%d次运单,请人工处理", order.VendorOrderID, savedOrderInfo.retryCount) - globals.SugarLogger.Infof("createWaybillOn3rdProviders [运营]同一订单orderID:%s尝试了%d次创建运单失败, 停止调度,如果还需要发单,请人工处理", order.VendorOrderID, savedOrderInfo.retryCount) + globals.SugarLogger.Debugf("createWaybillOn3rdProviders, orderID:%s, store:%d dont't support 3rd delivery platform", order.VendorOrderID, jxutils.GetSaleStoreIDFromOrder(order)) + } + + if err != nil { + partner.CurOrderManager.OnOrderMsg(order, "自动创建三方运单", jxutils.LimitStringLen(err.Error(), 255)) } } else { - globals.SugarLogger.Debugf("createWaybillOn3rdProviders, orderID:%s, store:%d dont't support 3rd delivery platform", order.VendorOrderID, jxutils.GetSaleStoreIDFromOrder(order)) - } - - if err != nil { - partner.CurOrderManager.OnOrderMsg(order, "自动创建三方运单", jxutils.LimitStringLen(err.Error(), 255)) + err = nil } return err } diff --git a/business/jxcallback/scheduler/defsch/defsch_ext.go b/business/jxcallback/scheduler/defsch/defsch_ext.go index c7d5170a8..b7a22b17f 100644 --- a/business/jxcallback/scheduler/defsch/defsch_ext.go +++ b/business/jxcallback/scheduler/defsch/defsch_ext.go @@ -5,7 +5,6 @@ import ( "git.rosy.net.cn/jx-callback/business/partner/delivery" - "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" @@ -60,33 +59,40 @@ func (s *DefScheduler) SelfDeliveringAndUpdateStatus(ctx *jxcontext.Context, ven return err } +func (s *DefScheduler) canOrderCreateWaybillNormally(order *model.GoodsOrder) (err error) { + if !(order.LockStatus != model.OrderStatusLocked && order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) { + err = fmt.Errorf("当前订单%s没有处于拣货完成且没有结束没有锁定的订单才能进行召唤配送操作", order.VendorOrderID) + } else if s.IsOrderHasWaybill(order) { + err = fmt.Errorf("当前订单%s已经有了有效的承运人%s了", order.VendorOrderID, jxutils.GetVendorName(order.WaybillVendorID)) + } + return err +} + func (s *DefScheduler) CreateWaybillOnProviders4SavedOrder(ctx *jxcontext.Context, savedOrderInfo *WatchOrderInfo, forceCreate bool) (bills []*model.Waybill, err error) { order := savedOrderInfo.order - if forceCreate || (order.LockStatus != model.OrderStatusLocked && order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) { - if forceCreate || !s.IsOrderHasWaybill(order) { - feeHandler := delivery.DefCreateWaybillPolicy - if forceCreate { - feeHandler = delivery.NullCreateWaybillPolicy - } - if bills, err = s.CreateWaybillOnProviders(ctx, order, feeHandler); err == nil { - if forceCreate { - order.DeliveryFlag |= model.OrderDeliveryFlagMaskScheduleDisabled - err = partner.CurOrderManager.UpdateOrderStatusAndFlag(order) - } - if err == nil { - if forceCreate { - s.stopTimer(savedOrderInfo) - } - globals.SugarLogger.Debugf("CreateWaybillOnProviders4SavedOrder orderID:%s userName:%s successfully", order.VendorOrderID, ctx.GetUserName()) - return bills, err - } - } - } else { - err = fmt.Errorf("当前订单%s已经有了有效的承运人%s了", order.VendorOrderID, jxutils.GetVendorName(order.WaybillVendorID)) + err = s.canOrderCreateWaybillNormally(order) + if forceCreate || err == nil { + err = nil + feeHandler := delivery.DefCreateWaybillPolicy + if forceCreate { + feeHandler = delivery.NullCreateWaybillPolicy } - } else { - globals.SugarLogger.Debugf("CreateWaybillOnProviders4SavedOrder orderID:%s orderDetails:%s", order.VendorOrderID, utils.Format4Output(order, true)) - err = fmt.Errorf("当前订单%s没有处于拣货完成且没有结束没有锁定的订单才能进行召唤配送操作", order.VendorOrderID) + if bills, err = s.CreateWaybillOnProviders(ctx, order, feeHandler); err == nil { + if forceCreate { + order.DeliveryFlag |= model.OrderDeliveryFlagMaskScheduleDisabled + err = partner.CurOrderManager.UpdateOrderStatusAndFlag(order) + } + if err == nil { + if forceCreate { + s.stopTimer(savedOrderInfo) + } + globals.SugarLogger.Debugf("CreateWaybillOnProviders4SavedOrder orderID:%s userName:%s successfully", order.VendorOrderID, ctx.GetUserName()) + return bills, err + } + } + } + if err != nil { + globals.SugarLogger.Debugf("CreateWaybillOnProviders4SavedOrder orderID:%s failed with error:%v", order.VendorOrderID, err) } return nil, err } diff --git a/business/partner/delivery/delivery.go b/business/partner/delivery/delivery.go index f51b99bb2..23bb2909f 100644 --- a/business/partner/delivery/delivery.go +++ b/business/partner/delivery/delivery.go @@ -50,7 +50,7 @@ func CallCreateWaybillPolicy(policy partner.CreateWaybillPolicy, refDeliveryFee, } if errStr := policy(deliveryFee, deliveryFee, addFee); errStr != "" { waybillVendorName := jxutils.GetVendorName(waybillVendorID) - errStr = fmt.Sprintf("oderID:%s在平台%s,创建运单出错:%s", order.VendorOrderID, waybillVendorName, errStr) + errStr = fmt.Sprintf("oderID:%s在平台:%s,创建运单出错:%s", order.VendorOrderID, waybillVendorName, errStr) globals.SugarLogger.Debugf("%s CreateWaybill failed with %s", waybillVendorName, errStr) return errors.New(errStr) }