EmailConfigServiceImpl.java 5.6 KB

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