🐞 fix(战报): 修复pvp上传战报时记录还未创建的问题

This commit is contained in:
luying
2023-01-13 11:14:14 +08:00
parent 40bc4febc9
commit c8190bae61
2 changed files with 12 additions and 5 deletions

View File

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

View File

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