✨ feat(巅峰演武): 详细信息&战报添加区服名
This commit is contained in:
@@ -18,13 +18,13 @@ import { pick } from "underscore";
|
|||||||
import { HeroModel } from '../../../db/Hero';
|
import { HeroModel } from '../../../db/Hero';
|
||||||
import PvpHistoryOpp, { PvpHistoryOppModel } from '../../../db/PvpHistoryOpp';
|
import PvpHistoryOpp, { PvpHistoryOppModel } from '../../../db/PvpHistoryOpp';
|
||||||
import { BattleRecordModel } from '../../../db/BattleRecord';
|
import { BattleRecordModel } from '../../../db/BattleRecord';
|
||||||
import { PvpRecordModel } from '../../../db/PvpRecord';
|
import { PvpRecordModel, PvpRecordParam, PvpRecordType } from '../../../db/PvpRecord';
|
||||||
import { pvpEndParamInter } from '../../../pubUtils/interface';
|
import { pvpEndParamInter } from '../../../pubUtils/interface';
|
||||||
import { getSeconds, nowSeconds } from '../../../pubUtils/timeUtil';
|
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 { getAllServerName, getServerName } from '../../../services/redisService';
|
||||||
import { RoleRankInfo } from '../../../domain/rank';
|
import { RoleRankInfo } from '../../../domain/rank';
|
||||||
|
|
||||||
export default function (app: Application) {
|
export default function (app: Application) {
|
||||||
@@ -257,7 +257,7 @@ export class PvpHandler {
|
|||||||
|
|
||||||
let curOpp = pvpDefense.oppBeforePlayers.find(cur => cur.roleId == oppRoleId && cur.pos == pos);
|
let curOpp = pvpDefense.oppBeforePlayers.find(cur => cur.roleId == oppRoleId && cur.pos == pos);
|
||||||
if (!curOpp) return resResult(STATUS.PVP_ROLE_NOT_FOUND);
|
if (!curOpp) return resResult(STATUS.PVP_ROLE_NOT_FOUND);
|
||||||
const defenseInfo = await generPVPOppRecInfo(isSuccess, curOpp, oppHeroes, role.lv);
|
const defenseInfo = await generPVPOppRecInfo(isSuccess, curOpp, oppHeroes, serverId);
|
||||||
|
|
||||||
// 战报记录
|
// 战报记录
|
||||||
await PvpRecordModel.createRec({ roleId1: roleId, roleId2: robotIdComBack(oppRoleId), warId: BattleRecord.battleId, attackInfo, defenseInfo, createTime: nowSeconds() });
|
await PvpRecordModel.createRec({ roleId1: roleId, roleId2: robotIdComBack(oppRoleId), warId: BattleRecord.battleId, attackInfo, defenseInfo, createTime: nowSeconds() });
|
||||||
@@ -498,6 +498,7 @@ export class PvpHandler {
|
|||||||
async getPlayerDetail(msg: { roleId: string }, session: BackendSession) {
|
async getPlayerDetail(msg: { roleId: string }, session: BackendSession) {
|
||||||
|
|
||||||
let roleId = session.get('roleId');
|
let roleId = session.get('roleId');
|
||||||
|
let serverId = session.get('serverId');
|
||||||
|
|
||||||
let { roleId: oppoRoleId } = msg;
|
let { roleId: oppoRoleId } = msg;
|
||||||
let isRobot = checkRoleIsRobot(oppoRoleId);
|
let isRobot = checkRoleIsRobot(oppoRoleId);
|
||||||
@@ -525,6 +526,7 @@ export class PvpHandler {
|
|||||||
}
|
}
|
||||||
result = new PlayerDetail(pvpHistoryOpp.oppRoleId, heroes, pvpHistoryOpp.rankLv);
|
result = new PlayerDetail(pvpHistoryOpp.oppRoleId, heroes, pvpHistoryOpp.rankLv);
|
||||||
result.setRobot(pvpHistoryOpp);
|
result.setRobot(pvpHistoryOpp);
|
||||||
|
result.setServerName(await getServerName(serverId));
|
||||||
} else { // 查询对方pvpDefense
|
} else { // 查询对方pvpDefense
|
||||||
let pvpDefense = await PvpDefenseModel.findByRoleId(oppoRoleId);
|
let pvpDefense = await PvpDefenseModel.findByRoleId(oppoRoleId);
|
||||||
let dbHeroes = await HeroModel.findByRole(oppoRoleId);
|
let dbHeroes = await HeroModel.findByRole(oppoRoleId);
|
||||||
@@ -545,6 +547,7 @@ export class PvpHandler {
|
|||||||
result = new PlayerDetail(oppoRoleId, heroes, rank);
|
result = new PlayerDetail(oppoRoleId, heroes, rank);
|
||||||
result.setPlayer(role);
|
result.setPlayer(role);
|
||||||
result.setPvpDefense(pvpDefense);
|
result.setPvpDefense(pvpDefense);
|
||||||
|
result.setServerName(await getServerName(role.serverId));
|
||||||
}
|
}
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS, result);
|
return resResult(STATUS.SUCCESS, result);
|
||||||
@@ -583,6 +586,13 @@ export class PvpHandler {
|
|||||||
async getRec(msg: {}, session: BackendSession) {
|
async getRec(msg: {}, session: BackendSession) {
|
||||||
let roleId = session.get('roleId');
|
let roleId = session.get('roleId');
|
||||||
let pvpRecords = await PvpRecordModel.getRecByRoleId(roleId);
|
let pvpRecords = await PvpRecordModel.getRecByRoleId(roleId);
|
||||||
|
let serverNames = await getAllServerName();
|
||||||
|
for(let record of pvpRecords) {
|
||||||
|
console.log('#####', record.defenseInfo.serverId, serverNames, serverNames[record.defenseInfo.serverId])
|
||||||
|
if(record.defenseInfo) record.defenseInfo['serverName'] = serverNames[record.defenseInfo.serverId];
|
||||||
|
if(record.attackInfo) record.attackInfo['serverName'] = serverNames[record.attackInfo.serverId];
|
||||||
|
}
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS, { list: pvpRecords });
|
return resResult(STATUS.SUCCESS, { list: pvpRecords });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -500,7 +500,7 @@ export function calLineupScore(lineup: Attack|Defense, heroScores: HeroScore[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获取对手战报记录
|
// 获取对手战报记录
|
||||||
export async function generPVPOppRecInfo(isSuccess: boolean, curOpp: OppPlayer, oppHeroes: pvpEndParamInter[], myLv: number) {
|
export async function generPVPOppRecInfo(isSuccess: boolean, curOpp: OppPlayer, oppHeroes: pvpEndParamInter[], serverId: number) {
|
||||||
let oppHeroRecords = new Array<HeroesRecord>();
|
let oppHeroRecords = new Array<HeroesRecord>();
|
||||||
let oppRole = <PvpHistoryOppType>curOpp.oppDef;
|
let oppRole = <PvpHistoryOppType>curOpp.oppDef;
|
||||||
if (!oppRole) { console.error('opp role not found') }
|
if (!oppRole) { console.error('opp role not found') }
|
||||||
@@ -547,7 +547,7 @@ export async function generPVPOppRecInfo(isSuccess: boolean, curOpp: OppPlayer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
let defenseInfo = new PvpRecordPlayerInfo();
|
let defenseInfo = new PvpRecordPlayerInfo();
|
||||||
defenseInfo.setByHistoryOpp(oppRole, oppHeroRecords, !isSuccess, isSuccess ? 0 : addSumScore)
|
defenseInfo.setByHistoryOpp(oppRole, oppHeroRecords, !isSuccess, isSuccess ? 0 : addSumScore, serverId)
|
||||||
return defenseInfo
|
return defenseInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -57,6 +57,8 @@ export class HeroesRecord {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export class PvpRecordPlayerInfo {
|
export class PvpRecordPlayerInfo {
|
||||||
|
@prop({ required: true })
|
||||||
|
serverId: number; // 区服id
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
roleId: string; // 角色 id
|
roleId: string; // 角色 id
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
@@ -92,9 +94,10 @@ export class PvpRecordPlayerInfo {
|
|||||||
this.isSuccess = isSuccess;
|
this.isSuccess = isSuccess;
|
||||||
this.score = score;
|
this.score = score;
|
||||||
this.heroes = heroes;
|
this.heroes = heroes;
|
||||||
|
this.serverId = role.serverId;
|
||||||
}
|
}
|
||||||
|
|
||||||
setByHistoryOpp(oppRole: PvpHistoryOppType, oppHeroRecords: HeroesRecord[], isSuccess: boolean, score: number) {
|
setByHistoryOpp(oppRole: PvpHistoryOppType, oppHeroRecords: HeroesRecord[], isSuccess: boolean, score: number, serverId: number) {
|
||||||
this.roleId = robotIdComBack(oppRole.oppRoleId);
|
this.roleId = robotIdComBack(oppRole.oppRoleId);
|
||||||
this.roleName = oppRole.roleName;
|
this.roleName = oppRole.roleName;
|
||||||
this.lv = oppRole.pLv;
|
this.lv = oppRole.pLv;
|
||||||
@@ -106,6 +109,7 @@ export class PvpRecordPlayerInfo {
|
|||||||
this.heroes = oppHeroRecords;
|
this.heroes = oppHeroRecords;
|
||||||
this.isSuccess = isSuccess;
|
this.isSuccess = isSuccess;
|
||||||
this.score = score;
|
this.score = score;
|
||||||
|
this.serverId = serverId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -140,7 +144,7 @@ export default class PvpRecord extends BaseModel {
|
|||||||
|
|
||||||
public static async getRecByRoleId( roleId: string, limit = 15, lean = true) {
|
public static async getRecByRoleId( roleId: string, limit = 15, lean = true) {
|
||||||
await this.delPvpRecords();
|
await this.delPvpRecords();
|
||||||
const result: PvpRecord[] = await PvpRecordModel.find({ $or:[{roleId1: roleId}, {roleId2: roleId}] }).limit(limit).sort({createTime: -1}).lean(lean);
|
const result: PvpRecord[] = await PvpRecordModel.find({ $or:[{roleId1: roleId}, {roleId2: roleId}] }).select('-_id -__v -createdAt -updatedAt').limit(limit).sort({createTime: -1}).lean(lean);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,3 +158,4 @@ export default class PvpRecord extends BaseModel {
|
|||||||
export const PvpRecordModel = getModelForClass(PvpRecord);
|
export const PvpRecordModel = getModelForClass(PvpRecord);
|
||||||
|
|
||||||
export interface PvpRecordType extends Pick<DocumentType<PvpRecord>, keyof PvpRecord> { };
|
export interface PvpRecordType extends Pick<DocumentType<PvpRecord>, keyof PvpRecord> { };
|
||||||
|
export type PvpRecordParam = Partial<PvpRecordType>;
|
||||||
@@ -92,6 +92,8 @@ export class PlayerDetail {
|
|||||||
roleId: string;
|
roleId: string;
|
||||||
roleName: string;
|
roleName: string;
|
||||||
lv: number;
|
lv: number;
|
||||||
|
|
||||||
|
serverName: string;
|
||||||
title?: number = 1;
|
title?: number = 1;
|
||||||
ipLocation: string = '';
|
ipLocation: string = '';
|
||||||
head?: number = EXTERIOR.EXTERIOR_FACE;
|
head?: number = EXTERIOR.EXTERIOR_FACE;
|
||||||
@@ -135,6 +137,10 @@ export class PlayerDetail {
|
|||||||
this.ipLocation = role.fixedIpLocation||role.ipLocation||'未知';
|
this.ipLocation = role.fixedIpLocation||role.ipLocation||'未知';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setServerName(serverName: string) {
|
||||||
|
this.serverName = serverName;
|
||||||
|
}
|
||||||
|
|
||||||
setCe(ce: number) {
|
setCe(ce: number) {
|
||||||
this.defCe = ce;
|
this.defCe = ce;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user