EmailConfigServiceImpl.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. package com.simuwang.manage.service.impl;
  2. import com.simuwang.base.common.conts.UserConstants;
  3. import com.simuwang.base.common.enums.EmailCron;
  4. import com.simuwang.base.common.enums.ResultCode;
  5. import com.simuwang.base.common.support.MybatisPage;
  6. import com.simuwang.base.common.util.DateUtils;
  7. import com.simuwang.base.common.util.EmailUtil;
  8. import com.simuwang.base.common.util.StringUtil;
  9. import com.simuwang.base.mapper.MailboxInfoMapper;
  10. import com.simuwang.base.pojo.dos.CompanyEmailSendHistoryDO;
  11. import com.simuwang.base.pojo.dos.MailboxInfoDO;
  12. import com.simuwang.base.pojo.dto.MailboxInfoDTO;
  13. import com.simuwang.base.pojo.dto.query.EmailPageQuery;
  14. import com.simuwang.base.pojo.vo.MailboxInfoTableVO;
  15. import com.simuwang.base.pojo.vo.MailboxInfoVO;
  16. import com.simuwang.base.pojo.vo.OpenStatusVO;
  17. import com.simuwang.manage.service.EmailConfigService;
  18. import com.smppw.common.pojo.ResultVo;
  19. import jakarta.mail.MessagingException;
  20. import jakarta.mail.Store;
  21. import org.quartz.Scheduler;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Service;
  24. import org.springframework.transaction.annotation.Transactional;
  25. import java.util.Date;
  26. import java.util.List;
  27. import java.util.stream.Collectors;
  28. /**
  29. * FileName: EmailConfigServiceImpl
  30. * Author: chenjianhua
  31. * Date: 2024/9/9 13:40
  32. * Description: ${DESCRIPTION}
  33. */
  34. @Service
  35. public class EmailConfigServiceImpl implements EmailConfigService {
  36. @Autowired
  37. private MailboxInfoMapper emailConfigMapper;
  38. @Autowired
  39. private Scheduler scheduler;
  40. @Override
  41. public MybatisPage<MailboxInfoTableVO> searchEmailConfigList(EmailPageQuery emailPageQuery) {
  42. List<MailboxInfoDO> mailboxInfoOS = emailConfigMapper.searchEmailConfigList(emailPageQuery);
  43. List<MailboxInfoTableVO> mailboxInfoTableVOS = mailboxInfoOS.stream().map(MailboxInfoDO::toTableVo).collect(Collectors.toList());
  44. for(MailboxInfoTableVO mailboxInfoTableVO : mailboxInfoTableVOS){ //cron表达式转文本描述
  45. mailboxInfoTableVO.setCron(EmailCron.getEmailCronByCron(mailboxInfoTableVO.getCron()).getText());
  46. }
  47. long total = emailConfigMapper.countEmailConfig(emailPageQuery);
  48. return MybatisPage.of(total,mailboxInfoTableVOS);
  49. }
  50. @Override
  51. @Transactional
  52. public void saveEmailConfig(MailboxInfoVO mailboxInfoVO) {
  53. MailboxInfoDO mailboxInfoDO = toMailboxInfoDO(mailboxInfoVO);
  54. if(mailboxInfoVO.getId() == null){
  55. mailboxInfoDO.setCreateTime(new Date());
  56. mailboxInfoDO.setCron(EmailCron.getEmailCronByText(mailboxInfoVO.getCron()).getCron());
  57. emailConfigMapper.insert(mailboxInfoDO);
  58. }else{
  59. emailConfigMapper.updateById(mailboxInfoDO);
  60. }
  61. }
  62. @Override
  63. public ResultVo connectTest(MailboxInfoVO mailboxInfoVO) {
  64. ResultVo vo = new ResultVo(ResultCode.CONNECT_SUCCESS);
  65. MailboxInfoDTO mailboxInfoDTO = new MailboxInfoDTO();
  66. mailboxInfoDTO.setAccount(mailboxInfoVO.getEmail());
  67. mailboxInfoDTO.setPassword(mailboxInfoVO.getPassword());
  68. mailboxInfoDTO.setPort(mailboxInfoVO.getPort());
  69. mailboxInfoDTO.setHost(mailboxInfoVO.getServer());
  70. mailboxInfoDTO.setProtocol(mailboxInfoVO.getProtocol());
  71. Store store = EmailUtil.getStoreNew(mailboxInfoDTO);
  72. if(store != null){
  73. try {
  74. store.close();
  75. } catch (MessagingException e) {
  76. throw new RuntimeException(e);
  77. }
  78. vo.setData(true);
  79. return vo;
  80. }
  81. vo = new ResultVo(ResultCode.CONNECT_ERROR);
  82. vo.setData(false);
  83. return vo;
  84. }
  85. @Override
  86. public void deleteEmailConfig(List<Integer> idList) {
  87. emailConfigMapper.deleteEmailConfigByIds(idList);
  88. }
  89. @Override
  90. public boolean checkEmailUnique(String email) {
  91. MailboxInfoDO mailboxInfoDO = emailConfigMapper.checkEmailUnique(email);
  92. if (StringUtil.isNotNull(mailboxInfoDO))
  93. {
  94. return UserConstants.NOT_UNIQUE;
  95. }
  96. return UserConstants.UNIQUE;
  97. }
  98. @Override
  99. public MailboxInfoVO searchEmailConfigById(Integer id) {
  100. MailboxInfoDO mailboxInfoDO = emailConfigMapper.searchEmailConfigById(id);
  101. MailboxInfoVO mailboxInfoVO = mailboxInfoDO.toVo();
  102. mailboxInfoVO.setCron(EmailCron.getEmailCronByCron(mailboxInfoVO.getCron()).getText());
  103. return mailboxInfoVO;
  104. }
  105. @Override
  106. public void controlEmailConfig(OpenStatusVO openStatusVO) {
  107. MailboxInfoDO mailboxInfoDO = emailConfigMapper.searchEmailConfigById(openStatusVO.getId());
  108. mailboxInfoDO.setOpenStatus(openStatusVO.getOpenStatus());
  109. mailboxInfoDO.setUpdateTime(DateUtils.getNowDate());
  110. emailConfigMapper.updateById(mailboxInfoDO);
  111. }
  112. private MailboxInfoDO toMailboxInfoDO(MailboxInfoVO mailboxInfoVO) {
  113. MailboxInfoDO mailboxInfoDO = new MailboxInfoDO();
  114. mailboxInfoDO.setIsvalid(1);
  115. mailboxInfoDO.setId(mailboxInfoVO.getId());
  116. mailboxInfoDO.setEmail(mailboxInfoVO.getEmail());
  117. mailboxInfoDO.setCron(EmailCron.getEmailCronByText(mailboxInfoVO.getCron()).getCron());
  118. mailboxInfoDO.setServer(mailboxInfoVO.getServer());
  119. mailboxInfoDO.setPort(mailboxInfoVO.getPort());
  120. mailboxInfoDO.setDescription(mailboxInfoVO.getDescription());
  121. mailboxInfoDO.setPassword(mailboxInfoVO.getPassword());
  122. mailboxInfoDO.setType(mailboxInfoVO.getType());
  123. mailboxInfoDO.setProtocol(mailboxInfoVO.getProtocol());
  124. mailboxInfoDO.setOpenStatus(mailboxInfoVO.getOpenStatus());
  125. mailboxInfoDO.setUpdateTime(new Date());
  126. mailboxInfoDO.setUpdaterId(999);
  127. mailboxInfoDO.setCreatorId(999);
  128. return mailboxInfoDO;
  129. }
  130. }