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; }