From a828e75885f52b2968b372be5e21c9ce8e923a87 Mon Sep 17 00:00:00 2001 From: tianfeng <769204422@qq.com> Date: Thu, 28 May 2026 19:06:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E6=9C=80=E6=96=B0?= =?UTF-8?q?=E6=B8=B8=E6=88=8F=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../game/ranking/GameRankingQryExe.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) 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());