SendCompanyEmailTask.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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.daq.ChannelEmailMapper;
  5. import com.simuwang.base.mapper.daq.CompanyEmailConfigMapper;
  6. import com.simuwang.base.mapper.daq.ContactInformationMapper;
  7. import com.simuwang.base.mapper.daq.EmailTaskInfoMapper;
  8. import com.simuwang.base.pojo.dos.CompanyEmailConfigDO;
  9. import com.simuwang.base.pojo.dos.ContactInformationDO;
  10. import com.simuwang.base.pojo.dos.EmailTaskInfoDO;
  11. import com.simuwang.manage.service.CompanyEmailConfigService;
  12. import com.simuwang.shiro.utils.UserUtils;
  13. import org.slf4j.Logger;
  14. import org.slf4j.LoggerFactory;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.scheduling.annotation.EnableScheduling;
  17. import org.springframework.scheduling.annotation.Scheduled;
  18. import org.springframework.stereotype.Component;
  19. import java.util.ArrayList;
  20. import java.util.HashMap;
  21. import java.util.List;
  22. import java.util.Map;
  23. import java.util.stream.Collectors;
  24. /**
  25. * FileName: SendCompanyEmailTask
  26. * Author: chenjianhua
  27. * Date: 2024/9/20 22:45
  28. * Description: ${DESCRIPTION}
  29. */
  30. @Component
  31. public class SendCompanyEmailTask {
  32. private static final Logger log = LoggerFactory.getLogger(SendCompanyEmailTask.class);
  33. @Autowired
  34. private ContactInformationMapper contactInformationMapper;
  35. @Autowired
  36. private CompanyEmailConfigService companyEmailConfigService;
  37. @Autowired
  38. private EmailTaskInfoMapper emailTaskInfoMapper;
  39. @Autowired
  40. private ChannelEmailMapper channelEmailMapper;
  41. public void sendEmail(){
  42. EmailTaskInfoDO emailTaskInfoDO = startEmailTask(null, 1);
  43. try{
  44. List<ContactInformationDO> contactInformationDOList = contactInformationMapper.getAllRecords();
  45. Map<String,List<String>> companyIdEmailMap = new HashMap<>();
  46. //按渠道分组
  47. for (ContactInformationDO contactInformationDO : contactInformationDOList) {
  48. try{
  49. String companyId = contactInformationDO.getCompanyId();
  50. String email = contactInformationDO.getContactEmail();
  51. if(companyIdEmailMap.containsKey(companyId)){
  52. List<String> channelEmailList = companyIdEmailMap.get(companyId);
  53. channelEmailList.add(email);
  54. companyIdEmailMap.put(companyId,channelEmailList);
  55. }else{
  56. List<String> channelEmailList = new ArrayList<>();
  57. channelEmailList.add(email);
  58. companyIdEmailMap.put(companyId,channelEmailList);
  59. }
  60. }catch (Exception e){
  61. log.error(e.getMessage(),e);
  62. }
  63. }
  64. for(String companyId : companyIdEmailMap.keySet()){
  65. List<String> emailList = companyIdEmailMap.get(companyId);
  66. StringBuffer emails = new StringBuffer();
  67. for(String email : emailList){
  68. emails.append(email).append(";");
  69. }
  70. companyEmailConfigService.sendEmail(companyId,emails.toString());
  71. }
  72. }catch (Exception e){
  73. log.error(e.getMessage(),e);
  74. endEmailTask(emailTaskInfoDO.getId(),-1);
  75. return;
  76. }
  77. endEmailTask(emailTaskInfoDO.getId(),2);
  78. }
  79. private void endEmailTask(Integer id, Integer taskStatus) {
  80. try{
  81. EmailTaskInfoDO emailTaskInfoDO = new EmailTaskInfoDO();
  82. emailTaskInfoDO.setId(id);
  83. emailTaskInfoDO.setTaskStatus(taskStatus);
  84. emailTaskInfoDO.setUpdateTime(DateUtils.getNowDate());
  85. emailTaskInfoDO.setEndTime(DateUtils.getNowDate());
  86. emailTaskInfoMapper.updateTaskStatusById(emailTaskInfoDO);
  87. }catch (Exception e){
  88. log.error(e.getMessage());
  89. }
  90. }
  91. private EmailTaskInfoDO startEmailTask(String email,Integer taskStatus) {
  92. EmailTaskInfoDO emailTaskInfoDO = new EmailTaskInfoDO();
  93. try{
  94. emailTaskInfoDO.setTaskName(TaskType.DELETION_NOTIFICATIONS.getInfo());
  95. emailTaskInfoDO.setTaskType(TaskType.DELETION_NOTIFICATIONS.getType());
  96. emailTaskInfoDO.setTaskStatus(taskStatus);
  97. emailTaskInfoDO.setStartTime(DateUtils.getNowDate());
  98. emailTaskInfoDO.setIsvalid(1);
  99. emailTaskInfoDO.setEmail(email);
  100. emailTaskInfoDO.setCreateTime(DateUtils.getNowDate());
  101. emailTaskInfoDO.setUpdateTime(DateUtils.getNowDate());
  102. try{
  103. emailTaskInfoDO.setCreatorId(UserUtils.getLoginUser().getUserId());
  104. emailTaskInfoDO.setUpdaterId(UserUtils.getLoginUser().getUserId());
  105. }catch (Exception e){
  106. emailTaskInfoDO.setCreatorId(1);
  107. emailTaskInfoDO.setUpdaterId(1);
  108. }
  109. emailTaskInfoMapper.insert(emailTaskInfoDO);
  110. }catch (Exception e){
  111. log.error(e.getMessage());
  112. }
  113. return emailTaskInfoDO;
  114. }
  115. }