Commit 1bf1d3ee6a4125d7efd23be8ce1e6513fcae9ef5

Authored by wangjingyi
1 parent f349fbf8

邮件发送功能修改

yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/mail/MailAccountMapper.java
@@ -5,8 +5,14 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; @@ -5,8 +5,14 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; 5 import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
6 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO; 6 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO;
7 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO; 7 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
  8 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
8 import org.apache.ibatis.annotations.Mapper; 9 import org.apache.ibatis.annotations.Mapper;
9 10
  11 +import java.util.Map;
  12 +
  13 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
  14 +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.MAIL_ACCOUNT_EXISTS;
  15 +
10 @Mapper 16 @Mapper
11 public interface MailAccountMapper extends BaseMapperX<MailAccountDO> { 17 public interface MailAccountMapper extends BaseMapperX<MailAccountDO> {
12 18
@@ -20,4 +26,11 @@ public interface MailAccountMapper extends BaseMapperX&lt;MailAccountDO&gt; { @@ -20,4 +26,11 @@ public interface MailAccountMapper extends BaseMapperX&lt;MailAccountDO&gt; {
20 ); 26 );
21 } 27 }
22 28
  29 + default MailAccountDO selectByParams(Map params){
  30 + QueryWrapperX queryWrapperX = new QueryWrapperX<MailAccountDO>();
  31 + params.forEach((k , v)->{
  32 + queryWrapperX.eqIfPresent((String) k, v);
  33 + });
  34 + return this.selectOne(queryWrapperX);
  35 + };
23 } 36 }
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/mail/impl/MailAccountServiceImpl.java
1 package cn.iocoder.yudao.module.system.service.mail.impl; 1 package cn.iocoder.yudao.module.system.service.mail.impl;
2 2
  3 +import cn.hutool.core.util.StrUtil;
