From 245d5581ffe8391082ed3980cae381ca17384b6c Mon Sep 17 00:00:00 2001 From: gazebo Date: Mon, 29 Jul 2019 16:44:42 +0800 Subject: [PATCH] =?UTF-8?q?-=20PartRefundOrder=E4=B8=8EAdjustOrder?= =?UTF-8?q?=E9=92=88=E5=AF=B9removedList=E4=B8=BA=E6=89=80=E6=9C=89?= =?UTF-8?q?=E5=95=86=E5=93=81=E7=9A=84=E6=83=85=E5=86=B5=E7=89=B9=E6=AE=8A?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/jx_order.go | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/controllers/jx_order.go b/controllers/jx_order.go index d48029f0a..e64e166f6 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -503,9 +503,10 @@ func (c *OrderController) GetPrinterStatus() { }) } -func skuList2Map(skuList []*model.OrderSku) (skuMap map[int]*model.OrderSku) { +func skuList2Map(skuList []*model.OrderSku) (skuCount int, skuMap map[int]*model.OrderSku) { skuMap = make(map[int]*model.OrderSku) for _, sku := range skuList { + skuCount += sku.Count skuID := jxutils.GetSkuIDFromOrderSku(sku) if sku.SkuID > 0 { if skuMap[skuID] == nil { @@ -515,7 +516,7 @@ func skuList2Map(skuList []*model.OrderSku) (skuMap map[int]*model.OrderSku) { } } } - return skuMap + return skuCount, skuMap } // @Title 调整订单 @@ -536,8 +537,13 @@ func (c *OrderController) AdjustOrder() { var order *model.GoodsOrder order, err = partner.CurOrderManager.LoadOrder(params.VendorOrderID, params.VendorID) if err == nil { - if err = fillSkuList(skuList, order.Skus); err == nil { - err = defsch.FixedScheduler.AdjustOrder(params.Ctx, order, skuList, params.Reason) + removedAll, err2 := fillSkuList(skuList, order.Skus) + if err = err2; err == nil { + if removedAll { + err = fmt.Errorf("至少要保留一个商品") + } else { + err = defsch.FixedScheduler.AdjustOrder(params.Ctx, order, skuList, params.Reason) + } } } } @@ -733,8 +739,13 @@ func (c *OrderController) PartRefundOrder() { var order *model.GoodsOrder order, err = partner.CurOrderManager.LoadOrder(params.VendorOrderID, params.VendorID) if err == nil { - if err = fillSkuList(skuList, order.Skus); err == nil { - err = defsch.FixedScheduler.PartRefundOrder(params.Ctx, order, skuList, params.Reason) + removedAll, err2 := fillSkuList(skuList, order.Skus) + if err = err2; err == nil { + if removedAll { + err = defsch.FixedScheduler.RefundOrder(params.Ctx, order, params.Reason) + } else { + err = defsch.FixedScheduler.PartRefundOrder(params.Ctx, order, skuList, params.Reason) + } } } } @@ -742,10 +753,11 @@ func (c *OrderController) PartRefundOrder() { }) } -func fillSkuList(skuList, orderSkuList []*model.OrderSku) (err error) { - orderSkuMap := skuList2Map(orderSkuList) - removeSkuMap := skuList2Map(skuList) - for _, sku := range removeSkuMap { +func fillSkuList(skuList, orderSkuList []*model.OrderSku) (isSame bool, err error) { + skuCount, orderSkuMap := skuList2Map(orderSkuList) + skuCount2 := 0 + for _, sku := range skuList { + skuCount2 += sku.Count skuID := jxutils.GetSkuIDFromOrderSku(sku) if orderSkuMap[skuID] == nil { err = fmt.Errorf("找不到SKU:%d", skuID) @@ -760,7 +772,7 @@ func fillSkuList(skuList, orderSkuList []*model.OrderSku) (err error) { sku.Count = count } } - return err + return skuCount == skuCount2, err } // @Title 商家主动发起全额退款售后