diff --git a/shared/db/GroupMail.ts b/shared/db/GroupMail.ts index 1c29b0ed8..dde19cff9 100644 --- a/shared/db/GroupMail.ts +++ b/shared/db/GroupMail.ts @@ -53,10 +53,11 @@ export default class GroupMail extends MailTemp { const result: GroupMailType = await GroupMailModel.findOneAndUpdate( { _id, sendTime:{ $lte: nowSeconds() }, + 'roleStatus.roleId': roleId, $or: [{ - roleStatus: {$elemMatch: {roleId, status: MAIL_STATUS.READ}}, hasGoods:false + 'roleStatus.status': MAIL_STATUS.READ, hasGoods:false }, { - roleStatus: {$elemMatch: {roleId, status: MAIL_STATUS.RECEIVED}} + 'roleStatus.status': MAIL_STATUS.RECEIVED }] }, { $set:{ 'roleStatus.$.status': MAIL_STATUS.DELETE } }, diff --git a/shared/db/ServerMail.ts b/shared/db/ServerMail.ts index 890078a19..10123cc22 100644 --- a/shared/db/ServerMail.ts +++ b/shared/db/ServerMail.ts @@ -59,19 +59,23 @@ export default class ServerMail extends MailTemp { * @param _id * @param lean */ - public static async delMailById(_id: string, roleId: string) { + public static async delMailById(id: string, roleId: string) { const result: ServerMailType = await ServerMailModel.findOneAndUpdate( { + _id: id, sendTime:{ $lte: nowSeconds() }, + 'roleStatus.roleId': roleId, $or: [{ - roleStatus: {$elemMatch: {roleId, status: MAIL_STATUS.READ}}, hasGoods:false + 'roleStatus.status': MAIL_STATUS.READ, hasGoods:false }, { - roleStatus: {$elemMatch: {roleId, status: MAIL_STATUS.RECEIVED}} + 'roleStatus.status': MAIL_STATUS.RECEIVED }] }, - { $set:{ 'roleStatus.$.status': MAIL_STATUS.DELETE, $push: { 'delRoles': roleId } } }, + { $set:{ 'roleStatus.$.status': MAIL_STATUS.DELETE}, $push: { delRoles: roleId } }, { new: true } ).lean(); + + console.log('*******', result) return result; }