EmailConfigServiceImpl.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  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.ArrayList;
  26. import java.util.Date;
  27. import java.util.List;
  28. import java.util.stream.Collectors;
  29. /**
  30. * FileName: EmailConfigServiceImpl
  31. * Author: chenjianhua
  32. * Date: 2024/9/9 13:40
  33. * Description: ${DESCRIPTION}
  34. */
  35. @Service
  36. public class EmailConfigServiceImpl implements EmailConfigService {
  37. @Autowired
  38. private MailboxInfoMapper emailConfigMapper;
  39. @Autowired
  40. private Scheduler scheduler;
  41. @Override
  42. public MybatisPage<MailboxInfoTableVO> searchEmailConfigList(EmailPageQuery emailPageQuery) {
  43. List<MailboxInfoDO> mailboxInfoOS = emailConfigMapper.searchEmailConfigList(emailPageQuery);
  44. List<MailboxInfoTableVO> mailboxInfoTableVOS = mailboxInfoOS.stream().map(MailboxInfoDO::toTableVo).collect(Collectors.toList());
  45. long total = emailConfigMapper.countEmailConfig(emailPageQuery);
  46. return MybatisPage.of(total,mailboxInfoTableVOS);
  47. }
  48. @Override
  49. @Transactional
  50. public void saveEmailConfig(MailboxInfoVO mailboxInfoVO) {
  51. MailboxInfoDO mailboxInfoDO = toMailboxInfoDO(mailboxInfoVO);
  52. if(mailboxInfoVO.getId() == null){
  53. mailboxInfoDO.setCreateTime(new Date());
  54. mailboxInfoDO.setCron(EmailCron.getEmailCronByText(mailboxInfoVO.getCron()).getCron());
  55. emailConfigMapper.insert(mailboxInfoDO);
  56. }else{
  57. emailConfigMapper.updateById(mailboxInfoDO);
  58. }
  59. }
  60. @Override
  61. public ResultVo connectTest(MailboxInfoVO mailboxInfoVO) {
  62. ResultVo vo = new ResultVo(ResultCode.CONNECT_SUCCESS);
  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. vo.setMsg(ResultCode.CONNECT_SUCCESS.getMsg());
  77. vo.setData(true);
  78. return vo;
  79. }
  80. vo = new ResultVo(ResultCode.CONNECT_ERROR);
  81. vo.setData(false);
  82. vo.setMsg(ResultCode.CONNECT_ERROR.getMsg());
  83. return vo;
  84. }
  85. @Override
  86. public void deleteEmailConfig(Integer id) {
  87. List<Integer> idList = new ArrayList<>();
  88. idList.add(id);
  89. emailConfigMapper.deleteEmailConfigByIds(idList);
  90. }
  91. @Override
  92. public boolean checkEmailUnique(String email) {
  93. MailboxInfoDO mailboxInfoDO = emailConfigMapper.checkEmailUnique(email);
  94. if (StringUtil.isNotNull(mailboxInfoDO))
  95. {
  96. return UserConstants.NOT_UNIQUE;
  97. }
  98. return UserConstants.UNIQUE;
  99. }
  100. @Override
  101. public MailboxInfoVO searchEmailConfigById(Integer id) {
  102. MailboxInfoDO mailboxInfoDO = emailConfigMapper.searchEmailConfigById(id);
  103. MailboxInfoVO mailboxInfoVO = mailboxInfoDO.toVo();
  104. return mailboxInfoVO;
  105. }
  106. @Override
  107. public void controlEmailConfig(OpenStatusVO openStatusVO) {
  108. MailboxInfoDO mailboxInfoDO = emailConfigMapper.searchEmailConfigById(openStatusVO.getId());
  109. mailboxInfoDO.setOpenStatus(openStatusVO.getOpenStatus());
  110. mailboxInfoDO.setUpdateTime(DateUtils.getNowDate());
  111. emailConfigMapper.updateById(mailboxInfoDO);
  112. }
  113. private MailboxInfoDO toMailboxInfoDO(MailboxInfoVO mailboxInfoVO) {
  114. MailboxInfoDO mailboxInfoDO = new MailboxInfoDO();
  115. mailboxInfoDO.setIsvalid(1);
  116. mailboxInfoDO.setId(mailboxInfoVO.getId());
  117. mailboxInfoDO.setEmail(mailboxInfoVO.getEmail());
  118. mailboxInfoDO.setCron(EmailCron.getEmailCronByText(mailboxInfoVO.getCron()).getCron());
  119. mailboxInfoDO.setServer(mailboxInfoVO.getServer());
  120. mailboxInfoDO.setPort(mailboxInfoVO.getPort());
  121. mailboxInfoDO.setDescription(mailboxInfoVO.getDescription());
  122. mailboxInfoDO.setPassword(mailboxInfoVO.getPassword());
  123. mailboxInfoDO.setType(mailboxInfoVO.getType());
  124. mailboxInfoDO.setProtocol(mailboxInfoVO.getProtocol());
  125. mailboxInfoDO.setOpenStatus(mailboxInfoVO.getOpenStatus());
  126. mailboxInfoDO.setUpdateTime(new Date());
  127. mailboxInfoDO.setUpdaterId(999);
  128. mailboxInfoDO.setCreatorId(999);
  129. return mailboxInfoDO;
  130. }
  131. }