From 51f736976dbe50b752620649ac73596120497940 Mon Sep 17 00:00:00 2001 From: gazebo Date: Tue, 26 Mar 2019 14:17:23 +0800 Subject: [PATCH] =?UTF-8?q?-=20CancelAll3rdWaybills=E6=B7=BB=E5=8A=A0isSto?= =?UTF-8?q?pSchedule=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jxcallback/scheduler/defsch/defsch_ext.go | 31 +++++++++++++------ controllers/jx_order.go | 3 +- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/business/jxcallback/scheduler/defsch/defsch_ext.go b/business/jxcallback/scheduler/defsch/defsch_ext.go index 9caf9f4d8..9df90e701 100644 --- a/business/jxcallback/scheduler/defsch/defsch_ext.go +++ b/business/jxcallback/scheduler/defsch/defsch_ext.go @@ -25,15 +25,17 @@ func (s *DefScheduler) SelfDeliveringAndUpdateStatus(ctx *jxcontext.Context, ven order := savedOrderInfo.order err = s.cancelOtherWaybills(savedOrderInfo, nil, partner.CancelWaybillReasonOther, partner.CancelWaybillReasonStrActive) if err == nil { - if savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore { - if order.Status <= model.OrderStatusFinishedPickup { - err = s.SelfDeliverDelivering(order, "") - } - } else { - if order.Status <= model.OrderStatusFinishedPickup { - err = s.Swtich2SelfDeliver(order, userName) - } else if order.VendorID == order.WaybillVendorID { // 状态为配送中,且是购物平台运单,不能转自送了 - err = scheduler.ErrOrderStatusIsNotSuitable4CurOperation + if order.DeliveryFlag&model.OrderDeliveryFlagMaskPurcahseDisabled == 0 { + if savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore { + if order.Status <= model.OrderStatusFinishedPickup { + err = s.SelfDeliverDelivering(order, userName) + } + } else { + if order.Status <= model.OrderStatusFinishedPickup { + err = s.Swtich2SelfDeliver(order, userName) + } else if order.VendorID == order.WaybillVendorID { // 状态为配送中,且是购物平台运单,不能转自送了 + err = scheduler.ErrOrderStatusIsNotSuitable4CurOperation + } } } } @@ -101,7 +103,8 @@ func (s *DefScheduler) CreateWaybillOnProvidersEx(ctx *jxcontext.Context, vendor return bills, err } -func (s *DefScheduler) CancelAll3rdWaybills(ctx *jxcontext.Context, vendorOrderID string, vendorID int) (err error) { +// todo 这个函数可以和SelfDeliveringAndUpdateStatus合并 +func (s *DefScheduler) CancelAll3rdWaybills(ctx *jxcontext.Context, vendorOrderID string, vendorID int, isStopSchedule bool) (err error) { jxutils.CallMsgHandler(func() { err = func() (err error) { globals.SugarLogger.Infof("CancelAll3rdWaybills orderID:%s userName:%s", vendorOrderID, ctx.GetUserName()) @@ -116,6 +119,14 @@ func (s *DefScheduler) CancelAll3rdWaybills(ctx *jxcontext.Context, vendorOrderI err = scheduler.ErrCanNotFindOrder } globals.SugarLogger.Infof("CancelAll3rdWaybills orderID:%s userName:%s error:%v", vendorOrderID, ctx.GetUserName(), err) + if err == nil && isStopSchedule { + order := savedOrderInfo.order + order.DeliveryFlag |= model.OrderDeliveryFlagMaskScheduleDisabled + if err = partner.CurOrderManager.UpdateOrderStatusAndFlag(order); err == nil { + s.stopTimer(savedOrderInfo) + globals.SugarLogger.Infof("CancelAll3rdWaybills orderID:%s userName:%s successfully", vendorOrderID, ctx.GetUserName()) + } + } return err }() }, jxutils.ComposeUniversalOrderID(vendorOrderID, vendorID)) diff --git a/controllers/jx_order.go b/controllers/jx_order.go index a578256a0..fcc63b0de 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -97,12 +97,13 @@ func (c *OrderController) CreateWaybillOnProviders() { // @Param token header string true "认证token" // @Param vendorOrderID formData string true "订单ID" // @Param vendorID formData int true "订单所属的厂商ID" +// @Param isStopSchedule formData bool false "是否停止运单调度" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /CancelAll3rdWaybills [post] func (c *OrderController) CancelAll3rdWaybills() { c.callCancelAll3rdWaybills(func(params *tOrderCancelAll3rdWaybillsParams) (retVal interface{}, errCode string, err error) { - err = defsch.FixedScheduler.CancelAll3rdWaybills(params.Ctx, params.VendorOrderID, params.VendorID) + err = defsch.FixedScheduler.CancelAll3rdWaybills(params.Ctx, params.VendorOrderID, params.VendorID, params.IsStopSchedule) return retVal, "", err }) }