diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopGroupProductVo.java b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopGroupProductVo.java index 253c8491..e1cd3b31 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopGroupProductVo.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopGroupProductVo.java @@ -47,4 +47,8 @@ public class ShopGroupProductVo implements Serializable { * 商品列表 */ private List productList; + /** + * 排序方式 0-默认; 1-价格从高到低; 2-销量由高到低; + */ + private String sortMode; } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java index 2728c80f..b0a64208 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java @@ -105,4 +105,8 @@ public class ShopProductVo implements Serializable { */ @JSONField(serialize = false) private LocalTime endTime; + /** + * 排序 + */ + private Integer sort; } diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/UProductServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/UProductServiceImpl.java index 38d3a3b6..d76dd6c5 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/UProductServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/UProductServiceImpl.java @@ -37,10 +37,7 @@ import java.time.DayOfWeek; import java.time.LocalDate; import java.time.LocalTime; import java.time.format.TextStyle; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -77,7 +74,10 @@ public class UProductServiceImpl extends ServiceImpl imp @Override @Cacheable(value = CacheConstant.USER_CLIENT_GROUPS_PRODUCT, key = "#shopId", unless = "#result.isEmpty()") public List queryGroupProductList(Long shopId) { - List groupList = prodGroupMapper.selectListByQueryAs(query().select(ProdGroup::getId, ProdGroup::getName, ProdGroup::getUseTime, ProdGroup::getSaleStartTime, ProdGroup::getSaleEndTime).eq(ProdGroup::getShopId, shopId).eq(ProdGroup::getStatus, StatusEnum.ENABLED.value()).orderBy(ProdGroup::getSort, true), ShopGroupProductVo.class); + List groupList = prodGroupMapper.selectListByQueryAs(query().select(ProdGroup::getId, + ProdGroup::getName, ProdGroup::getUseTime, ProdGroup::getSaleStartTime, ProdGroup::getSaleEndTime) + .eq(ProdGroup::getShopId, shopId).eq(ProdGroup::getStatus, StatusEnum.ENABLED.value()) + .orderBy(ProdGroup::getSort, true), ShopGroupProductVo.class); List productAllList = productMapper.selectGroupProductList(shopId); productAllList.forEach(item -> { item.setIsSaleTime(calcIsSaleTime(item.getDays(), item.getStartTime(), item.getEndTime())); @@ -89,8 +89,11 @@ public class UProductServiceImpl extends ServiceImpl imp }); Map productKv = productAllList.stream().collect(Collectors.toMap(ShopProductVo::getId, shopProductVo -> shopProductVo)); List prodGroupIdList = groupList.stream().map(ShopGroupProductVo::getId).distinct().toList(); - List relationList = prodGroupIdList.isEmpty() ? new ArrayList<>() : prodGroupRelationMapper.selectListByQueryAs(query().select(ProdGroupRelation::getProdGroupId, ProdGroupRelation::getProductId).in(ProdGroupRelation::getProdGroupId, prodGroupIdList), ProdGroupRelationDTO.class); - Map> relationKv = relationList.stream().collect(Collectors.groupingBy(ProdGroupRelationDTO::getProdGroupId, Collectors.mapping(ProdGroupRelationDTO::getProductId, Collectors.toList()))); + List relationList = prodGroupIdList.isEmpty() ? new ArrayList<>() : + prodGroupRelationMapper.selectListByQueryAs(query().select(ProdGroupRelation::getProdGroupId, ProdGroupRelation::getProductId) + .in(ProdGroupRelation::getProdGroupId, prodGroupIdList), ProdGroupRelationDTO.class); + Map> relationKv = relationList.stream().collect(Collectors.groupingBy(ProdGroupRelationDTO::getProdGroupId, + Collectors.mapping(ProdGroupRelationDTO::getProductId, Collectors.toList()))); for (ShopGroupProductVo group : groupList) { List productIdList = relationKv.get(group.getId()); if (CollUtil.isEmpty(productIdList)) { @@ -108,6 +111,14 @@ public class UProductServiceImpl extends ServiceImpl imp productList.parallelStream().forEach(product -> { product.setIsSaleTime(isSaleTime); }); + +// switch (group.getSortMode()) { +// case "0" -> productList.sort(Comparator.comparing(ShopProductVo::getSalePrice)); +// case "1" -> productList.sort((o1, o2) -> o2.getSalePrice().compareTo(o1.getSalePrice())); +// case "2" -> productList.sort((o1, o2) -> o2.getSort().compareTo(o1.getSort())); +// +// } + productList.sort(Comparator.comparing(ShopProductVo::getSalePrice)); group.setProductList(productList); } return groupList.stream().filter(group -> CollUtil.isNotEmpty(group.getProductList())).toList();