Commit 0b0e37a3d50f05b6518acdaed2f761a81f9bfd17
1 parent
0189993a
code review 短信的实现
Showing
10 changed files
with
44 additions
and
19 deletions
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/MailAccountController.java
| ... | ... | @@ -24,7 +24,6 @@ import java.util.List; |
| 24 | 24 | |
| 25 | 25 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 26 | 26 | |
| 27 | - | |
| 28 | 27 | @Api(tags = "管理后台 - 邮件账号") |
| 29 | 28 | @RestController |
| 30 | 29 | @RequestMapping("/system/mail-account") |
| ... | ... | @@ -57,6 +56,9 @@ public class MailAccountController { |
| 57 | 56 | return success(true); |
| 58 | 57 | } |
| 59 | 58 | |
| 59 | + // TODO @wangjingyi:getMailAccount 和 getMailAccountPage 这两个接口,定义一个对应的 Resp 类哈,参考别的模块。主要不要返回 password 字段。 | |
| 60 | + // 一个可以的做法,是 MailAccountBaseVO 不返回 password,然后 MailAccountCreateReqVO、MailAccountUpdateReqVO 添加这个字段 | |
| 61 | + | |
| 60 | 62 | @GetMapping("/get") |
| 61 | 63 | @ApiOperation("获得邮箱账号") |
| 62 | 64 | @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) |
| ... | ... | @@ -74,6 +76,8 @@ public class MailAccountController { |
| 74 | 76 | return success(MailAccountConvert.INSTANCE.convertPage(pageResult)); |
| 75 | 77 | } |
| 76 | 78 | |
| 79 | + // TODO @wangjingyi:getSimpleMailAccountList 单独定义一个类,只返回精简的信息,id,from 即可。像密码之类都是敏感信息,不应该返回 | |
| 80 | + | |
| 77 | 81 | @GetMapping("/list-all-simple") |
| 78 | 82 | @ApiOperation(value = "获得邮箱账号精简列表") |
| 79 | 83 | public CommonResult<List<MailAccountBaseVO>> getSimpleMailAccountList() { | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/MailTemplateController.java
| ... | ... | @@ -29,6 +29,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 29 | 29 | @RequestMapping("/system/mail-template") |
| 30 | 30 | public class MailTemplateController { |
| 31 | 31 | |
| 32 | + // TODO @wangjingyi:private | |
| 32 | 33 | @Autowired |
| 33 | 34 | MailTemplateService mailTempleService; |
| 34 | 35 | |
| ... | ... | @@ -55,6 +56,8 @@ public class MailTemplateController { |
| 55 | 56 | return success(true); |
| 56 | 57 | } |
| 57 | 58 | |
| 59 | + // TODO @wangjingyi:下面几个 VO 也参考我在 account 给的建议 | |
| 60 | + | |
| 58 | 61 | @GetMapping("/get") |
| 59 | 62 | @ApiOperation("获得邮箱模版") |
| 60 | 63 | @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/account/MailAccountPageReqVO.java
| ... | ... | @@ -12,6 +12,7 @@ import lombok.ToString; |
| 12 | 12 | @EqualsAndHashCode(callSuper = true) |
| 13 | 13 | @ToString(callSuper = true) |
| 14 | 14 | public class MailAccountPageReqVO extends PageParam { |
| 15 | + | |
| 15 | 16 | @ApiModelProperty(value = "邮箱" , required = true , example = "yudaoyuanma@123.com") |
| 16 | 17 | private String from; |
| 17 | 18 | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailAccountService.java
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailLogService.java
| 1 | 1 | package cn.iocoder.yudao.module.system.service.mail; |
| 2 | 2 | |
| 3 | - | |
| 4 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | 4 | import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogExportReqVO; |
| 6 | 5 | import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogPageReqVO; |
| ... | ... | @@ -11,14 +10,16 @@ import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO; |
| 11 | 10 | import java.util.List; |
| 12 | 11 | |
| 13 | 12 | /** |
| 14 | - * 邮箱日志服务类 | |
| 13 | + * 邮箱日志服务类 | |
| 15 | 14 | * |
| 16 | 15 | * @author wangjingyi |
| 17 | 16 | * @since 2022-03-21 |
| 18 | 17 | */ |
| 19 | 18 | public interface MailLogService { |
| 19 | + | |
| 20 | 20 | /** |
| 21 | 21 | * 邮箱日志分页 |
| 22 | + * | |
| 22 | 23 | * @param pageVO |
| 23 | 24 | * @return |
| 24 | 25 | */ |
| ... | ... | @@ -26,6 +27,7 @@ public interface MailLogService { |
| 26 | 27 | |
| 27 | 28 | /** |
| 28 | 29 | * 邮箱日志数组信息 |
| 30 | + * | |
| 29 | 31 | * @param exportReqVO |
| 30 | 32 | * @return |
| 31 | 33 | */ |
| ... | ... | @@ -33,13 +35,14 @@ public interface MailLogService { |
| 33 | 35 | |
| 34 | 36 | /** |
| 35 | 37 | * 创建邮箱日志 |
| 36 | - * @param mailAccountDO 邮箱账号信息 | |
| 38 | + * | |
| 39 | + * @param mailAccountDO 邮箱账号信息 | |
| 37 | 40 | * @param mailTemplateDO 模版信息 |
| 38 | - * @param from 邮箱 | |
| 39 | - * @param content 内容 | |
| 40 | - * @param tos 收件人 | |
| 41 | - * @param title 标题 | |
| 42 | - * @param isSend 是否发送成功 | |
| 41 | + * @param from 邮箱 | |
| 42 | + * @param content 内容 | |
| 43 | + * @param tos 收件人 | |
| 44 | + * @param title 标题 | |
| 45 | + * @param isSend 是否发送成功 | |
| 43 | 46 | */ |
| 44 | 47 | Long createMailLog(MailAccountDO mailAccountDO, MailTemplateDO mailTemplateDO, String from, String content, List<String> tos, String title, Boolean isSend); |
| 45 | 48 | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailTemplateService.java
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/impl/MailAccountServiceImpl.java
| ... | ... | @@ -21,7 +21,7 @@ import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; |
| 21 | 21 | |
| 22 | 22 | |
| 23 | 23 | /** |
| 24 | - * 邮箱账号 Service 实现类 | |
| 24 | + * 邮箱账号 Service 实现类 | |
| 25 | 25 | * |
| 26 | 26 | * @author wangjingyi |
| 27 | 27 | * @since 2022-03-21 |
| ... | ... | @@ -39,28 +39,34 @@ public class MailAccountServiceImpl implements MailAccountService { |
| 39 | 39 | @Override |
| 40 | 40 | public Long create(MailAccountCreateReqVO createReqVO) { |
| 41 | 41 | // username 要校验唯一 |
| 42 | - this.validateMailAccountOnlyByUserName(createReqVO.getUsername()); | |
| 42 | + validateMailAccountOnlyByUserName(createReqVO.getUsername()); | |
| 43 | 43 | MailAccountDO mailAccountDO = MailAccountConvert.INSTANCE.convert(createReqVO); |
| 44 | 44 | mailAccountMapper.insert(mailAccountDO); |
| 45 | + | |
| 46 | + // 更新 | |
| 45 | 47 | return mailAccountDO.getId(); |
| 46 | 48 | } |
| 47 | 49 | |
| 48 | 50 | @Override |
| 49 | 51 | public void update(MailAccountUpdateReqVO updateReqVO) { |
| 50 | - // username 要校验唯一 | |
| 51 | - this.validateMailAccountExists(updateReqVO.getId()); | |
| 52 | + // username 要校验唯一 TODO @wangjingyi:校验唯一的时候,需要排除掉自己 | |
| 53 | + validateMailAccountExists(updateReqVO.getId()); | |
| 52 | 54 | MailAccountDO mailAccountDO = MailAccountConvert.INSTANCE.convert(updateReqVO); |
| 53 | 55 | // 校验是否存在 |
| 54 | - this.validateMailAccountExists(mailAccountDO.getId()); | |
| 56 | + validateMailAccountExists(mailAccountDO.getId()); | |
| 57 | + | |
| 58 | + // 更新 | |
| 55 | 59 | mailAccountMapper.updateById(mailAccountDO); |
| 56 | 60 | } |
| 57 | 61 | |
| 58 | 62 | @Override |
| 59 | 63 | public void delete(Long id) { |
| 60 | 64 | // 校验是否存在账号 |
| 61 | - this.validateMailAccountExists(id); | |
| 65 | + validateMailAccountExists(id); | |
| 62 | 66 | // 校验是否存在关联模版 |
| 63 | - this.validateMailTemplateByAccountId(id); | |
| 67 | + validateMailTemplateByAccountId(id); | |
| 68 | + | |
| 69 | + // 删除 | |
| 64 | 70 | mailAccountMapper.deleteById(id); |
| 65 | 71 | } |
| 66 | 72 | |
| ... | ... | @@ -95,6 +101,7 @@ public class MailAccountServiceImpl implements MailAccountService { |
| 95 | 101 | private void validateMailTemplateByAccountId(Long accountId){ |
| 96 | 102 | MailTemplateDO mailTemplateDO = mailTemplateMapper.selectOneByAccountId(accountId); |
| 97 | 103 | if (mailTemplateDO != null) { |
| 104 | + // TODO wangjingyi:MAIL_ACCOUNT_RELATE_TEMPLATE_EXISTS | |
| 98 | 105 | throw exception(MAIL_RELATE_TEMPLATE_EXISTS); |
| 99 | 106 | } |
| 100 | 107 | } | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/impl/MailLogServiceImpl.java
| 1 | 1 | package cn.iocoder.yudao.module.system.service.mail.impl; |
| 2 | 2 | |
| 3 | - | |
| 4 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | 4 | import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogExportReqVO; |
| 6 | 5 | import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogPageReqVO; |
| ... | ... | @@ -62,6 +61,7 @@ public class MailLogServiceImpl implements MailLogService { |
| 62 | 61 | return mailLogDO.getId(); |
| 63 | 62 | } |
| 64 | 63 | |
| 64 | + // TODO @wangjingyi:不需要返回 id 呀 | |
| 65 | 65 | @Override |
| 66 | 66 | public Long updateSmsSendResult(Long logId, String result) { |
| 67 | 67 | MailLogDO.MailLogDOBuilder logDOBuilder = MailLogDO.builder(); |
| ... | ... | @@ -72,6 +72,7 @@ public class MailLogServiceImpl implements MailLogService { |
| 72 | 72 | return logId; |
| 73 | 73 | } |
| 74 | 74 | |
| 75 | + // TODO @wangjingyi:无用的方法,需要进行删除 | |
| 75 | 76 | public Long create(){ |
| 76 | 77 | MailLogDO mailLogDO = new MailLogDO(); |
| 77 | 78 | mailLogMapper.insert(mailLogDO); | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/impl/MailSendServiceImpl.java
| 1 | 1 | package cn.iocoder.yudao.module.system.service.mail.impl; |
| 2 | 2 | |
| 3 | - | |
| 4 | 3 | import cn.hutool.extra.mail.MailAccount; |
| 5 | 4 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 6 | 5 | import cn.iocoder.yudao.module.system.convert.mail.MailAccountConvert; |
| ... | ... | @@ -80,6 +79,7 @@ public class MailSendServiceImpl implements MailSendService { |
| 80 | 79 | |
| 81 | 80 | @Override |
| 82 | 81 | public void doSendMail(MailSendMessage message) { |
| 82 | + // TODO @wangjingyi:直接使用 hutool 发送,不要封装 mail client 哈,因为短信的客户端都是比较统一的 | |
| 83 | 83 | MailClient mailClient = mailClientFactory.getMailClient(); |
| 84 | 84 | String result = mailClient.sendMail(message.getFrom() , message.getContent() , message.getTitle() , message.getTos()); |
| 85 | 85 | mailLogService.updateSmsSendResult(message.getLogId() , result); | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/impl/MailTemplateServiceImpl.java
| ... | ... | @@ -62,6 +62,7 @@ public class MailTemplateServiceImpl implements MailTemplateService { |
| 62 | 62 | |
| 63 | 63 | private volatile Date maxUpdateTime; |
| 64 | 64 | |
| 65 | + // TODO @wangjingyi:参考下别的模块的 initLocalCache 的实现 | |
| 65 | 66 | @Override |
| 66 | 67 | @PostConstruct |
| 67 | 68 | public void initLocalCache() { |
| ... | ... | @@ -85,9 +86,11 @@ public class MailTemplateServiceImpl implements MailTemplateService { |
| 85 | 86 | @Override |
| 86 | 87 | public Long create(MailTemplateCreateReqVO createReqVO) { |
| 87 | 88 | // code 要校验唯一 |
| 89 | + // TODO @wangjingyi:参考下我在 account 给的唯一校验的说明。 | |
| 88 | 90 | this.validateMailTemplateOnlyByCode(createReqVO.getCode()); |
| 89 | 91 | MailTemplateDO mailTemplateDO = MailTemplateConvert.INSTANCE.convert(createReqVO); |
| 90 | 92 | mailTemplateMapper.insert(mailTemplateDO); |
| 93 | + // TODO @wangjingyi:mq 更新 | |
| 91 | 94 | return mailTemplateDO.getId(); |
| 92 | 95 | } |
| 93 | 96 | |
| ... | ... | @@ -97,6 +100,7 @@ public class MailTemplateServiceImpl implements MailTemplateService { |
| 97 | 100 | this.validateMailTemplateExists(updateReqVO.getId()); |
| 98 | 101 | MailTemplateDO mailTemplateDO = MailTemplateConvert.INSTANCE.convert(updateReqVO); |
| 99 | 102 | mailTemplateMapper.updateById(mailTemplateDO); |
| 103 | + // TODO @wangjingyi:mq 更新 | |
| 100 | 104 | } |
| 101 | 105 | |
| 102 | 106 | @Override |
| ... | ... | @@ -104,6 +108,7 @@ public class MailTemplateServiceImpl implements MailTemplateService { |
| 104 | 108 | // 校验是否存在 |
| 105 | 109 | this.validateMailTemplateExists(id); |
| 106 | 110 | mailTemplateMapper.deleteById(id); |
| 111 | + // TODO @wangjingyi:mq 更新 | |
| 107 | 112 | } |
| 108 | 113 | |
| 109 | 114 | @Override |
| ... | ... | @@ -144,6 +149,7 @@ public class MailTemplateServiceImpl implements MailTemplateService { |
| 144 | 149 | MailUtil.send(account , mailReqVO.getTos() , mailReqVO.getTitle() , content , false); |
| 145 | 150 | } |
| 146 | 151 | |
| 152 | + // TODO @@wangjingyi:单词拼写错误 | |
| 147 | 153 | @Override |
| 148 | 154 | public String formateMailTemplateContent(String content, Map<String, String> params) { |
| 149 | 155 | return StrUtil.format(content, params); | ... | ... |