diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index b3197895a..1e75f297b 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -333,7 +333,7 @@ func (c *OrderManager) updateOrderSkuOtherInfo(order *model.GoodsOrder, db *dao. // } else if actStoreSkuMap != nil { if skuID := jxutils.GetSkuIDFromOrderSku(v); skuID > 0 /*&& v.StoreSubName != ""*/ { - if actStoreSku := actStoreSkuMap.GetActStoreSku(jxStoreID, skuID, order.VendorID); actStoreSku != nil { + if actStoreSku := actStoreSkuMap.GetActStoreSku(jxStoreID, skuID, order.VendorID); actStoreSku != nil && v.StoreSubName != "" { v.EarningPrice = actStoreSku.EarningPrice v.StoreSubID = actStoreSku.ActID } diff --git a/controllers/jx_order.go b/controllers/jx_order.go index af0f6be8f..54dabfe9f 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -504,22 +504,30 @@ func (c *OrderController) GetPrinterStatus() { }) } -func skuList2Map(skuList []*model.OrderSku) (skuCount int, skuMap map[int]*model.OrderSku) { - skuMap = make(map[int]*model.OrderSku) +func skuList2Map(skuList []*model.OrderSku) (skuCount int, skuMap map[int64]*model.OrderSku) { + skuMap = make(map[int64]*model.OrderSku) for _, sku := range skuList { skuCount += sku.Count skuID := jxutils.GetSkuIDFromOrderSku(sku) if sku.SkuID > 0 { - if skuMap[skuID] == nil { - skuMap[skuID] = sku + index := jxutils.Combine2Int(skuID, sku.StoreSubID) + if skuMap[index] == nil { + skuMap[index] = sku } else { - skuMap[skuID].Count += sku.Count + skuMap[index].Count += sku.Count } } } return skuCount, skuMap } +func getSkuFromMap(skuMap map[int64]*model.OrderSku, skuID, actID int) (sku *model.OrderSku) { + if sku = skuMap[jxutils.Combine2Int(skuID, actID)]; sku == nil && actID != 0 { + sku = skuMap[jxutils.Combine2Int(skuID, 0)] + } + return sku +} + // @Title 调整订单 // @Description 调整订单 // @Param token header string true "认证token" @@ -760,16 +768,18 @@ func fillSkuList(skuList, orderSkuList []*model.OrderSku) (isSame bool, err erro for _, sku := range skuList { skuCount2 += sku.Count skuID := jxutils.GetSkuIDFromOrderSku(sku) - if orderSkuMap[skuID] == nil { + actID := sku.StoreSubID + sku2 := getSkuFromMap(orderSkuMap, skuID, actID) + if sku2 == nil { err = fmt.Errorf("找不到SKU:%d", skuID) - } else if sku.Count > orderSkuMap[skuID].Count { - err = fmt.Errorf("SKU:%d调整数量:%d大于实际数量:%d", skuID, sku.Count, orderSkuMap[skuID].Count) + } else if sku.Count > sku2.Count { + err = fmt.Errorf("SKU:%d调整数量:%d大于实际数量:%d", skuID, sku.Count, sku2.Count) } if err != nil { break } else { count := sku.Count - *sku = *orderSkuMap[skuID] + *sku = *sku2 sku.Count = count } }