diff --git a/game-server/app/services/guildActivity/guildActivityService.ts b/game-server/app/services/guildActivity/guildActivityService.ts index d2b8f16b3..0fae21d1a 100644 --- a/game-server/app/services/guildActivity/guildActivityService.ts +++ b/game-server/app/services/guildActivity/guildActivityService.ts @@ -359,10 +359,13 @@ export async function gateActivitySettleReward(guildCode: string, serverId: numb let guildScore = await r.getMyScore({ guildCode }); // console.log('****** ranks', rank, 'guildScore', guildScore); - let guild = await GuildModel.findByCode(guildCode, serverId, 'lv'); + let guild = await GuildModel.findByCode(guildCode, serverId, 'lv members'); let rewards = getGuildAuctionRewards(GUILD_ACTIVITY_TYPE.GATE_ACTIVITY, rank, guild?.lv); // console.log('***** rewards', JSON.stringify(rewards)); + members = members.filter(member => { + return guild.members?.find(roleId => roleId == member.roleId); + }); let rec = await GuildActivityRecordModel.updateInfo(guildCode, GUILD_ACTIVITY_TYPE.GATE_ACTIVITY, index, { isSuccess: true, isCompleted: true, @@ -439,10 +442,12 @@ export async function cityActivitySettleReward(cityId: number, serverId: number) await GuildActivityCityModel.guard(serverId, cityId, "", "", index + 1); // 无人能占领 } } - let guild = await GuildModel.findByCode(guildCode, serverId, 'lv'); + let guild = await GuildModel.findByCode(guildCode, serverId, 'lv members'); let rewards = getGuildAuctionRewards(GUILD_ACTIVITY_TYPE.CITY_ACTIVITY, guildRank, guild?.lv, cityId); let members = obj.getMembersOfGuild(guildCode); - + members = members.filter(member => { + return guild.members?.find(roleId => roleId == member.roleId); + }); let rec = await GuildActivityRecordModel.updateInfo(guildCode, GUILD_ACTIVITY_TYPE.CITY_ACTIVITY, index, { members, memberCnt: members.length, isSuccess, isCompleted: true, @@ -986,6 +991,24 @@ export async function leaveRaceWhenQuitGuildToRemote(serverId: number, guildCode if(server) { await pinus.app.rpc.guild.guildActivityRemote.leaveRaceWhenQuitGuild.toServer(server.id, serverId, guildCode, roleId); } + let index1 = getGAIndexInPinus(GUILD_ACTIVITY_TYPE.GATE_ACTIVITY); + let gateR = new Rank(REDIS_KEY.USER_GATE_ACTIVITY, { serverId, guildCode, index: index1 }, true); + gateR.removeFromRank({ roleId }); + + + let index2 = getGAIndexInPinus(GUILD_ACTIVITY_TYPE.CITY_ACTIVITY); + let declareIndex = getDeclareIndex(); + + let obj = getCityActivityObj(); + if(obj.getStatus() == GUILD_ACTIVITY_STATUS.START) { + await autoDeclareMyCity(serverId, roleId, guildCode, declareIndex); + } + + let city = await GuildActivityCityDeclareModel.findDeclartion(serverId, guildCode, declareIndex) + if (city) { + let cityR = new Rank(REDIS_KEY.CITY_ACTIVITY, { serverId, cityId: city.cityId, index: index2 }, true); + cityR.removeFromRank({ roleId }); + } } export async function leaveRaceWhenDismiss(guildCode: string, serverId: number) { diff --git a/shared/db/BossInstance.ts b/shared/db/BossInstance.ts index a83e97e9d..64686b92b 100644 --- a/shared/db/BossInstance.ts +++ b/shared/db/BossInstance.ts @@ -108,7 +108,7 @@ export default class BossInstance extends BaseModel { } public static async removeBossRank(guildCode: string, roleId: string, lean = true) { - const guildTrain: BossInstanceType = await BossInstanceModel.findOneAndUpdate({ guildCode }, + const guildTrain: BossInstanceType = await BossInstanceModel.findOneAndUpdate({ guildCode, status: GUILD_BOSS_STATUS.OPEN }, { $pull:{ ranks: { roleId } }}, {new: true}).lean(lean); return guildTrain; } diff --git a/shared/db/GuildActivityCityDeclare.ts b/shared/db/GuildActivityCityDeclare.ts index 83e2ac67e..e1848078c 100644 --- a/shared/db/GuildActivityCityDeclare.ts +++ b/shared/db/GuildActivityCityDeclare.ts @@ -40,6 +40,11 @@ export default class GuildActivityCityDeclare extends BaseModel { let rec = await GuildActivityCityDeclareModel.exists({ serverId, status: 1, guildCode, declareIndex}); return rec; } + + public static async findDeclartion(serverId: number, guildCode: string, declareIndex: number) { + let rec = await GuildActivityCityDeclareModel.findOne({ serverId, status: 1, guildCode, declareIndex}); + return rec; + } } export const GuildActivityCityDeclareModel = getModelForClass(GuildActivityCityDeclare);