eco-dessert-platform / backend

Apache License 2.0
0 stars 0 forks source link

스토어 상세보기 리팩토링 및 무한 스크롤 구현 #156

Closed yunyechan9893 closed 5 months ago

yunyechan9893 commented 5 months ago

image image

주요 변경사항

- 스토어 상세보기 API 3개로 분할
        1. 스토어 API
        2. 베스트 게시글(게시물 3개) API
        3. 스토어가 갖고 있는 전체 게시글 API

- "3"번 API 커서 기반 무한스크롤 구현

- 스토어 상세보기 코드 리팩토링
        - 파일 분할 
        - null 명시적으로 변경
        - @QueryProjection를 사용하여 fetch 결과 값 바로 Dto로 변경

시급한 정도

- 천천히

중점적으로 봐줬으면 하는 부분

private List<PopularBoardDto> getPopularBoardDtoList(List<Long> topBoardIds,
      Long memberId) {
      Expression<Long> conditionalWhislistProduct =
          Objects.nonNull(memberId) ? wishListBoard.id : emptywishListBoardNumber;

      JPAQuery<PopularBoardDto> queryBeforeFetch = queryFactory
          .select(
              new QPopularBoardDto(
                  ranking.id,
                  board.id,
                  board.profile,
                  board.title,
                  board.price,
                  product.category,
                  conditionalWhislistProduct))
          .distinct()
          .from(ranking)
          .join(product).on(ranking.board.eq(product.board))
          .join(board).on(product.board.eq(board))
          .where(ranking.id.in(topBoardIds))
          .orderBy(ranking.board.id.desc());

해당 부분은 랭크 테이블이 수정됨에 따라 수정될 쿼리입니다

기타

리팩토링 된 화면

image

sikdong commented 5 months ago

고생하셨습니다!