Skip to content

Commit

Permalink
Merge pull request #144 from Gamegoo-repo/feat/132
Browse files Browse the repository at this point in the history
[Feat/132] ๊ฒŒ์‹œํŒ ๊ด€๋ จ ์ถ”๊ฐ€ ๊ตฌํ˜„
  • Loading branch information
rimi3226 authored Aug 10, 2024
2 parents 4efe342 + 9f4bbc2 commit 8bc11f6
Show file tree
Hide file tree
Showing 6 changed files with 98 additions and 14 deletions.
2 changes: 2 additions & 0 deletions src/main/generated/com/gamegoo/domain/member/QMember.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ public class QMember extends EntityPathBase<Member> {

public final StringPath email = createString("email");

public final NumberPath<Integer> gameCount = createNumber("gameCount", Integer.class);

public final StringPath gameName = createString("gameName");

public final NumberPath<Long> id = createNumber("id", Long.class);
Expand Down
14 changes: 13 additions & 1 deletion src/main/java/com/gamegoo/controller/board/BoardController.java
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ public ApiResponse<List<BoardResponse.boardListResponseDTO>> boardList(@RequestP
}

@GetMapping("/list/{boardId}")
@Operation(summary = "๊ฒŒ์‹œํŒ ๊ธ€ ์กฐํšŒ API", description = "๊ฒŒ์‹œํŒ์—์„œ ๊ธ€์„ ์กฐํšŒํ•˜๋Š” API ์ž…๋‹ˆ๋‹ค.")
@Operation(summary = "๋น„ํšŒ์›์šฉ ๊ฒŒ์‹œํŒ ๊ธ€ ์กฐํšŒ API", description = "๊ฒŒ์‹œํŒ์—์„œ ๊ธ€์„ ์กฐํšŒํ•˜๋Š” API ์ž…๋‹ˆ๋‹ค.")
@Parameter(name = "boardId", description = "์กฐํšŒํ•  ๊ฒŒ์‹œํŒ ๊ธ€ id ์ž…๋‹ˆ๋‹ค.")
public ApiResponse<BoardResponse.boardByIdResponseDTO> getBoardById(@PathVariable Long boardId) {

Expand All @@ -140,6 +140,18 @@ public ApiResponse<BoardResponse.boardByIdResponseDTO> getBoardById(@PathVariabl
return ApiResponse.onSuccess(result);
}

@GetMapping("/member/list/{boardId}")
@Operation(summary = "ํšŒ์›์šฉ ๊ฒŒ์‹œํŒ ๊ธ€ ์กฐํšŒ API", description = "๊ฒŒ์‹œํŒ์—์„œ ๊ธ€์„ ์กฐํšŒํ•˜๋Š” API ์ž…๋‹ˆ๋‹ค.")
@Parameter(name = "boardId", description = "์กฐํšŒํ•  ๊ฒŒ์‹œํŒ ๊ธ€ id ์ž…๋‹ˆ๋‹ค.")
public ApiResponse<BoardResponse.boardByIdResponseForMemberDTO> getBoardByIdForMember(@PathVariable Long boardId) {

Long memberId = JWTUtil.getCurrentUserId();

BoardResponse.boardByIdResponseForMemberDTO result = boardService.getBoardByIdForMember(boardId, memberId);

return ApiResponse.onSuccess(result);
}

@GetMapping("/my")
@Operation(summary = "๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ๊ฒŒ์‹œํŒ ๊ธ€ ๋ชฉ๋ก ์กฐํšŒ API", description = "๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ๊ฒŒ์‹œํŒ ๊ธ€์„ ์กฐํšŒํ•˜๋Š” API ์ž…๋‹ˆ๋‹ค.")
@Parameter(name = "pageIdx", description = "์กฐํšŒํ•  ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.")
Expand Down
7 changes: 6 additions & 1 deletion src/main/java/com/gamegoo/domain/member/Member.java
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,9 @@ public class Member extends BaseDateTimeEntity {
@Column(name = "mike")
private Boolean mike = false;

@Column(name = "game_count")
private Integer gameCount;

@Column(name = "is_agree")
private Boolean isAgree;

Expand Down Expand Up @@ -126,10 +129,12 @@ public void initializeMemberChampionList() {
this.memberChampionList = new ArrayList<>();
}

public void updateRiotDetails(Tier tier, Integer rank, Double winRate) {
public void updateRiotDetails(Tier tier, Integer rank, Double winRate, Integer gameCount) {

this.tier = tier;
this.rank = rank;
this.winRate = winRate;
this.gameCount = gameCount;
}

public void updateRiotBasic(String gameName, String tag) {
Expand Down
28 changes: 28 additions & 0 deletions src/main/java/com/gamegoo/dto/board/BoardResponse.java
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,34 @@ public static class boardByIdResponseDTO {
Integer mainPosition;
Integer subPosition;
Integer wantPosition;
Integer recentGameCount;
Double winRate;
List<Long> gameStyles;
String contents;
}

@Getter
@Builder
@Setter
@NoArgsConstructor
@AllArgsConstructor
public static class boardByIdResponseForMemberDTO {
Long boardId;
Long memberId;
Boolean isBlocked;
LocalDateTime createdAt;
Integer profileImage;
String gameName;
String tag;
Integer mannerLevel;
String tier;
Boolean mike;
List<Long> championList;
Integer gameMode;
Integer mainPosition;
Integer subPosition;
Integer wantPosition;
Integer recentGameCount;
Double winRate;
List<Long> gameStyles;
String contents;
Expand Down
58 changes: 47 additions & 11 deletions src/main/java/com/gamegoo/service/board/BoardService.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,18 @@
import com.gamegoo.apiPayload.exception.handler.BoardHandler;
import com.gamegoo.apiPayload.exception.handler.MemberHandler;
import com.gamegoo.apiPayload.exception.handler.PageHandler;
import com.gamegoo.domain.member.Member;
import com.gamegoo.domain.board.Board;
import com.gamegoo.domain.board.BoardGameStyle;
import com.gamegoo.domain.champion.MemberChampion;
import com.gamegoo.domain.gamestyle.GameStyle;
import com.gamegoo.domain.member.Member;
import com.gamegoo.dto.board.BoardRequest;
import com.gamegoo.dto.board.BoardResponse;
import com.gamegoo.repository.board.BoardGameStyleRepository;
import com.gamegoo.repository.board.BoardRepository;
import com.gamegoo.repository.member.GameStyleRepository;
import com.gamegoo.repository.member.MemberRepository;
import com.gamegoo.util.MemberUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
Expand Down Expand Up @@ -239,6 +240,7 @@ public void delete(Long boardId, Long memberId) {
// ๊ฒŒ์‹œํŒ ๊ธ€ ๋ชฉ๋ก ์กฐํšŒ
@Transactional(readOnly = true)
public List<BoardResponse.boardListResponseDTO> getBoardList(Integer mode, String tier, Integer mainPosition, Boolean mike, int pageIdx) {

// pageIdx ๊ฐ’ ๊ฒ€์ฆ.
if (pageIdx <= 0) {
throw new PageHandler(ErrorStatus.PAGE_INVALID);
Expand Down Expand Up @@ -273,36 +275,70 @@ public List<BoardResponse.boardListResponseDTO> getBoardList(Integer mode, Strin
}).collect(Collectors.toList());
}

// ๊ฒŒ์‹œํŒ ๊ธ€ ์กฐํšŒ
// ๋น„ํšŒ์› ๊ฒŒ์‹œํŒ ๊ธ€ ์กฐํšŒ
@Transactional(readOnly = true)
public BoardResponse.boardByIdResponseDTO getBoardById(Long boardId) {

Board board = boardRepository.findById(boardId).orElseThrow(() -> new BoardHandler(ErrorStatus.BOARD_NOT_FOUND));

Member member = board.getMember();
Member poster = board.getMember();

return BoardResponse.boardByIdResponseDTO.builder()
.boardId(board.getId())
.memberId(member.getId())
.memberId(poster.getId())
.createdAt(board.getCreatedAt())
.profileImage(board.getBoardProfileImage())
.gameName(member.getGameName())
.tag(member.getTag())
.mannerLevel(member.getMannerLevel())
.tier(member.getTier())
.championList(member.getMemberChampionList().stream().map(MemberChampion::getId).collect(Collectors.toList()))
.gameName(poster.getGameName())
.tag(poster.getTag())
.mannerLevel(poster.getMannerLevel())
.tier(poster.getTier())
.championList(poster.getMemberChampionList().stream().map(MemberChampion::getId).collect(Collectors.toList()))
.mike(board.getMike())
.gameMode(board.getMode())
.mainPosition(board.getMainPosition())
.subPosition(board.getSubPosition())
.wantPosition(board.getWantPosition())
.winRate(member.getWinRate())
.gameStyles(board.getBoardGameStyles().stream().map(boardGameStyle -> boardGameStyle.getGameStyle().getId()).collect(Collectors.toList()))
.recentGameCount(poster.getGameCount())
.winRate(poster.getWinRate())
.gameStyles(board.getBoardGameStyles().stream().map(BoardGameStyle::getId).collect(Collectors.toList()))
.contents(board.getContent())
.build();

}

// ํšŒ์› ๊ฒŒ์‹œํŒ ๊ธ€ ์กฐํšŒ
@Transactional(readOnly = true)
public BoardResponse.boardByIdResponseForMemberDTO getBoardByIdForMember(Long boardId, Long memberId) {

Board board = boardRepository.findById(boardId).orElseThrow(() -> new BoardHandler(ErrorStatus.BOARD_NOT_FOUND));

Member member = memberRepository.findById(memberId).orElseThrow(() -> new MemberHandler(ErrorStatus.MEMBER_NOT_FOUND));

Member poster = board.getMember();

return BoardResponse.boardByIdResponseForMemberDTO.builder()
.boardId(board.getId())
.memberId(poster.getId())
.isBlocked(MemberUtils.isBlocked(member, poster))
.createdAt(board.getCreatedAt())
.profileImage(board.getBoardProfileImage())
.gameName(poster.getGameName())
.tag(poster.getTag())
.mannerLevel(poster.getMannerLevel())
.tier(poster.getTier())
.championList(poster.getMemberChampionList().stream().map(MemberChampion::getId).collect(Collectors.toList()))
.mike(board.getMike())
.gameMode(board.getMode())
.mainPosition(board.getMainPosition())
.subPosition(board.getSubPosition())
.wantPosition(board.getWantPosition())
.recentGameCount(poster.getGameCount())
.winRate(poster.getWinRate())
.gameStyles(board.getBoardGameStyles().stream().map(BoardGameStyle::getId).collect(Collectors.toList()))
.contents(board.getContent())
.build();
}

// ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ๊ฒŒ์‹œํŒ ๊ธ€ ๋ชฉ๋ก ์กฐํšŒ
@Transactional(readOnly = true)
public List<BoardResponse.myBoardListResponseDTO> getMyBoardList(Long memberId, int pageIdx) {
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/com/gamegoo/util/RiotUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -168,13 +168,14 @@ public void addTierRankWinRate(Member member, String gameName, String encryptedS
if ("RANKED_SOLO_5x5".equals(entry.getQueueType())) {
int wins = entry.getWins();
int losses = entry.getLosses();
int gameCount = wins + losses;
double winrate = (double) wins / (wins + losses);
winrate = Math.round(winrate * 1000) / 10.0;
Tier tier = Tier.valueOf(entry.getTier().toUpperCase());
Integer rank = romanToIntMap.get(entry.getRank());

// DB์— ์ €์žฅ
member.updateRiotDetails(tier, rank, winrate);
member.updateRiotDetails(tier, rank, winrate, gameCount);
break;
}
}
Expand Down

0 comments on commit 8bc11f6

Please sign in to comment.