Forráskód Böngészése

feat:优化接口代码和增加相关日志记录

mozuwen 1 hete
szülő
commit
29c2aeea44

+ 1 - 13
service-base/src/main/java/com/simuwang/base/pojo/CoreMailAttachmentDTO.java

@@ -13,23 +13,11 @@ public class CoreMailAttachmentDTO {
      */
     private String filename;
     /**
-     * 附件类型
-     */
-    private String contentType;
-    /**
-     * 内容长度
-     */
-    private long contentLength;
-    /**
      * 编码方式
      */
     private String encoding;
     /**
-     * 附件名称
+     * 内容偏移量
      */
     private int contentOffset;
-    /**
-     * 附件大小估算值
-     */
-    private int estimateSize;
 }

+ 0 - 3
service-base/src/main/java/com/simuwang/base/pojo/dos/CoreMailInfoDTO.java

@@ -8,13 +8,10 @@ import java.util.Date;
 public class CoreMailInfoDTO {
     private String id;
     private Integer fid;
-    private Long size;
     private String from;
     private String to;
     private String subject;
     private Date sentDate;
     private Date receivedDate;
     private Date modifiedDate;
-    private Integer priority;
-    private Date defer;
 }

+ 10 - 19
service-base/src/main/java/com/simuwang/base/pojo/dos/CoreMailInfoParam.java

