From cb6efdef55c77da2bcc8dbd99a74e7e49c5ec067 Mon Sep 17 00:00:00 2001
From: lin <sbla5888@163.com>
Date: Tue, 05 Mar 2024 18:06:34 +0800
Subject: [PATCH] 邮件收件+bug修复+流程优化
---
src/main/java/org/springblade/modules/email/service/IEmailAccountService.java | 4
src/main/java/org/springblade/modules/system/mapper/UserMapper.xml | 2
src/main/java/org/springblade/modules/email/entity/EmailEntity.java | 3
src/main/java/org/springblade/modules/messageRecord/controller/MessageRecordController.java | 13 +
src/main/java/org/springblade/modules/email/config/MailSenderConfig.java | 56 ++++++
src/main/java/org/springblade/modules/messageRecord/service/IMessageRecordService.java | 4
src/main/java/org/springblade/modules/email/service/impl/EmailAccountServiceImpl.java | 97 ++++++++++
src/main/java/org/springblade/modules/messageRecord/vo/MessageRecordVO.java | 1
src/main/java/org/springblade/common/utils/ParseMail.java | 253 ++++++++++++++++++++++++++++
src/main/java/org/springblade/flow/core/entity/BladeFlow.java | 16 +
src/main/java/org/springblade/modules/messageRecord/vo/MessageUserVO.java | 2
src/main/java/org/springblade/modules/messageRecord/service/impl/MessageRecordServiceImpl.java | 12 +
src/main/java/org/springblade/flow/business/service/impl/FlowBusinessServiceImpl.java | 40 ++++
src/main/java/org/springblade/modules/email/entity/EmailTemplateEntity.java | 10
14 files changed, 502 insertions(+), 11 deletions(-)
diff --git a/src/main/java/org/springblade/common/utils/ParseMail.java b/src/main/java/org/springblade/common/utils/ParseMail.java
new file mode 100644
index 0000000..db2d2b5
--- /dev/null
+++ b/src/main/java/org/springblade/common/utils/ParseMail.java
@@ -0,0 +1,253 @@
+package org.springblade.common.utils;
+
+
+import javax.mail.*;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+import javax.mail.internet.MimeUtility;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class ParseMail {
+ /**
+ * 删除邮件
+ *
+ * @param messages 要解析的邮件列表
+ */
+ public static void deleteMessage(Message... messages) throws MessagingException, IOException {
+ if (messages == null || messages.length < 1)
+ throw new MessagingException("未找到要解析的邮件!");
+
+ // 解析所有邮件
+ for (int i = 0, count = messages.length; i < count; i++) {
+
+ /**
+ * 邮件删除
+ */
+ Message message = messages[i];
+ String subject = message.getSubject();
+ // set the DELETE flag to true
+ message.setFlag(Flags.Flag.DELETED, true);
+ System.out.println("Marked DELETE for message: " + subject);
+
+
+ }
+ }
+
+ /**
+ * 获得邮件主题
+ *
+ * @param msg 邮件内容
+ * @return 解码后的邮件主题
+ */
+ public static String getSubject(MimeMessage msg) throws UnsupportedEncodingException, MessagingException {
+ return MimeUtility.decodeText(msg.getSubject());
+ }
+
+ /**
+ * 获得邮件发件人
+ *
+ * @param msg 邮件内容
+ * @return 姓名 <Email地址>
+ * @throws MessagingException
+ * @throws UnsupportedEncodingException
+ */
+ public static String getFrom(MimeMessage msg) throws MessagingException, UnsupportedEncodingException {
+ String from = "";
+ Address[] froms = msg.getFrom();
+ if (froms.length < 1)
+ throw new MessagingException("没有发件人!");
+
+ InternetAddress address = (InternetAddress) froms[0];
+ String person = address.getPersonal();
+ if (person != null) {
+ person = MimeUtility.decodeText(person) + " ";
+ } else {
+ person = "";
+ }
+ from = person + "<" + address.getAddress() + ">";
+
+ return from;
+ }
+
+ /**
+ * 根据收件人类型,获取邮件收件人、抄送和密送地址。如果收件人类型为空,则获得所有的收件人
+ * <p>Message.RecipientType.TO 收件人</p>
+ * <p>Message.RecipientType.CC 抄送</p>
+ * <p>Message.RecipientType.BCC 密送</p>
+ *
+ * @param msg 邮件内容
+ * @param type 收件人类型
+ * @return 收件人1 <邮件地址1>, 收件人2 <邮件地址2>, ...
+ * @throws MessagingException
+ */
+ public static String getReceiveAddress(MimeMessage msg, Message.RecipientType type) throws MessagingException {
+ StringBuffer receiveAddress = new StringBuffer();
+ Address[] addresss = null;
+ if (type == null) {
+ addresss = msg.getAllRecipients();
+ } else {
+ addresss = msg.getRecipients(type);
+ }
+
+ if (addresss == null || addresss.length < 1)
+ return null;
+ for (Address address : addresss) {
+ InternetAddress internetAddress = (InternetAddress) address;
+ receiveAddress.append(internetAddress.toUnicodeString()).append(",");
+ }
+
+ receiveAddress.deleteCharAt(receiveAddress.length() - 1); //删除最后一个逗号
+
+ return receiveAddress.toString();
+ }
+
+ /**
+ * 获得邮件发送时间
+ *
+ * @param msg 邮件内容
+ * @return yyyy年mm月dd日 星期X HH:mm
+ * @throws MessagingException
+ */
+ public static String getSentDate(MimeMessage msg, String pattern) throws MessagingException {
+ Date receivedDate = msg.getSentDate();
+ if (receivedDate == null)
+ return "";
+
+ if (pattern == null || "".equals(pattern))
+ pattern = "yyyy/MM/dd HH:mm ";
+
+ return new SimpleDateFormat(pattern).format(receivedDate);
+ }
+
+ /**
+ * 判断邮件中是否包含附件
+ *
+ * @return 邮件中存在附件返回true,不存在返回false
+ * @throws MessagingException
+ * @throws IOException
+ */
+ public static boolean isContainAttachment(Part part) throws MessagingException, IOException {
+ boolean flag = false;
+ if (part.isMimeType("multipart/*")) {
+ MimeMultipart multipart = (MimeMultipart) part.getContent();
+ int partCount = multipart.getCount();
+ for (int i = 0; i < partCount; i++) {
+ BodyPart bodyPart = multipart.getBodyPart(i);
+ String disp = bodyPart.getDisposition();
+ if (disp != null && (disp.equalsIgnoreCase(Part.ATTACHMENT) || disp.equalsIgnoreCase(Part.INLINE))) {
+ flag = true;
+ } else if (bodyPart.isMimeType("multipart/*")) {
+ flag = isContainAttachment(bodyPart);
+ } else {
+ String contentType = bodyPart.getContentType();
+ if (contentType.indexOf("application") != -1) {
+ flag = true;
+ }
+
+ if (contentType.indexOf("name") != -1) {
+ flag = true;
+ }
+ }
+
+ if (flag) break;
+ }
+ } else if (part.isMimeType("message/rfc822")) {
+ flag = isContainAttachment((Part) part.getContent());
+ }
+ return flag;
+ }
+
+ /**
+ * 判断邮件是否已读
+ *
+ * @param msg 邮件内容
+ * @return 如果邮件已读返回true, 否则返回false
+ * @throws MessagingException
+ */
+ public static boolean isSeen(MimeMessage msg) throws MessagingException {
+ return msg.getFlags().contains(Flags.Flag.SEEN);
+ }
+
+ /**
+ * 判断邮件是否需要阅读回执
+ *
+ * @param msg 邮件内容
+ * @return 需要回执返回true, 否则返回false
+ * @throws MessagingException
+ */
+ public static boolean isReplySign(MimeMessage msg) throws MessagingException {
+ boolean replySign = false;
+ String[] headers = msg.getHeader("Disposition-Notification-To");
+ if (headers != null)
+ replySign = true;
+ return replySign;
+ }
+
+ /**
+ * 获得邮件的优先级
+ *
+ * @param msg 邮件内容
+ * @return 1(High):紧急 3:普通(Normal) 5:低(Low)
+ * @throws MessagingException
+ */
+ public static String getPriority(MimeMessage msg) throws MessagingException {
+ String priority = "普通";
+ String[] headers = msg.getHeader("X-Priority");
+ if (headers != null) {
+ String headerPriority = headers[0];
+ if (headerPriority.indexOf("1") != -1 || headerPriority.indexOf("High") != -1)
+ priority = "紧急";
+ else if (headerPriority.indexOf("5") != -1 || headerPriority.indexOf("Low") != -1)
+ priority = "低";
+ else
+ priority = "普通";
+ }
+ return priority;
+ }
+
+
+
+ public static String getTextMultipart(Part part) throws Exception{
+ if(part.isMimeType("text/html")){
+ String content = (String) part.getContent();
+ return content;
+ }else if(part.isMimeType("text/plain")){
+ String content = (String) part.getContent();
+ return content;
+ }
+ return "";
+ }
+
+ /**
+ * 获得邮件文本内容
+ *
+ * @param part 邮件体
+ * @param content 存储邮件文本内容的字符串
+ * @throws MessagingException
+ * @throws IOException
+ */
+ public static void getMailTextContent(Part part, StringBuffer content) throws MessagingException, IOException {
+ // 如果是文本类型的附件,通过getContent方法可以取到文本内容,但这不是我们需要的结果,所以在这里要做判断
+ boolean isContainTextAttach = part.getContentType().indexOf("name") > 0;
+ if (part.isMimeType("text/*") && !isContainTextAttach) {
+ content.append(part.getContent().toString());
+ } else if (part.isMimeType("message/rfc822")) {
+ getMailTextContent((Part) part.getContent(), content);
+ } else if (part.isMimeType("multipart/*")) {
+ Object mpart = part.getContent();
+ if (mpart instanceof Multipart) {
+ Multipart multipart = (Multipart) part.getContent();
+ int partCount = multipart.getCount();
+ for (int i = 0; i < partCount; i++) {
+ BodyPart bodyPart = multipart.getBodyPart(i);
+ getMailTextContent(bodyPart, content);
+ }
+ }
+ }
+ }
+}
+
diff --git a/src/main/java/org/springblade/flow/business/service/impl/FlowBusinessServiceImpl.java b/src/main/java/org/springblade/flow/business/service/impl/FlowBusinessServiceImpl.java
index d8d1bdd..d61a1bb 100644
--- a/src/main/java/org/springblade/flow/business/service/impl/FlowBusinessServiceImpl.java
+++ b/src/main/java/org/springblade/flow/business/service/impl/FlowBusinessServiceImpl.java
@@ -16,9 +16,12 @@
*/
package org.springblade.flow.business.service.impl;
+import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.time.DateUtils;
import org.flowable.engine.HistoryService;
import org.flowable.engine.TaskService;
import org.flowable.engine.history.HistoricProcessInstance;
@@ -39,6 +42,8 @@
import org.springblade.flow.engine.constant.FlowEngineConstant;
import org.springblade.flow.engine.entity.FlowProcess;
import org.springblade.flow.engine.utils.FlowCache;
+import org.springblade.modules.district.entity.DistrictEntity;
+import org.springblade.modules.district.service.IDistrictService;
import org.springblade.modules.property.entity.PropertyCapitalApplyEntity;
import org.springblade.modules.property.service.IPropertyCapitalApplyService;
import org.springframework.stereotype.Service;
@@ -46,6 +51,7 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
/**
* 流程业务实现类
@@ -104,7 +110,7 @@
buildFlowTaskList(bladeFlow, flowList, todoQuery, FlowEngineConstant.STATUS_TODO);
// 计算总数
- long count = todoQuery.count();
+ long count = flowList.size();
// 设置页数
page.setSize(count);
// 设置总数
@@ -323,6 +329,11 @@
if (capitalApplyEntity != null) {
flow.setName(capitalApplyEntity.getName());
flow.setDistrictId(capitalApplyEntity.getDistrictId());
+ IDistrictService bean1 = SpringUtils.getBean(IDistrictService.class);
+ DistrictEntity one = bean1.getOne(Wrappers.<DistrictEntity>lambdaQuery().eq(DistrictEntity::getId, capitalApplyEntity.getDistrictId()));
+ if (one != null) {
+ flow.setDistrictName(one.getName());
+ }
flow.setLinkman(capitalApplyEntity.getLinkman());
flow.setLinkPhone(capitalApplyEntity.getLinkPhone());
}
@@ -336,7 +347,32 @@
flow.setProcessDefinitionVersion(processDefinition.getVersion());
flow.setProcessInstanceId(task.getProcessInstanceId());
flow.setStatus(status);
- flowList.add(flow);
+ Boolean districtNameFlag = false;
+ Boolean nameFlag = false;
+ Boolean dateFlag = false;
+ Boolean isFilter = false;
+
+ if (StringUtils.isNotBlank(bladeFlow.getDistrictName())) {
+ isFilter = true;
+ // 小区、项目名称、申请时间
+ districtNameFlag = flow.getDistrictName().contains(bladeFlow.getDistrictName());
+ } else if (StringUtils.isNotBlank(bladeFlow.getName())) {
+ isFilter = true;
+ // 小区、项目名称、申请时间
+ nameFlag = flow.getName().contains(bladeFlow.getName());
+ } else if (bladeFlow.getStartTimes() != null && bladeFlow.getEndTimes() != null) {
+ isFilter = true;
+ // 小区、项目名称、申请时间
+ dateFlag = flow.getCreateTime().after(bladeFlow.getStartTimes())
+ && flow.getCreateTime().before(bladeFlow.getEndTimes());
+ }
+ if (isFilter ) {
+ if(districtNameFlag || nameFlag || dateFlag){
+ flowList.add(flow);
+ }
+ } else {
+ flowList.add(flow);
+ }
});
}
diff --git a/src/main/java/org/springblade/flow/core/entity/BladeFlow.java b/src/main/java/org/springblade/flow/core/entity/BladeFlow.java
index fcc57ec..8d65b24 100644
--- a/src/main/java/org/springblade/flow/core/entity/BladeFlow.java
+++ b/src/main/java/org/springblade/flow/core/entity/BladeFlow.java
@@ -16,6 +16,7 @@
*/
package org.springblade.flow.core.entity;
+import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springblade.flow.core.constant.ProcessConstant;
@@ -36,10 +37,25 @@
// 小区id
private String districtId;
+ // 小区名称
+ private String districtName;
+
// 时间名称
private String name;
/**
+ * 开始时间
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date startTimes;
+
+ /**
+ * 结束时间
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date endTimes;
+
+ /**
* 联系人姓名
*/
@ApiModelProperty(value = "联系人姓名")
diff --git a/src/main/java/org/springblade/modules/email/config/MailSenderConfig.java b/src/main/java/org/springblade/modules/email/config/MailSenderConfig.java
index ed9ba50..9491222 100644
--- a/src/main/java/org/springblade/modules/email/config/MailSenderConfig.java
+++ b/src/main/java/org/springblade/modules/email/config/MailSenderConfig.java
@@ -8,7 +8,10 @@
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Component;
+import javax.mail.*;
+import java.security.Security;
import java.util.List;
+import java.util.Properties;
@Slf4j
@Component
@@ -34,6 +37,7 @@
//获取数据库中启用的邮件配置
EmailEntity params = new EmailEntity();
params.setStatus(2);
+ params.setEmailType("1");
EmailEntity email = emailMapper.selectOne(Condition.getQueryWrapper(params));
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
@@ -61,6 +65,48 @@
}
/**
+ *
+ * @return
+ * @throws MessagingException
+ */
+ public Store buildMailReceive() throws MessagingException {
+ log.info("初始化mailReceive");
+
+ //获取数据库中启用的邮件配置
+ EmailEntity params = new EmailEntity();
+ params.setStatus(2);
+ params.setEmailType("2");
+
+ EmailEntity email = emailMapper.selectOne(Condition.getQueryWrapper(params));
+
+ Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
+ final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";//ssl加密
+
+ //有些参数可能不需要
+ Properties props = new Properties();
+ props.setProperty("mail.imap.socketFactory.class", SSL_FACTORY);
+ props.setProperty("mail.imap.socketFactory.fallback", "false");
+ props.setProperty("mail.transport.protocol", email.getProtocol()); // 使用的协议
+ props.setProperty("mail.imap.port", email.getPort().toString());
+ props.setProperty("mail.imap.socketFactory.port", email.getPort().toString());
+
+ //创建会话
+ Session session = Session.getInstance(props, new Authenticator() {
+ @Override
+ protected PasswordAuthentication getPasswordAuthentication() {
+ return new PasswordAuthentication(email.getUsername(),email.getPassword());
+ }
+ });
+ //存储对象
+ Store store = session.getStore("imap");
+ //连接
+ store.connect("imap.qq.com",email.getPort(),email.getUsername(),email.getPassword());
+ return store;
+
+
+ }
+
+ /**
* 获取MailSender
*
* @return CustomMailSender
@@ -68,4 +114,14 @@
public JavaMailSenderImpl getSender() {
return buildMailSender();
}
+
+
+ /**
+ * 获取MailSender
+ *
+ * @return CustomMailSender
+ */
+ public Store getReceive() throws MessagingException {
+ return buildMailReceive();
+ }
}
diff --git a/src/main/java/org/springblade/modules/email/entity/EmailEntity.java b/src/main/java/org/springblade/modules/email/entity/EmailEntity.java
index a5451c0..2bc1591 100644
--- a/src/main/java/org/springblade/modules/email/entity/EmailEntity.java
+++ b/src/main/java/org/springblade/modules/email/entity/EmailEntity.java
@@ -72,4 +72,7 @@
@ApiModelProperty(value = "备注")
private String remark;
+ @ApiModelProperty(value = "1:发送配置 2:接收配置")
+ private String emailType;
+
}
diff --git a/src/main/java/org/springblade/modules/email/entity/EmailTemplateEntity.java b/src/main/java/org/springblade/modules/email/entity/EmailTemplateEntity.java
index 02a20e0..2657390 100644
--- a/src/main/java/org/springblade/modules/email/entity/EmailTemplateEntity.java
+++ b/src/main/java/org/springblade/modules/email/entity/EmailTemplateEntity.java
@@ -16,8 +16,7 @@
*/
package org.springblade.modules.email.entity;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import io.swagger.annotations.ApiModel;
@@ -43,7 +42,8 @@
/** id */
@ApiModelProperty(value = "主键ID", example = "")
- private Integer id;
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private Long id;
/** 标题 */
@ApiModelProperty(value = "标题", example = "")
@@ -58,13 +58,13 @@
/** 创建时间 */
@ApiModelProperty(value = "创建时间", example = "")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
- @TableField("create_time")
+ @TableField(value = "create_time",fill = FieldFill.INSERT)
private Date createTime;
/** 更新时间 */
@ApiModelProperty(value = "更新时间", example = "")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
- @TableField("update_time")
+ @TableField(value = "update_time",fill = FieldFill.UPDATE)
private Date updateTime;
/** 是否已删除 */
diff --git a/src/main/java/org/springblade/modules/email/service/IEmailAccountService.java b/src/main/java/org/springblade/modules/email/service/IEmailAccountService.java
index d7bb95f..06cddbc 100644
--- a/src/main/java/org/springblade/modules/email/service/IEmailAccountService.java
+++ b/src/main/java/org/springblade/modules/email/service/IEmailAccountService.java
@@ -2,7 +2,9 @@
import org.springblade.modules.email.entity.EmailAccount;
import org.springblade.modules.messageRecord.entity.MessageUser;
+import org.springblade.modules.messageRecord.vo.MessageRecordVO;
+import javax.mail.MessagingException;
import java.util.List;
public interface IEmailAccountService {
@@ -11,4 +13,6 @@
Boolean senderEmail(EmailAccount account);
Boolean sendMessageUserEmail(String title, String content, List<MessageUser> messageUserList);
+
+ List<MessageRecordVO> getUnreadList() throws MessagingException;
}
diff --git a/src/main/java/org/springblade/modules/email/service/impl/EmailAccountServiceImpl.java b/src/main/java/org/springblade/modules/email/service/impl/EmailAccountServiceImpl.java
index 1bf4c3f..bec5ba0 100644
--- a/src/main/java/org/springblade/modules/email/service/impl/EmailAccountServiceImpl.java
+++ b/src/main/java/org/springblade/modules/email/service/impl/EmailAccountServiceImpl.java
@@ -1,15 +1,19 @@
package org.springblade.modules.email.service.impl;
+import com.sun.mail.imap.IMAPFolder;
+import com.sun.mail.imap.IMAPStore;
import com.xxl.job.core.util.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springblade.common.utils.ParseMail;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.modules.email.config.MailProperties;
import org.springblade.modules.email.config.MailSenderConfig;
import org.springblade.modules.email.entity.EmailAccount;
import org.springblade.modules.email.service.IEmailAccountService;
import org.springblade.modules.messageRecord.entity.MessageUser;
+import org.springblade.modules.messageRecord.vo.MessageRecordVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
@@ -17,9 +21,18 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
-import javax.mail.MessagingException;
+import javax.mail.*;
+import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeUtility;
+import javax.mail.search.FlagTerm;
import java.io.File;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@@ -79,6 +92,86 @@
emailAccount.setSubject(title);
emailAccount.setContent(content);
- return senderEmail(emailAccount);
+ return senderEmail(emailAccount);
+ }
+
+
+ @Override
+ public List<MessageRecordVO> getUnreadList() throws MessagingException {
+ Folder folder = null;
+ Store store = senderConfig.getReceive();
+ List<MessageRecordVO> MessageRecordVOList = new ArrayList<>();
+ try {
+ // 获得收件箱
+ folder = store.getFolder("INBOX");
+ // 以读写模式打开收件箱
+ folder.open(Folder.READ_WRITE);
+ //false 表示未读
+ FlagTerm flagTerm = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
+ //获得收件箱的邮件列表
+ Message[] messages = folder.search(flagTerm);
+ // 打印不同状态的邮件数量
+ System.out.println("收件箱中共" + messages.length + "封邮件!");
+ System.out.println("收件箱中共" + folder.getUnreadMessageCount() + "封未读邮件!");
+ System.out.println("收件箱中共" + folder.getNewMessageCount() + "封新邮件!");
+ System.out.println("收件箱中共" + folder.getDeletedMessageCount() + "封已删除邮件!");
+
+ System.out.println("------------------------开始解析邮件----------------------------------");
+// ParseMail.getMailTextContent(messages.)
+ StringBuffer content = new StringBuffer(30);
+
+// for (int i = 0; i < messages.length; i++) {
+// System.out.println("消息:"+messages[i].getSubject());
+// String from = MimeUtility.decodeText(messages[i].getFrom()[0].toString());
+// InternetAddress internetAddress = new InternetAddress(from);
+// System.out.println("发件人:" + internetAddress.getPersonal() + '(' + internetAddress.getAddress() + ')');
+// }
+ for (Message message : messages) {
+
+ ParseMail.getMailTextContent(message, content);
+
+ MessageRecordVO messageRecordVO = new MessageRecordVO();
+ String from = MimeUtility.decodeText(message.getFrom()[0].toString());
+ InternetAddress ia = new InternetAddress(from);
+
+ System.out.println("发件人:" + ia.getPersonal() + '(' + ia.getAddress() + ')');
+ System.out.println("主题:" + message.getSubject());
+ System.out.println("主题fa:" + message.getFlags());
+ if (message.getSentDate() != null) {
+ System.out.println("邮件发送时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(message.getSentDate()));
+ }
+ System.out.println("-------------------------------------------\n");
+// message.setFlag(Flags.Flag.SEEN, true);
+ messageRecordVO.setTitle(message.getSubject());
+ if (message.getSentDate() != null) {
+ messageRecordVO.setStartTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(message.getSentDate()));
+ }
+ messageRecordVO.setUserName(ia.getPersonal() + '(' + ia.getAddress() + ')');
+ messageRecordVO.setContent(String.valueOf(content));
+ MessageRecordVOList.add(messageRecordVO);
+ }
+ return MessageRecordVOList;
+
+ } catch (NoSuchProviderException e) {
+ e.printStackTrace();
+ } catch (MessagingException e) {
+ e.printStackTrace();
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ if (folder != null) {
+ folder.close(false);
+ }
+ if (store != null) {
+ store.close();
+ }
+ } catch (MessagingException e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
}
}
diff --git a/src/main/java/org/springblade/modules/messageRecord/controller/MessageRecordController.java b/src/main/java/org/springblade/modules/messageRecord/controller/MessageRecordController.java
index 2bc6c04..57cbc6b 100644
--- a/src/main/java/org/springblade/modules/messageRecord/controller/MessageRecordController.java
+++ b/src/main/java/org/springblade/modules/messageRecord/controller/MessageRecordController.java
@@ -34,6 +34,8 @@
import org.springblade.modules.messageRecord.service.IMessageRecordService;
import org.springblade.core.boot.ctrl.BladeController;
+import java.util.List;
+
/**
* 消息记录表 控制器
*
@@ -140,4 +142,15 @@
return R.status(messageRecordService.sendMessage(id));
}
+ /**
+ * 消息记录表 分页
+ */
+ @GetMapping("/getUnreadList")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "分页", notes = "传入meseRecord")
+ public R<List<MessageRecordVO>> getUnreadList() {
+ List<MessageRecordVO> pages = messageRecordService.getUnreadList();
+ return R.data(pages);
+ }
+
}
diff --git a/src/main/java/org/springblade/modules/messageRecord/service/IMessageRecordService.java b/src/main/java/org/springblade/modules/messageRecord/service/IMessageRecordService.java
index 562c558..f636433 100644
--- a/src/main/java/org/springblade/modules/messageRecord/service/IMessageRecordService.java
+++ b/src/main/java/org/springblade/modules/messageRecord/service/IMessageRecordService.java
@@ -21,6 +21,8 @@
import org.springblade.core.mp.base.BaseService;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
/**
* 消息记录表 服务类
*
@@ -42,4 +44,6 @@
Boolean customizeSave(MessageRecordVO messageRecord);
Boolean sendMessage(String id);
+
+ List<MessageRecordVO> getUnreadList();
}
diff --git a/src/main/java/org/springblade/modules/messageRecord/service/impl/MessageRecordServiceImpl.java b/src/main/java/org/springblade/modules/messageRecord/service/impl/MessageRecordServiceImpl.java
index 9d1d35a..5828949 100644
--- a/src/main/java/org/springblade/modules/messageRecord/service/impl/MessageRecordServiceImpl.java
+++ b/src/main/java/org/springblade/modules/messageRecord/service/impl/MessageRecordServiceImpl.java
@@ -37,6 +37,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.transaction.annotation.Transactional;
+import javax.mail.MessagingException;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@@ -138,5 +139,14 @@
return true;
}
-
+ @Override
+ public List<MessageRecordVO> getUnreadList() {
+ try {
+ List<MessageRecordVO> aa = emailAccountService.getUnreadList();
+ return aa;
+ } catch (MessagingException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
}
diff --git a/src/main/java/org/springblade/modules/messageRecord/vo/MessageRecordVO.java b/src/main/java/org/springblade/modules/messageRecord/vo/MessageRecordVO.java
index d8326a8..15b9e1f 100644
--- a/src/main/java/org/springblade/modules/messageRecord/vo/MessageRecordVO.java
+++ b/src/main/java/org/springblade/modules/messageRecord/vo/MessageRecordVO.java
@@ -32,6 +32,7 @@
private static final long serialVersionUID = 1L;
private String startTime;
+
private String endTime;
private String userName;
diff --git a/src/main/java/org/springblade/modules/messageRecord/vo/MessageUserVO.java b/src/main/java/org/springblade/modules/messageRecord/vo/MessageUserVO.java
index ba7b0e8..e61ea24 100644
--- a/src/main/java/org/springblade/modules/messageRecord/vo/MessageUserVO.java
+++ b/src/main/java/org/springblade/modules/messageRecord/vo/MessageUserVO.java
@@ -22,4 +22,6 @@
private String startTime;
private String endTime;
+ private Long sendUserId;
+
}
diff --git a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
index 27b1d17..cf451b7 100644
--- a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
@@ -245,7 +245,7 @@
bu.birthday
FROM
blade_user bu
- LEFT JOIN jczz_household jh ON bu.id = jh.associated_user_id
+ LEFT JOIN jczz_household jh ON bu.id = jh.associated_user_id and jh.is_deleted=0
LEFT JOIN jczz_house jhe ON jhe.house_code = jh.house_code
LEFT JOIN jczz_district jd on jd.aoi_code=jhe.district_code
<where>
--
Gitblit v1.9.3