From c8190bae610eb5667218f25d1b8e3362de03f164 Mon Sep 17 00:00:00 2001 From: luying Date: Fri, 13 Jan 2023 11:14:14 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9E=20fix(=E6=88=98=E6=8A=A5):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8Dpvp=E4=B8=8A=E4=BC=A0=E6=88=98=E6=8A=A5?= =?UTF-8?q?=E6=97=B6=E8=AE=B0=E5=BD=95=E8=BF=98=E6=9C=AA=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/servers/battle/handler/pvpHandler.ts | 6 ++++-- shared/db/PvpRecord.ts | 11 ++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/game-server/app/servers/battle/handler/pvpHandler.ts b/game-server/app/servers/battle/handler/pvpHandler.ts index 2d0da0086..59aa333e2 100644 --- a/game-server/app/servers/battle/handler/pvpHandler.ts +++ b/game-server/app/servers/battle/handler/pvpHandler.ts @@ -191,6 +191,8 @@ export class PvpHandler { } }, true); await checkTask(serverId, roleId, sid, TASK_TYPE.PVP); + // 战报记录 + await PvpRecordModel.createRec(roleId, robotIdComBack(oppRoleId), battleCode); // 对手记录更新 await PvpHistoryOppModel.setStatus(curOpp.oppDef.toString(), 1); @@ -264,7 +266,7 @@ export class PvpHandler { let seasonNum: number = this.app.get('pvpSeasonNum'); // 战报记录 - await PvpRecordModel.createRec({ roleId1: roleId, roleId2: robotIdComBack(oppRoleId), battleCode, warId: BattleRecord.battleId, attackInfo, defenseInfo, createTime: nowSeconds(), timeout: seasonNum != pvpSeasonNum }); + await PvpRecordModel.updateByBattleCode(battleCode, { warId: BattleRecord.battleId, attackInfo, defenseInfo, createTime: nowSeconds(), timeout: seasonNum != pvpSeasonNum }); // 更新battleRecord await BattleRecordModel.updateBattleRecordByCode(battleCode, { @@ -597,7 +599,7 @@ export class PvpHandler { 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]) + // 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]; } diff --git a/shared/db/PvpRecord.ts b/shared/db/PvpRecord.ts index f2f4cf040..d572677c5 100644 --- a/shared/db/PvpRecord.ts +++ b/shared/db/PvpRecord.ts @@ -143,16 +143,21 @@ export default class PvpRecord extends BaseModel { @prop({ required: true, default: 0 }) timeout: boolean; - public static async createRec(param: { roleId1: string, roleId2: string, battleCode: string, warId: number, attackInfo: PvpRecordPlayerInfo, defenseInfo: PvpRecordPlayerInfo, createTime: number, timeout?: boolean }) { + public static async createRec(roleId1: string, roleId2: string, battleCode: string) { await this.delPvpRecords(); let code = genCode(6); - const result = await PvpRecordModel.findOneAndUpdate({ code }, param, { new: true, upsert: true }).lean(); + const result = await PvpRecordModel.findOneAndUpdate({ code }, { $set: { roleId1, roleId2, battleCode } }, { new: true, upsert: true }).lean(); + return result; + } + + public static async updateByBattleCode(battleCode: string, param: { warId: number, attackInfo: PvpRecordPlayerInfo, defenseInfo: PvpRecordPlayerInfo, createTime: number, timeout?: boolean }) { + const result = await PvpRecordModel.findOneAndUpdate({ battleCode }, param, { new: true }).lean(); return result; } public static async getRecByRoleId( roleId: string, limit = 15, lean = true) { await this.delPvpRecords(); - const result: PvpRecord[] = await PvpRecordModel.find({ $or:[{roleId1: roleId}, {roleId2: roleId}] }).select('-_id -__v -createdAt -updatedAt').limit(limit).sort({createTime: -1}).lean(lean); + const result: PvpRecord[] = await PvpRecordModel.find({ $or:[{roleId1: roleId}, {roleId2: roleId}], createTime: { $gt: 0 } }).select('-_id -__v -createdAt -updatedAt').limit(limit).sort({createTime: -1}).lean(lean); return result; }