베스트 상품 조회

@Cacheable(value = "bestProductList", key = "#subCateNo")
public List<ProductDTO> selectBestAllForList(int subCateNo) {
    Page<Tuple> pageProduct = productRepository.selectBestAllForList(subCateNo);
    return pageProduct.getContent().stream().map(tuple -> {
        Product product = tuple.get(0, Product.class);
        String company = tuple.get(1, String.class);
        String sNameList = tuple.get(2, String.class);

        ProductDTO dto = modelMapper.map(product, ProductDTO.class);
        dto.setCompany(company);
        dto.setSNameList(sNameList);
        return dto;
    }).toList();
}

기술 설명

정렬된 상품 목록 조회

@Cacheable(value = "sortedProductList", key = "#pageRequestDTO.toString()")
public PageResponseDTO sortedProducts(PageRequestDTO pageRequestDTO) {
    Pageable pageable = pageRequestDTO.getPageable("no");

    Page<Tuple> pageProduct = productRepository.sortedProducts(pageRequestDTO, pageable);

    List<ProductDTO> productDTOList = pageProduct.getContent().stream().map(tuple -> {
        Product product = tuple.get(0, Product.class);
        String company = tuple.get(1, String.class);
        String rank = tuple.get(2, String.class);
        String sNameList = tuple.get(3, String.class);

        ProductDTO productDTO = modelMapper.map(product, ProductDTO.class);
        productDTO.setCompany(company);
        productDTO.setRank(rank);
        productDTO.setSNameList(sNameList);

        return productDTO;
    }).toList();

    int total = (int) pageProduct.getTotalElements();

    return PageResponseDTO.<ProductDTO>builder()
            .pageRequestDTO(pageRequestDTO)
            .dtoList(productDTOList)
            .total(total)
            .build();
}

기술 설명