邮件优化
parent
c588030e47
commit
28ca7043c7
|
@ -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; // 已完成
|
||||
|
|
|
@ -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<PlayerInfoProto.MailDelRequest>{
|
||||
@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());
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -73,6 +73,10 @@ public class MailLogic {
|
|||
removeIds.add(cMail.getId());
|
||||
continue;
|
||||
}
|
||||
if(cMail.getNoUseDeleteTime()!=0&&cMail.getNoUseDeleteTime()<TimeUtils.now()){
|
||||
removeIds.add(cMail.getId());
|
||||
continue;
|
||||
}
|
||||
cMailList.add(cMail);
|
||||
}
|
||||
for(String removeId : removeIds){
|
||||
|
@ -182,11 +186,12 @@ public class MailLogic {
|
|||
return;
|
||||
}
|
||||
if (mail.getMailItem().isEmpty()){
|
||||
mailManager.removeMail(mailId);
|
||||
}else{
|
||||
mail.setState(Global.MAIL_STATE_READ);
|
||||
mailManager.addMail(mail);
|
||||
mail.setNoUseDeleteTime(TimeUtils.now()+TimeUtils.DAY*Global.MAIL_NOUSE_DELETE_TIME);
|
||||
}else{
|
||||
mail.setState(Global.MAIL_DRAW_ST_UNGET);
|
||||
}
|
||||
mailManager.addMail(mail);
|
||||
MessageUtil.sendMessage(iSession, 1,msgId, null, true);
|
||||
}
|
||||
|
||||
|
@ -196,7 +201,6 @@ public class MailLogic {
|
|||
User user = UserManager.getUser(userId);
|
||||
MailManager mailManager = user.getMailManager();
|
||||
StringBuilder mailItem = new StringBuilder();
|
||||
List<String> 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<String> mailIds) throws Exception {
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
MailManager mailManager = user.getMailManager();
|
||||
Map<String, Mail> mailMap = mailManager.getMailMap();
|
||||
List<String> 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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue