123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package com.simuwang.manage.init;
- import cn.hutool.crypto.asymmetric.KeyType;
- import cn.hutool.crypto.asymmetric.RSA;
- import com.alibaba.fastjson2.JSON;
- import com.simuwang.base.common.enums.OpenStatusType;
- import com.simuwang.base.common.util.DateUtils;
- import com.simuwang.base.common.util.QuartzUtils;
- import com.simuwang.base.config.DaqProperties;
- import com.simuwang.base.pojo.dos.MailboxInfoDO;
- import com.simuwang.base.pojo.dto.MailboxInfoDTO;
- import com.simuwang.base.pojo.dto.QuartzBean;
- import com.simuwang.manage.service.EmailConfigService;
- import org.quartz.Scheduler;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.boot.ApplicationArguments;
- import org.springframework.boot.ApplicationRunner;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.core.annotation.Order;
- import java.util.List;
- /**
- * 定时任务启动类
- * Author: chenjianhua
- * Date: 2024/9/17 11:55
- * Description: ${DESCRIPTION}
- */
- @Configuration
- @Order(2)
- public class QuartzConfig implements ApplicationRunner {
- @Autowired
- private Scheduler scheduler;
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
- @Autowired
- private EmailConfigService emailConfigService;
- @Value("${spring.task.groupName}")
- private String groupName;
- @Autowired
- private DaqProperties properties;
- private String JOB_CLASS="com.simuwang.manage.task.ParseSchedulerTask";
- @Override
- public void run(ApplicationArguments args){
- List<MailboxInfoDO> mailboxInfoDOS = emailConfigService.getAll();
- for(MailboxInfoDO mailboxInfoDO : mailboxInfoDOS){
- try{
- QuartzBean quartzBean = new QuartzBean();
- quartzBean.setCronExpression(mailboxInfoDO.getCron());
- quartzBean.setStatus(mailboxInfoDO.getOpenStatus());
- quartzBean.setGroupName(groupName);
- quartzBean.setJobName(mailboxInfoDO.getEmail());
- quartzBean.setJobClass(JOB_CLASS);
- //请求参数
- MailboxInfoDTO paramDTO = new MailboxInfoDTO();
- paramDTO.setAccount(mailboxInfoDO.getEmail());
- String password = mailboxInfoDO.getPassword();
- try{
- String privateKey = this.properties.getSecurityRsa().getPrivateKey();
- password = new RSA(privateKey, null).decryptStr(password, KeyType.PrivateKey);
- }catch (Exception e){
- logger.error(e.getMessage(),e);
- }
- paramDTO.setPassword(password);
- paramDTO.setPort(mailboxInfoDO.getPort());
- paramDTO.setHost(mailboxInfoDO.getServer());
- paramDTO.setProtocol(mailboxInfoDO.getProtocol());
- quartzBean.setJobParam(JSON.toJSONString(paramDTO));
- if(mailboxInfoDO.getOpenStatus() != null && mailboxInfoDO.getOpenStatus().equals(OpenStatusType.YES.getCode())){
- logger.info(quartzBean.getJobName()+":创建定时任务"+ DateUtils.getNowDate());
- QuartzUtils.createScheduleJob(scheduler,quartzBean);
- }
- }catch (Exception e) {
- logger.error(e.getMessage(),e);
- }
- }
- }
- }
|