EmailConfigServiceImpl.java 4.8 KB

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