From f75c55b43f8bf00d38535210ec6f22a93ee22b64 Mon Sep 17 00:00:00 2001 From: luying Date: Wed, 3 Aug 2022 09:44:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8D=E5=B0=86=E6=93=82=E5=8F=B0=EF=BC=9A?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E6=8E=92=E5=90=8D=E6=B7=BB=E5=8A=A0=E5=88=86?= =?UTF-8?q?=E6=9C=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/servers/battle/handler/ladderHandler.ts | 3 ++- game-server/app/services/ladderService.ts | 2 +- shared/db/LadderMatch.ts | 9 +++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/game-server/app/servers/battle/handler/ladderHandler.ts b/game-server/app/servers/battle/handler/ladderHandler.ts index 33a57684a..6cf63c9c3 100644 --- a/game-server/app/servers/battle/handler/ladderHandler.ts +++ b/game-server/app/servers/battle/handler/ladderHandler.ts @@ -375,12 +375,13 @@ export class LadderHandler { } let roleId = session.get('roleId'); + let serverId = session.get('serverId'); let atkLadderMatch = await LadderMatchModel.findByRoleId(roleId); if(!atkLadderMatch || !atkLadderMatch.defense) return resResult(STATUS.LADDER_NOT_OPEN); let myRank = atkLadderMatch.rank; - let defLadderMatch = await LadderMatchModel.findByRank(rank); + let defLadderMatch = await LadderMatchModel.findByRank(serverId, rank); if(defLadderMatch) { atkLadderMatch = await LadderMatchModel.findOneAndUpdate({ roleId }, { $set: { rank, oldRank: myRank, historyRank: rank } }, { new: true }).lean(); defLadderMatch = await LadderMatchModel.findOneAndUpdate({ roleId: defLadderMatch.roleId }, { $set: { rank: myRank, oldRank: rank } }, { new: true }).lean(); diff --git a/game-server/app/services/ladderService.ts b/game-server/app/services/ladderService.ts index 3cfb58ca7..43d9384d8 100644 --- a/game-server/app/services/ladderService.ts +++ b/game-server/app/services/ladderService.ts @@ -203,7 +203,7 @@ export async function getLadderOppStatus(ladderData: LadderMatchType, targetRole let hisLadderData = await LadderMatchRecModel.checkByRank(ladderData.serverId, `robot${rank}`); if(hisLadderData) return { status: LADDER_OPP_STATUS.OPP_IS_LOCKED }; - let ladderMatch = await LadderMatchModel.isRankExist(rank); + let ladderMatch = await LadderMatchModel.isRankExist(ladderData.serverId, rank); if(ladderMatch) { return { status: LADDER_OPP_STATUS.OPP_RANK_CHANGE }; } diff --git a/shared/db/LadderMatch.ts b/shared/db/LadderMatch.ts index e637d5e08..3e039e1de 100644 --- a/shared/db/LadderMatch.ts +++ b/shared/db/LadderMatch.ts @@ -4,6 +4,7 @@ import { LadderDefense, LadderOppPlayerInDB } from '../domain/battleField/ladder import Role from './Role'; @index({ roleId: 1 }) +@index({ serverId: 1, rank: 1 }) export default class LadderMatch extends BaseModel { @prop({ required: true, default: 0 }) serverId: number; // 角色 id @@ -41,13 +42,13 @@ export default class LadderMatch extends BaseModel { return result; } - public static async findByRank(rank: number) { - const result: LadderMatchType = await LadderMatchModel.findOne({ rank }).lean(); + public static async findByRank(serverId: number, rank: number) { + const result: LadderMatchType = await LadderMatchModel.findOne({ serverId, rank }).lean(); return result; } - public static async isRankExist(rank: number) { - const result = await LadderMatchModel.exists({ rank }); + public static async isRankExist(serverId: number, rank: number) { + const result = await LadderMatchModel.exists({ serverId, rank }); return result; } public static async findByRoleIdAndInclude(roleId: string) {