|
@@ -2,16 +2,16 @@ package com.fjhx.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.thread.ThreadUtil;
|
|
import cn.hutool.core.thread.ThreadUtil;
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.fjhx.config.TaskPoolConfig;
|
|
import com.fjhx.config.TaskPoolConfig;
|
|
|
|
+import com.fjhx.constants.SendConstants;
|
|
import com.fjhx.entity.EmailInfo;
|
|
import com.fjhx.entity.EmailInfo;
|
|
import com.fjhx.entity.EmailMailbox;
|
|
import com.fjhx.entity.EmailMailbox;
|
|
import com.fjhx.entity.EmailMessage;
|
|
import com.fjhx.entity.EmailMessage;
|
|
-import com.fjhx.service.IAccountService;
|
|
|
|
-import com.fjhx.service.IEmailInfoService;
|
|
|
|
-import com.fjhx.service.IEmailMailboxService;
|
|
|
|
-import com.fjhx.service.IEmailMessageService;
|
|
|
|
|
|
+import com.fjhx.entity.EmailMessageSend;
|
|
|
|
+import com.fjhx.service.*;
|
|
import com.fjhx.utils.EmailEngineUtil;
|
|
import com.fjhx.utils.EmailEngineUtil;
|
|
import com.fjhx.vo.BindingVo;
|
|
import com.fjhx.vo.BindingVo;
|
|
import com.fjhx.vo.EmailMailboxVo;
|
|
import com.fjhx.vo.EmailMailboxVo;
|
|
@@ -39,6 +39,9 @@ public class AccountServiceImpl implements IAccountService {
|
|
@Autowired
|
|
@Autowired
|
|
private IEmailMessageService emailMessageService;
|
|
private IEmailMessageService emailMessageService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private IEmailMessageSendService emailMessageSendService;
|
|
|
|
+
|
|
@Qualifier(TaskPoolConfig.taskExecutor)
|
|
@Qualifier(TaskPoolConfig.taskExecutor)
|
|
@Autowired
|
|
@Autowired
|
|
private Executor executor;
|
|
private Executor executor;
|
|
@@ -101,42 +104,87 @@ public class AccountServiceImpl implements IAccountService {
|
|
*/
|
|
*/
|
|
private void asyncReadEmail(String email, List<EmailMailbox> emailMailboxList) {
|
|
private void asyncReadEmail(String email, List<EmailMailbox> emailMailboxList) {
|
|
executor.execute(() -> {
|
|
executor.execute(() -> {
|
|
-
|
|
|
|
ThreadUtil.sleep(5000);
|
|
ThreadUtil.sleep(5000);
|
|
|
|
|
|
- List<EmailMessage> emailMessageList = new ArrayList<>();
|
|
|
|
-
|
|
|
|
for (EmailMailbox emailMailbox : emailMailboxList) {
|
|
for (EmailMailbox emailMailbox : emailMailboxList) {
|
|
- List<MessageVo.MessagesDTO> messageList = EmailEngineUtil.getMessageList(email, emailMailbox.getPath());
|
|
|
|
-
|
|
|
|
- for (MessageVo.MessagesDTO messagesDTO : messageList) {
|
|
|
|
- MessageDetailVo messageDetail = EmailEngineUtil.getMessageDetail(email, messagesDTO.getId());
|
|
|
|
-
|
|
|
|
- EmailMessage emailMessage = new EmailMessage();
|
|
|
|
- emailMessage.setMessageId(messagesDTO.getId());
|
|
|
|
- emailMessage.setEmailMailboxId(emailMailbox.getId());
|
|
|
|
- emailMessage.setEmailMailboxPath(emailMailbox.getPath());
|
|
|
|
- emailMessage.setUnseen(messagesDTO.getUnseen());
|
|
|
|
- emailMessage.setFlagged(messagesDTO.getFlagged());
|
|
|
|
- emailMessage.setSubject(messagesDTO.getSubject());
|
|
|
|
- emailMessage.setFromDate(messagesDTO.getDate());
|
|
|
|
-
|
|
|
|
- MessageVo.MessagesDTO.ToDTO from = messagesDTO.getFrom();
|
|
|
|
- if (ObjectUtils.isNotEmpty(from)) {
|
|
|
|
- emailMessage.setFromName(from.getName());
|
|
|
|
- emailMessage.setFromAddress(from.getAddress());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- MessageDetailVo.TextDTO text = messageDetail.getText();
|
|
|
|
- if (ObjectUtils.isNotEmpty(text)) {
|
|
|
|
- emailMessage.setHtmlContent(text.getHtml());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- emailMessageList.add(emailMessage);
|
|
|
|
- }
|
|
|
|
|
|
+ EmailEngineUtil.getMessageList(
|
|
|
|
+ email,
|
|
|
|
+ emailMailbox.getPath(),
|
|
|
|
+ messageList -> {
|
|
|
|
+ List<EmailMessage> emailMessageList = new ArrayList<>();
|
|
|
|
+ List<EmailMessageSend> emailMessageSendList = new ArrayList<>();
|
|
|
|
+ for (MessageVo.MessagesDTO messagesDTO : messageList) {
|
|
|
|
+ MessageDetailVo messageDetail = EmailEngineUtil.getMessageDetail(email, messagesDTO.getId());
|
|
|
|
+
|
|
|
|
+ EmailMessage emailMessage = new EmailMessage();
|
|
|
|
+ long id = IdWorker.getId();
|
|
|
|
+ emailMessage.setId(id);
|
|
|
|
+ emailMessage.setMessageId(messagesDTO.getId());
|
|
|
|
+ emailMessage.setEmailMailboxId(emailMailbox.getId());
|
|
|
|
+ emailMessage.setEmailMailboxPath(emailMailbox.getPath());
|
|
|
|
+ emailMessage.setUnseen(messagesDTO.getUnseen());
|
|
|
|
+ emailMessage.setFlagged(messagesDTO.getFlagged());
|
|
|
|
+ emailMessage.setSubject(messagesDTO.getSubject());
|
|
|
|
+ emailMessage.setFromDate(messagesDTO.getDate());
|
|
|
|
+
|
|
|
|
+ MessageVo.MessagesDTO.ToDTO from = messagesDTO.getFrom();
|
|
|
|
+ if (ObjectUtils.isNotEmpty(from)) {
|
|
|
|
+ emailMessage.setFromName(from.getName());
|
|
|
|
+ emailMessage.setFromAddress(from.getAddress());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ MessageDetailVo.TextDTO text = messageDetail.getText();
|
|
|
|
+ if (ObjectUtils.isNotEmpty(text)) {
|
|
|
|
+ emailMessage.setHtmlContent(text.getHtml());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<MessageVo.MessagesDTO.ToDTO> to = messagesDTO.getTo();
|
|
|
|
+ if (ObjectUtils.isNotEmpty(to)) {
|
|
|
|
+ for (MessageVo.MessagesDTO.ToDTO toDTO : to) {
|
|
|
|
+ EmailMessageSend emailMessageSend = new EmailMessageSend();
|
|
|
|
+ emailMessageSend.setEmailMessageId(id);
|
|
|
|
+ emailMessageSend.setMessageId(messagesDTO.getId());
|
|
|
|
+ emailMessageSend.setType(SendConstants.TO);
|
|
|
|
+ emailMessageSend.setName(toDTO.getName());
|
|
|
|
+ emailMessageSend.setAddress(toDTO.getAddress());
|
|
|
|
+ emailMessageSendList.add(emailMessageSend);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<MessageVo.MessagesDTO.ToDTO> cc = messagesDTO.getCc();
|
|
|
|
+ if (ObjectUtils.isNotEmpty(cc)) {
|
|
|
|
+ for (MessageVo.MessagesDTO.ToDTO toDTO : cc) {
|
|
|
|
+ EmailMessageSend emailMessageSend = new EmailMessageSend();
|
|
|
|
+ emailMessageSend.setEmailMessageId(id);
|
|
|
|
+ emailMessageSend.setMessageId(messagesDTO.getId());
|
|
|
|
+ emailMessageSend.setType(SendConstants.CC);
|
|
|
|
+ emailMessageSend.setName(toDTO.getName());
|
|
|
|
+ emailMessageSend.setAddress(toDTO.getAddress());
|
|
|
|
+ emailMessageSendList.add(emailMessageSend);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<MessageVo.MessagesDTO.ToDTO> bcc = messagesDTO.getBcc();
|
|
|
|
+ if (ObjectUtils.isNotEmpty(bcc)) {
|
|
|
|
+ for (MessageVo.MessagesDTO.ToDTO toDTO : cc) {
|
|
|
|
+ EmailMessageSend emailMessageSend = new EmailMessageSend();
|
|
|
|
+ emailMessageSend.setEmailMessageId(id);
|
|
|
|
+ emailMessageSend.setMessageId(messagesDTO.getId());
|
|
|
|
+ emailMessageSend.setType(SendConstants.BCC);
|
|
|
|
+ emailMessageSend.setName(toDTO.getName());
|
|
|
|
+ emailMessageSend.setAddress(toDTO.getAddress());
|
|
|
|
+ emailMessageSendList.add(emailMessageSend);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ emailMessageList.add(emailMessage);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ emailMessageService.saveBatch(emailMessageList);
|
|
|
|
+ emailMessageSendService.saveBatch(emailMessageSendList);
|
|
|
|
+ }
|
|
|
|
+ );
|
|
}
|
|
}
|
|
- emailMessageService.saveBatch(emailMessageList);
|
|
|
|
-
|
|
|
|
});
|
|
});
|
|
|
|
|
|
}
|
|
}
|