diff --git a/game-server/app/servers/battle/handler/pvpHandler.ts b/game-server/app/servers/battle/handler/pvpHandler.ts index 5d342c0d6..7cf0c17e9 100644 --- a/game-server/app/servers/battle/handler/pvpHandler.ts +++ b/game-server/app/servers/battle/handler/pvpHandler.ts @@ -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) { diff --git a/game-server/app/services/ladderService.ts b/game-server/app/services/ladderService.ts index fdce30f1a..f887ccaea 100644 --- a/game-server/app/services/ladderService.ts +++ b/game-server/app/services/ladderService.ts @@ -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); } } diff --git a/game-server/app/services/redisService.ts b/game-server/app/services/redisService.ts index 9a75fac12..b1a971148 100644 --- a/game-server/app/services/redisService.ts +++ b/game-server/app/services/redisService.ts @@ -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||'常山少年' diff --git a/shared/consts/constModules/selectConst.ts b/shared/consts/constModules/selectConst.ts index 331e2e857..9182cfccb 100644 --- a/shared/consts/constModules/selectConst.ts +++ b/shared/consts/constModules/selectConst.ts @@ -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 { diff --git a/shared/db/Guild.ts b/shared/db/Guild.ts index 40630298c..e734fbcee 100644 --- a/shared/db/Guild.ts +++ b/shared/db/Guild.ts @@ -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; diff --git a/shared/db/PvpDefense.ts b/shared/db/PvpDefense.ts index 1acb9fa4d..da2a43b91 100644 --- a/shared/db/PvpDefense.ts +++ b/shared/db/PvpDefense.ts @@ -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; } diff --git a/shared/domain/rank.ts b/shared/domain/rank.ts index 9e042c8f6..2451c2c2e 100644 --- a/shared/domain/rank.ts +++ b/shared/domain/rank.ts @@ -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 }