|
@@ -1,18 +1,28 @@
|
|
package cn.iocoder.yudao.module.system.service.mail.impl;
|
|
package cn.iocoder.yudao.module.system.service.mail.impl;
|
|
|
|
|
|
|
|
|
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
|
+import cn.hutool.extra.mail.MailAccount;
|
|
|
|
+import cn.hutool.extra.mail.MailUtil;
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
|
+import cn.iocoder.yudao.module.system.controller.admin.mail.vo.send.MailReqVO;
|
|
import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateCreateReqVO;
|
|
import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateCreateReqVO;
|
|
import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplatePageReqVO;
|
|
import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplatePageReqVO;
|
|
import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateUpdateReqVO;
|
|
import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateUpdateReqVO;
|
|
|
|
+import cn.iocoder.yudao.module.system.convert.mail.MailAccountConvert;
|
|
import cn.iocoder.yudao.module.system.convert.mail.MailTemplateConvert;
|
|
import cn.iocoder.yudao.module.system.convert.mail.MailTemplateConvert;
|
|
|
|
+import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO;
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO;
|
|
|
|
+import cn.iocoder.yudao.module.system.dal.mysql.mail.MailAccountMapper;
|
|
import cn.iocoder.yudao.module.system.dal.mysql.mail.MailTemplateMapper;
|
|
import cn.iocoder.yudao.module.system.dal.mysql.mail.MailTemplateMapper;
|
|
|
|
+import cn.iocoder.yudao.module.system.service.mail.MailAccountService;
|
|
import cn.iocoder.yudao.module.system.service.mail.MailTemplateService;
|
|
import cn.iocoder.yudao.module.system.service.mail.MailTemplateService;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
|
+import javax.validation.Valid;
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
@@ -28,29 +38,27 @@ import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.MAIL_TEMPL
|
|
* @since 2022-03-21
|
|
* @since 2022-03-21
|
|
*/
|
|
*/
|
|
@Service
|
|
@Service
|
|
-// TODO @wangjingyi:需要 @Validated 注解,开启参数校验
|
|
|
|
|
|
+@Validated
|
|
public class MailTemplateServiceImpl implements MailTemplateService {
|
|
public class MailTemplateServiceImpl implements MailTemplateService {
|
|
|
|
|
|
@Resource
|
|
@Resource
|
|
private MailTemplateMapper mailTemplateMapper;
|
|
private MailTemplateMapper mailTemplateMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private MailAccountMapper mailAccountMapper;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public Long create(MailTemplateCreateReqVO createReqVO) {
|
|
public Long create(MailTemplateCreateReqVO createReqVO) {
|
|
- // name 要校验唯一
|
|
|
|
- Map<String , String> map = new HashMap<>();
|
|
|
|
- map.put("name" , createReqVO.getName()); // TODO @wangjingyi:模板名重复没关系的;code 不能重复
|
|
|
|
- this.validateMailTemplateOnly(map);
|
|
|
|
|
|
+ // code 要校验唯一
|
|
|
|
+ this.validateMailTemplateOnlyByCode(createReqVO.getCode());
|
|
MailTemplateDO mailTemplateDO = MailTemplateConvert.INSTANCE.convert(createReqVO);
|
|
MailTemplateDO mailTemplateDO = MailTemplateConvert.INSTANCE.convert(createReqVO);
|
|
mailTemplateMapper.insert(mailTemplateDO);
|
|
mailTemplateMapper.insert(mailTemplateDO);
|
|
return mailTemplateDO.getId();
|
|
return mailTemplateDO.getId();
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public void update(MailTemplateUpdateReqVO updateReqVO) {
|
|
|
|
- // username 要校验唯一
|
|
|
|
- Map<String , String> map = new HashMap<>();
|
|
|
|
- map.put("username" , updateReqVO.getUsername()); // TODO @wangjingyi:模板名重复没关系的;code 不能重复
|
|
|
|
- this.validateMailTemplateOnly(map);
|
|
|
|
|
|
+ public void update(@Valid MailTemplateUpdateReqVO updateReqVO) {
|
|
|
|
+ // code 要校验唯一
|
|
|
|
+ this.validateMailTemplateOnlyByCode(updateReqVO.getCode());
|
|
MailTemplateDO mailTemplateDO = MailTemplateConvert.INSTANCE.convert(updateReqVO);
|
|
MailTemplateDO mailTemplateDO = MailTemplateConvert.INSTANCE.convert(updateReqVO);
|
|
// 校验是否存在
|
|
// 校验是否存在
|
|
this.validateMailTemplateExists(mailTemplateDO.getId());
|
|
this.validateMailTemplateExists(mailTemplateDO.getId());
|
|
@@ -75,18 +83,35 @@ public class MailTemplateServiceImpl implements MailTemplateService {
|
|
@Override
|
|
@Override
|
|
public List<MailTemplateDO> getMailTemplateList() {return mailTemplateMapper.selectList();}
|
|
public List<MailTemplateDO> getMailTemplateList() {return mailTemplateMapper.selectList();}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public void sendMail(MailReqVO mailReqVO) {
|
|
|
|
+ MailTemplateDO mailTemplateDO = mailTemplateMapper.selectById(mailReqVO.getTemplateId());
|
|
|
|
+ //查询账号信息
|
|
|
|
+ MailAccountDO mailAccountDO = mailAccountMapper.selectOne(
|
|
|
|
+ "from", mailReqVO.getFrom()
|
|
|
|
+ );
|
|
|
|
+ String content = mailReqVO.getContent();
|
|
|
|
+ Map<String , String> params = MailAccountConvert.INSTANCE.convertToMap(mailAccountDO , content);
|
|
|
|
+ content = StrUtil.format(mailTemplateDO.getContent(), params);
|
|
|
|
+
|
|
|
|
+ // 后续功能 TODO :附件查询
|
|
|
|
+ //List<String> fileIds = mailSendVO.getFileIds();
|
|
|
|
+
|
|
|
|
+ //装载账号信息
|
|
|
|
+ MailAccount account = MailAccountConvert.INSTANCE.convertAccount(mailAccountDO);
|
|
|
|
+
|
|
|
|
+ //发送
|
|
|
|
+ MailUtil.send(account , mailReqVO.getTos() , mailReqVO.getTitle() , content , false);
|
|
|
|
+ }
|
|
|
|
+
|
|
private void validateMailTemplateExists(Long id) {
|
|
private void validateMailTemplateExists(Long id) {
|
|
if (mailTemplateMapper.selectById(id) == null) {
|
|
if (mailTemplateMapper.selectById(id) == null) {
|
|
throw exception(MAIL_TEMPLATE_NOT_EXISTS);
|
|
throw exception(MAIL_TEMPLATE_NOT_EXISTS);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- private void validateMailTemplateOnly(Map params){
|
|
|
|
- QueryWrapper queryWrapper = new QueryWrapper<MailTemplateDO>();
|
|
|
|
- params.forEach((k , v)->{
|
|
|
|
- queryWrapper.like(k , v);
|
|
|
|
- });
|
|
|
|
- if (mailTemplateMapper.selectOne(queryWrapper) != null) {
|
|
|
|
|
|
+ private void validateMailTemplateOnlyByCode(String code){
|
|
|
|
+ if (mailTemplateMapper.selectOneByCode(code) != null) {
|
|
throw exception(MAIL_TEMPLATE_EXISTS);
|
|
throw exception(MAIL_TEMPLATE_EXISTS);
|
|
}
|
|
}
|
|
}
|
|
}
|