24282 2 年之前
父节点
当前提交
823ffa80ce

+ 3 - 1
src/main/java/com/fjhx/controller/EmailMailboxController.java

@@ -32,11 +32,13 @@ public class EmailMailboxController {
         return R.ok(emailMailboxList);
     }
 
+    /**
+     * 编辑文件夹
+     */
     @PostMapping("/edit")
     public R edit(@RequestBody EmailMailbox emailMailbox) {
         emailMailboxService.updateById(emailMailbox);
         return R.ok();
     }
 
-
 }

+ 5 - 0
src/main/java/com/fjhx/entity/EmailMailbox.java

@@ -49,5 +49,10 @@ public class EmailMailbox extends BaseEntity {
      */
     private Boolean isShow;
 
+    /**
+     * 初始化是否完成 1是 0否
+     */
+    private Boolean initialize;
+
 
 }

+ 17 - 0
src/main/java/com/fjhx/service/impl/AccountServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fjhx.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.thread.ThreadUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.config.TaskPoolConfig;
 import com.fjhx.entity.EmailInfo;
@@ -51,6 +52,8 @@ public class AccountServiceImpl implements IAccountService {
         emailInfo = saveEmailInfo(bindingVo);
         // 添加邮箱文件夹
         saveEmailMailbox(mailboxList, emailInfo.getId(), email);
+        // 异步遍历文件夹下的所有邮件
+        asyncReadEmail(email, mailboxList);
         return emailInfo;
     }
 
@@ -71,8 +74,22 @@ public class AccountServiceImpl implements IAccountService {
             emailMailbox.setEmailInfoId(emailInfoId);
             emailMailbox.setEmail(email);
             emailMailbox.setIsShow(true);
+            emailMailbox.setInitialize(false);
         }
         emailMailboxService.saveBatch(mailboxList);
     }
 
+    private void asyncReadEmail(String email, List<EmailMailbox> mailboxList) {
+        executor.execute(() -> {
+
+            ThreadUtil.sleep(5000);
+
+            for (EmailMailbox emailMailbox : mailboxList) {
+                EmailEngineUtil.getMessageList(email, emailMailbox.getPath());
+            }
+
+        });
+
+    }
+
 }

+ 23 - 1
src/main/java/com/fjhx/utils/EmailEngineUtil.java

@@ -5,12 +5,16 @@ import cn.hutool.core.lang.Assert;
 import com.alibaba.fastjson.JSONObject;
 import com.fjhx.entity.EmailMailbox;
 import com.fjhx.vo.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.RestTemplate;
 
 import java.util.List;
 
+@NoArgsConstructor
+@Data
 @Component
 public class EmailEngineUtil {
 
@@ -18,7 +22,6 @@ public class EmailEngineUtil {
 
     private static final RestTemplate restTemplate = new RestTemplate();
 
-
     @Value("${config.urlPrefix}")
     public void setUrlPrefix(String urlPrefix) {
         EmailEngineUtil.urlPrefix = urlPrefix;
@@ -50,6 +53,25 @@ public class EmailEngineUtil {
         return BeanUtil.copyToList(JSONObject.parseObject(result).getJSONArray("mailboxes"), EmailMailbox.class);
     }
 
+    /**
+     * 查看文件夹的所有邮件
+     */
+    public static List<?> getMessageList(String email, String mailboxName) {
+        int page = 0;
+        int pages;
+
+
+        do {
+            MessageVo result = get("/v1/account/" + email + "/messages?path=" + mailboxName + "&page=" + page + "&pageSize=50&documentStore=false", MessageVo.class);
+            System.err.println(JSONObject.toJSONString(result));
+            pages = result.getPages();
+            page++;
+        } while (page < pages);
+
+
+        return null;
+    }
+
 
     /**
      * 生成验证邮箱配置实体

+ 102 - 0
src/main/java/com/fjhx/vo/MessageVo.java

@@ -0,0 +1,102 @@
+package com.fjhx.vo;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class MessageVo {
+
+    private Integer total;
+
+    private Integer page;
+
+    private Integer pages;
+
+    private List<MessagesDTO> messages;
+
+    @Data
+    public static class MessagesDTO {
+
+        private String id;
+
+        private Integer uid;
+
+        private Date date;
+
+        private List<String> flags;
+
+        private Integer size;
+
+        private String subject;
+
+        private FromDTO from;
+
+        private List<ReplyToDTO> replyTo;
+
+        private List<ToDTO> to;
+
+        private String messageId;
+
+        private TextDTO text;
+
+        private List<AttachmentsDTO> attachments;
+
+
+        @Data
+        public static class FromDTO {
+
+            private String name;
+
+            private String address;
+        }
+
+        @Data
+        public static class TextDTO {
+
+            private String id;
+
+            private EncodedSizeDTO encodedSize;
+
+            @Data
+            public static class EncodedSizeDTO {
+                private Integer html;
+            }
+        }
+
+        @Data
+        public static class ReplyToDTO {
+
+            private String name;
+
+            private String address;
+        }
+
+        @Data
+        public static class ToDTO {
+
+            private String name;
+
+            private String address;
+        }
+
+        @Data
+        public static class AttachmentsDTO {
+
+            private String id;
+
+            private String contentType;
+
+            private Integer encodedSize;
+
+            private String filename;
+
+            private Boolean embedded;
+
+            private Boolean inline;
+        }
+    }
+
+}