Browse Source

feat: 邮件指定时间区间解析

chenjianhua 7 months ago
parent
commit
a409092672

+ 28 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/ParseParamVO.java

@@ -0,0 +1,28 @@
+package com.simuwang.base.pojo.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * FileName: ParseParamVO
+ * Author:   chenjianhua
+ * Date:     2024/9/17 13:54
+ * Description: ${DESCRIPTION}
+ */
+@Data
+public class ParseParamVO {
+    /**
+     * 选择的ID列表
+     */
+    private List<Integer> idList;
+    /**
+     * 解析开始日期
+     */
+    private String startDate;
+    /**
+     * 解析结束日期
+     */
+    private String endDate;
+
+}

+ 11 - 0
service-manage/src/main/java/com/simuwang/manage/api/email/EmailConfigController.java

@@ -109,6 +109,17 @@ public class EmailConfigController extends BaseController {
     }
     }
 
 
     /**
     /**
+     * 手动触发指定时间区间的邮件解析
+     * @param parseParamVO
+     * @return
+     */
+    @RequestMapping("parse-email")
+    public boolean parseEmail(@RequestBody ParseParamVO parseParamVO){
+        emailConfigService.parseEmail(parseParamVO);
+        return true;
+    }
+
+    /**
      * 立即执行一次
      * 立即执行一次
      * @param idVO
      * @param idVO
      * @return
      * @return

+ 3 - 0
service-manage/src/main/java/com/simuwang/manage/service/EmailConfigService.java

@@ -6,6 +6,7 @@ import com.simuwang.base.pojo.dto.query.EmailPageQuery;
 import com.simuwang.base.pojo.vo.MailboxInfoTableVO;
 import com.simuwang.base.pojo.vo.MailboxInfoTableVO;
 import com.simuwang.base.pojo.vo.MailboxInfoVO;
 import com.simuwang.base.pojo.vo.MailboxInfoVO;
 import com.simuwang.base.pojo.vo.OpenStatusVO;
 import com.simuwang.base.pojo.vo.OpenStatusVO;
+import com.simuwang.base.pojo.vo.ParseParamVO;
 import com.smppw.common.pojo.ResultVo;
 import com.smppw.common.pojo.ResultVo;
 
 
 import java.util.List;
 import java.util.List;
@@ -36,4 +37,6 @@ public interface EmailConfigService {
     MailboxInfoDO selectEmailConfigByEmail(String email);
     MailboxInfoDO selectEmailConfigByEmail(String email);
 
 
     void runOnce(Integer id);
     void runOnce(Integer id);
+
+    void parseEmail(ParseParamVO parseParamVO);
 }
 }

+ 25 - 1
service-manage/src/main/java/com/simuwang/manage/service/impl/EmailConfigServiceImpl.java

@@ -15,6 +15,8 @@ import com.simuwang.base.pojo.dto.query.EmailPageQuery;
 import com.simuwang.base.pojo.vo.MailboxInfoTableVO;
 import com.simuwang.base.pojo.vo.MailboxInfoTableVO;
 import com.simuwang.base.pojo.vo.MailboxInfoVO;
 import com.simuwang.base.pojo.vo.MailboxInfoVO;
 import com.simuwang.base.pojo.vo.OpenStatusVO;
 import com.simuwang.base.pojo.vo.OpenStatusVO;
+import com.simuwang.base.pojo.vo.ParseParamVO;
+import com.simuwang.daq.service.EmailParseApiService;
 import com.simuwang.manage.service.EmailConfigService;
 import com.simuwang.manage.service.EmailConfigService;
 import com.smppw.common.pojo.ResultVo;
 import com.smppw.common.pojo.ResultVo;
 import jakarta.mail.MessagingException;
 import jakarta.mail.MessagingException;
@@ -27,7 +29,6 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
@@ -49,6 +50,9 @@ public class EmailConfigServiceImpl implements EmailConfigService {
     @Value("${spring.application.name}")
     @Value("${spring.application.name}")
     private String groupName;
     private String groupName;
 
 
+    @Autowired
+    private EmailParseApiService emailParseApiService;
+
     private String JOB_CLASS="com.simuwang.manage.task.ParseSchedulerTask";
     private String JOB_CLASS="com.simuwang.manage.task.ParseSchedulerTask";
     private static final Logger logger = LoggerFactory.getLogger(EmailConfigServiceImpl.class);
     private static final Logger logger = LoggerFactory.getLogger(EmailConfigServiceImpl.class);
 
 
@@ -175,6 +179,26 @@ public class EmailConfigServiceImpl implements EmailConfigService {
         QuartzUtils.runOnce(scheduler,mailboxInfoDO.getEmail());
         QuartzUtils.runOnce(scheduler,mailboxInfoDO.getEmail());
     }
     }
 
 
+    @Override
+    public void parseEmail(ParseParamVO parseParamVO) {
+        List<Integer> idList = parseParamVO.getIdList();
+        String startDate = parseParamVO.getStartDate();
+        String endDate = parseParamVO.getEndDate();
+        if(StringUtil.isNull(idList) || idList.size() < 1){
+            return;
+        }
+        for(Integer id : idList){
+            MailboxInfoDO mailboxInfoDO = emailConfigMapper.searchEmailConfigById(id);
+            MailboxInfoDTO mailboxInfoDTO = new MailboxInfoDTO();
+            mailboxInfoDTO.setAccount(mailboxInfoDO.getEmail());
+            mailboxInfoDTO.setPassword(mailboxInfoDO.getPassword());
+            mailboxInfoDTO.setPort(mailboxInfoDO.getPort());
+            mailboxInfoDTO.setHost(mailboxInfoDO.getServer());
+            mailboxInfoDTO.setProtocol(mailboxInfoDO.getProtocol());
+            emailParseApiService.parseEmail(mailboxInfoDTO,DateUtils.parse(startDate,DateUtils.YYYY_MM_DD),DateUtils.parse(endDate,DateUtils.YYYY_MM_DD));
+        }
+    }
+
     private MailboxInfoDO toMailboxInfoDO(MailboxInfoVO mailboxInfoVO) {
     private MailboxInfoDO toMailboxInfoDO(MailboxInfoVO mailboxInfoVO) {
         MailboxInfoDO mailboxInfoDO = new MailboxInfoDO();
         MailboxInfoDO mailboxInfoDO = new MailboxInfoDO();
         mailboxInfoDO.setIsvalid(1);
         mailboxInfoDO.setIsvalid(1);