✨ feat(排行榜): pvp排行榜添加区服名
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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||'常山少年'
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user