From ab694b3de1deabd6ca4a2ba9b61dfb8f9d05e379 Mon Sep 17 00:00:00 2001 From: jihhyeong Date: Sat, 8 Feb 2025 14:35:33 +0900 Subject: [PATCH 1/2] =?UTF-8?q?:sparkles:=20[Feat]=20=EA=B2=8C=EC=8B=9C?= =?UTF-8?q?=ED=8C=90=20=EC=9E=90=EC=9C=A0=EB=9E=AD=ED=81=AC=20=EB=B0=98?= =?UTF-8?q?=EC=98=81,=20=EC=9E=90=EC=9C=A0=EB=9E=AD=ED=81=AC=20=EA=B8=B0?= =?UTF-8?q?=EB=B0=98=20=EA=B2=8C=EC=8B=9C=EB=AC=BC=20=EC=A1=B0=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../board/controller/BoardController.java | 8 ++++--- .../board/dto/response/BoardByIdResponse.java | 24 ++++++++++++------- .../response/BoardByIdResponseForMember.java | 24 ++++++++++++------- .../dto/response/BoardInsertResponse.java | 12 ++++++---- .../board/dto/response/BoardListResponse.java | 18 +++++++++----- .../dto/response/BoardUpdateResponse.java | 12 ++++++---- .../dto/response/MyBoardListResponse.java | 14 +++++++---- .../board/repository/BoardRepository.java | 12 +++++----- .../board/service/BoardFacadeService.java | 5 ++-- .../content/board/service/BoardService.java | 10 ++++---- 10 files changed, 90 insertions(+), 49 deletions(-) diff --git a/src/main/java/com/gamegoo/gamegoo_v2/content/board/controller/BoardController.java b/src/main/java/com/gamegoo/gamegoo_v2/content/board/controller/BoardController.java index 60bce88..fbf8ddd 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/content/board/controller/BoardController.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/content/board/controller/BoardController.java @@ -67,7 +67,8 @@ public ApiResponse boardInsert( @Parameter(name = "pageIdx", description = "조회할 페이지 번호를 입력해주세요. 페이지 당 20개의 게시물을 볼 수 있습니다."), @Parameter(name = "gameMode", description = "(선택) 게임 모드를 입력해주세요. < 빠른대전: FAST, 솔로랭크: SOLO, 자유랭크: FREE, " + "칼바람 나락: ARAM >"), - @Parameter(name = "tier", description = "(선택) 티어를 선택해주세요."), + @Parameter(name = "soloTier", description = "(선택) 솔로랭크 티어를 선택해주세요."), + @Parameter(name = "freeTier", description = "(선택) 자유랭크 티어를 선택해주세요."), @Parameter(name = "mainP", description = "(선택) 포지션을 입력해주세요. < 전체: ANY, 탑: TOP, 정글: JUNGLE, 미드: " + "MID, 원딜: ADC, " + "서포터: SUP >"), @@ -76,11 +77,12 @@ public ApiResponse boardInsert( public ApiResponse boardList( @ValidPage @RequestParam(name = "page") Integer page, @RequestParam(required = false) GameMode gameMode, - @RequestParam(required = false) Tier tier, + @RequestParam(required = false) Tier soloTier, + @RequestParam(required = false) Tier freeTier, @RequestParam(required = false) Position mainP, @RequestParam(required = false) Mike mike) { - return ApiResponse.ok(boardFacadeService.getBoardList(gameMode, tier, mainP, mike, page)); + return ApiResponse.ok(boardFacadeService.getBoardList(gameMode, soloTier, freeTier, mainP, mike, page)); } diff --git a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardByIdResponse.java b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardByIdResponse.java index 4f05864..4faffb7 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardByIdResponse.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardByIdResponse.java @@ -25,16 +25,20 @@ public class BoardByIdResponse { String gameName; String tag; Integer mannerLevel; - Tier tier; - int rank; + Tier soloTier; + Tier freeTier; + int soloRank; + int freeRank; Mike mike; List championResponseList; GameMode gameMode; Position mainP; Position subP; Position wantP; - Integer recentGameCount; - Double winRate; + Integer soloRecentGameCount; + Integer freeRecentGameCount; + Double soloWinRate; + Double freeWinRate; List gameStyles; String contents; @@ -58,16 +62,20 @@ public static BoardByIdResponse of(Board board) { .gameName(poster.getGameName()) .tag(poster.getTag()) .mannerLevel(poster.getMannerLevel()) - .tier(poster.getSoloTier()) - .rank(poster.getSoloRank()) + .soloTier(poster.getSoloTier()) + .freeTier(poster.getFreeTier()) + .soloRank(poster.getSoloRank()) + .freeRank(poster.getFreeRank()) .mike(board.getMike()) .championResponseList(championResponseList) .gameMode(board.getGameMode()) .mainP(board.getMainP()) .subP(board.getSubP()) .wantP(board.getWantP()) - .recentGameCount(poster.getSoloGameCount()) - .winRate(poster.getSoloWinRate()) + .soloRecentGameCount(poster.getSoloGameCount()) + .freeRecentGameCount(poster.getFreeGameCount()) + .soloWinRate(poster.getSoloWinRate()) + .freeWinRate(poster.getFreeWinRate()) .gameStyles(gameStyleIds) .contents(board.getContent()) .build(); diff --git a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardByIdResponseForMember.java b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardByIdResponseForMember.java index f4379a6..4fa2c96 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardByIdResponseForMember.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardByIdResponseForMember.java @@ -30,16 +30,20 @@ public class BoardByIdResponseForMember { String tag; Integer mannerLevel; List mannerKeywords; - Tier tier; - int rank; + Tier soloTier; + Tier freeTier; + int soloRank; + int freeRank; Mike mike; List championResponseDTOList; GameMode gameMode; Position mainP; Position subPosition; Position wantPosition; - Integer recentGameCount; - Double winRate; + Integer soloRecentGameCount; + Integer freeRecentGameCount; + Double soloWinRate; + Double freeWinRate; List gameStyles; String contents; @@ -74,16 +78,20 @@ public static BoardByIdResponseForMember of( .gameName(poster.getGameName()) .tag(poster.getTag()) .mannerLevel(poster.getMannerLevel()) - .tier(poster.getSoloTier()) - .rank(poster.getSoloRank()) + .soloTier(poster.getSoloTier()) + .freeTier(poster.getFreeTier()) + .soloRank(poster.getSoloRank()) + .freeRank(poster.getFreeRank()) .mike(board.getMike()) .championResponseDTOList(championResponseList) .gameMode(board.getGameMode()) .mainP(board.getMainP()) .subPosition(board.getSubP()) .wantPosition(board.getWantP()) - .recentGameCount(poster.getSoloGameCount()) - .winRate(poster.getSoloWinRate()) + .soloRecentGameCount(poster.getSoloGameCount()) + .freeRecentGameCount(poster.getFreeGameCount()) + .soloWinRate(poster.getSoloWinRate()) + .freeWinRate(poster.getFreeWinRate()) .gameStyles(gameStyleIds) .contents(board.getContent()) .build(); diff --git a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardInsertResponse.java b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardInsertResponse.java index d7fa825..685187e 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardInsertResponse.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardInsertResponse.java @@ -20,8 +20,10 @@ public class BoardInsertResponse { private Integer profileImage; private String gameName; private String tag; - private Tier tier; - private int rank; + private Tier soloTier; + private Tier freeTier; + private int soloRank; + private int freeRank; private GameMode gameMode; private Position mainP; private Position subP; @@ -37,8 +39,10 @@ public static BoardInsertResponse of(Board board, Member member) { .profileImage(board.getBoardProfileImage()) .gameName(member.getGameName()) .tag(member.getTag()) - .tier(member.getSoloTier()) - .rank(member.getSoloRank()) + .soloTier(member.getSoloTier()) + .freeTier(member.getFreeTier()) + .soloRank(member.getSoloRank()) + .freeRank(member.getFreeRank()) .gameMode(board.getGameMode()) .mainP(board.getMainP()) .subP(board.getSubP()) diff --git a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardListResponse.java b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardListResponse.java index d339ba0..db0c12d 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardListResponse.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardListResponse.java @@ -24,14 +24,17 @@ public class BoardListResponse { String gameName; String tag; Integer mannerLevel; - Tier tier; - int rank; + Tier soloTier; + Tier freeTier; + int soloRank; + int freeRank; GameMode gameMode; Position mainP; Position subP; Position wantP; List championResponseList; - Double winRate; + Double soloWinRate; + Double freeWinRate; LocalDateTime createdAt; LocalDateTime bumpTime; String contents; @@ -52,14 +55,17 @@ public static BoardListResponse of(Board board) { .gameName(member.getGameName()) .tag(member.getTag()) .mannerLevel(member.getMannerLevel()) - .tier(member.getSoloTier()) - .rank(member.getSoloRank()) + .soloTier(member.getSoloTier()) + .freeTier(member.getFreeTier()) + .soloRank(member.getSoloRank()) + .freeRank(member.getFreeRank()) .gameMode(board.getGameMode()) .mainP(board.getMainP()) .subP(board.getSubP()) .wantP(board.getWantP()) .championResponseList(championResponseList) - .winRate(member.getSoloWinRate()) + .soloWinRate(member.getSoloWinRate()) + .freeWinRate(member.getFreeWinRate()) .createdAt(board.getCreatedAt()) .bumpTime(board.getBumpTime()) .contents(board.getContent()) diff --git a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardUpdateResponse.java b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardUpdateResponse.java index 1d763be..ca6668c 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardUpdateResponse.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/BoardUpdateResponse.java @@ -21,8 +21,10 @@ public class BoardUpdateResponse { Integer profileImage; String gameName; String tag; - Tier tier; - Integer rank; + Tier soloTier; + Tier freeTier; + Integer soloRank; + Integer freeRank; GameMode gameMode; Position mainP; Position subP; @@ -43,8 +45,10 @@ public static BoardUpdateResponse of(Board board) { .profileImage(board.getBoardProfileImage()) .gameName(member.getGameName()) .tag(member.getTag()) - .tier(member.getSoloTier()) - .rank(member.getSoloRank()) + .soloTier(member.getSoloTier()) + .freeTier(member.getFreeTier()) + .soloRank(member.getSoloRank()) + .freeRank(member.getFreeRank()) .gameMode(board.getGameMode()) .mainP(board.getMainP()) .subP(board.getSubP()) diff --git a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/MyBoardListResponse.java b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/MyBoardListResponse.java index 41677b5..2128b2e 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/MyBoardListResponse.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/content/board/dto/response/MyBoardListResponse.java @@ -17,10 +17,13 @@ public class MyBoardListResponse { Integer profileImage; String gameName; String tag; - Tier tier; - int rank; + Tier soloTier; + Tier freeTier; + int soloRank; + int freeRank; String contents; LocalDateTime createdAt; + LocalDateTime bumpTime; public static MyBoardListResponse of(Board board) { Member member = board.getMember(); @@ -30,9 +33,12 @@ public static MyBoardListResponse of(Board board) { .profileImage(board.getBoardProfileImage()) .gameName(member.getGameName()) .tag(member.getTag()) - .tier(member.getSoloTier()) - .rank(member.getSoloRank()) + .soloTier(member.getSoloTier()) + .freeTier(member.getFreeTier()) + .soloRank(member.getSoloRank()) + .freeRank(member.getFreeRank()) .createdAt(board.getCreatedAt()) + .bumpTime(board.getBumpTime()) .build(); } diff --git a/src/main/java/com/gamegoo/gamegoo_v2/content/board/repository/BoardRepository.java b/src/main/java/com/gamegoo/gamegoo_v2/content/board/repository/BoardRepository.java index 3791184..12bb7d8 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/content/board/repository/BoardRepository.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/content/board/repository/BoardRepository.java @@ -15,19 +15,19 @@ public interface BoardRepository extends JpaRepository { - @Query("SELECT b From Board b JOIN b.member m WHERE" + - "(b.deleted = false) AND " + + @Query("SELECT b FROM Board b JOIN b.member m WHERE " + + "b.deleted = false AND " + "(:mode IS NULL OR b.gameMode = :mode) AND " + - "(:tier IS NULL OR m.soloTier = :tier) AND " + - "(:mainP IS NULL OR :mainP = 'ANY' OR b.mainP = :mainP ) AND " + + "(COALESCE(:soloTier, :freeTier) IS NULL OR m.soloTier = :soloTier OR m.freeTier = :freeTier) AND " + + "(:mainP IS NULL OR :mainP = 'ANY' OR b.mainP = :mainP) AND " + "(:mike IS NULL OR b.mike = :mike)") Page findByFilters(@Param("mode") GameMode gameMode, - @Param("tier") Tier tier, + @Param("soloTier") Tier soloTier, + @Param("freeTier") Tier freeTier, @Param("mainP") Position mainP, @Param("mike") Mike mike, Pageable pageable); - Optional findByIdAndDeleted(Long boardId, boolean b); diff --git a/src/main/java/com/gamegoo/gamegoo_v2/content/board/service/BoardFacadeService.java b/src/main/java/com/gamegoo/gamegoo_v2/content/board/service/BoardFacadeService.java index f97af0b..9a3c5f9 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/content/board/service/BoardFacadeService.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/content/board/service/BoardFacadeService.java @@ -56,14 +56,15 @@ public BoardInsertResponse createBoard(BoardInsertRequest request, Member member * 게시판 글 목록 조회 (파사드) */ - public BoardResponse getBoardList(GameMode gameMode, Tier tier, Position mainP, Mike mike, + public BoardResponse getBoardList(GameMode gameMode, Tier soloTier, Tier freeTier, Position mainP, Mike mike, @ValidPage int pageIdx) { if (mainP == null) { mainP = Position.ANY; } - Page boardPage = boardService.getBoardsWithPagination(gameMode, tier, mainP, mike, pageIdx); + Page boardPage = boardService.getBoardsWithPagination(gameMode, soloTier, freeTier, mainP, mike, + pageIdx); return BoardResponse.of(boardPage); } diff --git a/src/main/java/com/gamegoo/gamegoo_v2/content/board/service/BoardService.java b/src/main/java/com/gamegoo/gamegoo_v2/content/board/service/BoardService.java index edde177..3c21c0b 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/content/board/service/BoardService.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/content/board/service/BoardService.java @@ -57,18 +57,20 @@ public Board createAndSaveBoard(BoardInsertRequest request, Member member) { /** * 게시글 목록 조회 */ - public Page findBoards(GameMode gameMode, Tier tier, Position mainP, Mike mike, Pageable pageable) { - return boardRepository.findByFilters(gameMode, tier, mainP, mike, pageable); + public Page findBoards(GameMode gameMode, Tier soloTier, Tier freeTier, Position mainP, Mike mike, + Pageable pageable) { + return boardRepository.findByFilters(gameMode, soloTier, freeTier, mainP, mike, pageable); } /** * 게시글 목록 조회 (페이징 처리) */ - public Page getBoardsWithPagination(GameMode gameMode, Tier tier, Position mainP, Mike mike, + public Page getBoardsWithPagination(GameMode gameMode, Tier soloTier, Tier freeTier, Position mainP, + Mike mike, int pageIdx) { Pageable pageable = PageRequest.of(pageIdx - 1, PAGE_SIZE, Sort.by(Sort.Direction.DESC, "activityTime")); - return findBoards(gameMode, tier, mainP, mike, pageable); + return findBoards(gameMode, soloTier, freeTier, mainP, mike, pageable); } /** From 7a2e1f8749623f214eecc7a7fcb5cb528978fabd Mon Sep 17 00:00:00 2001 From: jihhyeong Date: Sun, 9 Feb 2025 21:32:37 +0900 Subject: [PATCH 2/2] =?UTF-8?q?:bug:=20[Fix]=20=EA=B2=8C=EC=8B=9C=EA=B8=80?= =?UTF-8?q?=20=EC=9E=91=EC=84=B1=20description=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gamegoo_v2/content/board/controller/BoardController.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gamegoo/gamegoo_v2/content/board/controller/BoardController.java b/src/main/java/com/gamegoo/gamegoo_v2/content/board/controller/BoardController.java index fbf8ddd..95f4e60 100644 --- a/src/main/java/com/gamegoo/gamegoo_v2/content/board/controller/BoardController.java +++ b/src/main/java/com/gamegoo/gamegoo_v2/content/board/controller/BoardController.java @@ -50,7 +50,10 @@ public class BoardController { */ @PostMapping @Operation(summary = "게시판 글 작성 API", - description = "게시판에서 글을 작성하는 API 입니다. 게임 모드 1~4, 포지션을 입력하세요. 게임스타일은 최대 3개까지 입력가능합니다.") + description = "게시판에서 글을 작성하는 API 입니다. 프로필이미지 값: 1~8, gameMode: < 빠른대전: FAST, 솔로랭크: SOLO, 자유랭크: FREE, 칼바람 " + + "나락: ARAM >, " + + "주 포지션, 부포지션, 희망 포지션: < TOP, JUNGLE, MID, ADC, SUP, ANY >, 마이크 여부: < AVAILABLE, UNAVAILABLE >, 게임" + + " 스타일 리스트: 1~3개 선택 가능") public ApiResponse boardInsert( @AuthMember Member member, @Valid @RequestBody BoardInsertRequest request) {