|
@@ -1,21 +1,33 @@
|
|
|
package com.fjhx.mail.service.enterprise.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fjhx.mail.entity.enterprise.dto.EnterpriseMailboxDto;
|
|
|
import com.fjhx.mail.entity.enterprise.dto.EnterpriseMailboxSelectDto;
|
|
|
+import com.fjhx.mail.entity.enterprise.po.EnterpriseDomain;
|
|
|
+import com.fjhx.mail.entity.enterprise.po.EnterpriseFolder;
|
|
|
import com.fjhx.mail.entity.enterprise.po.EnterpriseMailbox;
|
|
|
import com.fjhx.mail.entity.enterprise.vo.EnterpriseMailboxVo;
|
|
|
import com.fjhx.mail.mapper.enterprise.EnterpriseMailboxMapper;
|
|
|
+import com.fjhx.mail.service.enterprise.EnterpriseDomainService;
|
|
|
+import com.fjhx.mail.service.enterprise.EnterpriseFolderService;
|
|
|
import com.fjhx.mail.service.enterprise.EnterpriseMailboxService;
|
|
|
+import com.fjhx.mail.util.EmailUtil;
|
|
|
import com.ruoyi.common.constant.StatusConstant;
|
|
|
+import com.ruoyi.common.exception.ServiceException;
|
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
import com.ruoyi.common.utils.wrapper.SqlField;
|
|
|
import com.ruoyi.system.utils.UserUtil;
|
|
|
+import com.sun.mail.imap.IMAPStore;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import javax.mail.MessagingException;
|
|
|
import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -23,12 +35,18 @@ import java.util.List;
|
|
|
* 企业邮箱 服务实现类
|
|
|
* </p>
|
|
|
*
|
|
|
- * @author
|
|
|
+ * @author
|
|
|
* @since 2023-04-06
|
|
|
*/
|
|
|
@Service
|
|
|
public class EnterpriseMailboxServiceImpl extends ServiceImpl<EnterpriseMailboxMapper, EnterpriseMailbox> implements EnterpriseMailboxService {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private EnterpriseFolderService enterpriseFolderService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private EnterpriseDomainService enterpriseDomainService;
|
|
|
+
|
|
|
@Override
|
|
|
public Page<EnterpriseMailboxVo> getPage(EnterpriseMailboxSelectDto dto) {
|
|
|
IWrapper<EnterpriseMailbox> wrapper = getWrapper();
|
|
@@ -54,12 +72,49 @@ public class EnterpriseMailboxServiceImpl extends ServiceImpl<EnterpriseMailboxM
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ @Transactional
|
|
|
@Override
|
|
|
public void add(EnterpriseMailboxDto enterpriseMailboxDto) {
|
|
|
+
|
|
|
+ Long enterpriseMailboxId = IdWorker.getId();
|
|
|
+
|
|
|
+ Long domainId = enterpriseMailboxDto.getDomainId();
|
|
|
+ EnterpriseDomain enterpriseDomain = enterpriseDomainService.getById(domainId);
|
|
|
+
|
|
|
+ if (enterpriseDomain == null) {
|
|
|
+ throw new ServiceException("未找到企业域名");
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ IMAPStore imapStore = EmailUtil.getIMAPStore(
|
|
|
+ enterpriseDomain.getReceiveHost(),
|
|
|
+ enterpriseDomain.getReceivePort(),
|
|
|
+ enterpriseMailboxDto.getMailUserPrefix() + "@" + enterpriseDomain.getDomainName(),
|
|
|
+ enterpriseMailboxDto.getMailPassword()
|
|
|
+ );
|
|
|
+
|
|
|
+ List<String> folderNameList = EmailUtil.getFolderNameList(imapStore);
|
|
|
+ List<EnterpriseFolder> personalFolderList = folderNameList.stream().map(item -> {
|
|
|
+ EnterpriseFolder enterpriseFolder = new EnterpriseFolder();
|
|
|
+ enterpriseFolder.setMailboxId(enterpriseMailboxId);
|
|
|
+ enterpriseFolder.setName(item);
|
|
|
+ enterpriseFolder.setSyncStatus(1);
|
|
|
+ return enterpriseFolder;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ enterpriseFolderService.saveBatch(personalFolderList);
|
|
|
+
|
|
|
+ } catch (MessagingException e) {
|
|
|
+ throw new ServiceException("连接邮箱异常");
|
|
|
+ }
|
|
|
+
|
|
|
+ enterpriseMailboxDto.setId(enterpriseMailboxId);
|
|
|
enterpriseMailboxDto.setDefaultStatus(0);
|
|
|
enterpriseMailboxDto.setSyncStatus(1);
|
|
|
enterpriseMailboxDto.setStatus(StatusConstant.ENABLE);
|
|
|
this.save(enterpriseMailboxDto);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Override
|