🐞 fix(排行榜): 排行榜显示不查全部玩家只显示部分玩家
This commit is contained in:
@@ -94,7 +94,7 @@ export class RoleHandler {
|
|||||||
if (!redisKey) return resResult(STATUS.WRONG_PARMS);
|
if (!redisKey) return resResult(STATUS.WRONG_PARMS);
|
||||||
|
|
||||||
let r = new Rank(redisKey, { serverId, hid });
|
let r = new Rank(redisKey, { serverId, hid });
|
||||||
let ranks = await r.getRankByRange();
|
let ranks = await r.getRankByRange(200, 0);
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS, {
|
return resResult(STATUS.SUCCESS, {
|
||||||
type, hid, ranks
|
type, hid, ranks
|
||||||
|
|||||||
@@ -722,7 +722,7 @@ export class Rank {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public async getRankListWithMyRank(myId: myIdInter, isReverse = true) {
|
public async getRankListWithMyRank(myId: myIdInter, isReverse = true) {
|
||||||
let ranks = await this.getRankByRange('+inf', '-inf', isReverse);
|
let ranks = await this.getRankByRange(1000, 0, isReverse);
|
||||||
let newRanks = [], newMyRank: any;
|
let newRanks = [], newMyRank: any;
|
||||||
let myRank = ranks.find(cur => {
|
let myRank = ranks.find(cur => {
|
||||||
return cur.isMyInfo(myId);
|
return cur.isMyInfo(myId);
|
||||||
@@ -745,13 +745,16 @@ export class Rank {
|
|||||||
* @param from
|
* @param from
|
||||||
* @param to
|
* @param to
|
||||||
*/
|
*/
|
||||||
public async getRankDataByRankWithoutDetail(from: number | string = '+inf', to: number | string = '-inf') {
|
public async getRankDataByRankWithoutDetail(from: number | '+inf' = '+inf', to: number | '-inf' = '-inf') {
|
||||||
let key = this.keyName.getName();
|
let key = this.keyName.getName();
|
||||||
if (this.isUnion) {
|
if (this.isUnion) {
|
||||||
key = await this.generateUnionRank();
|
key = await this.generateUnionRank();
|
||||||
}
|
}
|
||||||
|
|
||||||
const rankFromDb = await redisClient().zrevrangebyscoreAsync(key, from, to, "WITHSCORES");
|
const rankFromDb = (from == '+inf' && to == '-inf')?
|
||||||
|
(await redisClient().zrevrangebyscoreAsync(key, from, to, "WITHSCORES")):
|
||||||
|
(await redisClient().zrevrangeAsync(key, <number>from, <number>to, "WITHSCORES"))
|
||||||
|
;
|
||||||
let ranks: { rank: number, myId: {roleId?: string, guildCode?: string, hid?: number}, scores: number[] }[] = [];
|
let ranks: { rank: number, myId: {roleId?: string, guildCode?: string, hid?: number}, scores: number[] }[] = [];
|
||||||
|
|
||||||
let num = 0;
|
let num = 0;
|
||||||
@@ -777,8 +780,14 @@ export class Rank {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const rankFromDb = isReverse?
|
const rankFromDb = isReverse?
|
||||||
(await redisClient().zrevrangebyscoreAsync(key, max, min, "WITHSCORES")):
|
((max == '+inf' && min == '-inf')?
|
||||||
(await redisClient().zrangebyscoreAsync(key, min, max, "WITHSCORES"));
|
(await redisClient().zrevrangebyscoreAsync(key, max, min, "WITHSCORES")):
|
||||||
|
(await redisClient().zrevrangeAsync(key, <number>min, <number>max, "WITHSCORES"))
|
||||||
|
):
|
||||||
|
((max == '+inf' && min == '-inf')?
|
||||||
|
(await redisClient().zrangebyscoreAsync(key, min, max, "WITHSCORES")):
|
||||||
|
(await redisClient().zrangeAsync(key, <number>min, <number>max, "WITHSCORES"))
|
||||||
|
)
|
||||||
|
|
||||||
let num = 0;
|
let num = 0;
|
||||||
for (let ii = 0; ii < rankFromDb.length; ii += 2) {
|
for (let ii = 0; ii < rankFromDb.length; ii += 2) {
|
||||||
@@ -1244,7 +1253,7 @@ export async function getGeneralRank(role: RoleType & { rankReceived: number[] }
|
|||||||
return dic && dic.rankId == id;
|
return dic && dic.rankId == id;
|
||||||
});
|
});
|
||||||
let r = new Rank(redisKey, { serverId }, false, 1);
|
let r = new Rank(redisKey, { serverId }, false, 1);
|
||||||
let ranks = await r.getRankByRange('+inf', '-inf', id != RANK_TYPE.LADDER);
|
let ranks = await r.getRankByRange(1, 0, id != RANK_TYPE.LADDER);
|
||||||
// if (ranks.length > 0) {
|
// if (ranks.length > 0) {
|
||||||
let param = new GeneralRankParam(id, ranks[0], general, received);
|
let param = new GeneralRankParam(id, ranks[0], general, received);
|
||||||
result.push({...param, general});
|
result.push({...param, general});
|
||||||
|
|||||||
@@ -62,6 +62,8 @@ declare module 'redis' {
|
|||||||
zrevrankAsync(key: string, field: string): Promise<number>;
|
zrevrankAsync(key: string, field: string): Promise<number>;
|
||||||
// 命令返回有序集中,指定区间内的成员,从大到小
|
// 命令返回有序集中,指定区间内的成员,从大到小
|
||||||
zrevrangeAsync(key: string, start: number, end: number, withscores?: string): Promise<string[]>;
|
zrevrangeAsync(key: string, start: number, end: number, withscores?: string): Promise<string[]>;
|
||||||
|
// 命令返回有序集中,指定区间内的成员,从小到大
|
||||||
|
zrangeAsync(key: string, start: number, end: number, withscores?: string): Promise<string[]>;
|
||||||
// 对有序集合中指定成员的分数加上增量 increment
|
// 对有序集合中指定成员的分数加上增量 increment
|
||||||
zincrbyAsync(key: string, increment: number, member: string): Promise<number>;
|
zincrbyAsync(key: string, increment: number, member: string): Promise<number>;
|
||||||
// 对有序集合中指定成员的分数加上增量 increment
|
// 对有序集合中指定成员的分数加上增量 increment
|
||||||
|
|||||||
Reference in New Issue
Block a user