商品列表 V2

This commit is contained in:
2024-09-19 10:37:59 +08:00
parent e4b25899e5
commit e4a8991205
10 changed files with 236 additions and 18 deletions

View File

@@ -3,9 +3,12 @@ package cn.ysk.cashier.service.impl.productimpl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.util.StrUtil;
import cn.ysk.cashier.cons.domain.ViewConSku;
import cn.ysk.cashier.cons.repository.ViewConSkuRepository;
import cn.ysk.cashier.dto.TbPlatformDictDto;
import cn.ysk.cashier.dto.product.TbProductDto;
import cn.ysk.cashier.dto.product.TbProductQueryCriteria;
import cn.ysk.cashier.dto.product.TbProductQueryV2Criteria;
import cn.ysk.cashier.dto.product.TbProductSortCriteria;
import cn.ysk.cashier.dto.shop.TbCouponCategoryDto;
import cn.ysk.cashier.exception.BadRequestException;
@@ -25,6 +28,7 @@ import cn.ysk.cashier.service.TbPlatformDictService;
import cn.ysk.cashier.service.product.TbProductService;
import cn.ysk.cashier.service.shop.TbCouponCategoryService;
import cn.ysk.cashier.utils.*;
import cn.ysk.cashier.vo.TbProductNewVo;
import cn.ysk.cashier.vo.TbProductVo;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -34,10 +38,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.*;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@@ -48,7 +49,6 @@ import java.math.BigDecimal;
import java.time.Instant;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.function.DoubleSupplier;
import java.util.stream.Collectors;
/**
@@ -78,6 +78,7 @@ public class TbProductServiceImpl implements TbProductService {
private final TbProducSkutMapper producSkutMapper;
private final cn.ysk.cashier.mybatis.mapper.TbProductMapper productMapper;
private final TbProductSkuResultRepository productSkuResultRepository;
private final ViewConSkuRepository viewConSkuRepository;
private final RedisUtils redisUtils;
@@ -235,6 +236,36 @@ public class TbProductServiceImpl implements TbProductService {
return PageUtil.toPage(tbProductVoList, page.getTotalElements());
}
@Override
public Map<String, Object> queryAllV2(TbProductQueryV2Criteria criteria) {
Sort sort = Sort.by(Sort.Direction.ASC, "sort");
Pageable pageable = PageRequest.of(criteria.getPage(), criteria.getSize(), sort);
//查询商品数据
Page<TbProduct> page = tbProductRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable);
List<TbProductNewVo> products = new ArrayList<>();
for (TbProduct product : page.getContent()) {
TbProductNewVo productNewVo = new TbProductNewVo();
BeanUtils.copyProperties(product, productNewVo);
productNewVo.setLowPrice(""+product.getLowPrice().toString());
List<TbProductSku> tbProductSkus = tbProductSkuRepository.searchSku(product.getId().toString());
if (tbProductSkus.size() > 1) {
BigDecimal maxPrice = tbProductSkus.stream().map(TbProductSku::getSalePrice).max(BigDecimal::compareTo).get();
productNewVo.setLowPrice(productNewVo.getLowPrice() + "~¥" + maxPrice);
}
//规格填充
List<TbProductNewVo.TbProductSkuVos> tbProductSkuVos = JSONUtil.parseListTNewList(tbProductSkus, TbProductNewVo.TbProductSkuVos.class);
productNewVo.setSkuList(tbProductSkuVos);
ViewConSku viewConSku=new ViewConSku();
viewConSku.setShopId(Integer.valueOf(product.getShopId()));
viewConSku.setProductId(product.getId());
Example<ViewConSku> query = Example.of(viewConSku);
List<ViewConSku> skuCons = viewConSkuRepository.findAll(query);
productNewVo.setConInfos(skuCons);
products.add(productNewVo);
}
return PageUtil.toPage(products, page.getTotalElements());
}
@Override
public TbProductVo findByProductId(Integer id) throws Exception {

View File

@@ -1,5 +1,6 @@
package cn.ysk.cashier.service.product;
import cn.ysk.cashier.dto.product.TbProductQueryV2Criteria;
import cn.ysk.cashier.dto.product.TbProductSortCriteria;
import cn.ysk.cashier.pojo.product.TbProduct;
import cn.ysk.cashier.vo.TbProductVo;
@@ -29,6 +30,9 @@ public interface TbProductService {
Map<String, Object> queryAll(TbProductQueryCriteria criteria, boolean isAdmin);
Map<String, Object> queryAllV2(TbProductQueryV2Criteria criteria);
/**
* 查询所有数据不分页
*