diff --git a/game-server/app/servers/guild/remote/guildActivityRemote.ts b/game-server/app/servers/guild/remote/guildActivityRemote.ts index 794323b3c..43c2db67a 100644 --- a/game-server/app/servers/guild/remote/guildActivityRemote.ts +++ b/game-server/app/servers/guild/remote/guildActivityRemote.ts @@ -230,9 +230,9 @@ export class GuildActivityRemote { } } - public leaveRaceWhenDismiss(guildCode: string) { + public leaveRaceWhenDismiss(guildCode: string, serverId: number) { try { - return leaveRaceWhenDismiss(guildCode); + return leaveRaceWhenDismiss(guildCode, serverId); } catch(e) { errlogger.error(`remote ${__filename} \n ${e.stack}`); } diff --git a/game-server/app/services/guildActivity/guildActivityService.ts b/game-server/app/services/guildActivity/guildActivityService.ts index 9918f17c4..3f0457e2e 100644 --- a/game-server/app/services/guildActivity/guildActivityService.ts +++ b/game-server/app/services/guildActivity/guildActivityService.ts @@ -960,6 +960,8 @@ export async function leaveRaceWhenQuitGuild(serverId: number, guildCode: string if(!guildCode) return; let obj = getRaceActivityObj(); await obj.memberQuit(guildCode, serverId, roleId); + let joinIndex = getJoinIndex(); + await GuildActivityRecordModel.removeMember(guildCode, serverId, GUILD_ACTIVITY_TYPE.RACE_ACTIVITY, joinIndex, roleId); } export async function leaveRaceWhenQuitGuildToRemote(serverId: number, guildCode: string, roleId: string) { @@ -970,16 +972,18 @@ export async function leaveRaceWhenQuitGuildToRemote(serverId: number, guildCode } } -export async function leaveRaceWhenDismiss(guildCode: string) { +export async function leaveRaceWhenDismiss(guildCode: string, serverId: number) { if(!guildCode) return; let obj = getRaceActivityObj(); obj.dismiss(guildCode); + let joinIndex = getJoinIndex(); + await GuildActivityRecordModel.dismiss(guildCode, serverId, GUILD_ACTIVITY_TYPE.RACE_ACTIVITY, joinIndex); } export async function leaveRaceWhenDismissToRemote(serverId: number, guildCode: string) { let guildServers = pinus.app.getServersByType('guild')||[]; let server = dispatch(`${serverId}`, guildServers); if(server) { - await pinus.app.rpc.guild.guildActivityRemote.leaveRaceWhenDismiss.toServer(server.id, guildCode); + await pinus.app.rpc.guild.guildActivityRemote.leaveRaceWhenDismiss.toServer(server.id, guildCode, serverId); } } \ No newline at end of file diff --git a/shared/db/GuildActivityRec.ts b/shared/db/GuildActivityRec.ts index e9f697a47..ad166f19c 100644 --- a/shared/db/GuildActivityRec.ts +++ b/shared/db/GuildActivityRec.ts @@ -113,6 +113,19 @@ export default class GuildActivityRecord extends BaseModel { return rec; } + public static async removeMember(guildCode: string, serverId: number, aid: number, index: number, roleId: string) { + console.log(guildCode, serverId, aid, index, roleId) + let rec: GuildActivityRecordType = await GuildActivityRecordModel.findOneAndUpdate( + { guildCode, serverId, index, aid }, + { $pull: { joinMember: { roleId } } }, { new: true }).lean(); + return rec; + } + + public static async dismiss(guildCode: string, serverId: number, aid: number, index: number) { + let rec: GuildActivityRecordType = await GuildActivityRecordModel.findOneAndUpdate({ guildCode, serverId, index, aid }, { $set: { status: 0 }}, { new: true }).lean(); + return rec; + } + public static async findRecs(aid: number, index: number) { let rec: GuildActivityRecordType[] = await GuildActivityRecordModel.find({ index, aid, status: 1 }).lean(); return rec;