diff --git a/game-server/app/servers/role/handler/mailHandler.ts b/game-server/app/servers/role/handler/mailHandler.ts index 21b5cb742..c8f048ab2 100644 --- a/game-server/app/servers/role/handler/mailHandler.ts +++ b/game-server/app/servers/role/handler/mailHandler.ts @@ -73,6 +73,7 @@ export class MailHandler { public async delMails(msg: { id: string, mailType: number, type: number }, session: BackendSession) { let roleId: string = session.get('roleId'); + let serverId: number = session.get('serverId'); let { id, type, mailType } = msg; if (type == 1) {//单个删除 let mail: MailType|GroupMailType|ServerMailType; @@ -89,7 +90,7 @@ export class MailHandler { } else {//一键删除 let singlemails = await MailModel.delMailsByRoleId(roleId); let groupMails = await GroupMailModel.delMailsByRoleId(roleId); - let servermails = await ServerMailModel.delMailsByRoleId(roleId); + let servermails = await ServerMailModel.delMailsByRoleId(roleId, serverId); let mails: { id: string, mailType: GM_MAIL_TYPE, status: MAIL_STATUS }[] = []; for(let mail of singlemails) { mails.push({ id: mail._id, mailType: GM_MAIL_TYPE.SINGLE, status: MAIL_STATUS.DELETE }); diff --git a/shared/db/ServerMail.ts b/shared/db/ServerMail.ts index 824300aa2..e7317b1d4 100644 --- a/shared/db/ServerMail.ts +++ b/shared/db/ServerMail.ts @@ -13,6 +13,7 @@ class RoleStatus { status: number; } +@index({ serverId: 1 }) @index({ sendTime: 1 }) export default class ServerMail extends MailTemp { @prop({ required: true }) @@ -95,9 +96,10 @@ export default class ServerMail extends MailTemp { * @param _id * @param roleId */ - public static async delMailsByRoleId(roleId: string) { + public static async delMailsByRoleId(roleId: string, serverId: number) { const ids: { _id: string }[] = await ServerMailModel.find( { + serverId, isSp: false, sendTime:{ $lte: nowSeconds() }, $or: [{