feat(排行榜): pvp排行榜添加区服名

This commit is contained in:
luying
2022-11-02 14:53:34 +08:00
parent 28495373fc
commit 76f35af7f8
7 changed files with 33 additions and 12 deletions

View File

@@ -24,6 +24,8 @@ import { getSeconds, nowSeconds } from '../../../pubUtils/timeUtil';
import { PlayerDetail, PlayerDetailHero } from '../../../domain/battleField/guild';
import { PvpSaveDataModel } from '../../../db/PvpSaveData';
import { PVPConfigModel } from '../../../db/PvpConfig';
import { getAllServerName } from '../../../services/redisService';
import { RoleRankInfo } from '../../../domain/rank';
export default function (app: Application) {
new HandlerService(app, {});
@@ -474,7 +476,13 @@ export class PvpHandler {
if(checkPvpSeasonIsWaiting()) { // 休赛期
seasonNum ++;
}
let serverNames = await getAllServerName();
let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum });
r.setGenerFieldsFun(function (param: RoleRankInfo) {
let { serverId } = param;
return { ...param, serverName: serverNames[serverId]||'无' };
});
let { ranks, myRank } = await r.getRankListWithMyRank({ roleId });
if (!myRank) {

View File

@@ -358,7 +358,7 @@ export async function ladderBattleEndReward(roleId: string, roleName: string, si
return { battleGoods, breakGoods };
}
export function completeLadderRanks(ranks: RoleAndGuildRankInfo[]) {
export function completeLadderRanks(ranks: RoleAndGuildRankInfo[], serverId: number) {
let result: RoleAndGuildRankInfo[] = [];
for(let i = 1; i <= 200; i++) {
let dicLadderDifficultRatio = gameData.ladderDifficultRatio.get(i);
@@ -368,7 +368,7 @@ export function completeLadderRanks(ranks: RoleAndGuildRankInfo[]) {
result.push(rank);
} else {
let rank = new RoleAndGuildRankInfo(i, 0);
rank.setByField(`robot${i}`, LADDER.LADDER_ROBOT_NAME, head, EXTERIOR.EXTERIOR_FACECASE, spine, level, 1, '', ce, ce );
rank.setByField(`robot${i}`, LADDER.LADDER_ROBOT_NAME, head, EXTERIOR.EXTERIOR_FACECASE, spine, level, 1, '', ce, ce, serverId );
result.push(rank);
}
}

View File

@@ -533,6 +533,11 @@ export async function getAllServers() {
return serverlist;
}
export async function getAllServerName() {
let servers = await redisClient().hgetallAsync(REDIS_KEY.SERVER);
return servers;
}
export async function getServerName(serverId: number) {
let name = await redisClient().hgetAsync(REDIS_KEY.SERVER, `${serverId}`);
return name||'常山少年'

View File

@@ -14,7 +14,7 @@ export enum ROLE_SELECT {
COM_BATTLE = 'lv head frame spine heads frames spines topLineupCe',
GET_HEADS = 'heads head frames frame spines spine isGuildLeader roleId roleName lv ce title',
// 排行榜基础数据
RANK = 'roleId roleName lv vLv head frame spine heads frames spines title guildName ce topLineup towerLv towerUpTime topLineupCe heroNum updatedAt heroNumUpdatedAt dungeonWarId dungeonUpdatedAt dungeonHeroes mainWarId mainUpdatedAt mainEliteWarId mainEliteUpdatedAt showLineup hasGuild',
RANK = 'roleId roleName lv vLv head frame spine heads frames spines title guildName ce topLineup towerLv towerUpTime topLineupCe heroNum updatedAt heroNumUpdatedAt dungeonWarId dungeonUpdatedAt dungeonHeroes mainWarId mainUpdatedAt mainEliteWarId mainEliteUpdatedAt showLineup hasGuild serverId',
};
export enum HERO_SELECT {

View File

@@ -118,7 +118,7 @@ export default class Guild extends BaseModel {
const code = params.guildCode;
const result: GuildType = await GuildModel.findOneAndUpdate({ code }, update, { upsert: true, new: true })
.select({ _id: 0, __v: 0, createdAt: 0, updatedAt: 0 })
.populate('leader', { roleId: 1, roleName: 1, head: 1, frame: 1, spine: 1, lv: 1, quitTime: 1, ce: 1, title: 1, _id: 0 }, 'Role')
.populate('leader', { roleId: 1, roleName: 1, head: 1, frame: 1, spine: 1, lv: 1, quitTime: 1, ce: 1, title: 1, serverId: 1, _id: 0 }, 'Role')
.lean({ getters: true, virtuals: true });
return result;

View File

@@ -176,7 +176,7 @@ export default class PvpDefense extends BaseModel {
public static async getRank(seasonNum: number, page = 1, limit = 1000) {
let sortBy = { score: -1, updatedAt: 1 };
const ranks: PvpDefenseType[] = await PvpDefenseModel.find({rankSeasonNum: seasonNum, score: { $gt: 0 }}).select('roleId role score updatedAt')
.populate('role', 'roleId roleName head frame spine heads frames spines title lv vLv updatedAt')
.populate('role', 'roleId roleName head frame spine heads frames spines title lv vLv updatedAt serverId')
.sort(sortBy).limit(limit).skip((page - 1) * limit).lean({ getters: true, virtuals: true });
return ranks;
}

View File

@@ -12,6 +12,9 @@ export class RankParam {
@prop({ required: true })
roleName: string = "";
@prop({ required: true })
serverId: number = 0;
@prop({ required: true })
lv: number = 0;
@@ -55,7 +58,8 @@ export class RankParam {
} else {
this.updatedAt = getSeconds(role.updatedAt);
}
}
}
if(role.serverId) this.serverId = role.serverId;
}
}
@@ -81,7 +85,10 @@ export class GuildLeader {
@prop({ required: true })
spine: number;
constructor(leader: { roleId: string, roleName: string, title: number, lv: number, head: number, frame: number, spine: number}) {
@prop({ required: true })
serverId: number;
constructor(leader: { roleId: string, roleName: string, title: number, lv: number, head: number, frame: number, spine: number, serverId: number}) {
this.roleId = leader.roleId;
this.roleName = leader.roleName;
this.title = leader.title;
@@ -89,6 +96,7 @@ export class GuildLeader {
this.head = leader.head;
this.frame = leader.frame;
this.spine = leader.spine;
this.serverId = leader.serverId;
}
}
@@ -230,7 +238,7 @@ export class RoleAndGuildRankInfo {
}
setUserInfo(role: RoleRankInfo) {
this.userInfo = pick(role, ['roleId', 'roleName', 'head', 'frame', 'spine', 'lv', 'title', 'guildName', 'ce', 'topLineupCe']);
this.userInfo = pick(role, ['roleId', 'roleName', 'head', 'frame', 'spine', 'lv', 'title', 'guildName', 'ce', 'topLineupCe', 'serverId']);
this.lineup = role.lineup;
this.hasUser = true;
}
@@ -251,8 +259,8 @@ export class RoleAndGuildRankInfo {
return false;
}
setByField(roleId: string, roleName: string, head: number, frame: number, spine: number, lv: number, title: number, guildName: string, ce: number, topLineupCe: number) {
this.userInfo = { roleId, roleName, head, frame, spine, lv, title, guildName, ce, topLineupCe }
setByField(roleId: string, roleName: string, head: number, frame: number, spine: number, lv: number, title: number, guildName: string, ce: number, topLineupCe: number, serverId: number) {
this.userInfo = { roleId, roleName, head, frame, spine, lv, title, guildName, ce, topLineupCe, serverId }
}
}
@@ -400,12 +408,12 @@ export class GeneralRankParam {
let rank = rankInfo? (type == RANK_TYPE.LADDER? rankInfo.num: rankInfo.rank): 0;
if(rank == 1) {
if(rankInfo instanceof RoleRankInfo) {
this.userInfo = pick(rankInfo, ['roleId', 'roleName', 'head', 'frame', 'spine', 'guildName', 'ce', 'title', 'lv', 'topLineupCe']);
this.userInfo = pick(rankInfo, ['roleId', 'roleName', 'head', 'frame', 'spine', 'guildName', 'ce', 'title', 'lv', 'topLineupCe', 'serverId']);
this.hasUser = true;
}
if(rankInfo instanceof GuildRankInfo) {
let leaderInfo = pick(rankInfo.leader, ['roleId', 'roleName', 'head', 'frame', 'spine', 'ce', 'title', 'lv']);
let leaderInfo = pick(rankInfo.leader, ['roleId', 'roleName', 'head', 'frame', 'spine', 'ce', 'title', 'lv', 'serverId']);
this.userInfo = {
...leaderInfo, guildName: rankInfo.name, ce: rankInfo.guildCe, topLineupCe: rankInfo.guildCe
}