diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java index 507da1f8f..3367cb1fc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java @@ -34,7 +34,7 @@ public interface Global { int MAIL_TYPE_IDIP = 2; //idip 邮件 int MAIL_TYPE_GM = 3; // GM 邮件 int MAIL_EFFECTIVE_TIME = 720 * 60 * 60; // 有效时间 30天 - + int MAIL_NOUSE_DELETE_TIME = 3;//已读邮件和已领取邮件3天后自动删除 //sysMail state int SYS_MAIL_STATE_NEW = 1; //未发布 int SYS_MAIL_STATE_LAUCHED = 2; // 已完成 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/MailDeleteHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/MailDeleteHandler.java new file mode 100644 index 000000000..f515b934d --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/MailDeleteHandler.java @@ -0,0 +1,20 @@ +package com.ljsd.jieling.handler; + +import com.ljsd.jieling.logic.mail.MailLogic; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import org.springframework.stereotype.Component; + +@Component +public class MailDeleteHandler extends BaseHandler{ + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.MAIL_DELETE_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, PlayerInfoProto.MailDelRequest proto) throws Exception { + MailLogic.getInstance().deleteMail(iSession,proto.getMailIdList()); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Mail.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Mail.java index 89b9d752d..f72ce787f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Mail.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Mail.java @@ -25,6 +25,8 @@ public class Mail extends MongoBase { private String sendName;//发送者名字 + private long noUseDeleteTime;//已读或已领取邮件删除时间 + private int mailType; //邮件类型 1:系统邮件 2:idip 业务邮件 public Mail(){ @@ -86,4 +88,14 @@ public class Mail extends MongoBase { return mailType; } + public void setMailItem(String mailItem) { + this.mailItem = mailItem; + } + + public long getNoUseDeleteTime() { + return noUseDeleteTime; + } + public void setNoUseDeleteTime(long noUseDeleteTime) { + this.noUseDeleteTime = noUseDeleteTime; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mail/MailLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mail/MailLogic.java index 268d335e3..e1d4255d6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mail/MailLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mail/MailLogic.java @@ -73,6 +73,10 @@ public class MailLogic { removeIds.add(cMail.getId()); continue; } + if(cMail.getNoUseDeleteTime()!=0&&cMail.getNoUseDeleteTime() delMailIds = new CopyOnWriteArrayList<>(); for (String mailId : mailIdsList){ Mail mail = mailManager.getMail(mailId); if (mail == null){ @@ -208,9 +212,10 @@ public class MailLogic { }else{ mailItem.append("|").append(mail.getMailItem()); } - delMailIds.add(mailId); -// mail.setState(Global.MAIL_DRAW_ST_GOT); -// mailManager.addMail(mail); + mail.setState(Global.MAIL_DRAW_ST_GOT); + mail.setMailItem(""); + mail.setNoUseDeleteTime(TimeUtils.now()+TimeUtils.DAY*Global.MAIL_NOUSE_DELETE_TIME); + mailManager.addMail(mail); } if(mailItem.length()==0){ MessageUtil.sendErrorResponse(iSession,0,msgId,"该邮件没有附件可以领取"); @@ -223,9 +228,7 @@ public class MailLogic { return; } CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, itemArr, BIReason.TAKE_MAIL_REWARD); - for (String mailId:delMailIds){ - mailManager.removeMail(mailId); - } + PlayerInfoProto.TakeMailResponse takeMailResponse = PlayerInfoProto.TakeMailResponse.newBuilder() .setDrop(dropBuilder) .buildPartial(); @@ -308,4 +311,30 @@ public class MailLogic { MongoUtil.getLjsdMongoTemplate().lastUpdate(); } + /** + *手动删除邮件 + */ + public void deleteMail(ISession session,List mailIds) throws Exception { + User user = UserManager.getUser(session.getUid()); + MailManager mailManager = user.getMailManager(); + Map mailMap = mailManager.getMailMap(); + List delMailIds = new CopyOnWriteArrayList<>(); + for(String mailId:mailIds){ + if(!mailMap.containsKey(mailId)){ + continue; + } + Mail cMail = mailMap.get(mailId); + if (cMail.getState() == Global.MAIL_STATE_NEW||cMail.getState()==Global.MAIL_DRAW_ST_UNGET||!cMail.getMailItem().isEmpty()) { + continue; + } + delMailIds.add(mailId); + } + if (delMailIds.size() != 0) { + for (String mailId : delMailIds) { + mailManager.removeMail(mailId); + } + } + MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.MAIL_DELETE_RESPONSE_VALUE,null,true); + } + }