QuartzConfig.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package com.simuwang.manage.init;
  2. import cn.hutool.crypto.asymmetric.KeyType;
  3. import cn.hutool.crypto.asymmetric.RSA;
  4. import com.alibaba.fastjson2.JSON;
  5. import com.simuwang.base.common.enums.OpenStatusType;
  6. import com.simuwang.base.common.util.DateUtils;
  7. import com.simuwang.base.common.util.QuartzUtils;
  8. import com.simuwang.base.config.DaqProperties;
  9. import com.simuwang.base.pojo.dos.MailboxInfoDO;
  10. import com.simuwang.base.pojo.dto.MailboxInfoDTO;
  11. import com.simuwang.base.pojo.dto.QuartzBean;
  12. import com.simuwang.manage.service.EmailConfigService;
  13. import org.quartz.Scheduler;
  14. import org.slf4j.Logger;
  15. import org.slf4j.LoggerFactory;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.beans.factory.annotation.Value;
  18. import org.springframework.boot.ApplicationArguments;
  19. import org.springframework.boot.ApplicationRunner;
  20. import org.springframework.context.annotation.Configuration;
  21. import org.springframework.core.annotation.Order;
  22. import java.util.List;
  23. /**
  24. * 定时任务启动类
  25. * Author: chenjianhua
  26. * Date: 2024/9/17 11:55
  27. * Description: ${DESCRIPTION}
  28. */
  29. @Configuration
  30. @Order(2)
  31. public class QuartzConfig implements ApplicationRunner {
  32. @Autowired
  33. private Scheduler scheduler;
  34. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  35. @Autowired
  36. private EmailConfigService emailConfigService;
  37. @Value("${spring.task.groupName}")
  38. private String groupName;
  39. @Autowired
  40. private DaqProperties properties;
  41. private String JOB_CLASS="com.simuwang.manage.task.ParseSchedulerTask";
  42. @Override
  43. public void run(ApplicationArguments args){
  44. List<MailboxInfoDO> mailboxInfoDOS = emailConfigService.getAll();
  45. for(MailboxInfoDO mailboxInfoDO : mailboxInfoDOS){
  46. try{
  47. QuartzBean quartzBean = new QuartzBean();
  48. quartzBean.setCronExpression(mailboxInfoDO.getCron());
  49. quartzBean.setStatus(mailboxInfoDO.getOpenStatus());
  50. quartzBean.setGroupName(groupName);
  51. quartzBean.setJobName(mailboxInfoDO.getEmail());
  52. quartzBean.setJobClass(JOB_CLASS);
  53. //请求参数
  54. MailboxInfoDTO paramDTO = new MailboxInfoDTO();
  55. paramDTO.setAccount(mailboxInfoDO.getEmail());
  56. String password = mailboxInfoDO.getPassword();
  57. try{
  58. String privateKey = this.properties.getSecurityRsa().getPrivateKey();
  59. password = new RSA(privateKey, null).decryptStr(password, KeyType.PrivateKey);
  60. }catch (Exception e){
  61. logger.error(e.getMessage(),e);
  62. }
  63. paramDTO.setPassword(password);
  64. paramDTO.setPort(mailboxInfoDO.getPort());
  65. paramDTO.setHost(mailboxInfoDO.getServer());
  66. paramDTO.setProtocol(mailboxInfoDO.getProtocol());
  67. quartzBean.setJobParam(JSON.toJSONString(paramDTO));
  68. if(mailboxInfoDO.getOpenStatus() != null && mailboxInfoDO.getOpenStatus().equals(OpenStatusType.YES.getCode())){
  69. logger.info(quartzBean.getJobName()+":创建定时任务"+ DateUtils.getNowDate());
  70. QuartzUtils.createScheduleJob(scheduler,quartzBean);
  71. }
  72. }catch (Exception e) {
  73. logger.error(e.getMessage(),e);
  74. }
  75. }
  76. }
  77. }