Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feat/200] 게시판 자유랭크 반영, 자유랭크 기반 게시물 조회 #204

Merged
merged 2 commits into from
Feb 9, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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<BoardInsertResponse> boardInsert(
@AuthMember Member member,
@Valid @RequestBody BoardInsertRequest request) {
Expand All @@ -67,7 +70,8 @@ public ApiResponse<BoardInsertResponse> 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 >"),
Expand All @@ -76,11 +80,12 @@ public ApiResponse<BoardInsertResponse> boardInsert(
public ApiResponse<BoardResponse> 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));


}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<ChampionResponse> championResponseList;
GameMode gameMode;
Position mainP;
Position subP;
Position wantP;
Integer recentGameCount;
Double winRate;
Integer soloRecentGameCount;
Integer freeRecentGameCount;
Double soloWinRate;
Double freeWinRate;
List<Long> gameStyles;
String contents;

Expand All @@ -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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,20 @@ public class BoardByIdResponseForMember {
String tag;
Integer mannerLevel;
List<MannerKeyword> mannerKeywords;
Tier tier;
int rank;
Tier soloTier;
Tier freeTier;
int soloRank;
int freeRank;
Mike mike;
List<ChampionResponse> championResponseDTOList;
GameMode gameMode;
Position mainP;
Position subPosition;
Position wantPosition;
Integer recentGameCount;
Double winRate;
Integer soloRecentGameCount;
Integer freeRecentGameCount;
Double soloWinRate;
Double freeWinRate;
List<Long> gameStyles;
String contents;

Expand Down Expand Up @@ -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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<ChampionResponse> championResponseList;
Double winRate;
Double soloWinRate;
Double freeWinRate;
LocalDateTime createdAt;
LocalDateTime bumpTime;
String contents;
Expand All @@ -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())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -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();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,19 @@

public interface BoardRepository extends JpaRepository<Board, Long> {

@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<Board> 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<Board> findByIdAndDeleted(Long boardId, boolean b);


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<Board> boardPage = boardService.getBoardsWithPagination(gameMode, tier, mainP, mike, pageIdx);
Page<Board> boardPage = boardService.getBoardsWithPagination(gameMode, soloTier, freeTier, mainP, mike,
pageIdx);

return BoardResponse.of(boardPage);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,18 +57,20 @@ public Board createAndSaveBoard(BoardInsertRequest request, Member member) {
/**
* 게시글 목록 조회
*/
public Page<Board> findBoards(GameMode gameMode, Tier tier, Position mainP, Mike mike, Pageable pageable) {
return boardRepository.findByFilters(gameMode, tier, mainP, mike, pageable);
public Page<Board> findBoards(GameMode gameMode, Tier soloTier, Tier freeTier, Position mainP, Mike mike,
Pageable pageable) {
return boardRepository.findByFilters(gameMode, soloTier, freeTier, mainP, mike, pageable);
}

/**
* 게시글 목록 조회 (페이징 처리)
*/

public Page<Board> getBoardsWithPagination(GameMode gameMode, Tier tier, Position mainP, Mike mike,
public Page<Board> 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);
}

/**
Expand Down
Loading