diff --git a/src/main/java/com/gg/server/domain/rank/controller/RankV2Controller.java b/src/main/java/com/gg/server/domain/rank/controller/RankV2Controller.java index a9ab21c2b..1e4081e52 100644 --- a/src/main/java/com/gg/server/domain/rank/controller/RankV2Controller.java +++ b/src/main/java/com/gg/server/domain/rank/controller/RankV2Controller.java @@ -12,7 +12,9 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @@ -37,7 +39,7 @@ public ExpRankPageResponseDto getExpRankPage(@Valid PageRequestDto pageRequestDt */ @GetMapping("/ranks/{gameType}") public RankPageResponseDto getRankPage(@Valid PageRequestDto pageRequestDto, @Parameter(hidden = true) @Login UserDto user, - Long season, String gameType){ + @RequestParam Long season, @PathVariable String gameType){ PageRequest pageRequest = PageRequest.of(pageRequestDto.getPage() - 1, pageRequestDto.getSize()); return rankService.getRankPageV2(pageRequest, user, season); } diff --git a/src/main/java/com/gg/server/domain/rank/data/RankRepository.java b/src/main/java/com/gg/server/domain/rank/data/RankRepository.java index 1ef5d5f78..a453cd817 100644 --- a/src/main/java/com/gg/server/domain/rank/data/RankRepository.java +++ b/src/main/java/com/gg/server/domain/rank/data/RankRepository.java @@ -45,8 +45,8 @@ public interface RankRepository extends JpaRepository { + " GROUP BY p.user_id) pg " + "ON pg.user_id = u.id " + "WHERE r.season_id = :seasonId AND (r.losses > 0 OR r.wins > 0) " - + "LIMIT :pageSize OFFSET :pageNum ", nativeQuery = true) - List findPppRankBySeasonId(@Param("pageNum")int pageNum, @Param("pageSize")int pageSize, @Param("seasonId") Long seasonId); + + "LIMIT :limit OFFSET :offset ", nativeQuery = true) + List findPppRankBySeasonId(@Param("offset")int offset, @Param("limit")int limit, @Param("seasonId") Long seasonId); @Query(value = "SELECT count(*) " + "FROM Ranks r " diff --git a/src/main/java/com/gg/server/domain/rank/service/RankService.java b/src/main/java/com/gg/server/domain/rank/service/RankService.java index 7b53ff264..5e2e57f46 100644 --- a/src/main/java/com/gg/server/domain/rank/service/RankService.java +++ b/src/main/java/com/gg/server/domain/rank/service/RankService.java @@ -86,11 +86,13 @@ public ExpRankPageResponseDto getExpRankPage(PageRequest pageRequest, UserDto cu users.getTotalPages(), expRankDtos); } + @Cacheable(value = "expRanking", cacheManager = "gameCacheManager", key = "#pageRequest.pageNumber + #pageRequest.pageSize") public List getExpRankList(PageRequest pageRequest) { Season curSeason = seasonFindService.findCurrentSeason(LocalDateTime.now()); - List expRankV2Dtos = userRepository.findExpRank(pageRequest.getPageNumber(), pageRequest.getPageSize(), curSeason.getId()); + int pageOffset = pageRequest.getPageNumber() * pageRequest.getPageSize(); + List expRankV2Dtos = userRepository.findExpRank(pageOffset, pageRequest.getPageSize(), curSeason.getId()); return expRankV2Dtos.stream().map(ExpRankDto::from).collect(Collectors.toList()); } @@ -119,7 +121,8 @@ public RankPageResponseDto getRankPageV2(PageRequest pageRequest, UserDto curUse int myRank = rankRepository.findRankByUserIdAndSeasonId(curUser.getId(), season.getId()) .orElse(-1); - List rankList = rankRepository.findPppRankBySeasonId(pageRequest.getPageNumber(), pageRequest.getPageSize(), season.getId()) + int pageOffset = pageRequest.getPageNumber() * pageRequest.getPageSize(); + List rankList = rankRepository.findPppRankBySeasonId(pageOffset, pageRequest.getPageSize(), season.getId()) .stream().map(RankDto::from).collect(Collectors.toList()); return new RankPageResponseDto(myRank, pageRequest.getPageNumber() + 1, totalPage, rankList); } diff --git a/src/main/java/com/gg/server/domain/user/data/UserRepository.java b/src/main/java/com/gg/server/domain/user/data/UserRepository.java index 2f0a1f310..f6750bb6a 100644 --- a/src/main/java/com/gg/server/domain/user/data/UserRepository.java +++ b/src/main/java/com/gg/server/domain/user/data/UserRepository.java @@ -45,7 +45,7 @@ public interface UserRepository extends JpaRepository { + "FROM User u LEFT JOIN Ranks r " + "ON u.id = r.user_id " + "WHERE r.season_id = :seasonId AND u.total_exp > 0 " - + "LIMIT :pageSize OFFSET :pageNum", nativeQuery = true) - List findExpRank(@Param("pageNum")int pageNum, @Param("pageSize")int pageSize, @Param("seasonId")Long seasonId); + + "LIMIT :limit OFFSET :offset", nativeQuery = true) + List findExpRank(@Param("offset")int offset, @Param("limit")int limit, @Param("seasonId")Long seasonId); }