Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
3ceeaabdfe
|
|
@ -47,4 +47,8 @@ public class ShopGroupProductVo implements Serializable {
|
|||
* 商品列表
|
||||
*/
|
||||
private List<ShopProductVo> productList;
|
||||
/**
|
||||
* 排序方式 0-默认; 1-价格从高到低; 2-销量由高到低;
|
||||
*/
|
||||
private String sortMode;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,4 +105,8 @@ public class ShopProductVo implements Serializable {
|
|||
*/
|
||||
@JSONField(serialize = false)
|
||||
private LocalTime endTime;
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sort;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<ProductMapper, Product> imp
|
|||
@Override
|
||||
@Cacheable(value = CacheConstant.USER_CLIENT_GROUPS_PRODUCT, key = "#shopId", unless = "#result.isEmpty()")
|
||||
public List<ShopGroupProductVo> queryGroupProductList(Long shopId) {
|
||||
List<ShopGroupProductVo> 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<ShopGroupProductVo> 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<ShopProductVo> 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<ProductMapper, Product> imp
|
|||
});
|
||||
Map<Long, ShopProductVo> productKv = productAllList.stream().collect(Collectors.toMap(ShopProductVo::getId, shopProductVo -> shopProductVo));
|
||||
List<Long> prodGroupIdList = groupList.stream().map(ShopGroupProductVo::getId).distinct().toList();
|
||||
List<ProdGroupRelationDTO> relationList = prodGroupIdList.isEmpty() ? new ArrayList<>() : prodGroupRelationMapper.selectListByQueryAs(query().select(ProdGroupRelation::getProdGroupId, ProdGroupRelation::getProductId).in(ProdGroupRelation::getProdGroupId, prodGroupIdList), ProdGroupRelationDTO.class);
|
||||
Map<Long, List<Long>> relationKv = relationList.stream().collect(Collectors.groupingBy(ProdGroupRelationDTO::getProdGroupId, Collectors.mapping(ProdGroupRelationDTO::getProductId, Collectors.toList())));
|
||||
List<ProdGroupRelationDTO> relationList = prodGroupIdList.isEmpty() ? new ArrayList<>() :
|
||||
prodGroupRelationMapper.selectListByQueryAs(query().select(ProdGroupRelation::getProdGroupId, ProdGroupRelation::getProductId)
|
||||
.in(ProdGroupRelation::getProdGroupId, prodGroupIdList), ProdGroupRelationDTO.class);
|
||||
Map<Long, List<Long>> relationKv = relationList.stream().collect(Collectors.groupingBy(ProdGroupRelationDTO::getProdGroupId,
|
||||
Collectors.mapping(ProdGroupRelationDTO::getProductId, Collectors.toList())));
|
||||
for (ShopGroupProductVo group : groupList) {
|
||||
List<Long> productIdList = relationKv.get(group.getId());
|
||||
if (CollUtil.isEmpty(productIdList)) {
|
||||
|
|
@ -108,6 +111,14 @@ public class UProductServiceImpl extends ServiceImpl<ProductMapper, Product> 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();
|
||||
|
|
|
|||
Loading…
Reference in New Issue