Commit 0b0e37a3d50f05b6518acdaed2f761a81f9bfd17

Authored by YunaiV
1 parent 0189993a

code review 短信的实现

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
... ... @@ -9,7 +9,6 @@ import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
9 9 import javax.validation.Valid;
10 10 import java.util.List;
11 11  
12   -
13 12 /**
14 13 * 邮箱账号 Service 接口
15 14 *
... ...
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
... ... @@ -20,6 +20,7 @@ import java.util.Map;
20 20 public interface MailTemplateService {
21 21  
22 22 void initLocalCache();
  23 +
23 24 /**
24 25 * 邮箱模版创建
25 26 *
... ...
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);
... ...