24282 преди 2 години
родител
ревизия
5f4fd6f1c3

+ 3 - 12
pom.xml

@@ -8,7 +8,6 @@
     <name>email-service</name>
     <version>1.0.0</version>
 
-
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
@@ -53,24 +52,17 @@
             <artifactId>lombok</artifactId>
         </dependency>
 
-        <!-- 数据库连接池 -->
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>druid-spring-boot-starter</artifactId>
-            <version>1.2.15</version>
-        </dependency>
-
         <!-- mybatis-plus -->
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-boot-starter</artifactId>
-            <version>3.5.2</version>
+            <version>3.5.3.1</version>
         </dependency>
 
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-generator</artifactId>
-            <version>3.5.2</version>
+            <version>3.5.3.1</version>
         </dependency>
 
         <!-- myBatis-plus代码自动生成模板引擎 -->
@@ -84,7 +76,7 @@
         <dependency>
             <groupId>cn.hutool</groupId>
             <artifactId>hutool-all</artifactId>
-            <version>5.8.10</version>
+            <version>5.8.11</version>
         </dependency>
 
         <!-- JSON解析器 -->
@@ -96,5 +88,4 @@
 
     </dependencies>
 
-
 </project>

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

@@ -48,4 +48,9 @@ public class EmailInfo extends BaseEntity {
      */
     private String smtpHost;
 
+    /**
+     * 邮箱路径
+     */
+    private String path;
+
 }

+ 0 - 10
src/main/java/com/fjhx/entity/EmailMessage.java

