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