瀏覽代碼

feat:邮件解析-开放邮件解析和重新解析接口

mozuwen 7 月之前
父節點
當前提交
31ea1f2bab

+ 6 - 0
service-base/src/main/java/com/simuwang/base/mapper/EmailFileInfoMapper.java

@@ -1,13 +1,19 @@
 package com.simuwang.base.mapper;
 
 import com.simuwang.base.pojo.dos.EmailFileInfoDO;
+import com.simuwang.base.pojo.dos.EmailParseInfoDO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 @Mapper
 public interface EmailFileInfoMapper {
 
     Integer insert(@Param("itemDo") EmailFileInfoDO emailFileInfoDO);
 
     EmailFileInfoDO getEmailFileById(@Param("id") Integer fileId);
+
+    List<EmailParseInfoDO> queryByEmailId(@Param("emailId") Integer emailId);
+
 }

+ 3 - 0
service-base/src/main/java/com/simuwang/base/mapper/EmailParseInfoMapper.java

@@ -19,4 +19,7 @@ public interface EmailParseInfoMapper {
     EmailParseInfoVO searchEmailById(@Param("id") Integer id);
 
     Integer searchEmailCount(@Param("parseDate") String parseDate, @Param("parseStatus")Integer parseStatus);
+
+    EmailParseInfoDO queryById(@Param("id") Integer id);
+
 }

+ 6 - 0
service-base/src/main/resources/mapper/EmailFileInfoMapper.xml

@@ -28,5 +28,11 @@
         from PPW_EMAIL.email_file_info where id=#{id} and isvalid=1
     </select>
 
+    <select id="queryByEmailId" resultMap="BaseResultMap">
+        select id, file_name, file_path,
+        from PPW_EMAIL.email_file_info
+        where email - id = #{emailId}
+          and isvalid = 1
+    </select>
 
 </mapper>

+ 7 - 0
service-base/src/main/resources/mapper/EmailParseInfoMapper.xml

@@ -97,4 +97,11 @@
         </if>
     </select>
 
+    <select id="queryById" resultMap="BaseResultMap">
+        select id, email, email_date, parse_date, email_title, email_type
+        from PPW_EMAIL.email_parse_info
+        where isvalid = 1
+          and id = #{id}
+    </select>
+
 </mapper>

+ 30 - 0
service-daq/src/main/java/com/simuwang/daq/service/EmailParseApiService.java

@@ -0,0 +1,30 @@
+package com.simuwang.daq.service;
+
+import com.simuwang.base.pojo.dto.MailboxInfoDTO;
+
+import java.util.Date;
+
+/**
+ * @author mozuwen
+ * @date 2024-09-12
+ * @description 邮件解析服务对外接口
+ */
+public interface EmailParseApiService {
+
+    /**
+     * 解析指定邮箱指定时间范围内的邮件
+     *
+     * @param mailboxInfoDTO 邮箱配置信息
+     * @param startDate      邮件起始日期(yyyy-MM-dd HH:mm:ss)
+     * @param endDate        邮件截止日期(yyyy-MM-dd HH:mm:ss, 为null,将解析邮件日期小于等于startDate的当天邮件)
+     */
+    void parseEmail(MailboxInfoDTO mailboxInfoDTO, Date startDate, Date endDate);
+
+    /**
+     * 重新解析指定邮件
+     *
+     * @param emailId 邮件id
+     */
+    void reparseEmail(Integer emailId);
+
+}

+ 56 - 0
service-daq/src/main/java/com/simuwang/daq/service/EmailParseApiServiceImpl.java

@@ -0,0 +1,56 @@
+package com.simuwang.daq.service;
+
+import cn.hutool.core.collection.CollUtil;
+import com.simuwang.base.mapper.EmailFileInfoMapper;
+import com.simuwang.base.mapper.EmailParseInfoMapper;
+import com.simuwang.base.pojo.dos.EmailParseInfoDO;
+import com.simuwang.base.pojo.dto.MailboxInfoDTO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author mozuwen
+ * @date 2024-09-12
+ * @description 邮件解析服务对外接口实现层
+ */
+@Service
+public class EmailParseApiServiceImpl implements EmailParseApiService {
+
+    private static final Logger log = LoggerFactory.getLogger(EmailParseApiServiceImpl.class);
+
+    private final EmailParseService emailParseService;
+    private final EmailParseInfoMapper emailParseInfoMapper;
+    private final EmailFileInfoMapper emailFileInfoMapper;
+
+    public EmailParseApiServiceImpl(EmailParseService emailParseService, EmailParseInfoMapper emailParseInfoMapper,
+                                    EmailFileInfoMapper emailFileInfoMapper) {
+        this.emailParseService = emailParseService;
+        this.emailParseInfoMapper = emailParseInfoMapper;
+        this.emailFileInfoMapper = emailFileInfoMapper;
+    }
+
+    @Override
+    public void parseEmail(MailboxInfoDTO mailboxInfoDTO, Date startDate, Date endDate) {
+        emailParseService.parseEmail(mailboxInfoDTO, startDate, endDate);
+    }
+
+    @Override
+    public void reparseEmail(Integer emailId) {
+        // 查询邮件信息
+        EmailParseInfoDO emailParseInfoDO = emailParseInfoMapper.queryById(emailId);
+        if (emailParseInfoDO == null) {
+            log.info("邮件不存在 ->邮件id:{}", emailId);
+            return;
+        }
+        List<EmailParseInfoDO> emailParseInfoDOList = emailFileInfoMapper.queryByEmailId(emailId);
+        if (CollUtil.isNotEmpty(emailParseInfoDOList)) {
+            log.info("该邮件不存在附件 -> 邮件id:{}", emailId);
+            return;
+        }
+        // todo 走解析流程
+    }
+}