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 商家主动发起全额退款售后