From 129308cf6c3ffc5e0450c432b0981b56f535c39a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 16 Mar 2020 15:03:55 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=A9=E6=96=99=E8=AE=A2=E5=8D=95=E5=88=86?= =?UTF-8?q?=E5=8C=85=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jx/localjx/order.go | 46 +++++++++++++++---- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index e19663531..de9f70e99 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -841,23 +841,21 @@ func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) { } jxOrder.Skus = skus outOrders, _, _ := tryToSplitMatterOrder(jxOrder) - for _, v := range outOrders { + for k, v := range outOrders { globals.SugarLogger.Debugf("tryToSplitMatterOrder6,[%v]", utils.Format4Output(v, false)) - globals.SugarLogger.Debugf("tryToSplitMatterOrder9,[%v]", utils.Format4Output(order, false)) - outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, 0) + outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, order.FromStoreID) if err != nil { + globals.SugarLogger.Debugf("tryToSplitMatterOrder10,[%v]", err) return err } - globals.SugarLogger.Debugf("tryToSplitMatterOrder10") - outJxOrder.OrderID = GenOrderNo(jxcontext.AdminCtx) - outJxOrder.FromStoreID = order.FromStoreID + outJxOrder.OrderID = utils.Str2Int64(order.VendorOrderID)*100 + int64(k+1) globals.SugarLogger.Debugf("tryToSplitMatterOrder7,[%v]", utils.Format4Output(outJxOrder, false)) order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress) if err = err2; err == nil { order2.AddressID = order.AddressID order2.Status = model.OrderStatusDelivering globals.SugarLogger.Debugf("tryToSplitMatterOrder8,[%v]", utils.Format4Output(order2, false)) - partner.CurOrderManager.SaveOrder(order2, false, db) + err = partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order)) orderSolutionForWuLiao(order2) } } @@ -1307,6 +1305,14 @@ func tryToSplitMatterOrder(jxOrder *JxOrderInfo) (outOrders []*JxOrderInfo, frei return outOrders, freightPrice, err } +//商品分包规则。最后一个包不超过5kg,其他包不超过3kg +// 举例1:5.1kg,分为 2.5kg,2.6kg,确保每个包不超过3kg,最后一个包不超过5kg +// 举例2:4kg,分为4kg +// 举例3:10kg,分为 3kg,3kg,4kg +// 举例4:8.1kg,分为 3kg,3kg,2.1kg ; 不能分为3kg,5.1kg +//sum5表示5kg的计算 +//sum3表示3kg的计算 +//处理过程都是一样的,没单独拿一个函数出来了 func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder *JxOrderInfo) { outOrder = &JxOrderInfo{} outOrder.StoreID = jxOrder.StoreID @@ -1318,7 +1324,17 @@ func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder * sum5 += weightList[i].Weight weightList[i].GroupSign = true outOrder.Weight += weightList[i].Weight - outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i])) + if len(outOrder.Skus) > 0 { + for _, v := range outOrder.Skus { + if v.SkuID == weightList[i].SkuID { + v.Count++ + } else { + outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i])) + } + } + } else { + outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i])) + } } else { if sum5 >= 5000 { break @@ -1330,7 +1346,17 @@ func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder * sum3 += weightList[i].Weight weightList[i].GroupSign = true outOrder.Weight += weightList[i].Weight - outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i])) + if len(outOrder.Skus) > 0 { + for _, v := range outOrder.Skus { + if v.SkuID == weightList[i].SkuID { + v.Count++ + } else { + outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i])) + } + } + } else { + outOrder.Skus = append(outOrder.Skus, jxOrderChange(weightList[i])) + } } else { if sum3 >= 3000 { break @@ -1344,7 +1370,7 @@ func loop(weightList []*JxSkuInfo2, jxOrder *JxOrderInfo, flag bool) (outOrder * func jxOrderChange(sku2 *JxSkuInfo2) *JxSkuInfo { sku := &JxSkuInfo{} - sku.Count = sku2.Count + sku.Count = 1 sku.Name = sku2.Name sku.Price = sku2.Price sku.SalePrice = sku2.SalePrice