- PartRefundOrder与AdjustOrder针对removedList为所有商品的情况特殊处理

This commit is contained in:
gazebo
2019-07-29 16:44:42 +08:00
parent efcfe672b3
commit 245d5581ff

View File

@@ -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) skuMap = make(map[int]*model.OrderSku)
for _, sku := range skuList { for _, sku := range skuList {
skuCount += sku.Count
skuID := jxutils.GetSkuIDFromOrderSku(sku) skuID := jxutils.GetSkuIDFromOrderSku(sku)
if sku.SkuID > 0 { if sku.SkuID > 0 {
if skuMap[skuID] == nil { if skuMap[skuID] == nil {
@@ -515,7 +516,7 @@ func skuList2Map(skuList []*model.OrderSku) (skuMap map[int]*model.OrderSku) {
} }
} }
} }
return skuMap return skuCount, skuMap
} }
// @Title 调整订单 // @Title 调整订单
@@ -536,8 +537,13 @@ func (c *OrderController) AdjustOrder() {
var order *model.GoodsOrder var order *model.GoodsOrder
order, err = partner.CurOrderManager.LoadOrder(params.VendorOrderID, params.VendorID) order, err = partner.CurOrderManager.LoadOrder(params.VendorOrderID, params.VendorID)
if err == nil { if err == nil {
if err = fillSkuList(skuList, order.Skus); err == nil { removedAll, err2 := fillSkuList(skuList, order.Skus)
err = defsch.FixedScheduler.AdjustOrder(params.Ctx, order, skuList, params.Reason) 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 var order *model.GoodsOrder
order, err = partner.CurOrderManager.LoadOrder(params.VendorOrderID, params.VendorID) order, err = partner.CurOrderManager.LoadOrder(params.VendorOrderID, params.VendorID)
if err == nil { if err == nil {
if err = fillSkuList(skuList, order.Skus); err == nil { removedAll, err2 := fillSkuList(skuList, order.Skus)
err = defsch.FixedScheduler.PartRefundOrder(params.Ctx, order, skuList, params.Reason) 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) { func fillSkuList(skuList, orderSkuList []*model.OrderSku) (isSame bool, err error) {
orderSkuMap := skuList2Map(orderSkuList) skuCount, orderSkuMap := skuList2Map(orderSkuList)
removeSkuMap := skuList2Map(skuList) skuCount2 := 0
for _, sku := range removeSkuMap { for _, sku := range skuList {
skuCount2 += sku.Count
skuID := jxutils.GetSkuIDFromOrderSku(sku) skuID := jxutils.GetSkuIDFromOrderSku(sku)
if orderSkuMap[skuID] == nil { if orderSkuMap[skuID] == nil {
err = fmt.Errorf("找不到SKU:%d", skuID) err = fmt.Errorf("找不到SKU:%d", skuID)
@@ -760,7 +772,7 @@ func fillSkuList(skuList, orderSkuList []*model.OrderSku) (err error) {
sku.Count = count sku.Count = count
} }
} }
return err return skuCount == skuCount2, err
} }
// @Title 商家主动发起全额退款售后 // @Title 商家主动发起全额退款售后