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/194] 자유랭크 티어 정보 조회 #195

Merged
merged 2 commits into from
Feb 5, 2025
Merged
Show file tree
Hide file tree
Changes from 1 commit
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,12 +50,10 @@ public String join(JoinRequest request) {
String summonerId = riotAccountService.getSummonerId(puuid);

// 3. [Riot] tier, rank, winrate 얻기
TierDetails tierWinrateRank = riotInfoService.getTierWinrateRank(summonerId);
List<TierDetails> tierWinrateRank = riotInfoService.getTierWinrateRank(summonerId);

// 4. [Member] member DB에 저장
Member member = memberService.createMember(request.getEmail(), request.getPassword(), request.getGameName(),
request.getTag(), tierWinrateRank.getTier(), tierWinrateRank.getRank(), tierWinrateRank.getWinrate(),
tierWinrateRank.getGameCount(), request.getIsAgree());
Member member = memberService.createMember(request, tierWinrateRank);

// 5. [Riot] 최근 사용한 챔피언 3개 가져오기
List<Long> preferChampionfromMatch = riotRecordService.getPreferChampionfromMatch(request.getGameName(),
Expand All @@ -70,8 +68,8 @@ public String join(JoinRequest request) {
/**
* 로그인
*
* @param request 이메일,비밀번호
* @return 사용자 정보
* @param request 이메일,비밀번호
* @return 사용자 정보
*/
@Transactional
public LoginResponse login(LoginRequest request) {
Expand All @@ -94,8 +92,8 @@ public LoginResponse login(LoginRequest request) {
/**
* 로그아웃
*
* @param member 사용자
* @return 메세지
* @param member 사용자
* @return 메세지
*/
@Transactional
public String logout(Member member) {
Expand All @@ -105,8 +103,9 @@ public String logout(Member member) {

/**
* 리프레시 토큰으로 토큰 업데이트
* @param request 리프레시 토큰
* @return 사용자 정보
*
* @param request 리프레시 토큰
* @return 사용자 정보
*/
@Transactional
public RefreshTokenResponse updateToken(RefreshTokenRequest request) {
Expand All @@ -126,7 +125,7 @@ public RefreshTokenResponse updateToken(RefreshTokenRequest request) {
// refreshToken 저장
authService.addRefreshToken(member, refreshToken);

return RefreshTokenResponse.of(memberId,accessToken,refreshToken);
return RefreshTokenResponse.of(memberId, accessToken, refreshToken);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public class Member extends BaseDateTimeEntity {
private boolean blind = false;

@Enumerated(EnumType.STRING)
@Column(nullable = false, columnDefinition = "VARCHAR(20)")
@Column(nullable = false, columnDefinition = "VARCHAR(50)")
private LoginType loginType;

@Column(nullable = false, length = 100)
Expand All @@ -61,33 +61,46 @@ public class Member extends BaseDateTimeEntity {
private String tag;

@Enumerated(EnumType.STRING)
@Column(nullable = false)
private Tier tier;
@Column(nullable = false, columnDefinition = "VARCHAR(50)")
private Tier soloTier = Tier.UNRANKED;

@Column(nullable = false)
private int gameRank;
private int soloRank = 0;

@Column(nullable = false)
private double winRate;
private double soloWinRate = 0.0;

@Enumerated(EnumType.STRING)
@Column(nullable = false)
private Tier freeTier = Tier.UNRANKED;

@Column(nullable = false)
private int freeRank = 0;

@Column(nullable = false)
private double freeWinRate = 0.0;

@Enumerated(EnumType.STRING)
@Column(nullable = false, columnDefinition = "VARCHAR(20)")
private Position mainPosition = Position.ANY;

@Enumerated(EnumType.STRING)
@Column(nullable = false)
private Position subPosition = Position.ANY;

@Enumerated(EnumType.STRING)
@Column(nullable = false)
@Column(nullable = false, columnDefinition = "VARCHAR(20)")
private Position wantPosition = Position.ANY;

@Enumerated(EnumType.STRING)
@Column(nullable = false)
@Column(nullable = false, columnDefinition = "VARCHAR(50)")
private Mike mike = Mike.UNAVAILABLE;

@Column(nullable = false)
private int gameCount;
private int soloGameCount = 0;

@Column(nullable = false)
private int freeGameCount = 0;

@Column(nullable = false)
private boolean isAgree;
Expand All @@ -105,7 +118,8 @@ public class Member extends BaseDateTimeEntity {
private List<MemberGameStyle> memberGameStyleList = new ArrayList<>();

public static Member create(String email, String password, LoginType loginType, String gameName, String tag,
Tier tier, int gameRank, double winRate, int gameCount, boolean isAgree) {
Tier soloTier, int soloRank, double soloWinRate, Tier freeTier, int freeRank,
double freeWinRate, int soloGameCount, int freeGameCount, boolean isAgree) {
int randomProfileImage = ThreadLocalRandom.current().nextInt(1, 9);

return Member.builder()
Expand All @@ -115,27 +129,36 @@ public static Member create(String email, String password, LoginType loginType,
.loginType(loginType)
.gameName(gameName)
.tag(tag)
.tier(tier)
.gameCount(gameCount)
.gameRank(gameRank)
.winRate(winRate)
.soloGameCount(soloGameCount)
.freeGameCount(freeGameCount)
.soloTier(soloTier)
.soloRank(soloRank)
.soloWinRate(soloWinRate)
.freeTier(freeTier)
.freeRank(freeRank)
.freeWinRate(freeWinRate)
.isAgree(isAgree)
.build();
}

@Builder
private Member(String email, String password, int profileImage, LoginType loginType, String gameName,
String tag, Tier tier, int gameRank, double winRate, int gameCount, boolean isAgree) {
String tag, Tier soloTier, int soloRank, double soloWinRate, Tier freeTier, int freeRank,
double freeWinRate, int soloGameCount, int freeGameCount, boolean isAgree) {
this.email = email;
this.password = password;
this.profileImage = profileImage;
this.loginType = loginType;
this.gameName = gameName;
this.tag = tag;
this.tier = tier;
this.gameRank = gameRank;
this.winRate = winRate;
this.gameCount = gameCount;
this.soloTier = soloTier;
this.soloRank = soloRank;
this.soloWinRate = soloWinRate;
this.soloGameCount = soloGameCount;
this.freeTier = freeTier;
this.freeRank = freeRank;
this.freeWinRate = freeWinRate;
this.freeGameCount = freeGameCount;
this.isAgree = isAgree;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ public static MyProfileResponse of(Member member, Double mannerRank) {
.email(member.getEmail())
.gameName(member.getGameName())
.tag(member.getTag())
.tier(member.getTier())
.gameRank(member.getGameRank())
.tier(member.getSoloTier())
.gameRank(member.getSoloRank())
.profileImg(member.getProfileImage())
.mannerLevel(member.getMannerLevel())
.mannerRank(mannerRank)
Expand All @@ -61,7 +61,7 @@ public static MyProfileResponse of(Member member, Double mannerRank) {
.wantP(member.getWantPosition())
.isAgree(member.isAgree())
.isBlind(member.isBlind())
.winrate(member.getWinRate())
.winrate(member.getSoloWinRate())
.loginType(String.valueOf(member.getLoginType()))
.updatedAt(String.valueOf(member.getUpdatedAt()))
.gameStyleResponseList(gameStyleResponseList)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ public static OtherProfileResponse of(Member targetMember, Double managerRank,
.mike(targetMember.getMike())
.gameName(targetMember.getGameName())
.tag(targetMember.getTag())
.tier(targetMember.getTier())
.gameRank(targetMember.getGameRank())
.tier(targetMember.getSoloTier())
.gameRank(targetMember.getSoloRank())
.profileImg(targetMember.getProfileImage())
.mannerLevel(targetMember.getMannerLevel())
.mannerRank(managerRank)
Expand All @@ -66,7 +66,7 @@ public static OtherProfileResponse of(Member targetMember, Double managerRank,
.subP(targetMember.getSubPosition())
.isAgree(targetMember.isAgree())
.isBlind(targetMember.isBlind())
.winrate(targetMember.getWinRate())
.winrate(targetMember.getSoloWinRate())
.loginType(String.valueOf(targetMember.getLoginType()))
.updatedAt(String.valueOf(targetMember.getUpdatedAt()))
.blocked(isBlocked)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.gamegoo.gamegoo_v2.account.member.service;

import com.gamegoo.gamegoo_v2.account.auth.dto.request.JoinRequest;
import com.gamegoo.gamegoo_v2.account.member.domain.LoginType;
import com.gamegoo.gamegoo_v2.account.member.domain.Member;
import com.gamegoo.gamegoo_v2.account.member.domain.Mike;
Expand All @@ -8,41 +9,68 @@
import com.gamegoo.gamegoo_v2.account.member.repository.MemberRepository;
import com.gamegoo.gamegoo_v2.core.exception.MemberException;
import com.gamegoo.gamegoo_v2.core.exception.common.ErrorCode;
import com.gamegoo.gamegoo_v2.external.riot.dto.TierDetails;
import com.gamegoo.gamegoo_v2.matching.domain.GameMode;
import com.gamegoo.gamegoo_v2.utils.PasswordUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class MemberService {

private final MemberRepository memberRepository;

/**
* Member 생성 메소드
*
* @param email 이메일
* @param password 비밀번호
* @param gameName 소환사명
* @param tag 태그
* @param tier 티어
* @param rank 랭크
* @param winrate 승률
* @param gameCount 총 게임 횟수
* @param isAgree 개인정보 동의
* @return Member
*/
@Transactional
public Member createMember(String email, String password, String gameName, String tag, Tier tier, int rank,
double winrate, int gameCount, boolean isAgree) {
Member member = Member.create(email, PasswordUtil.encodePassword(password), LoginType.GENERAL, gameName, tag,
tier, rank, winrate, gameCount, isAgree);
public Member createMember(JoinRequest request, List<TierDetails> tiers) {

// 기본 값 설정
Tier soloTier = Tier.UNRANKED;
int soloRank = 0;
double soloWinRate = 0.0;
int soloGameCount = 0;

Tier freeTier = Tier.UNRANKED;
int freeRank = 0;
double freeWinRate = 0.0;
int freeGameCount = 0;

// 티어 정보 설정
for (TierDetails tierDetail : tiers) {
if (tierDetail.getGameMode() == GameMode.SOLO) {
soloTier = tierDetail.getTier();
soloRank = tierDetail.getRank();
soloWinRate = tierDetail.getWinrate();
soloGameCount = tierDetail.getGameCount();
} else if (tierDetail.getGameMode() == GameMode.FREE) {
freeTier = tierDetail.getTier();
freeRank = tierDetail.getRank();
freeWinRate = tierDetail.getWinrate();
freeGameCount = tierDetail.getGameCount();
}
}

// Member 생성
Member member = Member.create(
request.getEmail(),
PasswordUtil.encodePassword(request.getPassword()),
LoginType.GENERAL,
request.getGameName(),
request.getTag(),
soloTier, soloRank, soloWinRate,
freeTier, freeRank, freeWinRate,
soloGameCount, freeGameCount, true
);

memberRepository.save(member);
return member;
}


/**
* 회원 정보 조회
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,23 +38,23 @@ public class Board extends BaseDateTimeEntity {
private Long id;

@Enumerated(EnumType.STRING)
@Column(nullable = false)
@Column(nullable = false, columnDefinition = "VARCHAR(20)")
private GameMode gameMode;

@Enumerated(EnumType.STRING)
@Column(nullable = false)
@Column(nullable = false, columnDefinition = "VARCHAR(20)")
private Position mainP;

@Enumerated(EnumType.STRING)
@Column(nullable = false)
@Column(nullable = false, columnDefinition = "VARCHAR(20)")
private Position subP;

@Enumerated(EnumType.STRING)
@Column(nullable = false)
@Column(nullable = false, columnDefinition = "VARCHAR(20)")
private Position wantP;

@Enumerated(EnumType.STRING)
@Column(nullable = false)
@Column(nullable = false, columnDefinition = "VARCHAR(20)")
private Mike mike;

@Column(length = 5000)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,16 +58,16 @@ public static BoardByIdResponse of(Board board) {
.gameName(poster.getGameName())
.tag(poster.getTag())
.mannerLevel(poster.getMannerLevel())
.tier(poster.getTier())
.rank(poster.getGameRank())
.tier(poster.getSoloTier())
.rank(poster.getSoloRank())
.mike(board.getMike())
.championResponseList(championResponseList)
.gameMode(board.getGameMode())
.mainP(board.getMainP())
.subP(board.getSubP())
.wantP(board.getWantP())
.recentGameCount(poster.getGameCount())
.winRate(poster.getWinRate())
.recentGameCount(poster.getSoloGameCount())
.winRate(poster.getSoloWinRate())
.gameStyles(gameStyleIds)
.contents(board.getContent())
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,16 +74,16 @@ public static BoardByIdResponseForMember of(
.gameName(poster.getGameName())
.tag(poster.getTag())
.mannerLevel(poster.getMannerLevel())
.tier(poster.getTier())
.rank(poster.getGameRank())
.tier(poster.getSoloTier())
.rank(poster.getSoloRank())
.mike(board.getMike())
.championResponseDTOList(championResponseList)
.gameMode(board.getGameMode())
.mainP(board.getMainP())
.subPosition(board.getSubP())
.wantPosition(board.getWantP())
.recentGameCount(poster.getGameCount())
.winRate(poster.getWinRate())
.recentGameCount(poster.getSoloGameCount())
.winRate(poster.getSoloWinRate())
.gameStyles(gameStyleIds)
.contents(board.getContent())
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ public static BoardInsertResponse of(Board board, Member member) {
.profileImage(board.getBoardProfileImage())
.gameName(member.getGameName())
.tag(member.getTag())
.tier(member.getTier())
.rank(member.getGameRank())
.tier(member.getSoloTier())
.rank(member.getSoloRank())
.gameMode(board.getGameMode())
.mainP(board.getMainP())
.subP(board.getSubP())
Expand Down
Loading