From 6ddb39eebb195af4b3c847a5b36aae97993fc4c6 Mon Sep 17 00:00:00 2001 From: gazebo Date: Thu, 23 Aug 2018 09:45:25 +0800 Subject: [PATCH] - SelfDeliveredAndUpdateStatus added. --- business/jxcallback/orderman/orderman_ext.go | 3 ++ .../scheduler/basesch/basesch_ext.go | 47 ++++++++++++++++++- controllers/jx_order.go | 16 ++++++- 3 files changed, 64 insertions(+), 2 deletions(-) diff --git a/business/jxcallback/orderman/orderman_ext.go b/business/jxcallback/orderman/orderman_ext.go index 6889dbe76..68a365074 100644 --- a/business/jxcallback/orderman/orderman_ext.go +++ b/business/jxcallback/orderman/orderman_ext.go @@ -45,6 +45,7 @@ func (c *OrderManager) GetStoreOrderInfo(storeID string, lastHours int, fromStat AND t1.order_created_at >= ? AND t1.Status >= ? AND t1.Status <= ? LIMIT ? OFFSET ? + ORDER BY t1.order_created_at `, storeID, time.Now().Add(-time.Duration(lastHours)*time.Hour), fromStatus, toStatus, pageSize, offset).QueryRows(&orders) if err == nil { return orders, nil @@ -67,6 +68,7 @@ func (c *OrderManager) GetStoreOrderCountInfo(storeID string, lastHours int) (co WHERE IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) = ? AND t1.order_created_at >= ? GROUP BY 1 + ORDER BY 1 `, storeID, time.Now().Add(-time.Duration(lastHours)*time.Hour)).QueryRows(&countInfo) if err == nil { return countInfo, nil @@ -83,6 +85,7 @@ func (c *OrderManager) GetOrderSkuInfo(vendorOrderID string, vendorID int) (skus LEFT JOIN jx_sku t2 ON IF(t1.jx_sku_id != 0, t1.jx_sku_id, t1.sku_id) = t2.id LEFT JOIN jx_sku_name t3 ON t2.nameid = t3.id WHERE vendor_order_id = ? AND vendor_id = ? + ORDER BY t1.sku_name `, vendorOrderID, vendorID).QueryRows(&skus) if err == nil && num > 0 { return skus, nil diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index ccc7371c0..202434b95 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -1,8 +1,13 @@ package basesch import ( + "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler" + "git.rosy.net.cn/jx-callback/business/jxutils" + "git.rosy.net.cn/jx-callback/business/legacymodel" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" + "git.rosy.net.cn/jx-callback/globals" + "github.com/astaxie/beego/orm" ) func (c *BaseScheduler) CreateWaybillOnProviders(vendorOrderID string, vendorID int) (bills []*model.Waybill, err error) { @@ -18,10 +23,15 @@ func (c *BaseScheduler) CreateWaybillOnProviders(vendorOrderID string, vendorID return nil, err } +// todo 这里应该要考虑纯自送与转自送 func (c *BaseScheduler) Swtich2SelfDeliverAndUpdateStatus(vendorOrderID string, vendorID int, userName string) (err error) { order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, vendorID) if err == nil { - err = c.Swtich2SelfDeliver(order, userName) + if getStoreDeliveryType(order) == scheduler.StoreDeliveryTypeByStore { + err = c.SelfDeliverDelievering(order, userName) + } else { + err = c.Swtich2SelfDeliver(order, userName) + } if err == nil { order.Status = model.OrderStatusDelivering err = partner.CurOrderManager.UpdateOrderStatusDirectly(order) @@ -30,6 +40,23 @@ func (c *BaseScheduler) Swtich2SelfDeliverAndUpdateStatus(vendorOrderID string, return err } +// todo 这里应该要考虑纯自送与转自送 +func (c *BaseScheduler) SelfDeliveredAndUpdateStatus(vendorOrderID string, vendorID int, userName string) (err error) { + order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, vendorID) + if err == nil { + if getStoreDeliveryType(order) == scheduler.StoreDeliveryTypeByStore { + err = c.SelfDeliverDelievered(order, userName) + } else { + err = c.Swtich2SelfDelivered(order, userName) + } + if err == nil { + order.Status = model.OrderStatusDelivered + err = partner.CurOrderManager.UpdateOrderStatusDirectly(order) + } + } + return err +} + func (c *BaseScheduler) PickupGoodsAndUpdateStatus(vendorOrderID string, vendorID int, userName string) (err error) { order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, vendorID) if err == nil { @@ -41,3 +68,21 @@ func (c *BaseScheduler) PickupGoodsAndUpdateStatus(vendorOrderID string, vendorI } return err } + +func getStoreDeliveryType(order *model.GoodsOrder) int { + storefeature := &legacymodel.Jxstorefeature{ + Id: jxutils.GetJxStoreIDFromOrder(order), + } + if storefeature.Id != 0 { + db := orm.NewOrm() + err := db.Read(storefeature, "Id") + if err == nil { + if order.VendorID == model.VendorIDJD { + return int(storefeature.JdDeliveryType) + } + return int(storefeature.ElmDeliveryType) + } + globals.SugarLogger.Infof("getStoreDeliveryType read storefeature failed with error:%v", err) + } + return scheduler.StoreDeliveryTypeByPlatform +} diff --git a/controllers/jx_order.go b/controllers/jx_order.go index 274ca5224..b5ed35d3f 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -81,7 +81,7 @@ func (c *OrderController) FinishedPickup() { } // @Title 转自送 -// @Description 转自送 +// @Description 转自送,对于配送类型为纯自送的,就是表示自送开始 // @Param token header string true "认证toke" // @Param vendorOrderID formData string true "订单ID" // @Param vendorID formData int true "订单所属的厂商ID" @@ -94,6 +94,20 @@ func (c *OrderController) Swtich2SelfDeliver() { }) } +// @Title 自送送达 +// @Description 自送送达 +// @Param token header string true "认证toke" +// @Param vendorOrderID formData string true "订单ID" +// @Param vendorID formData int true "订单所属的厂商ID" +// @Success 200 {object} business.model.CallResult +// @Failure 200 {object} business.model.CallResult +// @router /SelfDelivered [post] +func (c *OrderController) SelfDelivered() { + c.orderOperate(func(vendorOrderID string, vendorID int, userName string) (interface{}, error) { + return nil, basesch.FixedBaseScheduler.SelfDeliveredAndUpdateStatus(vendorOrderID, vendorID, userName) + }) +} + // @Title 创建三方运单 // @Description 创建三方运单 // @Param token header string true "认证toke"