Merge remote-tracking branch 'origin/mark' into don

This commit is contained in:
Rosy-zhudan
2019-07-30 08:35:17 +08:00
8 changed files with 46 additions and 26 deletions

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