From 2afe3e01f49d9e1255fa44716597b3929855a5a3 Mon Sep 17 00:00:00 2001 From: luying Date: Thu, 30 Mar 2023 14:50:05 +0800 Subject: [PATCH] =?UTF-8?q?(=E6=AD=A6=E5=B0=86):=20=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E5=89=AF=E5=B0=86=E6=97=B6=E4=BB=8E=E9=98=B5=E5=AE=B9=E4=B8=AD?= =?UTF-8?q?=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/servers/role/handler/heroHandler.ts | 4 ++++ shared/db/GVGTeam.ts | 5 +++++ shared/db/GVGVestigeRank.ts | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/game-server/app/servers/role/handler/heroHandler.ts b/game-server/app/servers/role/handler/heroHandler.ts index 834f0de02..ea3680a3f 100644 --- a/game-server/app/servers/role/handler/heroHandler.ts +++ b/game-server/app/servers/role/handler/heroHandler.ts @@ -29,6 +29,8 @@ import { isGoodsHidden, isHeroHidden } from '../../../services/dataService'; import { LadderMatchModel } from '../../../db/LadderMatch'; import { PvpSaveDataModel } from '../../../db/PvpSaveData'; import { ArtifactModel } from '../../../db/Artifact'; +import { GVGVestigeRankModel } from '../../../db/GVGVestigeRank'; +import { GVGTeamModel } from '../../../db/GVGTeam'; export default function (app: Application) { new HandlerService(app, {}); @@ -779,6 +781,8 @@ export class HeroHandler { await LadderMatchModel.removeBySub(roleId, subHid); await PvpSaveDataModel.removeBySub(roleId, subHid); await PvpDefenseModel.removeBySub(roleId, subHid); + await GVGVestigeRankModel.removeBySub(roleId, subHid); + await GVGTeamModel.removeBySub(roleId, subHid, subHero.ce); } else { // 卸下 if(!hero.subHid) return resResult(STATUS.HERO_CAN_NOT_REMOVE_SUB); diff --git a/shared/db/GVGTeam.ts b/shared/db/GVGTeam.ts index 6b00bb8a2..31943917c 100644 --- a/shared/db/GVGTeam.ts +++ b/shared/db/GVGTeam.ts @@ -352,6 +352,11 @@ export default class GVGTeam extends BaseModel { public static async checkLockTeam(roleId: string, cityId: number) { return await GVGTeamModel.exists({ roleId, lockTime: { $gt: nowSeconds() }, cityId: { $ne: cityId } }) } + + public static async removeBySub(roleId: string, subHid: number, ce: number) { + console.log('removeBySub', roleId, subHid, ce) + await GVGTeamModel.updateMany({ roleId, 'lineup.actorId': subHid }, { $pull: { lineup: { actorId: subHid } }, $inc: { lineupCe: -ce } }); + } } export const GVGTeamModel = getModelForClass(GVGTeam); diff --git a/shared/db/GVGVestigeRank.ts b/shared/db/GVGVestigeRank.ts index 14593b08d..d644562ae 100644 --- a/shared/db/GVGVestigeRank.ts +++ b/shared/db/GVGVestigeRank.ts @@ -165,6 +165,10 @@ export default class GVGVestigeRank extends BaseModel { let result: GVGVestigeRankType[] = await GVGVestigeRankModel.find({ day: today, vestigeId, groupKey, rank: { $gt: 0 } }).sort({ rank: 1 }).select('roleId rank lineup').lean(); return result; } + + public static async removeBySub(roleId: string, subHid: number) { + await GVGVestigeRankModel.updateMany({ roleId, hasDefense: true }, { $pull: { lineup: { actorId: subHid } } }); + } } export const GVGVestigeRankModel = getModelForClass(GVGVestigeRank);