diff --git a/game-server/app/services/ladderService.ts b/game-server/app/services/ladderService.ts index 05ecf2ec2..d88d4a3c5 100644 --- a/game-server/app/services/ladderService.ts +++ b/game-server/app/services/ladderService.ts @@ -126,7 +126,7 @@ async function generateOppPlayer(serverId: number, rank: number) { let r = new Rank(REDIS_KEY.LADDER, { serverId }, false); let result = new LadderOppPlayerReturn(rank); if(rank < 3001) { - let players = await r.getRankByRange(rank, rank); + let players = await r.getRankByRange(rank, rank, false, true); if(players.length > 0) { let player = players[0]; let defCe = await getLadderDefCe(player.roleId); diff --git a/game-server/app/services/rankService.ts b/game-server/app/services/rankService.ts index 855cd4e25..15ad022fb 100644 --- a/game-server/app/services/rankService.ts +++ b/game-server/app/services/rankService.ts @@ -772,7 +772,7 @@ export class Rank { } // 获取区间里的排行榜,格式 {rank, field, score}[] - public async getRankByRangeRaw(max: number | string = '+inf', min: number | string = '-inf', isReverse = true) { + public async getRankByRangeRaw(max: number | string = '+inf', min: number | string = '-inf', isReverse = true, byScore = false) { let ranks: { rank: number, field: string, scores: number[] }[] = []; let key = this.keyName.getName(); if (this.isUnion) { @@ -780,11 +780,11 @@ export class Rank { } const rankFromDb = isReverse? - ((max == '+inf' && min == '-inf')? + (((max == '+inf' && min == '-inf') || byScore)? (await redisClient().zrevrangebyscoreAsync(key, max, min, "WITHSCORES")): (await redisClient().zrevrangeAsync(key, min, max, "WITHSCORES")) ): - ((max == '+inf' && min == '-inf')? + (((max == '+inf' && min == '-inf') || byScore)? (await redisClient().zrangebyscoreAsync(key, min, max, "WITHSCORES")): (await redisClient().zrangeAsync(key, min, max, "WITHSCORES")) ) @@ -798,8 +798,8 @@ export class Rank { return ranks } - public async getRankByRange(max: number | string = '+inf', min: number | string = '-inf', isReverse = true) { - let raws = await this.getRankByRangeRaw(max, min, isReverse); + public async getRankByRange(max: number | string = '+inf', min: number | string = '-inf', isReverse = true, byScore = false) { + let raws = await this.getRankByRangeRaw(max, min, isReverse, byScore); let ranks = new Array(); let l = 1;