@@ -6,35 +6,26 @@ import lombok.Data;
 public class CoreMailInfoParam {
     private String mboxa = ""; // 默认 ""
     private int fid;
-    private String order = "date"; // 默认 "date"
+    private String order ="date"; // 默认 "date"
+    private boolean desc = true;
     private int start = 0; // 默认 0
     private int limit = -1; // 默认 -1,表示不分页
     private FilterCondition filter;
-    private boolean returnTotal = false; // 默认 false
+    private boolean returnTotal = true; // 默认 false
 
     public static class FilterCondition {
-        private String received; // 收件时间过滤条件
-        private String subject;  // 主题关键词过滤
+        private String receivedDate;
 
-        public FilterCondition(String received, String subject) {
-            this.received = received;
-            this.subject = subject;
+        public FilterCondition(String receivedDate) {
+            this.receivedDate = receivedDate;
         }
 
-        public String getReceived() {
-            return received;
+        public String getReceivedDate() {
+            return receivedDate;
         }
 
-        public void setReceived(String received) {
-            this.received = received;
-        }
-
-        public String getSubject() {
-            return subject;
-        }
-
-        public void setSubject(String subject) {
-            this.subject = subject;
+        public void setReceivedDate(String receivedDate) {
+            this.receivedDate = receivedDate;
         }
     }
 }

+ 4 - 4
service-daq/src/main/java/com/simuwang/daq/service/CoreMailApiService.java

@@ -110,7 +110,7 @@ public class CoreMailApiService {
                     resp = EntityUtils.toString(responseEntity);
                 }
             }
-            log.info("获取邮箱文件夹接口响应体:{}", resp);
+            // log.info("获取邮箱文件夹接口响应体:{}", resp);
             if (StrUtil.isBlank(resp)) {
                 log.warn("获取邮箱文件夹接口返回空响应");
                 return CollUtil.newArrayList();
@@ -137,7 +137,7 @@ public class CoreMailApiService {
         String url = coreMailUrl + "/coremail/s/json?func=mbox:listMessages&sid=" + token;
         CoreMailInfoParam coreMailInfoParam = new CoreMailInfoParam();
         coreMailInfoParam.setFid(folderId);
-        coreMailInfoParam.setFilter(new CoreMailInfoParam.FilterCondition("3:", "净值"));
+        coreMailInfoParam.setFilter(new CoreMailInfoParam.FilterCondition("1:"));
         String bodyParam = JSONObject.toJSONString(coreMailInfoParam);
         log.info("获取邮件接口请求体 -> url:{}, bodyParam:{}", url, bodyParam);
         String resp = null;
@@ -156,7 +156,7 @@ public class CoreMailApiService {
                     resp = EntityUtils.toString(responseEntity);
                 }
             }
-            log.info("获取邮件接口响应体:{}", resp);
+            // log.info("获取邮件接口响应体:{}", resp);
             if (StrUtil.isBlank(resp)) {
                 log.warn("获取邮件接口返回空响应");
                 return CollUtil.newArrayList();
@@ -197,7 +197,7 @@ public class CoreMailApiService {
                     resp = EntityUtils.toString(responseEntity);
                 }
             }
-            log.info("获取邮件附件接口响应体:{}", resp);
+            // log.info("获取邮件附件接口响应体:{}", resp);
             JSONObject jsonObject = JSONObject.parseObject(resp);
             if (jsonObject == null) {
                 return CollUtil.newArrayList();

+ 32 - 13
service-daq/src/main/java/com/simuwang/daq/service/ReadEmailService.java

@@ -19,7 +19,6 @@ import java.io.File;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
-import java.util.UUID;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
@@ -28,6 +27,7 @@ import java.util.stream.Collectors;
 public class ReadEmailService {
 
     private static final Logger log = LoggerFactory.getLogger(ReadEmailService.class);
+
     private final CoreMailApiService coreMailApiService;
 
     public ReadEmailService(CoreMailApiService coreMailApiService) {
@@ -61,40 +61,59 @@ public class ReadEmailService {
         // 获取邮件
         List<CoreMailInfoDTO> coreMailInfoDTOList = coreMailApiService.getFolderMails(token, cookie, folderId);
         // 过滤符合解析要求的邮件
-        List<CoreMailInfoDTO> readEmailDTOList = coreMailInfoDTOList.stream()
-                .filter(e -> e.getFid().equals(folderId))
-                .filter(e -> filterBySubject(e.getSubject()))
-                .filter(e -> filterByEmailDate(e.getReceivedDate(), startDate, endDate)).toList();
+        List<CoreMailInfoDTO> readEmailDTOList = CollUtil.newArrayList();
+        for (CoreMailInfoDTO coreMailInfoDTO : coreMailInfoDTOList) {
+            String emailDate = DateUtil.format(coreMailInfoDTO.getSentDate(), DateConst.YYYY_MM_DD_HH_MM_SS);
+            if (!coreMailInfoDTO.getFid().equals(folderId)) {
+                log.info("非收件箱邮件,不解析 -> 邮件主题:{}, 日期:{}", coreMailInfoDTO.getSubject(), emailDate);
+                continue;
+            }
+            if (!filterBySubject(coreMailInfoDTO.getSubject())) {
+                log.info("主题不满足解析条件 -> 邮件主题:{}, 日期:{}", coreMailInfoDTO.getSubject(), emailDate);
+                continue;
+            }
+            if (!filterByEmailDate(coreMailInfoDTO.getReceivedDate(), startDate, endDate)) {
+                log.info("日期不满足解析条件 -> 邮件主题:{}, 日期:{}", coreMailInfoDTO.getSubject(), emailDate);
+                continue;
+            }
+            readEmailDTOList.add(coreMailInfoDTO);
+        }
+
         if (CollUtil.isEmpty(readEmailDTOList)) {
-            log.error("获取不到邮件");
+            log.info("获取不到满足解析的条件邮件");
             return emailKeyFileMap;
         }
-        Map<String, CoreMailInfoDTO> emailIdInfoMap = coreMailInfoDTOList.stream()
-                .collect(Collectors.toMap(CoreMailInfoDTO::getId, e -> e));
+        Map<String, CoreMailInfoDTO> emailIdInfoMap = coreMailInfoDTOList.stream().collect(Collectors.toMap(CoreMailInfoDTO::getId, e -> e));
         // 根据邮件id获取邮件内容
         List<String> mailIdList = readEmailDTOList.stream().map(CoreMailInfoDTO::getId).toList();
         for (String mailId : mailIdList) {
+            CoreMailInfoDTO coreMailInfoDTO = emailIdInfoMap.get(mailId);
+            String emailDate = DateUtil.format(coreMailInfoDTO.getSentDate(), DateConst.YYYY_MM_DD_HH_MM_SS);
             String mid = mailId.split(":")[1];
             // 获取邮件附件id(一封邮件可能有多个附件)
             List<CoreMailAttachmentDTO> attachmentDTOList = coreMailApiService.getAttachmentOfMail(token, cookie, mid);
             if (CollUtil.isEmpty(attachmentDTOList)) {
+                log.info("邮件没有附件,不解析 -> 邮件主题:{}, 日期:{}", coreMailInfoDTO.getSubject(), emailDate);
                 continue;
             }
-            String emailKey = UUID.randomUUID().toString().replace("-", "");
-            CoreMailInfoDTO coreMailInfoDTO = emailIdInfoMap.get(mailId);
             List<EmailContentInfoDTO> contentInfoDTOList = CollUtil.newArrayList();
             // 根据附件id下载附件
             for (CoreMailAttachmentDTO coreMailAttachmentDTO : attachmentDTOList) {
                 int attachmentId = coreMailAttachmentDTO.getId();
                 String filename = coreMailAttachmentDTO.getFilename();
+                if (StrUtil.isBlank(filename)) {
+                    log.info("邮件附件名称为空 -> 邮件主题:{}, 日期:{}", coreMailInfoDTO.getSubject(), emailDate);
+                    continue;
+                }
                 File file = coreMailApiService.getFileFromAttachmentMail(token, cookie, mid, attachmentId, filename);
                 if (file == null) {
+                    log.error("邮件附件下载失败 -> mid:{}, 邮件主题:{}, 日期:{}", mid, coreMailInfoDTO.getSubject(), emailDate);
                     continue;
                 }
                 EmailContentInfoDTO contentInfoDTO = new EmailContentInfoDTO();
                 contentInfoDTO.setEmailAddress(account);
                 contentInfoDTO.setEmailTitle(coreMailInfoDTO.getSubject());
-                contentInfoDTO.setEmailDate(DateUtil.format(coreMailInfoDTO.getReceivedDate(), DateConst.YYYY_MM_DD_HH_MM_SS));
+                contentInfoDTO.setEmailDate(emailDate);
                 contentInfoDTO.setFileName(filename);
                 contentInfoDTO.setFilePath(file.getAbsolutePath());
                 contentInfoDTO.setSenderEmail(extractEmail(coreMailInfoDTO.getFrom()));
@@ -102,14 +121,14 @@ public class ReadEmailService {
                 contentInfoDTOList.add(contentInfoDTO);
             }
             if (CollUtil.isNotEmpty(contentInfoDTOList)) {
-                emailKeyFileMap.put(emailKey, contentInfoDTOList);
+                emailKeyFileMap.put(mid, contentInfoDTOList);
             }
         }
         return emailKeyFileMap;
     }
 
     private String extractEmail(String address) {
-        if(StrUtil.isEmpty(address)) {
+        if (StrUtil.isEmpty(address)) {
             return "";
         }
         Pattern pattern = Pattern.compile("<([^>]+)>");

+ 1 - 1
service-deploy/src/main/resources/application.yml

@@ -97,4 +97,4 @@ simuwang:
       filters: jwt
 
 coremail:
-  url: http://bjmail.cicccs.group
+  url: https://mailrc.cicc.group

+ 7 - 5
service-deploy/src/test/java/com/simuwang/CoreMailTest.java

@@ -1,3 +1,4 @@
+/*
 package com.simuwang;
 
 import cn.hutool.core.date.DateTime;
@@ -19,15 +20,16 @@ public class CoreMailTest {
     @Test
     public void testRealMail(){
         MailboxInfoDTO mailboxInfoDTO = new MailboxInfoDTO();
-        mailboxInfoDTO.setAccount("xi.hu@cs.cicc.com.cn");
-        mailboxInfoDTO.setPassword("P_OGTY0J2aH");
+//        mailboxInfoDTO.setAccount("xi.hu@cs.cicc.com.cn");
+//        mailboxInfoDTO.setPassword("P_OGTY0J2aH");
 
-//        mailboxInfoDTO.setAccount("Jinxuancup@cicc.com.cn");
-//        mailboxInfoDTO.setPassword("fk*mYw823v");
-        String startDate = "2025-06-16";
+        mailboxInfoDTO.setAccount("Jinxuancup@cicc.com.cn");
+        mailboxInfoDTO.setPassword("fk*mYw823v");
+        String startDate = "2025-06-17 11:00:00";
         DateTime date = DateUtil.parse(startDate);
 
         readEmailService.readEmail(mailboxInfoDTO, date, new Date());
     }
 
 }
+*/