123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- package com.simuwang.manage.task;
- import com.simuwang.base.common.enums.TaskType;
- import com.simuwang.base.common.util.DateUtils;
- import com.simuwang.base.mapper.daq.ChannelEmailMapper;
- import com.simuwang.base.mapper.daq.CompanyEmailConfigMapper;
- import com.simuwang.base.mapper.daq.ContactInformationMapper;
- import com.simuwang.base.mapper.daq.EmailTaskInfoMapper;
- import com.simuwang.base.pojo.dos.CompanyEmailConfigDO;
- import com.simuwang.base.pojo.dos.ContactInformationDO;
- import com.simuwang.base.pojo.dos.EmailTaskInfoDO;
- import com.simuwang.manage.service.CompanyEmailConfigService;
- import com.simuwang.shiro.utils.UserUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.annotation.EnableScheduling;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Component;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.stream.Collectors;
- /**
- * FileName: SendCompanyEmailTask
- * Author: chenjianhua
- * Date: 2024/9/20 22:45
- * Description: ${DESCRIPTION}
- */
- @Component
- public class SendCompanyEmailTask {
- private static final Logger log = LoggerFactory.getLogger(SendCompanyEmailTask.class);
- @Autowired
- private ContactInformationMapper contactInformationMapper;
- @Autowired
- private CompanyEmailConfigService companyEmailConfigService;
- @Autowired
- private EmailTaskInfoMapper emailTaskInfoMapper;
- @Autowired
- private ChannelEmailMapper channelEmailMapper;
- public void sendEmail(){
- EmailTaskInfoDO emailTaskInfoDO = startEmailTask(null, 1);
- try{
- List<ContactInformationDO> contactInformationDOList = contactInformationMapper.getAllRecords();
- Map<String,List<String>> companyIdEmailMap = new HashMap<>();
- //按渠道分组
- for (ContactInformationDO contactInformationDO : contactInformationDOList) {
- try{
- String companyId = contactInformationDO.getCompanyId();
- String email = contactInformationDO.getContactEmail();
- if(companyIdEmailMap.containsKey(companyId)){
- List<String> channelEmailList = companyIdEmailMap.get(companyId);
- channelEmailList.add(email);
- companyIdEmailMap.put(companyId,channelEmailList);
- }else{
- List<String> channelEmailList = new ArrayList<>();
- channelEmailList.add(email);
- companyIdEmailMap.put(companyId,channelEmailList);
- }
- }catch (Exception e){
- log.error(e.getMessage(),e);
- }
- }
- for(String companyId : companyIdEmailMap.keySet()){
- List<String> emailList = companyIdEmailMap.get(companyId);
- StringBuffer emails = new StringBuffer();
- for(String email : emailList){
- emails.append(email).append(";");
- }
- companyEmailConfigService.sendEmail(companyId,emails.toString());
- }
- }catch (Exception e){
- log.error(e.getMessage(),e);
- endEmailTask(emailTaskInfoDO.getId(),-1);
- return;
- }
- endEmailTask(emailTaskInfoDO.getId(),2);
- }
- private void endEmailTask(Integer id, Integer taskStatus) {
- try{
- EmailTaskInfoDO emailTaskInfoDO = new EmailTaskInfoDO();
- emailTaskInfoDO.setId(id);
- emailTaskInfoDO.setTaskStatus(taskStatus);
- emailTaskInfoDO.setUpdateTime(DateUtils.getNowDate());
- emailTaskInfoDO.setEndTime(DateUtils.getNowDate());
- emailTaskInfoMapper.updateTaskStatusById(emailTaskInfoDO);
- }catch (Exception e){
- log.error(e.getMessage());
- }
- }
- private EmailTaskInfoDO startEmailTask(String email,Integer taskStatus) {
- EmailTaskInfoDO emailTaskInfoDO = new EmailTaskInfoDO();
- try{
- emailTaskInfoDO.setTaskName(TaskType.DELETION_NOTIFICATIONS.getInfo());
- emailTaskInfoDO.setTaskType(TaskType.DELETION_NOTIFICATIONS.getType());
- emailTaskInfoDO.setTaskStatus(taskStatus);
- emailTaskInfoDO.setStartTime(DateUtils.getNowDate());
- emailTaskInfoDO.setIsvalid(1);
- emailTaskInfoDO.setEmail(email);
- emailTaskInfoDO.setCreateTime(DateUtils.getNowDate());
- emailTaskInfoDO.setUpdateTime(DateUtils.getNowDate());
- try{
- emailTaskInfoDO.setCreatorId(UserUtils.getLoginUser().getUserId());
- emailTaskInfoDO.setUpdaterId(UserUtils.getLoginUser().getUserId());
- }catch (Exception e){
- emailTaskInfoDO.setCreatorId(1);
- emailTaskInfoDO.setUpdaterId(1);
- }
- emailTaskInfoMapper.insert(emailTaskInfoDO);
- }catch (Exception e){
- log.error(e.getMessage());
- }
- return emailTaskInfoDO;
- }
- }
|