@@ -36,16 +36,6 @@ public class EmailMessage extends BaseEntity {
     private String email;
 
     /**
-     * 邮箱文件夹id
-     */
-    private Long emailMailboxId;
-
-    /**
-     * 邮箱文件夹路径
-     */
-    private String emailMailboxPath;
-
-    /**
      * 是否未读
      */
     private Boolean unseen;

+ 0 - 15
src/main/java/com/fjhx/enums/SendEventEnum.java

@@ -24,21 +24,6 @@ public enum SendEventEnum {
     MESSAGE_UPDATED("messageUpdated"),
 
     /**
-     * 新增文件夹
-     */
-    MAILBOX_NEW("mailboxNew"),
-
-    /**
-     * 删除文件夹
-     */
-    MAILBOX_DELETED("mailboxDeleted"),
-
-    /**
-     * 更新文件夹
-     */
-    MAILBOX_RESET("mailboxReset"),
-
-    /**
      * 未知事件
      */
     UNKNOWN_EVENT("unknownEvent");

+ 67 - 155
src/main/java/com/fjhx/service/impl/AccountServiceImpl.java

@@ -28,7 +28,6 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.Executor;
-import java.util.stream.Collectors;
 
 @Slf4j
 @Service
@@ -57,26 +56,28 @@ public class AccountServiceImpl implements IAccountService {
     @Override
     public EmailInfo binding(BindingVo bindingVo) {
 
-        String email = bindingVo.getEmail();
+        try {
+            String email = bindingVo.getEmail();
 
-        EmailInfo emailInfo = emailInfoService.getOne(Wrappers.<EmailInfo>lambdaQuery().eq(EmailInfo::getEmail, email));
-        // 如果存在,直接返回邮箱信息
-        if (emailInfo != null) {
+            EmailInfo emailInfo = emailInfoService.getOne(Wrappers.<EmailInfo>lambdaQuery().eq(EmailInfo::getEmail, email));
+            // 如果存在,直接返回邮箱信息
+            if (emailInfo != null) {
+                return emailInfo;
+            }
+            // 保存账号信息到数据库
+            emailInfo = this.saveEmailInfo(bindingVo);
+            // 添加账号
+            EmailEngineUtil.createAccount(bindingVo);
+            // redis添加同步进度
+            this.progressInitialization(bindingVo);
+            // 异步遍历文件夹下的所有邮件
+            this.asyncReadEmail(emailInfo.getId(), bindingVo);
             return emailInfo;
+        } catch (Exception e) {
+            EmailEngineUtil.deleteAccount(bindingVo.getEmail());
+            throw e;
         }
-        // 保存账号信息到数据库
-        emailInfo = this.saveEmailInfo(bindingVo);
-        // 添加账号
-        EmailEngineUtil.createAccount(bindingVo);
-        // 查询邮箱文件夹
-        List<EmailMailboxVo.MailboxesDTO> mailboxList = EmailEngineUtil.getMailboxList(email);
-        // 添加邮箱文件夹
-        List<EmailMailbox> emailMailboxList = this.saveEmailMailbox(mailboxList, emailInfo.getId(), email);
-        // redis添加同步进度
-        this.synchronizationProgressInitialization(email, bindingVo.getPages(), mailboxList);
-        // 异步遍历文件夹下的所有邮件
-        // this.asyncReadEmail(email, bindingVo.getPages(), emailMailboxList);
-        return emailInfo;
+
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -95,15 +96,6 @@ public class AccountServiceImpl implements IAccountService {
             case MESSAGE_UPDATED:
                 this.handleMessageUpdatedEvent(listenerVo);
                 break;
-            case MAILBOX_NEW:
-                this.handleMailboxNewEvent(listenerVo);
-                break;
-            case MAILBOX_DELETED:
-                this.handleMailboxDeleteEvent(listenerVo);
-                break;
-            case MAILBOX_RESET:
-                this.handleMailboxResetEvent(listenerVo);
-                break;
             default:
                 log.error("监听到未知事件:{}", JSONObject.toJSONString(listenerVo));
         }
@@ -125,99 +117,83 @@ public class AccountServiceImpl implements IAccountService {
     }
 
     /**
-     * 添加邮箱文件夹
-     */
-    private List<EmailMailbox> saveEmailMailbox(List<EmailMailboxVo.MailboxesDTO> mailboxDTOList, Long emailInfoId, String email) {
-
-        List<EmailMailbox> mailboxList = mailboxDTOList.stream().map(item -> {
-            EmailMailbox emailMailbox = BeanUtil.copyProperties(item, EmailMailbox.class);
-            emailMailbox.setEmailInfoId(emailInfoId);
-            emailMailbox.setEmail(email);
-            emailMailbox.setIsShow(true);
-            emailMailbox.setInitialize(false);
-            return emailMailbox;
-        }).distinct().collect(Collectors.toList());
-
-        emailMailboxService.saveBatch(mailboxList);
-
-        return mailboxList;
-    }
-
-    /**
      * 同步邮件进度初始化
      */
-    private void synchronizationProgressInitialization(String email, int pages, List<EmailMailboxVo.MailboxesDTO> mailboxList) {
+    private void progressInitialization(BindingVo bindingVo) {
+        String email = bindingVo.getEmail();
+        int pages = bindingVo.getPages();
 
         ProgressVo progressVo = new ProgressVo();
-
-
-        List<ProgressVo.Details> detailsList = BeanUtil.copyToList(mailboxList, ProgressVo.Details.class);
-
-        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();
-        }
-
         progressVo.setEmail(email);
-        progressVo.setTotalMessageCount(totalMessageCount);
         progressVo.setCompleteMessageCount(0);
         progressVo.setPercentage(0);
-        progressVo.setDetailsList(detailsList);
+        progressVo.setInit(false);
+        RedisCache.set(RedisConstant.PROGRESS_KEY + email, progressVo);
+
+        ThreadUtil.sleep(1000L);
 
+        MessageVo messageVo = EmailEngineUtil.getMessageList(email, bindingVo.getPath(), 1);
+        progressVo.setInit(true);
+        progressVo.setTotalMessageCount(messageVo.getTotal() > pages * 10 ? pages * 10 : messageVo.getTotal());
         RedisCache.set(RedisConstant.PROGRESS_KEY + email, progressVo);
     }
 
     /**
      * 异步读取文件
      */
-    private void asyncReadEmail(String email, int pages, List<EmailMailbox> emailMailboxList) {
+    private void asyncReadEmail(Long emailInfoId, BindingVo bindingVo) {
+        String email = bindingVo.getEmail();
+        int pages = bindingVo.getPages();
+        String mailbox = bindingVo.getPath();
+
         executor.execute(() -> {
             ThreadUtil.sleep(3000);
 
             // 记录上次消息id,防止循环查询分页过程中接收到了新邮件,出现邮件重复问题
             List<String> lastMessageIdList = new ArrayList<>();
 
-            // 遍历每个邮箱
-            for (EmailMailbox emailMailbox : emailMailboxList) {
-                int page = 0;
-                while (page < pages) {
-                    MessageVo result = EmailEngineUtil.getMessageList(email, emailMailbox.getPath(), page);
-                    List<MessageVo.MessagesDTO> messagesDTOList = result.getMessages();
-                    if (messagesDTOList.size() > 0) {
-                        List<EmailMessage> emailMessageList = this.saveBatchMessage(email, lastMessageIdList, emailMailbox, messagesDTOList);
-                        this.synchronizationProgress(email, messagesDTOList, emailMailbox);
-
-                        lastMessageIdList.clear();
-                        for (EmailMessage emailMessage : emailMessageList) {
-                            lastMessageIdList.add(emailMessage.getMessageId());
-                        }
+            int page = 0;
+            while (page < pages) {
+                MessageVo result = EmailEngineUtil.getMessageList(email, mailbox, page);
+                List<MessageVo.MessagesDTO> messagesDTOList = result.getMessages();
+                if (messagesDTOList.size() > 0) {
+                    // 批量保存邮件信息
+                    List<EmailMessage> emailMessageList = this.saveBatchMessage(emailInfoId, email, lastMessageIdList, messagesDTOList);
+
+                    // 更新同步邮件进度
+                    this.synchronizationProgress(email, messagesDTOList);
+
+                    // 记录上次保存的邮件id
+                    lastMessageIdList.clear();
+                    for (EmailMessage emailMessage : emailMessageList) {
+                        lastMessageIdList.add(emailMessage.getMessageId());
                     }
-                    page++;
+
+                    ThreadUtil.sleep(3000);
                 }
+                page++;
             }
+
         });
     }
 
     /**
      * 批量保存邮件信息
      */
-    private List<EmailMessage> saveBatchMessage(String email, List<String> lastMessageId, EmailMailbox emailMailbox, List<MessageVo.MessagesDTO> messageList) {
+    private List<EmailMessage> saveBatchMessage(Long emailInfoId, String email, List<String> lastMessageId, List<MessageVo.MessagesDTO> messageList) {
         List<EmailMessage> emailMessageList = new ArrayList<>();
         List<EmailMessageSend> emailMessageSendList = new ArrayList<>();
         List<EmailMessageAttachment> emailMessageAttachmentList = new ArrayList<>();
 
         for (MessageVo.MessagesDTO messagesDTO : messageList) {
+
             // 已添加过的邮件则跳过
             if (lastMessageId.contains(messagesDTO.getId())) {
                 continue;
             }
 
             // 生成邮件实体
-            EmailMessage emailMessage = this.createMessage(email, emailMailbox, messagesDTO);
+            EmailMessage emailMessage = this.createMessage(emailInfoId, email, messagesDTO);
             emailMessageList.add(emailMessage);
 
             // 添加推送信息
@@ -240,15 +216,13 @@ public class AccountServiceImpl implements IAccountService {
     /**
      * 生成邮件实体
      */
-    private EmailMessage createMessage(String email, EmailMailbox emailMailbox, MessageVo.MessagesDTO messagesDTO) {
+    private EmailMessage createMessage(Long emailInfoId, String email, MessageVo.MessagesDTO messagesDTO) {
 
         EmailMessage emailMessage = new EmailMessage();
         emailMessage.setId(IdWorker.getId());
         emailMessage.setMessageId(messagesDTO.getId());
-        emailMessage.setEmailInfoId(emailMailbox.getEmailInfoId());
-        emailMessage.setEmail(emailMailbox.getEmail());
-        emailMessage.setEmailMailboxId(emailMailbox.getId());
-        emailMessage.setEmailMailboxPath(emailMailbox.getPath());
+        emailMessage.setEmailInfoId(emailInfoId);
+        emailMessage.setEmail(email);
         emailMessage.setUnseen(messagesDTO.getUnseen());
         emailMessage.setFlagged(messagesDTO.getFlagged());
         emailMessage.setSubject(messagesDTO.getSubject());
@@ -357,26 +331,11 @@ public class AccountServiceImpl implements IAccountService {
     /**
      * 同步邮件进度
      */
-    private void synchronizationProgress(String email, List<MessageVo.MessagesDTO> messagesDTOList, EmailMailbox emailMailbox) {
-
+    private void synchronizationProgress(String email, List<MessageVo.MessagesDTO> messagesDTOList) {
         ProgressVo progressVo = RedisCache.get(RedisConstant.PROGRESS_KEY + email);
         int completeMessageCount = progressVo.getCompleteMessageCount() + messagesDTOList.size();
         progressVo.setCompleteMessageCount(completeMessageCount);
         progressVo.setPercentage(100 * completeMessageCount / progressVo.getTotalMessageCount());
-
-        for (ProgressVo.Details details : progressVo.getDetailsList()) {
-            if (details.getPath().equals(emailMailbox.getPath())) {
-                int detailsCompleteMessageCount = details.getCompleteMessageCount() + messagesDTOList.size();
-                details.setCompleteMessageCount(detailsCompleteMessageCount);
-                if (details.getMessages() == 0) {
-                    details.setPercentage(100);
-                } else {
-                    details.setPercentage(100 * detailsCompleteMessageCount / details.getMessages());
-                }
-                break;
-            }
-        }
-
         RedisCache.set(RedisConstant.PROGRESS_KEY + email, progressVo);
     }
 
@@ -386,17 +345,14 @@ public class AccountServiceImpl implements IAccountService {
     private void handleMessageNewEvent(ListenerVo listenerVo) {
         // 查询邮箱
         String account = listenerVo.getAccount();
-        String path = listenerVo.getPath();
 
-        EmailMailbox emailMailbox;
+        EmailInfo emailInfo;
         try {
-            emailMailbox = RetryUtil.execute(() -> {
-                EmailMailbox tempEmailMailbox = emailMailboxService.getOne(Wrappers.<EmailMailbox>lambdaQuery()
-                        .eq(EmailMailbox::getPath, path)
-                        .eq(EmailMailbox::getEmail, account)
-                );
-                Assert.notNull(tempEmailMailbox, "未找到邮箱信息");
-                return tempEmailMailbox;
+            emailInfo = RetryUtil.execute(() -> {
+                EmailInfo tempEmailInfo = emailInfoService.getOne(Wrappers.<EmailInfo>lambdaQuery()
+                        .eq(EmailInfo::getEmail, account));
+                Assert.notNull(tempEmailInfo, "未找到邮箱信息");
+                return tempEmailInfo;
             });
         } catch (Exception e) {
             log.error("查找邮箱失败", e);
@@ -407,7 +363,7 @@ public class AccountServiceImpl implements IAccountService {
         MessageVo.MessagesDTO messagesDTO = listenerVo.getData().toJavaObject(MessageVo.MessagesDTO.class);
 
         // 保存邮件
-        EmailMessage emailMessage = this.createMessage(account, emailMailbox, messagesDTO);
+        EmailMessage emailMessage = this.createMessage(emailInfo.getId(), emailInfo.getEmail(), messagesDTO);
         emailMessageService.save(emailMessage);
 
         // 保存推送人信息
@@ -437,48 +393,4 @@ public class AccountServiceImpl implements IAccountService {
         log.error("邮件flag改变:{}", JSON.toJSONString(listenerVo));
     }
 
-    /**
-     * 新增文件夹事件
-     */
-    private void handleMailboxNewEvent(ListenerVo listenerVo) {
-
-        EmailMailboxVo.MailboxesDTO mailboxesDTO = listenerVo.getData().toJavaObject(EmailMailboxVo.MailboxesDTO.class);
-
-        EmailInfo emailInfo = emailInfoService.getOne(
-                Wrappers.<EmailInfo>lambdaQuery().eq(EmailInfo::getEmail, listenerVo.getAccount()));
-
-        EmailMailbox emailMailbox = new EmailMailbox();
-        emailMailbox.setEmailInfoId(emailInfo.getId());
-        emailMailbox.setEmail(emailInfo.getEmail());
-        emailMailbox.setName(mailboxesDTO.getName());
-        emailMailbox.setPath(mailboxesDTO.getPath());
-        emailMailbox.setIsShow(true);
-        emailMailbox.setInitialize(true);
-        emailMailboxService.save(emailMailbox);
-    }
-
-    /**
-     * 删除文件夹事件
-     */
-    private void handleMailboxDeleteEvent(ListenerVo listenerVo) {
-        EmailMailboxVo.MailboxesDTO mailboxesDTO = listenerVo.getData().toJavaObject(EmailMailboxVo.MailboxesDTO.class);
-
-        boolean remove = emailMailboxService.remove(Wrappers.<EmailMailbox>lambdaQuery()
-                .eq(EmailMailbox::getPath, mailboxesDTO.getPath())
-                .eq(EmailMailbox::getEmail, listenerVo.getAccount())
-        );
-
-        if (!remove) {
-            log.error("文件夹删除失败:email '{}',path '{}'", listenerVo.getAccount(), mailboxesDTO.getPath());
-        }
-
-    }
-
-    /**
-     * 更新文件夹事件
-     */
-    public void handleMailboxResetEvent(ListenerVo listenerVo) {
-        log.error("更新文件夹:{}", JSON.toJSONString(listenerVo));
-    }
-
 }

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

@@ -5,9 +5,10 @@ import cn.hutool.core.lang.Assert;
 import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.fjhx.config.exception.ServiceException;
 import com.fjhx.vo.*;
+import com.sun.istack.internal.NotNull;
 import lombok.extern.slf4j.Slf4j;
-import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.client.ClientHttpResponse;
@@ -16,7 +17,9 @@ import org.springframework.web.client.ResponseErrorHandler;
 import org.springframework.web.client.RestTemplate;
 
 import java.io.*;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @Slf4j
 @Component
@@ -30,6 +33,7 @@ public class EmailEngineUtil {
 
     static {
         restTemplate.setErrorHandler(new ResponseErrorHandler() {
+
             @Override
             public boolean hasError(@NotNull ClientHttpResponse response) throws IOException {
                 HttpStatus.Series series = response.getStatusCode().series();
@@ -41,8 +45,16 @@ public class EmailEngineUtil {
                 InputStream body = response.getBody();
                 byte[] bytes = new byte[body.available()];
                 body.read(bytes);
-                throw new RuntimeException(new String(bytes));
+                String result = new String(bytes);
+
+                HttpStatus.Series series = response.getStatusCode().series();
+                if (HttpStatus.Series.CLIENT_ERROR.equals(series)) {
+                    throw new ServiceException(result);
+                }
+
+                throw new RuntimeException(result);
             }
+
         });
     }
 
@@ -67,7 +79,7 @@ public class EmailEngineUtil {
         // 解析验证结果
         parsingVerifyResult(verifyResult);
         // 生成添加账号入参
-        AddAccountVo addAccountVo = createAddAccountVo(verifyVo, bindingVo.getEmail());
+        AddAccountVo addAccountVo = createAddAccountVo(verifyVo, bindingVo.getEmail(), bindingVo.getPath());
         // 添加邮箱
         AddAccountResult addAccountResult = post("v1/account", addAccountVo, AddAccountResult.class);
         // 验证邮箱添加状态
@@ -75,10 +87,17 @@ public class EmailEngineUtil {
     }
 
     /**
+     * 删除邮箱
+     */
+    public static void deleteAccount(String email) {
+        delete("v1/account/" + email, new HashMap<>());
+    }
+
+    /**
      * 查看邮箱所有文件夹
      */
     public static List<EmailMailboxVo.MailboxesDTO> getMailboxList(String email) {
-        String url = "v1/account/" + email + "/mailboxes?counters=false";
+        String url = "v1/account/" + email + "/mailboxes?counters=true";
         EmailMailboxVo result = get(url, EmailMailboxVo.class);
         return result.getMailboxes();
     }
@@ -171,12 +190,12 @@ public class EmailEngineUtil {
     /**
      * 生成添加账号入参
      */
-    private static AddAccountVo createAddAccountVo(VerifyVo verifyVo, String email) {
+    private static AddAccountVo createAddAccountVo(VerifyVo verifyVo, String email, String path) {
         AddAccountVo addAccountVo = BeanUtil.copyProperties(verifyVo, AddAccountVo.class);
         addAccountVo.setAccount(email);
         addAccountVo.setName(email);
         addAccountVo.setEmail(email);
-        addAccountVo.setPath("*");
+        addAccountVo.setPath(path);
         return addAccountVo;
     }
 
@@ -199,6 +218,8 @@ public class EmailEngineUtil {
     public static <T> T get(String url, Class<T> cls) {
         try {
             return RetryUtil.execute(() -> restTemplate.getForObject(urlPrefix + url, cls), 5, 5000L);
+        } catch (ServiceException e) {
+            throw e;
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
@@ -207,6 +228,21 @@ public class EmailEngineUtil {
     public static <T> T post(String url, Object paramObj, Class<T> cls) {
         try {
             return RetryUtil.execute(() -> restTemplate.postForObject(urlPrefix + url, paramObj, cls), 5, 3000L);
+        } catch (ServiceException e) {
+            throw e;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public static void delete(String url, Map<String, Object> map) {
+        try {
+            RetryUtil.execute(() -> {
+                restTemplate.delete(urlPrefix + url, map);
+                return null;
+            }, 5, 3000L);
+        } catch (ServiceException e) {
+            throw e;
         } catch (Exception e) {
             throw new RuntimeException(e);
         }

+ 4 - 1
src/main/java/com/fjhx/utils/RetryUtil.java

@@ -1,6 +1,7 @@
 package com.fjhx.utils;
 
 import cn.hutool.core.thread.ThreadUtil;
+import com.fjhx.config.exception.ServiceException;
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
@@ -32,11 +33,13 @@ public class RetryUtil {
     private static <T> T execute(RetryRunnable<T> runnable, int executeCount, int maxCount, Long sleep) throws Exception {
         try {
             return runnable.run();
+        } catch (ServiceException e) {
+            throw e;
         } catch (Exception e) {
             if (executeCount >= maxCount) {
                 throw e;
             }
-            log.warn("任务执行失败,已失败{}次,最多允许失败{}次,{}秒后开始重试", executeCount + 1, maxCount, sleep / 1000, e);
+            // log.warn("任务执行失败,已失败{}次,最多允许失败{}次,{}秒后开始重试", executeCount + 1, maxCount, sleep / 1000, e);
             ThreadUtil.sleep(sleep);
             return execute(runnable, ++executeCount, maxCount, sleep);
         }

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

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

+ 2 - 23
src/main/java/com/fjhx/vo/ProgressVo.java

@@ -3,7 +3,6 @@ package com.fjhx.vo;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.util.List;
 
 @Data
 public class ProgressVo implements Serializable {
@@ -31,28 +30,8 @@ public class ProgressVo implements Serializable {
     private Integer percentage;
 
     /**
-     * 明细
+     * 是否初始化
      */
-    private List<Details> detailsList;
-
-    /**
-     * 明细类
-     */
-    @Data
-    public static class Details implements Serializable {
-        private static final long serialVersionUID = 1L;
-
-        private String path;
-
-        private String name;
-
-        private Integer messages;
-
-        private Integer completeMessageCount;
-
-        private Integer percentage;
-
-    }
-
+    private Boolean init;
 
 }

+ 7 - 9
src/main/resources/application-dev.yml

@@ -4,11 +4,10 @@ server:
 # 数据源配置
 spring:
   datasource:
-    druid:
-      driver-class-name: com.mysql.cj.jdbc.Driver
-      url: jdbc:mysql://36.134.91.96:17330/service_email?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-      username: fjhx2012mysql
-      password: 3PN-Mzn#vnP&q6d
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    url: jdbc:mysql://36.134.91.96:17330/service_email?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+    username: fjhx2012mysql
+    password: 3PN-Mzn#vnP&q6d
 
   redis:
     # 地址
@@ -20,10 +19,9 @@ spring:
     # 数据库索引
     database: 0
 
-mybatis-plus:
-  configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-
+#mybatis-plus:
+#  configuration:
+#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 
 config:
   urlPrefix: http://localhost:3000/

+ 4 - 5
src/main/resources/application-pro.yml

@@ -4,11 +4,10 @@ server:
 # 数据源配置
 spring:
   datasource:
-    druid:
-      driver-class-name: com.mysql.cj.jdbc.Driver
-      url: jdbc:mysql://36.134.91.96:17330/service_email?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-      username: fjhx2012mysql
-      password: 3PN-Mzn#vnP&q6d
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    url: jdbc:mysql://36.134.91.96:17330/service_email?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+    username: fjhx2012mysql
+    password: 3PN-Mzn#vnP&q6d
 
   redis:
     # 地址

+ 0 - 55
src/main/resources/application.yml

@@ -9,61 +9,6 @@ spring:
     date-format: yyyy-MM-dd HH:mm:ss
     time-zone: GMT+8
 
-  datasource:
-    druid:
-      # 初始连接数
-      initialSize: 10
-      # 最小连接池数量
-      minIdle: 10
-      # 最大连接池数量
-      maxActive: 100
-      # 配置获取连接等待超时的时间
-      maxWait: 60000
-      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
-      timeBetweenEvictionRunsMillis: 60000
-      # 配置一个连接在池中最小生存的时间,单位是毫秒
-      minEvictableIdleTimeMillis: 300000
-      # 配置一个连接在池中最大生存的时间,单位是毫秒
-      maxEvictableIdleTimeMillis: 900000
-      # 配置检测连接是否有效
-      validationQuery: SELECT 1 FROM DUAL
-      testWhileIdle: true
-      testOnBorrow: false
-      testOnReturn: false
-      poolPreparedStatements: true
-      maxPoolPreparedStatementPerConnectionSize: 20
-      useGlobalDataSourceStat: true
-      webStatFilter:
-        enabled: true
-        exclusions:
-          - "*.js"
-          - "/druid/*"
-      statViewServlet:
-        enabled: true
-        # 设置白名单,不填则允许所有访问
-        allow:
-        urlPattern: /druid/*
-        # 控制台管理用户名和密码
-        loginUsername: superAdmin
-        loginPassword: 123456
-      filter:
-        #配置StatFilter (SQL监控配置)
-        stat:
-          enabled: true #开启 SQL 监控
-          logSlowSql: true  #记录慢查询 SQL
-          slowSqlMillis: 1000 #多长时间算慢查询
-          mergeSql: true # 条件参数化作为一条sql统计
-
-        #配置WallFilter (防火墙配置)
-        wall:
-          enabled: true #开启防火墙
-          config:
-            dropTableAllow: false #禁止删表操作
-            updateAllow: true #允许更新操作
-            insertAllow: true #允许插入操作
-            deleteAllow: true #允许删除操作
-            multiStatementAllow: true #支持一次执行多条sql
-
   redis:
     # 连接超时时间
     timeout: 10s