From 58177dd58c922e903604080debba207652b300f2 Mon Sep 17 00:00:00 2001 From: luying Date: Fri, 16 Jun 2023 14:34:58 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9E=20fix(=E9=81=97=E8=BF=B9):=20?= =?UTF-8?q?=E9=81=97=E8=BF=B9=E6=8C=91=E6=88=98=E6=9C=BA=E5=99=A8=E4=BA=BA?= =?UTF-8?q?=E6=97=B6=E4=BA=A4=E6=8D=A2=E6=8E=92=E5=90=8D=E6=9C=89=E5=B9=B6?= =?UTF-8?q?=E5=8F=91=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/servers/guild/handler/gvgFightHandler.ts | 4 ++-- shared/db/GVGVestigeRank.ts | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/game-server/app/servers/guild/handler/gvgFightHandler.ts b/game-server/app/servers/guild/handler/gvgFightHandler.ts index b3d59a4a1..c96dea08c 100644 --- a/game-server/app/servers/guild/handler/gvgFightHandler.ts +++ b/game-server/app/servers/guild/handler/gvgFightHandler.ts @@ -359,11 +359,11 @@ export class GVGProduceHandler { let historyData = await GVGVestigeRankModel.findByRole(rec.vestigeId, roleId); let historyRank = historyData?.rank||0; // 交换排名 - let { isChange, atkData, defData, endTime } = await GVGVestigeRankModel.changeRank(isSuccess, rec.vestigeId, rec.attackInfo, rec.defenseInfo); + let { isChange, atkData, defData, oldAtkData, endTime } = await GVGVestigeRankModel.changeRank(isSuccess, rec.vestigeId, rec.attackInfo, rec.defenseInfo); atkData = await updateMyVestigeRank(isChange, atkData, defData, historyRank, rec); // 更新vestigeRec if(isChange) { - rec = await GVGVestigeRecModel.battleEnd(battleCode, isSuccess, endTime, atkData?.rank, defData? defData.rank: (isSuccess?rec.attackInfo.oldRank: rec.defenseInfo.oldRank)); + rec = await GVGVestigeRecModel.battleEnd(battleCode, isSuccess, endTime, atkData?.rank, defData? defData.rank: oldAtkData?.rank); } else { rec = await GVGVestigeRecModel.battleEnd(battleCode, isSuccess, endTime); } diff --git a/shared/db/GVGVestigeRank.ts b/shared/db/GVGVestigeRank.ts index d644562ae..9f3d91bba 100644 --- a/shared/db/GVGVestigeRank.ts +++ b/shared/db/GVGVestigeRank.ts @@ -106,15 +106,15 @@ export default class GVGVestigeRank extends BaseModel { await GVGVestigeRankModel.updateMany({ day: today, hasDefense: true, roleId, 'lineup.actorId': hid }, { $set: { 'lineup.$.ce': ce } }); } - public static async changeRank(isSuccess: boolean, vestigeId: number, attackInfo: { roleId: string }, defenseInfo: { isRobot: boolean, roleId: string, oldRank: number }): Promise<{ isChange: boolean, atkData?: GVGVestigeRankType, defData?: GVGVestigeRankType, endTime: number }> { + public static async changeRank(isSuccess: boolean, vestigeId: number, attackInfo: { roleId: string }, defenseInfo: { isRobot: boolean, roleId: string, oldRank: number }): Promise<{ isChange: boolean, atkData?: GVGVestigeRankType, defData?: GVGVestigeRankType, oldAtkData?: GVGVestigeRankType, endTime: number }> { let today = getZeroPoint(); const session = await mongoose.connection.startSession(); session.startTransaction() try { - let newAtkData: GVGVestigeRankType, newDefData: GVGVestigeRankType, isChange = false, endTime = Date.now(); + let newAtkData: GVGVestigeRankType, newDefData: GVGVestigeRankType, atkData: GVGVestigeRankType, isChange = false, endTime = Date.now(); if(defenseInfo.isRobot) { - let atkData = await GVGVestigeRankModel.findOne({ day: today, vestigeId, roleId: attackInfo.roleId }).lean(); + atkData = await GVGVestigeRankModel.findOne({ day: today, vestigeId, roleId: attackInfo.roleId }).lean(); if(isSuccess && atkData && (atkData.rank == 0 || atkData.rank > defenseInfo.oldRank)) { newAtkData = await GVGVestigeRankModel.findOneAndUpdate({ day: today, vestigeId, roleId: attackInfo.roleId }, { $set: { rank: defenseInfo.oldRank, oldRank: atkData.rank } }, { new: true, session }).lean(); isChange = true; @@ -123,7 +123,7 @@ export default class GVGVestigeRank extends BaseModel { newAtkData = atkData; } } else { - let atkData = await GVGVestigeRankModel.findOne({ day: today, vestigeId, roleId: attackInfo.roleId }).lean(); + atkData = await GVGVestigeRankModel.findOne({ day: today, vestigeId, roleId: attackInfo.roleId }).lean(); let defData = await GVGVestigeRankModel.findOne({ day: today, vestigeId, roleId: defenseInfo.roleId }).lean(); if(isSuccess && atkData && defData && (atkData.rank == 0 || atkData.rank > defData.rank)) { newAtkData = await GVGVestigeRankModel.findOneAndUpdate({ day: today, vestigeId, roleId: attackInfo.roleId }, { $set: { rank: defData.rank, oldRank: atkData.rank } }, { new: true, session }).lean(); @@ -136,7 +136,7 @@ export default class GVGVestigeRank extends BaseModel { } } await session.commitTransaction() - return { isChange, atkData: newAtkData, defData: newDefData, endTime } + return { isChange, atkData: newAtkData, defData: newDefData, oldAtkData: atkData, endTime } } finally { session.endSession() }