Skip to content

Commit

Permalink
[FEAT] Tier 책정 로직 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
Sion99 committed Aug 28, 2023
1 parent eef9284 commit b148b50
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import com.gg.server.domain.team.data.TeamUser;
import com.gg.server.domain.team.data.TeamUserRepository;
import com.gg.server.domain.team.exception.TeamIdNotMatchException;
import com.gg.server.domain.tier.service.TierService;
import com.gg.server.global.exception.ErrorCode;
import com.gg.server.global.exception.custom.InvalidParameterException;
import com.gg.server.global.utils.ExpLevelCalculator;
Expand All @@ -40,6 +41,7 @@ public class GameService {
private final PChangeRepository pChangeRepository;
private final GameFindService gameFindService;
private final UserCoinChangeService userCoinChangeService;
private final TierService tierService;

@Transactional(readOnly = true)
public GameTeamInfo getUserGameInfo(Long gameId, Long userId) {
Expand Down Expand Up @@ -180,6 +182,8 @@ private Boolean updateScore(Game game, RankResultReqDto scoreDto, Long userId) {
setTeamScore(enemyTeam, scoreDto.getEnemyTeamScore(), scoreDto.getMyTeamScore() < scoreDto.getEnemyTeamScore());
expUpdates(game, teams);
rankRedisService.updateRankRedis(myTeam, enemyTeam, game);
tierService.updateAllTier();
//tier
} else {
// score 가 이미 입력됨
return false;
Expand Down
6 changes: 2 additions & 4 deletions src/main/java/com/gg/server/domain/rank/data/Rank.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,7 @@
import com.gg.server.domain.tier.data.Tier;
import com.gg.server.domain.user.data.User;
import com.gg.server.global.utils.BaseTimeEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.*;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
Expand Down Expand Up @@ -36,6 +33,7 @@ public class Rank extends BaseTimeEntity implements Serializable {

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "tier_id")
@Setter
private Tier tier;

@NotNull
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,10 @@ public interface RankRepository extends JpaRepository<Rank, Long> {

@EntityGraph(attributePaths = {"user"})
List<Rank> findAllBySeasonId(Long seasonId);

List<Rank> findTop3BySeasonIdOrderByPppDesc(Long seasonId);

List<Rank> findAllBySeasonIdOrderByPppDesc(Long seasonId);

Integer countAllBySeasonId(Long seasonId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,8 @@

import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;

public interface TierRepository extends JpaRepository<Tier, Long> {
Optional<Tier> findById(Long tierId);
}
51 changes: 51 additions & 0 deletions src/main/java/com/gg/server/domain/tier/service/TierService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com.gg.server.domain.tier.service;

import com.gg.server.domain.rank.data.Rank;
import com.gg.server.domain.rank.data.RankRepository;
import com.gg.server.domain.season.data.Season;
import com.gg.server.domain.season.service.SeasonFindService;
import com.gg.server.domain.tier.data.Tier;
import com.gg.server.domain.tier.data.TierRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;

@Service
@RequiredArgsConstructor
public class TierService {
private final TierRepository tierRepository;
private final RankRepository rankRepository;
private final SeasonFindService seasonFindService;

public void updateAllTier() {
// Season season = seasonFindService.findCurrentSeason(LocalDateTime.now());
Season season = seasonFindService.findSeasonById(1L);
List<Rank> rankList = rankRepository.findAllBySeasonIdOrderByPppDesc(season.getId());
Integer totalNumber = rankRepository.countAllBySeasonId(season.getId());
List<Tier> tierList = tierRepository.findAll();

int cnt = 0;
int top10percent = (int) (totalNumber * 0.1);
int top5percent = (int) (totalNumber * 0.05);
for (Rank rank : rankList) {
if (cnt < top5percent) {
rank.setTier(tierList.get(5));
cnt += 1;
} else if (cnt < top10percent) {
rank.setTier(tierList.get(4));
cnt += 1;
} else if (rank.getPpp() > 1200) {
rank.setTier(tierList.get(3));
} else if (rank.getPpp() > 1100) {
rank.setTier(tierList.get(2));
} else if (rank.getPpp() > 1000) {
rank.setTier(tierList.get(1));
} else {
rank.setTier(tierList.get(0));
}
}
}
}

0 comments on commit b148b50

Please sign in to comment.