Commit 1464f7d399de68de75a6fb84aef8b58783982a16
1 parent
63983bba
code review 邮箱的实现代码
Showing
10 changed files
with
52 additions
and
44 deletions
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/test/TestDemoServiceImpl.java
| @@ -79,7 +79,7 @@ public class TestDemoServiceImpl implements TestDemoService { | @@ -79,7 +79,7 @@ public class TestDemoServiceImpl implements TestDemoService { | ||
| 79 | 79 | ||
| 80 | @Override | 80 | @Override |
| 81 | public PageResult<TestDemoDO> getTestDemoPage(TestDemoPageReqVO pageReqVO) { | 81 | public PageResult<TestDemoDO> getTestDemoPage(TestDemoPageReqVO pageReqVO) { |
| 82 | -// testDemoMapper.selectList2(); | 82 | + testDemoMapper.selectList2(); |
| 83 | return testDemoMapper.selectPage(pageReqVO); | 83 | return testDemoMapper.selectPage(pageReqVO); |
| 84 | } | 84 | } |
| 85 | 85 |
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java
| @@ -128,7 +128,7 @@ public interface ErrorCodeConstants { | @@ -128,7 +128,7 @@ public interface ErrorCodeConstants { | ||
| 128 | ErrorCode MAIL_ACCOUNT_EXISTS = new ErrorCode(1002020001, "邮箱账号存在"); | 128 | ErrorCode MAIL_ACCOUNT_EXISTS = new ErrorCode(1002020001, "邮箱账号存在"); |
| 129 | 129 | ||
| 130 | // ========== 邮箱模版 1002021000 ========== | 130 | // ========== 邮箱模版 1002021000 ========== |
| 131 | - ErrorCode MAIL_TEMPLATE_NOT_EXISTS = new ErrorCode(1002021000 , "邮箱模版不存在"); | 131 | + ErrorCode MAIL_TEMPLATE_NOT_EXISTS = new ErrorCode(1002021000, "邮箱模版不存在"); |
| 132 | ErrorCode MAIL_TEMPLATE_EXISTS = new ErrorCode(1002021001, "邮箱模版存在"); | 132 | ErrorCode MAIL_TEMPLATE_EXISTS = new ErrorCode(1002021001, "邮箱模版存在"); |
| 133 | ErrorCode MAIL_ACCOUNT_RELATE_TEMPLATE_EXISTS = new ErrorCode(1002021002, "存在关联邮箱模版"); | 133 | ErrorCode MAIL_ACCOUNT_RELATE_TEMPLATE_EXISTS = new ErrorCode(1002021002, "存在关联邮箱模版"); |
| 134 | 134 |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogPageReqVO.java
| @@ -17,6 +17,9 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ | @@ -17,6 +17,9 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ | ||
| 17 | @EqualsAndHashCode(callSuper = true) | 17 | @EqualsAndHashCode(callSuper = true) |
| 18 | @ToString(callSuper = true) | 18 | @ToString(callSuper = true) |
| 19 | public class MailLogPageReqVO extends PageParam { | 19 | public class MailLogPageReqVO extends PageParam { |
| 20 | + | ||
| 21 | + // TODO @wangjingyi:required 为 false 时,它是默认值,所以不用谢 | ||
| 22 | + | ||
| 20 | @ApiModelProperty(value = "邮箱" , required = false , example = "yudaoyuanma@123.com") | 23 | @ApiModelProperty(value = "邮箱" , required = false , example = "yudaoyuanma@123.com") |
| 21 | private String from; | 24 | private String from; |
| 22 | 25 |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/send/MailReqVO.java
| @@ -34,5 +34,4 @@ public class MailReqVO { // TODO @wangjingqi:1), ä¸ç”¨ç©ºæ ¼ï¼›2)应该å | @@ -34,5 +34,4 @@ public class MailReqVO { // TODO @wangjingqi:1), ä¸ç”¨ç©ºæ ¼ï¼›2)应该å | ||
| 34 | @ApiModelProperty(value = "附件",example = "附件编ç ") | 34 | @ApiModelProperty(value = "附件",example = "附件编ç ") |
| 35 | private List<String> fileIds; | 35 | private List<String> fileIds; |
| 36 | 36 | ||
| 37 | - | ||
| 38 | } | 37 | } |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/mail/MailTemplateConvert.java
| @@ -11,6 +11,7 @@ import java.util.List; | @@ -11,6 +11,7 @@ import java.util.List; | ||
| 11 | 11 | ||
| 12 | @Mapper | 12 | @Mapper |
| 13 | public interface MailTemplateConvert { | 13 | public interface MailTemplateConvert { |
| 14 | + | ||
| 14 | MailTemplateConvert INSTANCE = Mappers.getMapper(MailTemplateConvert.class); | 15 | MailTemplateConvert INSTANCE = Mappers.getMapper(MailTemplateConvert.class); |
| 15 | 16 | ||
| 16 | MailTemplateDO convert(MailTemplateBaseVO baseVO); | 17 | MailTemplateDO convert(MailTemplateBaseVO baseVO); |
| @@ -20,4 +21,5 @@ public interface MailTemplateConvert { | @@ -20,4 +21,5 @@ public interface MailTemplateConvert { | ||
| 20 | PageResult<MailTemplateRespVO> convertPage(PageResult<MailTemplateDO> pageResult); | 21 | PageResult<MailTemplateRespVO> convertPage(PageResult<MailTemplateDO> pageResult); |
| 21 | 22 | ||
| 22 | List<MailTemplateRespVO> convertList02(List<MailTemplateDO> list); | 23 | List<MailTemplateRespVO> convertList02(List<MailTemplateDO> list); |
| 24 | + | ||
| 23 | } | 25 | } |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/mail/MailLogDO.java
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailLogService.java
| @@ -20,37 +20,38 @@ public interface MailLogService { | @@ -20,37 +20,38 @@ public interface MailLogService { | ||
| 20 | /** | 20 | /** |
| 21 | * 邮箱日志分页 | 21 | * 邮箱日志分页 |
| 22 | * | 22 | * |
| 23 | - * @param pageVO | ||
| 24 | - * @return | 23 | + * @param pageVO 分页参数 |
| 24 | + * @return 分页结果 | ||
| 25 | */ | 25 | */ |
| 26 | PageResult<MailLogDO> getMailLogPage(MailLogPageReqVO pageVO); | 26 | PageResult<MailLogDO> getMailLogPage(MailLogPageReqVO pageVO); |
| 27 | 27 | ||
| 28 | /** | 28 | /** |
| 29 | * 邮箱日志数组信息 | 29 | * 邮箱日志数组信息 |
| 30 | * | 30 | * |
| 31 | - * @param exportReqVO | ||
| 32 | - * @return | 31 | + * @param exportReqVO 导出筛选请求 |
| 32 | + * @return 导出的日志数据 | ||
| 33 | */ | 33 | */ |
| 34 | List<MailLogDO> getMailLogList(MailLogExportReqVO exportReqVO); | 34 | List<MailLogDO> getMailLogList(MailLogExportReqVO exportReqVO); |
| 35 | 35 | ||
| 36 | /** | 36 | /** |
| 37 | * 创建邮箱日志 | 37 | * 创建邮箱日志 |
| 38 | * | 38 | * |
| 39 | - * @param mailAccountDO 邮箱账号信息 | ||
| 40 | - * @param mailTemplateDO 模版信息 | ||
| 41 | - * @param from 邮箱 | ||
| 42 | - * @param content 内容 | ||
| 43 | - * @param tos 收件人 | ||
| 44 | - * @param title 标题 | ||
| 45 | - * @param isSend 是否发送成功 | 39 | + * @param mailAccountDO 邮箱账号信息 |
| 40 | + * @param template 模版信息 | ||
| 41 | + * @param from 邮箱 | ||
| 42 | + * @param content 内容 | ||
| 43 | + * @param tos 收件人 | ||
| 44 | + * @param title 标题 | ||
| 45 | + * @param isSend 是否发送成功 | ||
| 46 | */ | 46 | */ |
| 47 | - Long createMailLog(MailAccountDO mailAccountDO, MailTemplateDO mailTemplateDO, String from, String content, List<String> tos, String title, Boolean isSend); | 47 | + Long createMailLog(MailAccountDO mailAccountDO, MailTemplateDO template, String from, String content, List<String> tos, String title, Boolean isSend); |
| 48 | 48 | ||
| 49 | /** | 49 | /** |
| 50 | * 更新邮件发送结果 | 50 | * 更新邮件发送结果 |
| 51 | * | 51 | * |
| 52 | - * @param logId 发送日志Id | ||
| 53 | - * @param result 发送结果 默认返回messageId | 52 | + * @param logId 发送日志Id |
| 53 | + * @param result 发送结果 默认返回messageId | ||
| 54 | */ | 54 | */ |
| 55 | void updateMailSendResult(Long logId, String result); | 55 | void updateMailSendResult(Long logId, String result); |
| 56 | + | ||
| 56 | } | 57 | } |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailTemplateService.java
| 1 | package cn.iocoder.yudao.module.system.service.mail; | 1 | package cn.iocoder.yudao.module.system.service.mail; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.send.MailReqVO; | ||
| 5 | import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateCreateReqVO; | 4 | import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateCreateReqVO; |
| 6 | import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplatePageReqVO; | 5 | import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplatePageReqVO; |
| 7 | import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateUpdateReqVO; | 6 | import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateUpdateReqVO; |
| @@ -68,8 +67,9 @@ public interface MailTemplateService { | @@ -68,8 +67,9 @@ public interface MailTemplateService { | ||
| 68 | * @return 模版数组 | 67 | * @return 模版数组 |
| 69 | */ | 68 | */ |
| 70 | List<MailTemplateDO> getMailTemplateList(); | 69 | List<MailTemplateDO> getMailTemplateList(); |
| 70 | + | ||
| 71 | /** | 71 | /** |
| 72 | - *从缓存中获取邮箱模版 | 72 | + * 从缓存中获取邮箱模版 |
| 73 | * | 73 | * |
| 74 | * @param code 模板编码 | 74 | * @param code 模板编码 |
| 75 | * @return 邮箱模板 | 75 | * @return 邮箱模板 |
| @@ -78,9 +78,11 @@ public interface MailTemplateService { | @@ -78,9 +78,11 @@ public interface MailTemplateService { | ||
| 78 | 78 | ||
| 79 | /** | 79 | /** |
| 80 | * 邮件模版内容合成 | 80 | * 邮件模版内容合成 |
| 81 | + * | ||
| 81 | * @param content 邮箱模版 | 82 | * @param content 邮箱模版 |
| 82 | * @param params 合成参数 | 83 | * @param params 合成参数 |
| 83 | - * @return | 84 | + * @return 格式化后的内容 |
| 84 | */ | 85 | */ |
| 85 | String formatMailTemplateContent(String content, Map<String, String> params); | 86 | String formatMailTemplateContent(String content, Map<String, String> params); |
| 87 | + | ||
| 86 | } | 88 | } |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/impl/MailLogServiceImpl.java
| @@ -27,6 +27,7 @@ import java.util.Objects; | @@ -27,6 +27,7 @@ import java.util.Objects; | ||
| 27 | @Validated | 27 | @Validated |
| 28 | public class MailLogServiceImpl implements MailLogService { | 28 | public class MailLogServiceImpl implements MailLogService { |
| 29 | 29 | ||
| 30 | + // TODO @wangjingyi:private,然后使用 @Resource | ||
| 30 | @Autowired | 31 | @Autowired |
| 31 | MailLogMapper mailLogMapper; | 32 | MailLogMapper mailLogMapper; |
| 32 | 33 | ||
| @@ -41,25 +42,34 @@ public class MailLogServiceImpl implements MailLogService { | @@ -41,25 +42,34 @@ public class MailLogServiceImpl implements MailLogService { | ||
| 41 | } | 42 | } |
| 42 | 43 | ||
| 43 | @Override | 44 | @Override |
| 44 | - public Long createMailLog(MailAccountDO mailAccountDO , MailTemplateDO mailTemplateDO , String from, String content, List<String> tos, String title, Boolean isSend) { | 45 | + public Long createMailLog(MailAccountDO mailAccountDO, MailTemplateDO template, String from, String content, List<String> tos, String title, Boolean isSend) { |
| 45 | MailLogDO.MailLogDOBuilder logDOBuilder = MailLogDO.builder(); | 46 | MailLogDO.MailLogDOBuilder logDOBuilder = MailLogDO.builder(); |
| 47 | + // TODO @wangjingyi:使用 builder 的时候,不用每个 set 是一行。 | ||
| 48 | + // 根据是否要发送,设置状态 | ||
| 49 | + logDOBuilder.sendStatus(Objects.equals(isSend, true) ? MailSendStatusEnum.INIT.getStatus() | ||
| 50 | + : MailSendStatusEnum.IGNORE.getStatus()); | ||
| 51 | + // 设置邮箱相关字段 | ||
| 52 | + // TODO @wangjingyi:userId、userType | ||
| 46 | logDOBuilder.fromAddress(mailAccountDO.getFromAddress()); | 53 | logDOBuilder.fromAddress(mailAccountDO.getFromAddress()); |
| 47 | logDOBuilder.accountId(mailAccountDO.getId()); | 54 | logDOBuilder.accountId(mailAccountDO.getId()); |
| 48 | - logDOBuilder.content(content); | ||
| 49 | - logDOBuilder.title(title); | ||
| 50 | - logDOBuilder.templateCode(mailTemplateDO.getCode()); | ||
| 51 | - logDOBuilder.templateId(mailTemplateDO.getId()); | 55 | + // TODO @wangjingyi:每个接收人一条日志。发送多个人,就调用多次,业务方。因为某个邮箱有问题,会导致所有都发送失败。 |
| 52 | logDOBuilder.to(tos.toString()); | 56 | logDOBuilder.to(tos.toString()); |
| 57 | + // 设置模板相关字段 | ||
| 58 | + // TODO @wangjingyi:可以参考下 sms 短信的逻辑,templateContent、templateParams | ||
| 59 | + logDOBuilder.templateId(template.getId()); | ||
| 60 | + logDOBuilder.templateCode(template.getCode()); | ||
| 61 | + logDOBuilder.title(title); | ||
| 62 | + logDOBuilder.content(content); | ||
| 63 | + // TODO @wangjingyi:有结果的时候,才是 sendTime 哈 | ||
| 53 | logDOBuilder.sendTime(new Date()); | 64 | logDOBuilder.sendTime(new Date()); |
| 54 | - logDOBuilder.sendStatus(Objects.equals(isSend, true) ? MailSendStatusEnum.INIT.getStatus() | ||
| 55 | - : MailSendStatusEnum.IGNORE.getStatus()); | ||
| 56 | 65 | ||
| 57 | - MailLogDO mailLogDO = logDOBuilder.build(); | ||
| 58 | - mailLogMapper.insert(mailLogDO); | ||
| 59 | - return mailLogDO.getId(); | 66 | + // 插入数据库 |
| 67 | + MailLogDO logDO = logDOBuilder.build(); | ||
| 68 | + mailLogMapper.insert(logDO); | ||
| 69 | + return logDO.getId(); | ||
| 60 | } | 70 | } |
| 61 | 71 | ||
| 62 | - // TODO @wangjingyi:不需要返回 id 呀 DONE | 72 | + // TODO @wangjingyi:还是加几个字段哈,日志上。sendStatus,成功、失败;messageId 消息标号。sendException 记录发送的异常。这样界面才好筛选邮件的发送结果。 |
| 63 | @Override | 73 | @Override |
| 64 | public void updateMailSendResult(Long logId, String result) { | 74 | public void updateMailSendResult(Long logId, String result) { |
| 65 | MailLogDO.MailLogDOBuilder logDOBuilder = MailLogDO.builder(); | 75 | MailLogDO.MailLogDOBuilder logDOBuilder = MailLogDO.builder(); |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/impl/MailTemplateServiceImpl.java
| @@ -3,20 +3,13 @@ package cn.iocoder.yudao.module.system.service.mail.impl; | @@ -3,20 +3,13 @@ package cn.iocoder.yudao.module.system.service.mail.impl; | ||
| 3 | 3 | ||
| 4 | import cn.hutool.core.collection.CollUtil; | 4 | import cn.hutool.core.collection.CollUtil; |
| 5 | import cn.hutool.core.util.StrUtil; | 5 | import cn.hutool.core.util.StrUtil; |
| 6 | -import cn.hutool.extra.mail.MailAccount; | ||
| 7 | -import cn.hutool.extra.mail.MailUtil; | ||
| 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | 7 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 10 | -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.send.MailReqVO; | ||
| 11 | import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateCreateReqVO; | 8 | import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateCreateReqVO; |
| 12 | import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplatePageReqVO; | 9 | import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplatePageReqVO; |
| 13 | import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateUpdateReqVO; | 10 | import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateUpdateReqVO; |
| 14 | -import cn.iocoder.yudao.module.system.convert.mail.MailAccountConvert; | ||
| 15 | import cn.iocoder.yudao.module.system.convert.mail.MailTemplateConvert; | 11 | import cn.iocoder.yudao.module.system.convert.mail.MailTemplateConvert; |
| 16 | -import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO; | ||
| 17 | import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO; | 12 | import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO; |
| 18 | -import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsTemplateDO; | ||
| 19 | -import cn.iocoder.yudao.module.system.dal.mysql.mail.MailAccountMapper; | ||
| 20 | import cn.iocoder.yudao.module.system.dal.mysql.mail.MailTemplateMapper; | 13 | import cn.iocoder.yudao.module.system.dal.mysql.mail.MailTemplateMapper; |
| 21 | import cn.iocoder.yudao.module.system.mq.producer.mail.MailProducer; | 14 | import cn.iocoder.yudao.module.system.mq.producer.mail.MailProducer; |
| 22 | import cn.iocoder.yudao.module.system.service.mail.MailTemplateService; | 15 | import cn.iocoder.yudao.module.system.service.mail.MailTemplateService; |
| @@ -36,7 +29,7 @@ import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.MAIL_TEMPL | @@ -36,7 +29,7 @@ import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.MAIL_TEMPL | ||
| 36 | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.MAIL_TEMPLATE_NOT_EXISTS; | 29 | import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.MAIL_TEMPLATE_NOT_EXISTS; |
| 37 | 30 | ||
| 38 | /** | 31 | /** |
| 39 | - * 邮箱模版 服务实现类 | 32 | + * 邮箱模版 Service 实现类 |
| 40 | * | 33 | * |
| 41 | * @author wangjingyi | 34 | * @author wangjingyi |
| 42 | * @since 2022-03-21 | 35 | * @since 2022-03-21 |
| @@ -48,6 +41,7 @@ public class MailTemplateServiceImpl implements MailTemplateService { | @@ -48,6 +41,7 @@ public class MailTemplateServiceImpl implements MailTemplateService { | ||
| 48 | 41 | ||
| 49 | @Resource | 42 | @Resource |
| 50 | private MailTemplateMapper mailTemplateMapper; | 43 | private MailTemplateMapper mailTemplateMapper; |
| 44 | + | ||
| 51 | @Resource | 45 | @Resource |
| 52 | private MailProducer mailProducer; | 46 | private MailProducer mailProducer; |
| 53 | 47 | ||
| @@ -61,7 +55,6 @@ public class MailTemplateServiceImpl implements MailTemplateService { | @@ -61,7 +55,6 @@ public class MailTemplateServiceImpl implements MailTemplateService { | ||
| 61 | 55 | ||
| 62 | private volatile Date maxUpdateTime; | 56 | private volatile Date maxUpdateTime; |
| 63 | 57 | ||
| 64 | - // TODO @wangjingyi:参考下别的模块的 initLocalCache 的实现 DONE | ||
| 65 | @Override | 58 | @Override |
| 66 | @PostConstruct | 59 | @PostConstruct |
| 67 | public void initLocalCache() { | 60 | public void initLocalCache() { |
| @@ -78,8 +71,8 @@ public class MailTemplateServiceImpl implements MailTemplateService { | @@ -78,8 +71,8 @@ public class MailTemplateServiceImpl implements MailTemplateService { | ||
| 78 | 71 | ||
| 79 | @Override | 72 | @Override |
| 80 | public Long create(MailTemplateCreateReqVO createReqVO) { | 73 | public Long create(MailTemplateCreateReqVO createReqVO) { |
| 81 | - //要校验存在 | ||
| 82 | - this.validateMailTemplateExists(createReqVO.getId()); | 74 | + // 要校验存在 |
| 75 | + validateMailTemplateExists(createReqVO.getId()); | ||
| 83 | MailTemplateDO mailTemplateDO = MailTemplateConvert.INSTANCE.convert(createReqVO); | 76 | MailTemplateDO mailTemplateDO = MailTemplateConvert.INSTANCE.convert(createReqVO); |
| 84 | mailTemplateMapper.insert(mailTemplateDO); | 77 | mailTemplateMapper.insert(mailTemplateDO); |
| 85 | // TODO @wangjingyi:mq 更新 DONE | 78 | // TODO @wangjingyi:mq 更新 DONE |
| @@ -123,7 +116,6 @@ public class MailTemplateServiceImpl implements MailTemplateService { | @@ -123,7 +116,6 @@ public class MailTemplateServiceImpl implements MailTemplateService { | ||
| 123 | return mailTemplateCache.get(code); | 116 | return mailTemplateCache.get(code); |
| 124 | } | 117 | } |
| 125 | 118 | ||
| 126 | - // TODO @@wangjingyi:单词拼写错误 DONE | ||
| 127 | @Override | 119 | @Override |
| 128 | public String formatMailTemplateContent(String content, Map<String, String> params) { | 120 | public String formatMailTemplateContent(String content, Map<String, String> params) { |
| 129 | return StrUtil.format(content, params); | 121 | return StrUtil.format(content, params); |