mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-23 07:41:53 +08:00
code review 邮箱的实现代码
This commit is contained in:
parent
63983bbab3
commit
1464f7d399
@ -79,7 +79,7 @@ public class TestDemoServiceImpl implements TestDemoService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<TestDemoDO> getTestDemoPage(TestDemoPageReqVO pageReqVO) {
|
public PageResult<TestDemoDO> getTestDemoPage(TestDemoPageReqVO pageReqVO) {
|
||||||
// testDemoMapper.selectList2();
|
testDemoMapper.selectList2();
|
||||||
return testDemoMapper.selectPage(pageReqVO);
|
return testDemoMapper.selectPage(pageReqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,7 +128,7 @@ public interface ErrorCodeConstants {
|
|||||||
ErrorCode MAIL_ACCOUNT_EXISTS = new ErrorCode(1002020001, "邮箱账号存在");
|
ErrorCode MAIL_ACCOUNT_EXISTS = new ErrorCode(1002020001, "邮箱账号存在");
|
||||||
|
|
||||||
// ========== 邮箱模版 1002021000 ==========
|
// ========== 邮箱模版 1002021000 ==========
|
||||||
ErrorCode MAIL_TEMPLATE_NOT_EXISTS = new ErrorCode(1002021000 , "邮箱模版不存在");
|
ErrorCode MAIL_TEMPLATE_NOT_EXISTS = new ErrorCode(1002021000, "邮箱模版不存在");
|
||||||
ErrorCode MAIL_TEMPLATE_EXISTS = new ErrorCode(1002021001, "邮箱模版存在");
|
ErrorCode MAIL_TEMPLATE_EXISTS = new ErrorCode(1002021001, "邮箱模版存在");
|
||||||
ErrorCode MAIL_ACCOUNT_RELATE_TEMPLATE_EXISTS = new ErrorCode(1002021002, "存在关联邮箱模版");
|
ErrorCode MAIL_ACCOUNT_RELATE_TEMPLATE_EXISTS = new ErrorCode(1002021002, "存在关联邮箱模版");
|
||||||
|
|
||||||
|
@ -17,6 +17,9 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
|
|||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@ToString(callSuper = true)
|
@ToString(callSuper = true)
|
||||||
public class MailLogPageReqVO extends PageParam {
|
public class MailLogPageReqVO extends PageParam {
|
||||||
|
|
||||||
|
// TODO @wangjingyi:required 为 false 时,它是默认值,所以不用谢
|
||||||
|
|
||||||
@ApiModelProperty(value = "邮箱" , required = false , example = "yudaoyuanma@123.com")
|
@ApiModelProperty(value = "邮箱" , required = false , example = "yudaoyuanma@123.com")
|
||||||
private String from;
|
private String from;
|
||||||
|
|
||||||
|
@ -34,5 +34,4 @@ public class MailReqVO { // TODO @wangjingqi:1), 不用空格;2)应该
|
|||||||
@ApiModelProperty(value = "附件",example = "附件编码")
|
@ApiModelProperty(value = "附件",example = "附件编码")
|
||||||
private List<String> fileIds;
|
private List<String> fileIds;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ import java.util.List;
|
|||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface MailTemplateConvert {
|
public interface MailTemplateConvert {
|
||||||
|
|
||||||
MailTemplateConvert INSTANCE = Mappers.getMapper(MailTemplateConvert.class);
|
MailTemplateConvert INSTANCE = Mappers.getMapper(MailTemplateConvert.class);
|
||||||
|
|
||||||
MailTemplateDO convert(MailTemplateBaseVO baseVO);
|
MailTemplateDO convert(MailTemplateBaseVO baseVO);
|
||||||
@ -20,4 +21,5 @@ public interface MailTemplateConvert {
|
|||||||
PageResult<MailTemplateRespVO> convertPage(PageResult<MailTemplateDO> pageResult);
|
PageResult<MailTemplateRespVO> convertPage(PageResult<MailTemplateDO> pageResult);
|
||||||
|
|
||||||
List<MailTemplateRespVO> convertList02(List<MailTemplateDO> list);
|
List<MailTemplateRespVO> convertList02(List<MailTemplateDO> list);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,6 @@ public class MailLogDO extends BaseDO implements Serializable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 发送结果
|
* 发送结果
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
private String sendResult;
|
private String sendResult;
|
||||||
|
|
||||||
|
@ -20,16 +20,16 @@ public interface MailLogService {
|
|||||||
/**
|
/**
|
||||||
* 邮箱日志分页
|
* 邮箱日志分页
|
||||||
*
|
*
|
||||||
* @param pageVO
|
* @param pageVO 分页参数
|
||||||
* @return
|
* @return 分页结果
|
||||||
*/
|
*/
|
||||||
PageResult<MailLogDO> getMailLogPage(MailLogPageReqVO pageVO);
|
PageResult<MailLogDO> getMailLogPage(MailLogPageReqVO pageVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 邮箱日志数组信息
|
* 邮箱日志数组信息
|
||||||
*
|
*
|
||||||
* @param exportReqVO
|
* @param exportReqVO 导出筛选请求
|
||||||
* @return
|
* @return 导出的日志数据
|
||||||
*/
|
*/
|
||||||
List<MailLogDO> getMailLogList(MailLogExportReqVO exportReqVO);
|
List<MailLogDO> getMailLogList(MailLogExportReqVO exportReqVO);
|
||||||
|
|
||||||
@ -37,14 +37,14 @@ public interface MailLogService {
|
|||||||
* 创建邮箱日志
|
* 创建邮箱日志
|
||||||
*
|
*
|
||||||
* @param mailAccountDO 邮箱账号信息
|
* @param mailAccountDO 邮箱账号信息
|
||||||
* @param mailTemplateDO 模版信息
|
* @param template 模版信息
|
||||||
* @param from 邮箱
|
* @param from 邮箱
|
||||||
* @param content 内容
|
* @param content 内容
|
||||||
* @param tos 收件人
|
* @param tos 收件人
|
||||||
* @param title 标题
|
* @param title 标题
|
||||||
* @param isSend 是否发送成功
|
* @param isSend 是否发送成功
|
||||||
*/
|
*/
|
||||||
Long createMailLog(MailAccountDO mailAccountDO, MailTemplateDO mailTemplateDO, String from, String content, List<String> tos, String title, Boolean isSend);
|
Long createMailLog(MailAccountDO mailAccountDO, MailTemplateDO template, String from, String content, List<String> tos, String title, Boolean isSend);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新邮件发送结果
|
* 更新邮件发送结果
|
||||||
@ -53,4 +53,5 @@ public interface MailLogService {
|
|||||||
* @param result 发送结果 默认返回messageId
|
* @param result 发送结果 默认返回messageId
|
||||||
*/
|
*/
|
||||||
void updateMailSendResult(Long logId, String result);
|
void updateMailSendResult(Long logId, String result);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package cn.iocoder.yudao.module.system.service.mail;
|
package cn.iocoder.yudao.module.system.service.mail;
|
||||||
|
|
||||||
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;
|
||||||
@ -68,8 +67,9 @@ public interface MailTemplateService {
|
|||||||
* @return 模版数组
|
* @return 模版数组
|
||||||
*/
|
*/
|
||||||
List<MailTemplateDO> getMailTemplateList();
|
List<MailTemplateDO> getMailTemplateList();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*从缓存中获取邮箱模版
|
* 从缓存中获取邮箱模版
|
||||||
*
|
*
|
||||||
* @param code 模板编码
|
* @param code 模板编码
|
||||||
* @return 邮箱模板
|
* @return 邮箱模板
|
||||||
@ -78,9 +78,11 @@ public interface MailTemplateService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 邮件模版内容合成
|
* 邮件模版内容合成
|
||||||
|
*
|
||||||
* @param content 邮箱模版
|
* @param content 邮箱模版
|
||||||
* @param params 合成参数
|
* @param params 合成参数
|
||||||
* @return
|
* @return 格式化后的内容
|
||||||
*/
|
*/
|
||||||
String formatMailTemplateContent(String content, Map<String, String> params);
|
String formatMailTemplateContent(String content, Map<String, String> params);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,7 @@ import java.util.Objects;
|
|||||||
@Validated
|
@Validated
|
||||||
public class MailLogServiceImpl implements MailLogService {
|
public class MailLogServiceImpl implements MailLogService {
|
||||||
|
|
||||||
|
// TODO @wangjingyi:private,然后使用 @Resource
|
||||||
@Autowired
|
@Autowired
|
||||||
MailLogMapper mailLogMapper;
|
MailLogMapper mailLogMapper;
|
||||||
|
|
||||||
@ -41,25 +42,34 @@ public class MailLogServiceImpl implements MailLogService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long createMailLog(MailAccountDO mailAccountDO , MailTemplateDO mailTemplateDO , String from, String content, List<String> tos, String title, Boolean isSend) {
|
public Long createMailLog(MailAccountDO mailAccountDO, MailTemplateDO template, String from, String content, List<String> tos, String title, Boolean isSend) {
|
||||||
MailLogDO.MailLogDOBuilder logDOBuilder = MailLogDO.builder();
|
MailLogDO.MailLogDOBuilder logDOBuilder = MailLogDO.builder();
|
||||||
logDOBuilder.fromAddress(mailAccountDO.getFromAddress());
|
// TODO @wangjingyi:使用 builder 的时候,不用每个 set 是一行。
|
||||||
logDOBuilder.accountId(mailAccountDO.getId());
|
// 根据是否要发送,设置状态
|
||||||
logDOBuilder.content(content);
|
|
||||||
logDOBuilder.title(title);
|
|
||||||
logDOBuilder.templateCode(mailTemplateDO.getCode());
|
|
||||||
logDOBuilder.templateId(mailTemplateDO.getId());
|
|
||||||
logDOBuilder.to(tos.toString());
|
|
||||||
logDOBuilder.sendTime(new Date());
|
|
||||||
logDOBuilder.sendStatus(Objects.equals(isSend, true) ? MailSendStatusEnum.INIT.getStatus()
|
logDOBuilder.sendStatus(Objects.equals(isSend, true) ? MailSendStatusEnum.INIT.getStatus()
|
||||||
: MailSendStatusEnum.IGNORE.getStatus());
|
: MailSendStatusEnum.IGNORE.getStatus());
|
||||||
|
// 设置邮箱相关字段
|
||||||
|
// TODO @wangjingyi:userId、userType
|
||||||
|
logDOBuilder.fromAddress(mailAccountDO.getFromAddress());
|
||||||
|
logDOBuilder.accountId(mailAccountDO.getId());
|
||||||
|
// TODO @wangjingyi:每个接收人一条日志。发送多个人,就调用多次,业务方。因为某个邮箱有问题,会导致所有都发送失败。
|
||||||
|
logDOBuilder.to(tos.toString());
|
||||||
|
// 设置模板相关字段
|
||||||
|
// TODO @wangjingyi:可以参考下 sms 短信的逻辑,templateContent、templateParams
|
||||||
|
logDOBuilder.templateId(template.getId());
|
||||||
|
logDOBuilder.templateCode(template.getCode());
|
||||||
|
logDOBuilder.title(title);
|
||||||
|
logDOBuilder.content(content);
|
||||||
|
// TODO @wangjingyi:有结果的时候,才是 sendTime 哈
|
||||||
|
logDOBuilder.sendTime(new Date());
|
||||||
|
|
||||||
MailLogDO mailLogDO = logDOBuilder.build();
|
// 插入数据库
|
||||||
mailLogMapper.insert(mailLogDO);
|
MailLogDO logDO = logDOBuilder.build();
|
||||||
return mailLogDO.getId();
|
mailLogMapper.insert(logDO);
|
||||||
|
return logDO.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO @wangjingyi:不需要返回 id 呀 DONE
|
// TODO @wangjingyi:还是加几个字段哈,日志上。sendStatus,成功、失败;messageId 消息标号。sendException 记录发送的异常。这样界面才好筛选邮件的发送结果。
|
||||||
@Override
|
@Override
|
||||||
public void updateMailSendResult(Long logId, String result) {
|
public void updateMailSendResult(Long logId, String result) {
|
||||||
MailLogDO.MailLogDOBuilder logDOBuilder = MailLogDO.builder();
|
MailLogDO.MailLogDOBuilder logDOBuilder = MailLogDO.builder();
|
||||||
|
@ -3,20 +3,13 @@ package cn.iocoder.yudao.module.system.service.mail.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
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.framework.common.util.collection.CollectionUtils;
|
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
||||||
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.dataobject.sms.SmsTemplateDO;
|
|
||||||
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.mq.producer.mail.MailProducer;
|
import cn.iocoder.yudao.module.system.mq.producer.mail.MailProducer;
|
||||||
import cn.iocoder.yudao.module.system.service.mail.MailTemplateService;
|
import cn.iocoder.yudao.module.system.service.mail.MailTemplateService;
|
||||||
@ -36,7 +29,7 @@ import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.MAIL_TEMPL
|
|||||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.MAIL_TEMPLATE_NOT_EXISTS;
|
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.MAIL_TEMPLATE_NOT_EXISTS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 邮箱模版 服务实现类
|
* 邮箱模版 Service 实现类
|
||||||
*
|
*
|
||||||
* @author wangjingyi
|
* @author wangjingyi
|
||||||
* @since 2022-03-21
|
* @since 2022-03-21
|
||||||
@ -48,6 +41,7 @@ public class MailTemplateServiceImpl implements MailTemplateService {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private MailTemplateMapper mailTemplateMapper;
|
private MailTemplateMapper mailTemplateMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private MailProducer mailProducer;
|
private MailProducer mailProducer;
|
||||||
|
|
||||||
@ -61,7 +55,6 @@ public class MailTemplateServiceImpl implements MailTemplateService {
|
|||||||
|
|
||||||
private volatile Date maxUpdateTime;
|
private volatile Date maxUpdateTime;
|
||||||
|
|
||||||
// TODO @wangjingyi:参考下别的模块的 initLocalCache 的实现 DONE
|
|
||||||
@Override
|
@Override
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void initLocalCache() {
|
public void initLocalCache() {
|
||||||
@ -78,8 +71,8 @@ public class MailTemplateServiceImpl implements MailTemplateService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long create(MailTemplateCreateReqVO createReqVO) {
|
public Long create(MailTemplateCreateReqVO createReqVO) {
|
||||||
//要校验存在
|
// 要校验存在
|
||||||
this.validateMailTemplateExists(createReqVO.getId());
|
validateMailTemplateExists(createReqVO.getId());
|
||||||
MailTemplateDO mailTemplateDO = MailTemplateConvert.INSTANCE.convert(createReqVO);
|
MailTemplateDO mailTemplateDO = MailTemplateConvert.INSTANCE.convert(createReqVO);
|
||||||
mailTemplateMapper.insert(mailTemplateDO);
|
mailTemplateMapper.insert(mailTemplateDO);
|
||||||
// TODO @wangjingyi:mq 更新 DONE
|
// TODO @wangjingyi:mq 更新 DONE
|
||||||
@ -123,7 +116,6 @@ public class MailTemplateServiceImpl implements MailTemplateService {
|
|||||||
return mailTemplateCache.get(code);
|
return mailTemplateCache.get(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO @@wangjingyi:单词拼写错误 DONE
|
|
||||||
@Override
|
@Override
|
||||||
public String formatMailTemplateContent(String content, Map<String, String> params) {
|
public String formatMailTemplateContent(String content, Map<String, String> params) {
|
||||||
return StrUtil.format(content, params);
|
return StrUtil.format(content, params);
|
||||||
|
Loading…
Reference in New Issue
Block a user