From 47b3f2794670d828562705497029e5321e9edaf6 Mon Sep 17 00:00:00 2001 From: Tankaikai Date: Tue, 18 Feb 2025 17:24:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E6=A8=A1=E5=9D=97=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/czg/product/dto/ProductDTO.java | 14 +++++++++--- .../service/impl/ProductServiceImpl.java | 22 +++++++++++++++---- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/dto/ProductDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/product/dto/ProductDTO.java index 4ee82ef6e..7535b4c85 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/dto/ProductDTO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/dto/ProductDTO.java @@ -120,7 +120,7 @@ public class ProductDTO implements Serializable { @NotNull(message = "是否允许临时改价不能为空", groups = DefaultGroup.class) private Integer isAllowTempModifyPrice; /** - * 周 数组 'Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday' + * 定时上下架周期 数组 'Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday' */ @NotBlank(message = "定时上下架周期不能为空", groups = DefaultGroup.class) private String days; @@ -206,11 +206,19 @@ public class ProductDTO implements Serializable { /** * 创建开始时间 */ - private LocalDateTime createBeginTime; + private String createBeginTime; /** * 创建结束时间 */ - private LocalDateTime createEndTime; + private String createEndTime; + /** + * 最低售价 + */ + private BigDecimal lowPrice; + /** + * 会员最低售价 + */ + private BigDecimal lowMemberPrice; public Object getImages() { return JSON.parseArray(Convert.toStr(images, "[]")); diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductServiceImpl.java index f2f35ff70..1b4394b8d 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductServiceImpl.java @@ -29,9 +29,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.stream.Collectors; import static com.czg.product.entity.table.ProductTableDef.PRODUCT; import static com.czg.product.entity.table.ShopProdCategoryTableDef.SHOP_PROD_CATEGORY; @@ -95,7 +94,22 @@ public class ProductServiceImpl extends ServiceImpl impl @Override public Page getProductPage(ProductDTO param) { QueryWrapper queryWrapper = buildFullQueryWrapper(param); - return super.pageAs(PageUtil.buildPage(), queryWrapper, ProductDTO.class); + Page page = super.pageAs(PageUtil.buildPage(), queryWrapper, ProductDTO.class); + List records = page.getRecords(); + List prodIdList = records.stream().map(ProductDTO::getId).distinct().toList(); + List skuList = prodSkuMapper.selectListByQueryAs(query().in(ProdSku::getProductId, prodIdList).eq(ProdSku::getIsDel, DeleteEnum.NORMAL.value()), ProdSkuDTO.class); + Map> collect = skuList.stream().collect(Collectors.groupingBy(ProdSkuDTO::getProductId)); + for (ProductDTO record : records) { + List list = collect.getOrDefault(record.getId(), Collections.emptyList()); + Optional lowPriceIsPresent = list.stream().map(ProdSkuDTO::getSalePrice).min(BigDecimal::compareTo); + lowPriceIsPresent.ifPresent(record::setLowPrice); + + Optional lowMemberPriceIsPresent = list.stream().map(ProdSkuDTO::getMemberPrice).min(BigDecimal::compareTo); + lowMemberPriceIsPresent.ifPresent(record::setLowMemberPrice); + + record.setSkuList(list); + } + return page; } @Override