24282 пре 2 година
родитељ
комит
9bed66e2bf

+ 1 - 1
src/main/java/com/fjhx/controller/AccountController.java

@@ -50,7 +50,7 @@ public class AccountController {
      */
     @PostMapping("/listener")
     public R post(@RequestBody ListenerVo listenerVo) {
-        accountService.listener(listenerVo);
+        // accountService.listener(listenerVo);
         return R.ok();
     }
 

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

@@ -2,6 +2,7 @@ package com.fjhx.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fjhx.base.BaseEntity;
+import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -15,6 +16,7 @@ import lombok.Setter;
  */
 @Getter
 @Setter
+@EqualsAndHashCode(callSuper = true)
 @TableName("email_mailbox")
 public class EmailMailbox extends BaseEntity {
 

+ 8 - 13
src/main/java/com/fjhx/service/impl/AccountServiceImpl.java

@@ -59,9 +59,6 @@ public class AccountServiceImpl implements IAccountService {
 
         String email = bindingVo.getEmail();
 
-        // ProgressVo progressVo = RedisCache.get(RedisConstant.PROGRESS_KEY + email);
-        // Assert.isNull(progressVo, "邮箱正在同步中,请勿重复操作");
-
         EmailInfo emailInfo = emailInfoService.getOne(Wrappers.<EmailInfo>lambdaQuery().eq(EmailInfo::getEmail, email));
         // 如果存在,直接返回邮箱信息
         if (emailInfo != null) {
@@ -77,9 +74,9 @@ public class AccountServiceImpl implements IAccountService {
         // 添加邮箱文件夹
         List<EmailMailbox> emailMailboxList = this.saveEmailMailbox(mailboxList, emailInfo.getId(), email);
         // redis添加同步进度
-        this.synchronizationProgressInitialization(email, mailboxList);
+        this.synchronizationProgressInitialization(email, bindingVo.getPages(), mailboxList);
         // 异步遍历文件夹下的所有邮件
-        this.asyncReadEmail(email, emailMailboxList);
+        this.asyncReadEmail(email, bindingVo.getPages(), emailMailboxList);
 
         return emailInfo;
     }
@@ -141,7 +138,7 @@ public class AccountServiceImpl implements IAccountService {
             emailMailbox.setIsShow(true);
             emailMailbox.setInitialize(false);
             return emailMailbox;
-        }).collect(Collectors.toList());
+        }).distinct().collect(Collectors.toList());
 
         emailMailboxService.saveBatch(mailboxList);
 
@@ -151,7 +148,7 @@ public class AccountServiceImpl implements IAccountService {
     /**
      * 同步邮件进度初始化
      */
-    private void synchronizationProgressInitialization(String email, List<EmailMailboxVo.MailboxesDTO> mailboxList) {
+    private void synchronizationProgressInitialization(String email, int pages, List<EmailMailboxVo.MailboxesDTO> mailboxList) {
 
         ProgressVo progressVo = new ProgressVo();
 
@@ -161,6 +158,7 @@ public class AccountServiceImpl implements IAccountService {
         int totalMessageCount = 0;
 
         for (ProgressVo.Details detail : detailsList) {
+            detail.setMessages(detail.getMessages() > pages * 10 ? pages * 10 : detail.getMessages());
             detail.setCompleteMessageCount(0);
             detail.setPercentage(0);
             totalMessageCount += detail.getMessages();
@@ -178,7 +176,7 @@ public class AccountServiceImpl implements IAccountService {
     /**
      * 异步读取文件
      */
-    private void asyncReadEmail(String email, List<EmailMailbox> emailMailboxList) {
+    private void asyncReadEmail(String email, int pages, List<EmailMailbox> emailMailboxList) {
         executor.execute(() -> {
             ThreadUtil.sleep(3000);
 
@@ -188,8 +186,7 @@ public class AccountServiceImpl implements IAccountService {
             // 遍历每个邮箱
             for (EmailMailbox emailMailbox : emailMailboxList) {
                 int page = 0;
-                int pages;
-                do {
+                while (page < pages) {
                     MessageVo result = EmailEngineUtil.getMessageList(email, emailMailbox.getPath(), page);
                     List<MessageVo.MessagesDTO> messagesDTOList = result.getMessages();
                     if (messagesDTOList.size() > 0) {
@@ -201,14 +198,12 @@ public class AccountServiceImpl implements IAccountService {
                             lastMessageIdList.add(emailMessage.getMessageId());
                         }
                     }
-                    pages = result.getPages();
                     page++;
-                } while (page < pages);
+                }
             }
         });
     }
 
-
     /**
      * 批量保存邮件信息
      */

+ 2 - 2
src/main/java/com/fjhx/utils/EmailEngineUtil.java

@@ -87,7 +87,7 @@ public class EmailEngineUtil {
      * 查看文件夹的所有邮件
      */
     public static MessageVo getMessageList(String email, String path, int page) {
-        String url = "/v1/account/" + email + "/messages?path=" + path + "&page=" + page + "&pageSize=50&documentStore=false";
+        String url = "/v1/account/" + email + "/messages?path=" + path + "&page=" + page + "&pageSize=10&documentStore=false";
         return get(url, MessageVo.class);
     }
 
@@ -198,7 +198,7 @@ public class EmailEngineUtil {
 
     public static <T> T get(String url, Class<T> cls) {
         try {
-            return RetryUtil.execute(() -> restTemplate.getForObject(urlPrefix + url, cls), 5, 3000L);
+            return RetryUtil.execute(() -> restTemplate.getForObject(urlPrefix + url, cls), 5, 5000L);
         } catch (Exception e) {
             throw new RuntimeException(e);
         }

+ 2 - 0
src/main/java/com/fjhx/vo/BindingVo.java

@@ -23,4 +23,6 @@ public class BindingVo {
 
     private String smtpHost;
 
+    private int pages;
+
 }