24282 2 年之前
父节点
当前提交
0825550f7d

+ 14 - 0
hx-mail/src/main/java/com/fjhx/mail/controller/message/MailController.java

@@ -4,9 +4,12 @@ import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.fjhx.mail.config.MailServiceConfig;
+import com.fjhx.mail.entity.message.dto.SendDto;
+import com.fjhx.mail.service.message.InfoService;
 import com.ruoyi.common.annotation.NonInterception;
 import com.ruoyi.common.utils.SecurityUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 @Slf4j
@@ -14,6 +17,9 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping("/mailService")
 public class MailController {
 
+    @Autowired
+    private InfoService infoService;
+
     /**
      * 获取用户邮箱列表
      */
@@ -44,4 +50,12 @@ public class MailController {
         return JSON.parseObject(post);
     }
 
+
+    @NonInterception
+    @PostMapping("/sendMail")
+    public Object sendMail(@RequestBody SendDto dto) {
+        String result = infoService.sendMail(dto);
+        return JSON.parseObject(result);
+    }
+
 }

+ 92 - 0
hx-mail/src/main/java/com/fjhx/mail/entity/message/dto/SendDto.java

@@ -0,0 +1,92 @@
+package com.fjhx.mail.entity.message.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+@Getter
+@Setter
+public class SendDto {
+
+    /**
+     * 1个人邮箱 2企业邮箱
+     */
+    @NotNull(message = "类型不能未空")
+    private Integer type;
+
+    /**
+     * 邮箱id
+     */
+    @NotNull(message = "邮箱id不能为空")
+    private Long mailboxId;
+
+    /**
+     * 发送
+     */
+    @NotEmpty(message = "发送人不能为空")
+    private List<Address> to;
+
+    /**
+     * 抄送
+     */
+    private List<Address> cc;
+
+    /**
+     * 密送
+     */
+    private List<Address> bcc;
+
+    /**
+     * 回复
+     */
+    private List<Address> replyTo;
+
+    /**
+     * 标题
+     */
+    @NotBlank(message = "标题不能为空")
+    private String subject;
+
+    /**
+     * 正文
+     */
+    private String content;
+
+    /**
+     * 附件
+     */
+    @Valid
+    private List<FileInfo> fileList;
+
+    @Getter
+    @Setter
+    public static class Address {
+        @NotBlank(message = "发件地址不能为空")
+        private String address;
+        private String personal;
+    }
+
+    @Getter
+    @Setter
+    public static class FileInfo {
+
+        /**
+         * 文件名称
+         */
+        @NotBlank(message = "文件名称不能为空")
+        private String fileName;
+
+        /**
+         * 文件路径
+         */
+        @NotBlank(message = "文件路径不能为空")
+        private String fileUrl;
+
+    }
+
+}

+ 6 - 0
hx-mail/src/main/java/com/fjhx/mail/service/message/InfoService.java

@@ -1,5 +1,6 @@
 package com.fjhx.mail.service.message;
 
+import com.fjhx.mail.entity.message.dto.SendDto;
 import com.ruoyi.common.core.domain.entity.SysUser;
 
 import java.util.List;
@@ -11,4 +12,9 @@ public interface InfoService {
      */
     List<SysUser> getUserList();
 
+    /**
+     * 发送邮件
+     */
+    String sendMail(SendDto dto);
+
 }

+ 57 - 0
hx-mail/src/main/java/com/fjhx/mail/service/message/impl/InfoServiceImpl.java

@@ -1,12 +1,23 @@
 package com.fjhx.mail.service.message.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson2.JSON;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.mail.config.MailServiceConfig;
+import com.fjhx.mail.entity.enterprise.po.EnterpriseDomain;
+import com.fjhx.mail.entity.enterprise.po.EnterpriseMailbox;
+import com.fjhx.mail.entity.message.dto.SendDto;
+import com.fjhx.mail.entity.personal.po.PersonalMailbox;
+import com.fjhx.mail.service.enterprise.EnterpriseDomainService;
+import com.fjhx.mail.service.enterprise.EnterpriseMailboxService;
 import com.fjhx.mail.service.message.InfoService;
+import com.fjhx.mail.service.personal.PersonalMailboxService;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.system.service.ISysDeptService;
 import com.ruoyi.system.service.ISysUserService;
@@ -25,6 +36,15 @@ public class InfoServiceImpl implements InfoService {
     @Autowired
     private ISysUserService sysUserService;
 
+    @Autowired
+    private PersonalMailboxService personalMailboxService;
+
+    @Autowired
+    private EnterpriseMailboxService enterpriseMailboxService;
+
+    @Autowired
+    private EnterpriseDomainService enterpriseDomainService;
+
     @Override
     public List<SysUser> getUserList() {
 
@@ -59,6 +79,43 @@ public class InfoServiceImpl implements InfoService {
         return sysUserList;
     }
 
+    @Override
+    public String sendMail(SendDto dto) {
+        Integer type = dto.getType();
+        Long mailboxId = dto.getMailboxId();
+
+        StringJoiner urlJoiner = new StringJoiner("/");
+        urlJoiner.add("sendMail");
+
+        if (type == 1) {
+            PersonalMailbox personalMailbox = personalMailboxService.getById(mailboxId);
+            if (personalMailbox == null) {
+                throw new ServiceException("未找到个人邮箱");
+            }
+
+            urlJoiner.add(personalMailbox.getSendHost());
+            urlJoiner.add(personalMailbox.getMailUser());
+            urlJoiner.add(personalMailbox.getMailPassword());
+
+        } else {
+
+            EnterpriseMailbox enterpriseMailbox = enterpriseMailboxService.getById(mailboxId);
+            if (enterpriseMailbox == null) {
+                throw new ServiceException("未找到企业邮箱");
+            }
+            EnterpriseDomain enterpriseDomain = enterpriseDomainService.getById(enterpriseMailbox.getDomainId());
+            if (enterpriseDomain == null) {
+                throw new ServiceException("未找到企业邮箱配置");
+            }
+            urlJoiner.add(enterpriseDomain.getSendHost());
+            urlJoiner.add(enterpriseMailbox.getMailUserPrefix() + "@" + enterpriseDomain.getDomainName());
+            urlJoiner.add(enterpriseMailbox.getMailPassword());
+
+        }
+
+        return HttpUtil.post(MailServiceConfig.urlPrefix + urlJoiner, JSON.toJSONString(dto));
+    }
+
     private void subordinateDeptId(Long deptId, Set<Long> deptSet, Map<Long, List<SysDept>> parentDeptMap) {
         deptSet.add(deptId);