From 5400edb8b3510213de30c1f41a087d0660d7432a Mon Sep 17 00:00:00 2001 From: testusuke Date: Tue, 8 Oct 2024 15:44:18 +0900 Subject: [PATCH] =?UTF-8?q?change:=20=E5=8B=9D=E3=81=A1=E7=82=B9=E6=8E=A1?= =?UTF-8?q?=E7=82=B9=E6=96=B9=E6=B3=95=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/net/sportsday/models/Games.kt | 3 + .../net/sportsday/services/GamesService.kt | 95 ++++++++++++------- 2 files changed, 62 insertions(+), 36 deletions(-) diff --git a/src/main/kotlin/net/sportsday/models/Games.kt b/src/main/kotlin/net/sportsday/models/Games.kt index 6fcea68..7dc547d 100644 --- a/src/main/kotlin/net/sportsday/models/Games.kt +++ b/src/main/kotlin/net/sportsday/models/Games.kt @@ -73,6 +73,9 @@ enum class CalculationType(val type: String) { @SerialName("diff_score") DIFF_SCORE("diff_score"), + + @SerialName("win_score") + WIN_SCORE("win_score"), } @Serializable diff --git a/src/main/kotlin/net/sportsday/services/GamesService.kt b/src/main/kotlin/net/sportsday/services/GamesService.kt index 484d965..5ef5cda 100644 --- a/src/main/kotlin/net/sportsday/services/GamesService.kt +++ b/src/main/kotlin/net/sportsday/services/GamesService.kt @@ -452,48 +452,71 @@ object GamesService { var lastResult: LeagueTeamResult? = null var lastRank = 0 // sort by score. but if score is same, sort by goal diff - val sortedLeagueTeamResults = leagueTeamResults.values - .sortedWith( - compareByDescending { it.score } - .apply { - if (game.calculationType == CalculationType.DIFF_SCORE) { - thenByDescending { it.goalDiff } - } else if (game.calculationType == CalculationType.TOTAL_SCORE) { - thenByDescending { it.goal } - } - }, - ) - .map { leagueTeamResult -> - if (lastResult == null) { - leagueTeamResult.rank = 1 - } else { - // if score is same, rank is same - if (game.calculationType == CalculationType.TOTAL_SCORE) { - if ( - lastResult!!.score == leagueTeamResult.score && - lastResult!!.goal == leagueTeamResult.goal - ) { - leagueTeamResult.rank = lastRank + val sortedLeagueTeamResults = + if (game.calculationType == CalculationType.DIFF_SCORE || game.calculationType == CalculationType.TOTAL_SCORE) { + leagueTeamResults.values + .sortedWith( + compareByDescending { it.score } + .apply { + if (game.calculationType == CalculationType.DIFF_SCORE) { + thenByDescending { it.goalDiff } + } else if (game.calculationType == CalculationType.TOTAL_SCORE) { + thenByDescending { it.goal } + } + }, + ) + .map { leagueTeamResult -> + if (lastResult == null) { + leagueTeamResult.rank = 1 } else { - leagueTeamResult.rank = lastRank + 1 + // if score is same, rank is same + if (game.calculationType == CalculationType.TOTAL_SCORE) { + if ( + lastResult!!.score == leagueTeamResult.score && + lastResult!!.goal == leagueTeamResult.goal + ) { + leagueTeamResult.rank = lastRank + } else { + leagueTeamResult.rank = lastRank + 1 + } + } else { + if ( + lastResult!!.score == leagueTeamResult.score && + lastResult!!.goalDiff == leagueTeamResult.goalDiff + ) { + leagueTeamResult.rank = lastRank + } else { + leagueTeamResult.rank = lastRank + 1 + } + } } - } else { - if ( - lastResult!!.score == leagueTeamResult.score && - lastResult!!.goalDiff == leagueTeamResult.goalDiff - ) { - leagueTeamResult.rank = lastRank + + // last result + lastResult = leagueTeamResult + lastRank = leagueTeamResult.rank + + leagueTeamResult + } + } else { + leagueTeamResults.values + .sortedWith(compareByDescending { it.score }) + .map { leagueTeamResult -> + if (lastResult == null) { + leagueTeamResult.rank = 1 } else { - leagueTeamResult.rank = lastRank + 1 + if (lastResult!!.score == leagueTeamResult.score) { + leagueTeamResult.rank = lastRank + } else { + leagueTeamResult.rank = lastRank + 1 + } } - } - } - // last result - lastResult = leagueTeamResult - lastRank = leagueTeamResult.rank + // last result + lastResult = leagueTeamResult + lastRank = leagueTeamResult.rank - leagueTeamResult + leagueTeamResult + } } // create league result