diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/ShoppingCartServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/ShoppingCartServiceImpl.java index b7cb58b58..a7f2a6173 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/ShoppingCartServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/ShoppingCartServiceImpl.java @@ -120,34 +120,20 @@ public class ShoppingCartServiceImpl implements IShoppingCartService { // 商品价格尺码map Map priceSizeMap = priceSizeList.stream().collect(Collectors .toMap(x -> x.getStoreProdId().toString() + x.getStoreColorId().toString() + x.getSize(), x -> x)); - // 获取所有标准尺码 - List standardSizeList = this.prodColorSizeMapper.selectList(new LambdaQueryWrapper() - .in(StoreProductColorSize::getStoreProdId, shoppingCartList.stream().map(ShopCartPageResDTO::getStoreProdId).collect(Collectors.toList())) - .eq(StoreProductColorSize::getDelFlag, Constants.UNDELETED).eq(StoreProductColorSize::getStandard, ProductSizeStatus.STANDARD.getValue())); - if (CollectionUtils.isEmpty(standardSizeList)) { - return Page.convert(new PageInfo<>(shoppingCartList)); - } - // 以storeProdId为key, 取标准尺码的最大值和最小值组成字符串 eg: 34 - 40 - Map minAndMaxSizeMap = standardSizeList.stream().collect(Collectors.groupingBy( - StoreProductColorSize::getStoreProdId, - Collectors.collectingAndThen( - Collectors.mapping(StoreProductColorSize::getSize, Collectors.toList()), - sizeList -> { - if (sizeList.isEmpty()) { - return ""; // 处理空列表的情况,返回空字符串或其他默认值 - } - int minSize = Collections.min(sizeList); - int maxSize = Collections.max(sizeList); - return minSize + "-" + maxSize; - }))); - // 设置标准尺码 + // 当前商品所有标准尺码 + Map prodStandardSizeMap = priceSizeList.stream() + .filter(x -> Objects.equals(x.getStandard(), 1)) + .collect(Collectors.groupingBy(StoreProductColorSize::getStoreProdId, Collectors + .collectingAndThen(Collectors.mapping(StoreProductColorSize::getSize, Collectors.toSet()), + sizes -> sizes.stream().sorted().map(String::valueOf).collect(Collectors.joining(","))))); shoppingCartList.forEach(x -> { x.setMainPicUrl(mainPicMap.getOrDefault(x.getStoreProdId(), null)); x.getDetailList() .forEach(detail -> { StoreProductColorSize prodColorSize = priceSizeMap.get(x.getStoreProdId().toString() + detail.getStoreColorId().toString() + detail.getSize()); - detail.setStandardSize(minAndMaxSizeMap.getOrDefault(x.getStoreProdId(), "")) - .setAmount((ObjectUtils.isNotEmpty(prodColorSize) ? prodColorSize.getPrice() : BigDecimal.ZERO).multiply(new BigDecimal(detail.getQuantity()))) + detail.setStandardSize(prodStandardSizeMap.getOrDefault(x.getStoreProdId(), "")) + .setAmount((ObjectUtils.isNotEmpty(prodColorSize) + ? prodColorSize.getPrice() : BigDecimal.ZERO).multiply(new BigDecimal(detail.getQuantity()))) .setPrice(ObjectUtils.isNotEmpty(prodColorSize) ? prodColorSize.getPrice() : null) .setStoreProdColorSizeId(ObjectUtils.isNotEmpty(prodColorSize) ? prodColorSize.getId() : null); });