From 877a9bb2ac7e5033f5cf7995a4a4ebfaade6d7c6 Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Thu, 17 Jul 2025 10:23:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E5=95=86=E5=9F=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AppShopSpuController.java | 34 ++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/AppShopSpuController.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/AppShopSpuController.java index 7af325a39..2cee5c3eb 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/AppShopSpuController.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/AppShopSpuController.java @@ -34,15 +34,41 @@ public class AppShopSpuController { @Operation(summary = "APP商品分页", description = "移动端商品分页") public R> page( @ParameterObject Page page, - @RequestParam(required = false) Integer categoryId, - @RequestParam(required = false) String keyword + @RequestParam(required = false) Long categoryId, + @RequestParam(required = false) String keyword, + @RequestParam(required = false) String merchantId ) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); wrapper.eq(categoryId != null, ShopSpuEntity::getCategoryId, categoryId); - wrapper.like(StrUtil.isNotBlank(keyword), ShopSpuEntity::getProductName, keyword); + wrapper.like(cn.hutool.core.util.StrUtil.isNotBlank(keyword), ShopSpuEntity::getProductName, keyword); wrapper.eq(ShopSpuEntity::getStatus, 0); // 只查上架 + if (cn.hutool.core.util.StrUtil.isNotBlank(merchantId)) { + wrapper.apply("FIND_IN_SET({0}, merchant_ids)", merchantId.trim()); + } IPage spuPage = shopSpuService.page(page, wrapper); - IPage voPage = spuPage.convert(spu -> BeanUtils.toBean(spu, ShopSpuListAppVo.class)); + List spuIds = spuPage.getRecords().stream().map(ShopSpuEntity::getId).collect(java.util.stream.Collectors.toList()); + List skuList = spuIds.isEmpty() ? List.of() : shopSkuService.list( + Wrappers.lambdaQuery().in(ShopSkuEntity::getSpuId, spuIds) + ); + java.util.Map> skuMap = skuList.stream().collect(java.util.stream.Collectors.groupingBy(ShopSkuEntity::getSpuId)); + IPage voPage = spuPage.convert(spu -> { + ShopSpuListAppVo vo = com.bsd.pjcloud.common.core.util.BeanUtils.toBean(spu, ShopSpuListAppVo.class); + List skus = skuMap.getOrDefault(spu.getId(), List.of()); + vo.setMinPrice(skus.stream() + .map(ShopSkuEntity::getRetailPrice) + .filter(java.util.Objects::nonNull) + .map(price -> new java.math.BigDecimal(price).divide(new java.math.BigDecimal(100))) + .min(java.math.BigDecimal::compareTo) + .orElse(java.math.BigDecimal.ZERO)); + vo.setTotalStock( + skus.stream() + .map(ShopSkuEntity::getStock) + .filter(java.util.Objects::nonNull) + .mapToDouble(Double::doubleValue) + .sum() + ); + return vo; + }); return R.ok(voPage); }