🎈 perf(排行榜): 武将排行榜修改为读数据库

This commit is contained in:
luying
2023-05-06 20:24:16 +08:00
parent 95b3c0a880
commit d30abf287f
5 changed files with 120 additions and 36 deletions

View File

@@ -281,8 +281,10 @@ export function getInfoKeyByRedisKey(redisKey: REDIS_KEY) {
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] };
case REDIS_KEY.TOP_LINEUP_RANK: // 最强阵容排行
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [REDIS_KEY.TOP_LINEUP_INFO] };
// case REDIS_KEY.TOP_HERO_RANK: // 最强武将排行
// return { infoKey: REDIS_KEY.USER_INFO, extraKey: [REDIS_KEY.HERO_INFO] };
case REDIS_KEY.TOP_HERO_RANK: // 最强武将排行
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [REDIS_KEY.HERO_INFO] };
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] };
case REDIS_KEY.HERO_NUM_RANK: // 武将数量排行
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] };
case REDIS_KEY.USER_LV: // 主公等级排行榜
@@ -295,8 +297,10 @@ export function getInfoKeyByRedisKey(redisKey: REDIS_KEY) {
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] };
case REDIS_KEY.MAIN_ELITE_RANK: // 精英通关排名
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] };
// case REDIS_KEY.HERO_RANK: // 武将排行榜
// return { infoKey: REDIS_KEY.USER_INFO, extraKey: [REDIS_KEY.HERO_INFO] };
case REDIS_KEY.HERO_RANK: // 武将排行榜
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [REDIS_KEY.HERO_INFO] };
return { infoKey: REDIS_KEY.USER_INFO, extraKey: [] };
case REDIS_KEY.GUILD_ACTIVE_RANK: // 公会周活跃排行榜
return { infoKey: REDIS_KEY.GUILD_INFO, extraKey: [] };

View File

@@ -101,6 +101,8 @@ export class EPlace {
@index({ seqId: 1 })
@index({ roleId: 1, hid: 1 })
@index({ roleId: 1, ce: -1 })
@index({ serverId: 1, ce: -1 })
@index({ serverId: 1, hid: 1, ce: -1 })
export default class Hero extends BaseModel {
@prop({ required: true })
@@ -188,6 +190,16 @@ export default class Hero extends BaseModel {
return heroes
}
public static async findByServerIdAndSortByCe(serverId: number) {
const heroes: HeroType[] = await HeroROModel.find({ serverId }).sort({ ce: -1 }).select('hid skinId star colorStar lv quality job roleId ce').limit(200).lean();
return heroes
}
public static async findByServerIdAndHidAndSortByCe(serverId: number, hid: number) {
const heroes: HeroType[] = await HeroROModel.find({ serverId, hid }).sort({ ce: -1 }).select('hid skinId star colorStar lv quality job roleId ce').limit(200).lean();
return heroes
}
public static async findBySeqIdRange(seqIds: Array<number>, roleId: string, lean = true) {
const hero: HeroType[] = await HeroROModel.find({ seqId: { $in: seqIds }, roleId }).lean(lean);
return hero;