From 5852d44c3735c6bbc56b8a480c519e37b6b79c5b Mon Sep 17 00:00:00 2001 From: AYoungSn Date: Fri, 15 Dec 2023 15:17:15 +0900 Subject: [PATCH 1/5] [FIX] #232 add flush --- .../java/com/gg/server/domain/rank/redis/RankRedisService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/gg/server/domain/rank/redis/RankRedisService.java b/src/main/java/com/gg/server/domain/rank/redis/RankRedisService.java index 18a0c353f..662362740 100644 --- a/src/main/java/com/gg/server/domain/rank/redis/RankRedisService.java +++ b/src/main/java/com/gg/server/domain/rank/redis/RankRedisService.java @@ -75,6 +75,7 @@ public void rollbackRank(TeamUser teamUser, int ppp, Long seasonId) { log.info("Before: userId: " + teamUser.getUser().getIntraId() + ", " + "ppp: rank(" + rank.getPpp() + "), redis(" + myTeam.getPpp() + ")"); rank.modifyUserRank(ppp, win, losses); myTeam.changedRank(ppp, win, losses); + rankRepository.flush(); updateRankUser(hashkey, RedisKeyManager.getZSetKey(seasonId), teamUser.getUser().getId(), myTeam); log.info("After: userId: " + teamUser.getUser().getIntraId() + ", " + "ppp: rank(" + rank.getPpp() + "), redis(" + myTeam.getPpp() + ")"); } From 136ee9b0d7d4262a83854f5fd067c821a27bcc61 Mon Sep 17 00:00:00 2001 From: AYoungSn Date: Fri, 15 Dec 2023 21:24:36 +0900 Subject: [PATCH 2/5] [FIX] #232 repository param name add, flush add --- .../com/gg/server/admin/game/service/GameAdminService.java | 1 + .../com/gg/server/domain/team/data/TeamUserRepository.java | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gg/server/admin/game/service/GameAdminService.java b/src/main/java/com/gg/server/admin/game/service/GameAdminService.java index d146307c7..a58e4dcb5 100644 --- a/src/main/java/com/gg/server/admin/game/service/GameAdminService.java +++ b/src/main/java/com/gg/server/admin/game/service/GameAdminService.java @@ -116,6 +116,7 @@ public void rankResultEdit(RankGamePPPModifyReqDto reqDto, Long gameId) { throw new PChangeNotExistException(); } rollbackGameResult(reqDto, season, teamUser, pChanges); + teamUserAdminRepository.flush(); pChangeAdminRepository.delete(pChanges.get(0)); } rankRedisService.updateRankRedis(teamUsers.get(0), teamUsers.get(1), game); diff --git a/src/main/java/com/gg/server/domain/team/data/TeamUserRepository.java b/src/main/java/com/gg/server/domain/team/data/TeamUserRepository.java index a34e99c4f..b3741ae6a 100644 --- a/src/main/java/com/gg/server/domain/team/data/TeamUserRepository.java +++ b/src/main/java/com/gg/server/domain/team/data/TeamUserRepository.java @@ -11,11 +11,11 @@ public interface TeamUserRepository extends JpaRepository { @Query(value = "select team_user.id, team_user.team_id, team_user.user_id from team, team_user " + "where team.game_id =:gid and team.id = team_user.team_id", nativeQuery = true) - List findAllByGameId(Long gid); + List findAllByGameId(@Param("gid") Long gid); @Query(value = "select count(*) from game, team, team_user " + "where game.start_time >= :today and team_user.team_id = team.id and team_user.user_id = :userId " + "and team.game_id = game.id and game.status = 'END'", nativeQuery = true) - Integer findByDateAndUser(LocalDateTime today, Long userId); + Integer findByDateAndUser(@Param("today")LocalDateTime today, @Param("userId") Long userId); } From a45536ce0397d7d28904277dd33e3d6fdc435486 Mon Sep 17 00:00:00 2001 From: AYoungSn Date: Fri, 29 Dec 2023 20:59:31 +0900 Subject: [PATCH 3/5] [FIX] #232 update tier logic add --- .../java/com/gg/server/admin/game/service/GameAdminService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/gg/server/admin/game/service/GameAdminService.java b/src/main/java/com/gg/server/admin/game/service/GameAdminService.java index 5306355cd..64d7cf47d 100644 --- a/src/main/java/com/gg/server/admin/game/service/GameAdminService.java +++ b/src/main/java/com/gg/server/admin/game/service/GameAdminService.java @@ -138,6 +138,7 @@ public void rankResultEdit(RankGamePPPModifyReqDto reqDto, Long gameId) { pChangeAdminRepository.delete(pChanges.get(0)); } rankRedisService.updateRankRedis(teamUsers.get(0), teamUsers.get(1), game); + rankRedisService.updateAllTier(gameId); } private void rollbackGameResult(RankGamePPPModifyReqDto reqDto, Season season, TeamUser teamUser, List pChanges) { From 4f2ca68977947ad1984f0d20ea964d21e116d885 Mon Sep 17 00:00:00 2001 From: AYoungSn Date: Tue, 2 Jan 2024 12:39:13 +0900 Subject: [PATCH 4/5] [REFACT] #232 log edit --- .../domain/rank/redis/RankRedisService.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/gg/server/domain/rank/redis/RankRedisService.java b/src/main/java/com/gg/server/domain/rank/redis/RankRedisService.java index 9f8ef26e8..ed4aeadf6 100644 --- a/src/main/java/com/gg/server/domain/rank/redis/RankRedisService.java +++ b/src/main/java/com/gg/server/domain/rank/redis/RankRedisService.java @@ -66,12 +66,17 @@ public void updatePPP(TeamUser teamuser, RankRedis myTeam, int enemyScore, Integ Rank rank = rankRepository.findByUserIdAndSeasonId(myTeam.getUserId(), seasonId) .orElseThrow(() -> new NotExistException("rank 정보가 없습니다.", ErrorCode.NOT_FOUND)); Integer changedPpp = EloRating.pppChange(myPPP, enemyPPP, - teamuser.getTeam().getWin(), Math.abs(teamuser.getTeam().getScore() - enemyScore) == 2); + teamuser.getTeam().getWin(), + Math.abs(teamuser.getTeam().getScore() - enemyScore) == 2); + log.info("update before: intraId: " + teamuser.getUser().getIntraId() + ", win: db(" + rank.getWins() + + "), redis(" + myTeam.getWins() + "), losses: db(" + rank.getLosses() + + "), redis(" + myTeam.getLosses() + ")"); rank.modifyUserRank(rank.getPpp() + changedPpp, win, losses); - myTeam.updateRank(changedPpp, win, losses); - + log.info("update after: intraId: " + teamuser.getUser().getIntraId() + ", win: db(" + rank.getWins() + + "), redis(" + myTeam.getWins() + "), losses: db(" + rank.getLosses() + + "), redis(" + myTeam.getLosses() + ")"); } @Transactional @@ -130,11 +135,15 @@ public void rollbackRank(TeamUser teamUser, int ppp, Long seasonId) { int losses = !teamUser.getTeam().getWin() ? myTeam.getLosses() - 1: myTeam.getLosses(); Rank rank = rankRepository.findByUserIdAndSeasonId(myTeam.getUserId(), seasonId) .orElseThrow(RankNotFoundException::new); - log.info("Before: userId: " + teamUser.getUser().getIntraId() + ", " + "ppp: rank(" + rank.getPpp() + "), redis(" + myTeam.getPpp() + ")"); + log.info("Before: userId: " + teamUser.getUser().getIntraId() + ", " + "ppp: rank(" + + rank.getPpp() + "), redis(" + myTeam.getPpp() + "), win: " + myTeam.getWins() + + ", losses: " + myTeam.getLosses()); rank.modifyUserRank(ppp, win, losses); myTeam.changedRank(ppp, win, losses); rankRepository.flush(); updateRankUser(hashkey, RedisKeyManager.getZSetKey(seasonId), teamUser.getUser().getId(), myTeam); - log.info("After: userId: " + teamUser.getUser().getIntraId() + ", " + "ppp: rank(" + rank.getPpp() + "), redis(" + myTeam.getPpp() + ")"); + log.info("After: userId: " + teamUser.getUser().getIntraId() + ", " + "ppp: rank(" + + rank.getPpp() + "), redis(" + myTeam.getPpp() + "), win: " + myTeam.getWins() + + ", losses: " + myTeam.getLosses()); } } From 2bdb86497b7c0dbf8832c82d1c6aa96526da0334 Mon Sep 17 00:00:00 2001 From: AYoungSn Date: Tue, 2 Jan 2024 12:40:03 +0900 Subject: [PATCH 5/5] [TEST] #232 game result test assertThat add --- .../controller/GameAdminControllerTest.java | 64 ++++++++++++++----- 1 file changed, 48 insertions(+), 16 deletions(-) diff --git a/src/test/java/com/gg/server/admin/game/controller/GameAdminControllerTest.java b/src/test/java/com/gg/server/admin/game/controller/GameAdminControllerTest.java index 29278b671..8bb1bf9dc 100644 --- a/src/test/java/com/gg/server/admin/game/controller/GameAdminControllerTest.java +++ b/src/test/java/com/gg/server/admin/game/controller/GameAdminControllerTest.java @@ -183,10 +183,16 @@ void getUserGameListEndPage() throws Exception { gameService.createRankResult(rankResultReqDto, adminUserId); Rank adminUserRank = rankRepository.findByUserIdAndSeasonId(adminUserId, season.getId()).get(); - Rank enemyUser1Rank = rankRepository.findByUserIdAndSeasonId(enemyUser1.getId(), season.getId()).get(); - System.out.println("MANGO ADMIN1 before DB PPP : " + adminUserRank.getPpp()); - System.out.println("MANGO ENEMY1 before DB PPP : " + enemyUser1Rank.getPpp()); - + Rank enemyUser1Rank = rankRepository.findByUserIdAndSeasonId(enemyUser1.getId(), + season.getId()).get(); + // win 1, losses 0, ppp 1020 +// System.out.println("MANGO ADMIN1 before DB PPP : " + adminUserRank.getPpp()); + assertThat(adminUserRank.getLosses()).isEqualTo(0); + assertThat(adminUserRank.getWins()).isEqualTo(1); + // win 0, losses 1, ppp 982 +// System.out.println("MANGO ENEMY1 before DB PPP : " + enemyUser1Rank.getPpp()); + assertThat(enemyUser1Rank.getWins()).isEqualTo(0); + assertThat(enemyUser1Rank.getLosses()).isEqualTo(1); RankGamePPPModifyReqDto modifyReqDto = new RankGamePPPModifyReqDto(game1Info.getMyTeamId(), 1, game1Info.getEnemyTeamId(), 0); mockMvc.perform(put("/pingpong/admin/games/" + game1Info.getGameId()) @@ -198,10 +204,18 @@ void getUserGameListEndPage() throws Exception { GameTeamUser historyGame1 = gameRepository.findTeamsByGameIsIn(List.of(game1Info.getGameId())).get(0); adminUserRank = rankRepository.findByUserIdAndSeasonId(adminUserId, season.getId()).get(); - enemyUser1Rank = rankRepository.findByUserIdAndSeasonId(enemyUser1.getId(), season.getId()).get(); - System.out.println("MANGO ADMIN1 after DB PPP : " + adminUserRank.getPpp()); - System.out.println("MANGO ENEMY1 after DB PPP : " + enemyUser1Rank.getPpp()); - + enemyUser1Rank = rankRepository.findByUserIdAndSeasonId(enemyUser1.getId(), season.getId()) + .get(); + // win 1, losses 0, ppp 1020 + // MANGO ADMIN1 after DB + assertThat(adminUserRank.getPpp()).isEqualTo(1020); + assertThat(adminUserRank.getWins()).isEqualTo(1); + assertThat(adminUserRank.getLosses()).isEqualTo(0); + // win 0, losses 1, ppp 982 + // MANGO ENEMY1 after DB + assertThat(enemyUser1Rank.getWins()).isEqualTo(0); + assertThat(enemyUser1Rank.getLosses()).isEqualTo(1); + assertThat(enemyUser1Rank.getPpp()).isEqualTo(982); ////////////////////////////// sleep(1000); ////////////////////////////// @@ -216,12 +230,20 @@ void getUserGameListEndPage() throws Exception { gameService.createRankResult(rankResultReqDto, adminUserId); adminUserRank = rankRepository.findByUserIdAndSeasonId(adminUserId, season.getId()).get(); - Rank enemyUser2Rank = rankRepository.findByUserIdAndSeasonId(enemyUser2.getId(), season.getId()).get(); - System.out.println("MANGO ADMIN2 before DB PPP : " + adminUserRank.getPpp()); - System.out.println("MANGO ENEMY2 before DB PPP : " + enemyUser2Rank.getPpp()); - - - modifyReqDto = new RankGamePPPModifyReqDto(game2Info.getMyTeamId(), 0, game2Info.getEnemyTeamId(), 1); + Rank enemyUser2Rank = rankRepository.findByUserIdAndSeasonId(enemyUser2.getId(), + season.getId()).get(); + // win 1, losses 1, ppp 1001 + // MANGO ADMIN2 before DB + assertThat(adminUserRank.getWins()).isEqualTo(1); + assertThat(adminUserRank.getLosses()).isEqualTo(1); + assertThat(adminUserRank.getPpp()).isEqualTo(1001); + // win1, losses 0, ppp 1021 + // MANGO ENEMY2 before DB + assertThat(enemyUser2Rank.getWins()).isEqualTo(1); + assertThat(enemyUser2Rank.getLosses()).isEqualTo(0); + assertThat(enemyUser2Rank.getPpp()).isEqualTo(1021); + + modifyReqDto = new RankGamePPPModifyReqDto(game2Info.getMyTeamId(), 2, game2Info.getEnemyTeamId(), 1); mockMvc.perform(put("/pingpong/admin/games/" + game2Info.getGameId()) .content(objectMapper.writeValueAsString(modifyReqDto)) .contentType(MediaType.APPLICATION_JSON) @@ -231,7 +253,17 @@ void getUserGameListEndPage() throws Exception { adminUserRank = rankRepository.findByUserIdAndSeasonId(adminUserId, season.getId()).get(); enemyUser2Rank = rankRepository.findByUserIdAndSeasonId(enemyUser2.getId(), season.getId()).get(); - System.out.println("MANGO ADMIN2 after DB PPP : " + adminUserRank.getPpp()); - System.out.println("MANGO ENEMY2 after DB PPP : " + enemyUser2Rank.getPpp()); + // win 2, losses 0, ppp 1038 +// System.out.println("MANGO ADMIN2 after DB PPP : " + adminUserRank.getPpp() + ", WIN: " +// + adminUserRank.getWins() + ", LOSSES" + adminUserRank.getLosses()); + assertThat(adminUserRank.getWins()).isEqualTo(2); + assertThat(adminUserRank.getLosses()).isEqualTo(0); + assertThat(adminUserRank.getPpp()).isEqualTo(1038); + // win 0, losses 1, ppp + System.out.println("MANGO ENEMY2 after DB PPP : " + enemyUser2Rank.getPpp() + ", WIN: " + + enemyUser2Rank.getWins() + ", LOSSES" + enemyUser2Rank.getLosses()); + assertThat(enemyUser2Rank.getWins()).isEqualTo(0); + assertThat(enemyUser2Rank.getLosses()).isEqualTo(1); +// assertThat(enemyUser2Rank.getPpp()).isEqualTo() } } \ No newline at end of file