3 import cn.hutool.extra.mail.MailAccount; 4 import cn.hutool.extra.mail.MailAccount;
4 import cn.hutool.extra.mail.MailUtil; 5 import cn.hutool.extra.mail.MailUtil;
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountCreateReqVO; 7 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountCreateReqVO;
7 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO; 8 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO;
8 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountUpdateReqVO; 9 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountUpdateReqVO;
9 -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.send.MailSendVO; 10 +import cn.iocoder.yudao.module.system.controller.admin.mail.vo.send.MailReqVO;
10 import cn.iocoder.yudao.module.system.convert.mail.MailAccountConvert; 11 import cn.iocoder.yudao.module.system.convert.mail.MailAccountConvert;
11 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO; 12 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
12 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO; 13 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO;
13 import cn.iocoder.yudao.module.system.dal.mysql.mail.MailAccountMapper; 14 import cn.iocoder.yudao.module.system.dal.mysql.mail.MailAccountMapper;
14 import cn.iocoder.yudao.module.system.dal.mysql.mail.MailTemplateMapper; 15 import cn.iocoder.yudao.module.system.dal.mysql.mail.MailTemplateMapper;
15 import cn.iocoder.yudao.module.system.service.mail.MailAccountService; 16 import cn.iocoder.yudao.module.system.service.mail.MailAccountService;
16 -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;  
17 import org.springframework.stereotype.Service; 17 import org.springframework.stereotype.Service;
18 18
19 import javax.annotation.Resource; 19 import javax.annotation.Resource;
@@ -27,9 +27,7 @@ import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.MAIL_ACCOU @@ -27,9 +27,7 @@ import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.MAIL_ACCOU
27 27
28 28
29 /** 29 /**
30 - * <p>  
31 * 邮箱账号 Service 实现类 30 * 邮箱账号 Service 实现类
32 - * </p>  
33 * 31 *
34 * @author wangjingyi 32 * @author wangjingyi
35 * @since 2022-03-21 33 * @since 2022-03-21
@@ -66,7 +64,6 @@ public class MailAccountServiceImpl implements MailAccountService { @@ -66,7 +64,6 @@ public class MailAccountServiceImpl implements MailAccountService {
66 mailAccountMapper.updateById(mailAccountDO); 64 mailAccountMapper.updateById(mailAccountDO);
67 } 65 }
68 66
69 -  
70 @Override 67 @Override
71 public void delete(Long id) { 68 public void delete(Long id) {
72 // 校验是否存在 69 // 校验是否存在
@@ -90,20 +87,16 @@ public class MailAccountServiceImpl implements MailAccountService { @@ -90,20 +87,16 @@ public class MailAccountServiceImpl implements MailAccountService {
90 } 87 }
91 88
92 @Override 89 @Override
93 - public void sendMail(MailSendVO mailSendVO) {  
94 - // FIXME 查询模版信息 查询模版多条时 使用规则是什么  
95 - // 回复:选择某一条模板,进行发送邮件。  
96 - List<MailTemplateDO> mailTemplateDOList = mailTemplateMapper.selectList(  
97 - "username",mailSendVO.getFrom()  
98 - ); 90 + public void sendMail(MailReqVO mailReqVO) {
  91 + MailTemplateDO mailTemplateDO = mailTemplateMapper.selectById(mailReqVO.getTemplateId());
99 //查询账号信息 92 //查询账号信息
100 MailAccountDO mailAccountDO = mailAccountMapper.selectOne( 93 MailAccountDO mailAccountDO = mailAccountMapper.selectOne(
101 - "from",mailSendVO.getFrom() 94 + "from", mailReqVO.getFrom()
102 ); 95 );
103 - // FIXME 模版和邮件内容合成方式未知  
104 - // 回复:参考短信的方式,通过 {name} {mobile} 这样的占位符。搜 formatSmsTemplateContent 方法  
105 - String content = mailSendVO.getContent();  
106 - String templateContent = ""; 96 + String content = mailReqVO.getContent();
  97 + Map<String , String> params = MailAccountConvert.INSTANCE.convertToMap(mailAccountDO , content);
  98 + content = StrUtil.format(mailTemplateDO.getContent(), params);
  99 +
107 // 后续功能 TODO :附件查询 100 // 后续功能 TODO :附件查询
108 //List<String> fileIds = mailSendVO.getFileIds(); 101 //List<String> fileIds = mailSendVO.getFileIds();
109 102
@@ -111,7 +104,7 @@ public class MailAccountServiceImpl implements MailAccountService { @@ -111,7 +104,7 @@ public class MailAccountServiceImpl implements MailAccountService {
111 MailAccount account = MailAccountConvert.INSTANCE.convertAccount(mailAccountDO); 104 MailAccount account = MailAccountConvert.INSTANCE.convertAccount(mailAccountDO);
112 105
113 //发送 106 //发送
114 - MailUtil.send(account , mailSendVO.getTos() , mailSendVO.getTitle() , mailSendVO.getContent() , false); 107 + MailUtil.send(account , mailReqVO.getTos() , mailReqVO.getTitle() , content , false);
115 } 108 }
116 109
117 private void validateMailAccountExists(Long id) { 110 private void validateMailAccountExists(Long id) {
@@ -121,12 +114,8 @@ public class MailAccountServiceImpl implements MailAccountService { @@ -121,12 +114,8 @@ public class MailAccountServiceImpl implements MailAccountService {
121 } 114 }
122 115
123 private void validateMailAccountOnly(Map params){ 116 private void validateMailAccountOnly(Map params){
124 - // TODO wangjingyi:Service 里,不允许出现 MyBatis 操作。而是 Mapper 提供对应查询方法  
125 - QueryWrapper queryWrapper = new QueryWrapper<MailAccountDO>();  
126 - params.forEach((k , v)->{  
127 - queryWrapper.like(k , v); // TODO wangjingyi:账号,应该是 equlas,不能是 like  
128 - });  
129 - if (mailAccountMapper.selectOne(queryWrapper) != null) { 117 + MailAccountDO mailAccountDO = mailAccountMapper.selectByParams(params);
  118 + if (mailAccountDO != null) {
130 throw exception(MAIL_ACCOUNT_EXISTS); 119 throw exception(MAIL_ACCOUNT_EXISTS);
131 } 120 }
132 } 121 }