24282 2 jaren geleden
bovenliggende
commit
d8cefe2405

+ 1 - 1
src/main/java/com/fjhx/config/CodeGeneration.java

@@ -25,7 +25,7 @@ public class CodeGeneration {
                 })
                 .strategyConfig(builder -> builder
                         // 设置需要生成的表名
-                        .addInclude("email_message")
+                        .addInclude("email_message_send")
                         .entityBuilder()
                         .disableSerialVersionUID()
                         .superClass(BaseEntity.class)

+ 20 - 0
src/main/java/com/fjhx/constants/SendConstants.java

@@ -0,0 +1,20 @@
+package com.fjhx.constants;
+
+public interface SendConstants {
+
+    /**
+     * 收件人
+     */
+    Integer TO = 1;
+
+    /**
+     * 抄送人
+     */
+    Integer CC = 2;
+
+    /**
+     * 密送人
+     */
+    Integer BCC = 3;
+
+}

+ 18 - 0
src/main/java/com/fjhx/controller/EmailMessageSendController.java

@@ -0,0 +1,18 @@
+package com.fjhx.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 邮件推送信息 前端控制器
+ * </p>
+ *
+ * @author zlj
+ * @since 2022-12-21
+ */
+@Controller
+@RequestMapping("/emailMessageSend")
+public class EmailMessageSendController {
+
+}

+ 47 - 0
src/main/java/com/fjhx/entity/EmailMessageSend.java

@@ -0,0 +1,47 @@
+package com.fjhx.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fjhx.base.BaseEntity;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 邮件推送信息
+ * </p>
+ *
+ * @author zlj
+ * @since 2022-12-21
+ */
+@Getter
+@Setter
+@TableName("email_message_send")
+public class EmailMessageSend extends BaseEntity {
+
+    /**
+     * 文件id
+     */
+    private Long emailMessageId;
+
+    /**
+     * 文件id
+     */
+    private String messageId;
+
+    /**
+     * 类型 1收件人 2抄送人 3密送人
+     */
+    private Integer type;
+
+    /**
+     * 推送人名称
+     */
+    private String name;
+
+    /**
+     * 推送人地址
+     */
+    private String address;
+
+
+}

+ 16 - 0
src/main/java/com/fjhx/mapper/EmailMessageSendMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.mapper;
+
+import com.fjhx.entity.EmailMessageSend;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 邮件推送信息 Mapper 接口
+ * </p>
+ *
+ * @author zlj
+ * @since 2022-12-21
+ */
+public interface EmailMessageSendMapper extends BaseMapper<EmailMessageSend> {
+
+}

+ 5 - 0
src/main/java/com/fjhx/mapper/xml/EmailMessageSendMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.mapper.EmailMessageSendMapper">
+
+</mapper>

+ 16 - 0
src/main/java/com/fjhx/service/IEmailMessageSendService.java

@@ -0,0 +1,16 @@
+package com.fjhx.service;
+
+import com.fjhx.entity.EmailMessageSend;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 邮件推送信息 服务类
+ * </p>
+ *
+ * @author zlj
+ * @since 2022-12-21
+ */
+public interface IEmailMessageSendService extends IService<EmailMessageSend> {
+
+}

+ 84 - 36
src/main/java/com/fjhx/service/impl/AccountServiceImpl.java

@@ -2,16 +2,16 @@ package com.fjhx.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 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.Wrappers;
 import com.fjhx.config.TaskPoolConfig;
+import com.fjhx.constants.SendConstants;
 import com.fjhx.entity.EmailInfo;
 import com.fjhx.entity.EmailMailbox;
 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.vo.BindingVo;
 import com.fjhx.vo.EmailMailboxVo;
@@ -39,6 +39,9 @@ public class AccountServiceImpl implements IAccountService {
     @Autowired
     private IEmailMessageService emailMessageService;
 
+    @Autowired
+    private IEmailMessageSendService emailMessageSendService;
+
     @Qualifier(TaskPoolConfig.taskExecutor)
     @Autowired
     private Executor executor;
@@ -101,42 +104,87 @@ public class AccountServiceImpl implements IAccountService {
      */
     private void asyncReadEmail(String email, List<EmailMailbox> emailMailboxList) {
         executor.execute(() -> {
-
             ThreadUtil.sleep(5000);
 
-            List<EmailMessage> emailMessageList = new ArrayList<>();
-
             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);
-
         });
 
     }

+ 20 - 0
src/main/java/com/fjhx/service/impl/EmailMessageSendServiceImpl.java

@@ -0,0 +1,20 @@
+package com.fjhx.service.impl;
+
+import com.fjhx.entity.EmailMessageSend;
+import com.fjhx.mapper.EmailMessageSendMapper;
+import com.fjhx.service.IEmailMessageSendService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 邮件推送信息 服务实现类
+ * </p>
+ *
+ * @author zlj
+ * @since 2022-12-21
+ */
+@Service
+public class EmailMessageSendServiceImpl extends ServiceImpl<EmailMessageSendMapper, EmailMessageSend> implements IEmailMessageSendService {
+
+}

+ 4 - 6
src/main/java/com/fjhx/utils/EmailEngineUtil.java

@@ -9,8 +9,8 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.RestTemplate;
 
-import java.util.ArrayList;
 import java.util.List;
+import java.util.function.Consumer;
 
 @NoArgsConstructor
 @Data
@@ -56,10 +56,9 @@ public class EmailEngineUtil {
     /**
      * 查看文件夹的所有邮件
      */
-    public static List<MessageVo.MessagesDTO> getMessageList(String email, String mailboxName) {
+    public static void getMessageList(String email, String mailboxName, Consumer<List<MessageVo.MessagesDTO>> consumer) {
         int page = 0;
         int pages;
-        List<MessageVo.MessagesDTO> messagesList = new ArrayList<>();
 
         do {
             String url = "/v1/account/" + email + "/messages?path=" + mailboxName + "&page=" + page + "&pageSize=100&documentStore=false";
@@ -68,13 +67,12 @@ public class EmailEngineUtil {
 
             List<MessageVo.MessagesDTO> messages = result.getMessages();
             if (messages.size() > 0) {
-                messagesList.addAll(messages);
+                consumer.accept(messages);
             }
+
             pages = result.getPages();
             page++;
         } while (page < pages);
-
-        return messagesList;
     }
 
     /**