邮件优化
parent
c588030e47
commit
28ca7043c7
|
@ -34,7 +34,7 @@ public interface Global {
|
||||||
int MAIL_TYPE_IDIP = 2; //idip 邮件
|
int MAIL_TYPE_IDIP = 2; //idip 邮件
|
||||||
int MAIL_TYPE_GM = 3; // GM 邮件
|
int MAIL_TYPE_GM = 3; // GM 邮件
|
||||||
int MAIL_EFFECTIVE_TIME = 720 * 60 * 60; // 有效时间 30天
|
int MAIL_EFFECTIVE_TIME = 720 * 60 * 60; // 有效时间 30天
|
||||||
|
int MAIL_NOUSE_DELETE_TIME = 3;//已读邮件和已领取邮件3天后自动删除
|
||||||
//sysMail state
|
//sysMail state
|
||||||
int SYS_MAIL_STATE_NEW = 1; //未发布
|
int SYS_MAIL_STATE_NEW = 1; //未发布
|
||||||
int SYS_MAIL_STATE_LAUCHED = 2; // 已完成
|
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 String sendName;//发送者名字
|
||||||
|
|
||||||
|
private long noUseDeleteTime;//已读或已领取邮件删除时间
|
||||||
|
|
||||||
private int mailType; //邮件类型 1:系统邮件 2:idip 业务邮件
|
private int mailType; //邮件类型 1:系统邮件 2:idip 业务邮件
|
||||||
public Mail(){
|
public Mail(){
|
||||||
|
|
||||||
|
@ -86,4 +88,14 @@ public class Mail extends MongoBase {
|
||||||
return mailType;
|
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());
|
removeIds.add(cMail.getId());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if(cMail.getNoUseDeleteTime()!=0&&cMail.getNoUseDeleteTime()<TimeUtils.now()){
|
||||||
|
removeIds.add(cMail.getId());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
cMailList.add(cMail);
|
cMailList.add(cMail);
|
||||||
}
|
}
|
||||||
for(String removeId : removeIds){
|
for(String removeId : removeIds){
|
||||||
|
@ -182,11 +186,12 @@ public class MailLogic {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (mail.getMailItem().isEmpty()){
|
if (mail.getMailItem().isEmpty()){
|
||||||
mailManager.removeMail(mailId);
|
|
||||||
}else{
|
|
||||||
mail.setState(Global.MAIL_STATE_READ);
|
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);
|
MessageUtil.sendMessage(iSession, 1,msgId, null, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,7 +201,6 @@ public class MailLogic {
|
||||||
User user = UserManager.getUser(userId);
|
User user = UserManager.getUser(userId);
|
||||||
MailManager mailManager = user.getMailManager();
|
MailManager mailManager = user.getMailManager();
|
||||||
StringBuilder mailItem = new StringBuilder();
|
StringBuilder mailItem = new StringBuilder();
|
||||||
List<String> delMailIds = new CopyOnWriteArrayList<>();
|
|
||||||
for (String mailId : mailIdsList){
|
for (String mailId : mailIdsList){
|
||||||
Mail mail = mailManager.getMail(mailId);
|
Mail mail = mailManager.getMail(mailId);
|
||||||
if (mail == null){
|
if (mail == null){
|
||||||
|
@ -208,9 +212,10 @@ public class MailLogic {
|
||||||
}else{
|
}else{
|
||||||
mailItem.append("|").append(mail.getMailItem());
|
mailItem.append("|").append(mail.getMailItem());
|
||||||
}
|
}
|
||||||
delMailIds.add(mailId);
|
mail.setState(Global.MAIL_DRAW_ST_GOT);
|
||||||
// mail.setState(Global.MAIL_DRAW_ST_GOT);
|
mail.setMailItem("");
|
||||||
// mailManager.addMail(mail);
|
mail.setNoUseDeleteTime(TimeUtils.now()+TimeUtils.DAY*Global.MAIL_NOUSE_DELETE_TIME);
|
||||||
|
mailManager.addMail(mail);
|
||||||
}
|
}
|
||||||
if(mailItem.length()==0){
|
if(mailItem.length()==0){
|
||||||
MessageUtil.sendErrorResponse(iSession,0,msgId,"该邮件没有附件可以领取");
|
MessageUtil.sendErrorResponse(iSession,0,msgId,"该邮件没有附件可以领取");
|
||||||
|
@ -223,9 +228,7 @@ public class MailLogic {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, itemArr, BIReason.TAKE_MAIL_REWARD);
|
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()
|
PlayerInfoProto.TakeMailResponse takeMailResponse = PlayerInfoProto.TakeMailResponse.newBuilder()
|
||||||
.setDrop(dropBuilder)
|
.setDrop(dropBuilder)
|
||||||
.buildPartial();
|
.buildPartial();
|
||||||
|
@ -308,4 +311,30 @@ public class MailLogic {
|
||||||
MongoUtil.getLjsdMongoTemplate().lastUpdate();
|
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