✨ 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 { PlayerDetail, PlayerDetailHero } from '../../../domain/battleField/guild';
|
||||||
import { PvpSaveDataModel } from '../../../db/PvpSaveData';
|
import { PvpSaveDataModel } from '../../../db/PvpSaveData';
|
||||||
import { PVPConfigModel } from '../../../db/PvpConfig';
|
import { PVPConfigModel } from '../../../db/PvpConfig';
|
||||||
|
import { getAllServerName } from '../../../services/redisService';
|
||||||
|
import { RoleRankInfo } from '../../../domain/rank';
|
||||||
|
|
||||||
export default function (app: Application) {
|
export default function (app: Application) {
|
||||||
new HandlerService(app, {});
|
new HandlerService(app, {});
|
||||||
@@ -474,7 +476,13 @@ export class PvpHandler {
|
|||||||
if(checkPvpSeasonIsWaiting()) { // 休赛期
|
if(checkPvpSeasonIsWaiting()) { // 休赛期
|
||||||
seasonNum ++;
|
seasonNum ++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let serverNames = await getAllServerName();
|
||||||
let r = new Rank(REDIS_KEY.PVP_RANK, { seasonNum });
|
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 });
|
let { ranks, myRank } = await r.getRankListWithMyRank({ roleId });
|
||||||
|
|
||||||
if (!myRank) {
|
if (!myRank) {
|
||||||
|
|||||||
@@ -358,7 +358,7 @@ export async function ladderBattleEndReward(roleId: string, roleName: string, si
|
|||||||
return { battleGoods, breakGoods };
|
return { battleGoods, breakGoods };
|
||||||
}
|
}
|
||||||
|
|
||||||
export function completeLadderRanks(ranks: RoleAndGuildRankInfo[]) {
|
export function completeLadderRanks(ranks: RoleAndGuildRankInfo[], serverId: number) {
|
||||||
let result: RoleAndGuildRankInfo[] = [];
|
let result: RoleAndGuildRankInfo[] = [];
|
||||||
for(let i = 1; i <= 200; i++) {
|
for(let i = 1; i <= 200; i++) {
|
||||||
let dicLadderDifficultRatio = gameData.ladderDifficultRatio.get(i);
|
let dicLadderDifficultRatio = gameData.ladderDifficultRatio.get(i);
|
||||||
@@ -368,7 +368,7 @@ export function completeLadderRanks(ranks: RoleAndGuildRankInfo[]) {
|
|||||||
result.push(rank);
|
result.push(rank);
|
||||||
} else {
|
} else {
|
||||||
let rank = new RoleAndGuildRankInfo(i, 0);
|
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);
|
result.push(rank);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -533,6 +533,11 @@ export async function getAllServers() {
|
|||||||
return serverlist;
|
return serverlist;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getAllServerName() {
|
||||||
|
let servers = await redisClient().hgetallAsync(REDIS_KEY.SERVER);
|
||||||
|
return servers;
|
||||||
|
}
|
||||||
|
|
||||||
export async function getServerName(serverId: number) {
|
export async function getServerName(serverId: number) {
|
||||||
let name = await redisClient().hgetAsync(REDIS_KEY.SERVER, `${serverId}`);
|
let name = await redisClient().hgetAsync(REDIS_KEY.SERVER, `${serverId}`);
|
||||||
return name||'常山少年'
|
return name||'常山少年'
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export enum ROLE_SELECT {
|
|||||||
COM_BATTLE = 'lv head frame spine heads frames spines topLineupCe',
|
COM_BATTLE = 'lv head frame spine heads frames spines topLineupCe',
|
||||||
GET_HEADS = 'heads head frames frame spines spine isGuildLeader roleId roleName lv ce title',
|
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 {
|
export enum HERO_SELECT {
|
||||||
|
|||||||
+1
-1
@@ -118,7 +118,7 @@ export default class Guild extends BaseModel {
|
|||||||
const code = params.guildCode;
|
const code = params.guildCode;
|
||||||
const result: GuildType = await GuildModel.findOneAndUpdate({ code }, update, { upsert: true, new: true })
|
const result: GuildType = await GuildModel.findOneAndUpdate({ code }, update, { upsert: true, new: true })
|
||||||
.select({ _id: 0, __v: 0, createdAt: 0, updatedAt: 0 })
|
.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 });
|
.lean({ getters: true, virtuals: true });
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -176,7 +176,7 @@ export default class PvpDefense extends BaseModel {
|
|||||||
public static async getRank(seasonNum: number, page = 1, limit = 1000) {
|
public static async getRank(seasonNum: number, page = 1, limit = 1000) {
|
||||||
let sortBy = { score: -1, updatedAt: 1 };
|
let sortBy = { score: -1, updatedAt: 1 };
|
||||||
const ranks: PvpDefenseType[] = await PvpDefenseModel.find({rankSeasonNum: seasonNum, score: { $gt: 0 }}).select('roleId role score updatedAt')
|
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 });
|
.sort(sortBy).limit(limit).skip((page - 1) * limit).lean({ getters: true, virtuals: true });
|
||||||
return ranks;
|
return ranks;
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-7
@@ -12,6 +12,9 @@ export class RankParam {
|
|||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
roleName: string = "";
|
roleName: string = "";
|
||||||
|
|
||||||
|
@prop({ required: true })
|
||||||
|
serverId: number = 0;
|
||||||
|
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
lv: number = 0;
|
lv: number = 0;
|
||||||
|
|
||||||
@@ -55,7 +58,8 @@ export class RankParam {
|
|||||||
} else {
|
} else {
|
||||||
this.updatedAt = getSeconds(role.updatedAt);
|
this.updatedAt = getSeconds(role.updatedAt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(role.serverId) this.serverId = role.serverId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,7 +85,10 @@ export class GuildLeader {
|
|||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
spine: number;
|
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.roleId = leader.roleId;
|
||||||
this.roleName = leader.roleName;
|
this.roleName = leader.roleName;
|
||||||
this.title = leader.title;
|
this.title = leader.title;
|
||||||
@@ -89,6 +96,7 @@ export class GuildLeader {
|
|||||||
this.head = leader.head;
|
this.head = leader.head;
|
||||||
this.frame = leader.frame;
|
this.frame = leader.frame;
|
||||||
this.spine = leader.spine;
|
this.spine = leader.spine;
|
||||||
|
this.serverId = leader.serverId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -230,7 +238,7 @@ export class RoleAndGuildRankInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setUserInfo(role: RoleRankInfo) {
|
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.lineup = role.lineup;
|
||||||
this.hasUser = true;
|
this.hasUser = true;
|
||||||
}
|
}
|
||||||
@@ -251,8 +259,8 @@ export class RoleAndGuildRankInfo {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
setByField(roleId: string, roleName: string, head: number, frame: number, spine: number, lv: number, title: number, guildName: string, ce: number, topLineupCe: number) {
|
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 }
|
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;
|
let rank = rankInfo? (type == RANK_TYPE.LADDER? rankInfo.num: rankInfo.rank): 0;
|
||||||
if(rank == 1) {
|
if(rank == 1) {
|
||||||
if(rankInfo instanceof RoleRankInfo) {
|
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;
|
this.hasUser = true;
|
||||||
}
|
}
|
||||||
if(rankInfo instanceof GuildRankInfo) {
|
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 = {
|
this.userInfo = {
|
||||||
...leaderInfo, guildName: rankInfo.name, ce: rankInfo.guildCe, topLineupCe: rankInfo.guildCe
|
...leaderInfo, guildName: rankInfo.name, ce: rankInfo.guildCe, topLineupCe: rankInfo.guildCe
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user