SendCompanyEmailTask.java 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package com.simuwang.manage.task;
  2. import com.simuwang.base.common.enums.TaskType;
  3. import com.simuwang.base.common.util.DateUtils;
  4. import com.simuwang.base.mapper.CompanyEmailConfigMapper;
  5. import com.simuwang.base.mapper.EmailTaskInfoMapper;
  6. import com.simuwang.base.pojo.dos.CompanyEmailConfigDO;
  7. import com.simuwang.base.pojo.dos.EmailTaskInfoDO;
  8. import com.simuwang.manage.service.CompanyEmailConfigService;
  9. import com.simuwang.shiro.utils.UserUtils;
  10. import org.slf4j.Logger;
  11. import org.slf4j.LoggerFactory;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.scheduling.annotation.EnableScheduling;
  14. import org.springframework.scheduling.annotation.Scheduled;
  15. import org.springframework.stereotype.Component;
  16. import java.util.List;
  17. import java.util.Map;
  18. import java.util.stream.Collectors;
  19. /**
  20. * FileName: SendCompanyEmailTask
  21. * Author: chenjianhua
  22. * Date: 2024/9/20 22:45
  23. * Description: ${DESCRIPTION}
  24. */
  25. @Component
  26. public class SendCompanyEmailTask {
  27. private static final Logger log = LoggerFactory.getLogger(SendCompanyEmailTask.class);
  28. @Autowired
  29. private CompanyEmailConfigMapper companyEmailConfigMapper;
  30. @Autowired
  31. private CompanyEmailConfigService companyEmailConfigService;
  32. @Autowired
  33. private EmailTaskInfoMapper emailTaskInfoMapper;
  34. public void sendEmail(){
  35. EmailTaskInfoDO emailTaskInfoDO = startEmailTask(null, 1);
  36. try{
  37. List<CompanyEmailConfigDO> configDOList = companyEmailConfigMapper.getAllCompanyConfig();
  38. Map<String,List<CompanyEmailConfigDO>> companyListMap = configDOList.stream().collect(Collectors.groupingBy(e -> e.getCompanyId()));
  39. for(String companyId : companyListMap.keySet()){
  40. List<CompanyEmailConfigDO> configDOS = companyListMap.get(companyId);
  41. StringBuffer emails = new StringBuffer();
  42. for(CompanyEmailConfigDO configDO : configDOS){
  43. emails.append(configDO.getEmail()).append(";");
  44. }
  45. companyEmailConfigService.sendEmail(companyId,emails.toString());
  46. }
  47. }catch (Exception e){
  48. log.error(e.getMessage(),e);
  49. endEmailTask(emailTaskInfoDO.getId(),-1);
  50. return;
  51. }
  52. endEmailTask(emailTaskInfoDO.getId(),2);
  53. }
  54. private void endEmailTask(Integer id, Integer taskStatus) {
  55. try{
  56. EmailTaskInfoDO emailTaskInfoDO = new EmailTaskInfoDO();
  57. emailTaskInfoDO.setId(id);
  58. emailTaskInfoDO.setTaskStatus(taskStatus);
  59. emailTaskInfoDO.setUpdateTime(DateUtils.getNowDate());
  60. emailTaskInfoDO.setEndTime(DateUtils.getNowDate());
  61. emailTaskInfoMapper.updateTaskStatusById(emailTaskInfoDO);
  62. }catch (Exception e){
  63. log.error(e.getMessage());
  64. }
  65. }
  66. private EmailTaskInfoDO startEmailTask(String email,Integer taskStatus) {
  67. EmailTaskInfoDO emailTaskInfoDO = new EmailTaskInfoDO();
  68. try{
  69. emailTaskInfoDO.setTaskName(TaskType.DELETION_NOTIFICATIONS.getInfo());
  70. emailTaskInfoDO.setTaskType(TaskType.DELETION_NOTIFICATIONS.getType());
  71. emailTaskInfoDO.setTaskStatus(taskStatus);
  72. emailTaskInfoDO.setStartTime(DateUtils.getNowDate());
  73. emailTaskInfoDO.setIsvalid(1);
  74. emailTaskInfoDO.setEmail(email);
  75. emailTaskInfoDO.setCreateTime(DateUtils.getNowDate());
  76. emailTaskInfoDO.setUpdateTime(DateUtils.getNowDate());
  77. try{
  78. emailTaskInfoDO.setCreatorId(UserUtils.getLoginUser().getUserId());
  79. emailTaskInfoDO.setUpdaterId(UserUtils.getLoginUser().getUserId());
  80. }catch (Exception e){
  81. emailTaskInfoDO.setCreatorId(1);
  82. emailTaskInfoDO.setUpdaterId(1);
  83. }
  84. emailTaskInfoMapper.insert(emailTaskInfoDO);
  85. }catch (Exception e){
  86. log.error(e.getMessage());
  87. }
  88. return emailTaskInfoDO;
  89. }
  90. }