diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/game/ranking/GameRankingQryExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/game/ranking/GameRankingQryExe.java index 827c2aed..63ba112a 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/game/ranking/GameRankingQryExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/game/ranking/GameRankingQryExe.java @@ -53,7 +53,6 @@ public class GameRankingQryExe { PageResult pageResult = gameRankingGateway.pageRanking(periodType, periodKey, pageNum, pageSize); - // 计算排名(从当前页的起始排名开始) int startRank = (pageNum - 1) * pageSize + 1; List coList = IntStream.range(0, pageResult.getRecords().size()) .mapToObj(i -> { @@ -64,8 +63,24 @@ public class GameRankingQryExe { }) .collect(Collectors.toList()); + // latest 排前,非 latest 保持原 totalPrizeAmount 排序 + List sorted = coList.stream() + .sorted((a, b) -> { + boolean aLatest = a.isLatest(); + boolean bLatest = b.isLatest(); + if (aLatest != bLatest) { + return aLatest ? -1 : 1; + } + return a.getRank() - b.getRank(); + }) + .collect(Collectors.toList()); + // 重新赋排名 + for (int i = 0; i < sorted.size(); i++) { + sorted.get(i).setRank(startRank + i); + } + PageResult result = new PageResult<>(); - result.setRecords(coList); + result.setRecords(sorted); result.setTotal(pageResult.getTotal()); result.setCurrent(pageResult.getCurrent()); result.setSize(pageResult.getSize());