Skip to content

Commit

Permalink
tier업데이트 로직 분리
Browse files Browse the repository at this point in the history
  • Loading branch information
wken5577 committed Sep 20, 2023
1 parent 6904eca commit 5289690
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
3 changes: 3 additions & 0 deletions src/main/java/com/gg/server/domain/game/GameController.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.gg.server.domain.game.exception.ScoreNotMatchedException;
import com.gg.server.domain.game.service.GameFindService;
import com.gg.server.domain.game.service.GameService;
import com.gg.server.domain.rank.redis.RankRedisService;
import com.gg.server.domain.user.dto.UserDto;
import com.gg.server.global.exception.ErrorCode;
import com.gg.server.global.exception.custom.InvalidParameterException;
Expand All @@ -29,6 +30,7 @@
public class GameController {
private final GameService gameService;
private final GameFindService gameFindService;
private final RankRedisService rankRedisService;

@GetMapping
GameListResDto allGameList(@Valid GameListReqDto gameReq) {
Expand Down Expand Up @@ -73,6 +75,7 @@ synchronized ResponseEntity createRankResult(@Valid @RequestBody RankResultReqDt
if (!gameService.createRankResult(reqDto, user.getId())) {
throw new ScoreNotMatchedException();
}
rankRedisService.updateAllTier();
return new ResponseEntity(HttpStatus.CREATED);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.gg.server.domain.rank.data.RankRepository;
import com.gg.server.domain.rank.exception.RankNotFoundException;
import com.gg.server.domain.season.data.Season;
import com.gg.server.domain.season.service.SeasonFindService;
import com.gg.server.domain.team.data.TeamUser;
import com.gg.server.domain.tier.data.Tier;
import com.gg.server.domain.tier.data.TierRepository;
Expand All @@ -18,6 +19,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

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

@Service
Expand All @@ -28,6 +30,7 @@ public class RankRedisService {
private final TierRepository tierRepository;
private final PChangeService pChangeService;
private final RankRepository rankRepository;
private final SeasonFindService seasonFindService;

public Integer getUserPpp(Long userId, Long seasonId) {
String hashKey = RedisKeyManager.getHashKey(seasonId);
Expand All @@ -45,7 +48,7 @@ public void updateRankRedis(TeamUser myTeamUser, TeamUser enemyTeamUser, Game ga
updatePPP(enemyTeamUser, enemyTeam, myTeamUser.getTeam().getScore(), enemyPPP, myPPP, game.getSeason().getId());
updateRankUser(key, zsetKey, myTeamUser.getUser().getId(), myTeam);
updateRankUser(key, zsetKey, enemyTeamUser.getUser().getId(), enemyTeam);
updateAllTier(key, zsetKey, game.getSeason());
// updateAllTier(key, zsetKey, game.getSeason());
pChangeService.addPChange(game, myTeamUser.getUser(), myTeam.getPpp(), true);
pChangeService.addPChange(game, enemyTeamUser.getUser(), enemyTeam.getPpp(), false);
}
Expand All @@ -72,10 +75,14 @@ public void updatePPP(TeamUser teamuser, RankRedis myTeam, int enemyScore, Integ

}

public void updateAllTier(String key, String zSetKey, Season season) {
@Transactional
public void updateAllTier() {
// 전체 레디스 랭크 티어 새로고침하는 로직
Season currentSeason = seasonFindService.findCurrentSeason(LocalDateTime.now());
String key = RedisKeyManager.getHashKey(currentSeason.getId());
String zSetKey = RedisKeyManager.getZSetKey(currentSeason.getId());
List<RankRedis> rankRedisList = rankRedisRepository.findAllRanksOrderByPppDesc(key);
Long totalRankPlayers = rankRepository.countRealRankPlayers(season.getId());
Long totalRankPlayers = rankRepository.countRealRankPlayers(currentSeason.getId());
List<Tier> tierList = tierRepository.findAll(Sort.by(Sort.Direction.ASC, "id"));

int top30percentPpp = rankRedisList.get((int) (totalRankPlayers * 0.3)).getPpp();
Expand Down

0 comments on commit 5289690

Please sign in to comment.