Commit d1812761db1e7a485c32f1bc6be051a6f3ca1d02

Authored by YunaiV
1 parent e1d79b5e

code review 邮件模块 second

Showing 12 changed files with 36 additions and 69 deletions
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/account/MailAccountBaseVO.java
... ... @@ -8,7 +8,7 @@ import javax.validation.constraints.NotNull;
8 8  
9 9 @ApiModel("管理后台 - 邮箱账号基类 Base VO")
10 10 @Data
11   -public class MailAccountBaseVO {
  11 +public class MailAccountBaseVO { // TODO @wangjingqi:1), 不用空格;2)from、username、password、host、sslEnable 都要参数校验,非空;3)username 要 Email 格式;port Integer;
12 12  
13 13 @ApiModelProperty(value = "邮箱" , required = true , example = "yudaoyuanma@123.com")
14 14 private String from;
... ...
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/send/MailReqVO.java
... ... @@ -9,7 +9,7 @@ import java.util.List;
9 9  
10 10 @ApiModel("管理后台 - 邮件发送 Req VO")
11 11 @Data
12   -public class MailReqVO {
  12 +public class MailReqVO { // TODO @wangjingqi:1), 不用空格;2)应该只要传递 templateCode、参数就好,title、from、content、附件应该都是参数里的
13 13  
14 14 @ApiModelProperty(value = "邮箱" , required = true , example = "yudaoyuanma@123.com")
15 15 @NotNull(message = "邮箱账号不能为空")
... ...
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/template/MailTemplateBaseVO.java
... ... @@ -8,7 +8,7 @@ import javax.validation.constraints.NotNull;
8 8  
9 9 @ApiModel("管理后台 - 邮箱模版基类 Base VO")
10 10 @Data
11   -public class MailTemplateBaseVO {
  11 +public class MailTemplateBaseVO { // TODO @wangjingqi:1)swagger 注解不完善;2)id、name、code、username、title、content、status 是不是要参数校验呀
12 12 @ApiModelProperty("主键")
13 13 private Long id;
14 14  
... ...
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/mail/MailAccountDO.java
1 1 package cn.iocoder.yudao.module.system.dal.dataobject.mail;
2 2  
3 3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
4   -import com.baomidou.mybatisplus.annotation.TableField;
5   -import com.baomidou.mybatisplus.annotation.TableId;
6 4 import com.baomidou.mybatisplus.annotation.TableName;
7   -import io.swagger.annotations.ApiModel;
8 5 import lombok.Data;
9 6 import lombok.EqualsAndHashCode;
10   -import lombok.experimental.Accessors;
11   -
12   -import java.io.Serializable;
13 7  
  8 +/**
  9 + * 邮箱账号
  10 + * 配置发送邮箱的账号
  11 + *
  12 + * @author wangjingyi
  13 + * @since 2022-03-21
  14 + */
14 15 @TableName(value = "system_mail_account", autoResultMap = true)
15 16 @Data
16 17 @EqualsAndHashCode(callSuper = true)
17   -@Accessors(chain = true)
18   -public class MailAccountDO extends BaseDO implements Serializable {
  18 +public class MailAccountDO extends BaseDO {
19 19  
20 20 /**
21 21 * 主键
22 22 */
23 23 private Long id;
24   -
25 24 /**
26 25 * 邮箱
27 26 */
28 27 private String from;
29   -
30 28 /**
31 29 * 用户名
32 30 */
33 31 private String username;
34   -
35 32 /**
36 33 * 密码
37 34 */
38 35 private String password;
39   -
40 36 /**
41 37 * 主机
42 38 */
43 39 private String host;
44   -
45 40 /**
46 41 * 端口
47 42 */
48 43 private Integer port;
49   -
50 44 /**
51   - * 是否开启ssl
  45 + * 是否开启 SSL
52 46 */
53 47 private Boolean sslEnable;
54 48  
55   -
56 49 }
... ...
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/mail/MailLogDO.java
1 1 package cn.iocoder.yudao.module.system.dal.dataobject.mail;
2 2  
3 3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
4   -import java.sql.Timestamp;
5   -import com.baomidou.mybatisplus.annotation.TableId;
6   -import com.baomidou.mybatisplus.annotation.TableField;
7   -import java.io.Serializable;
8   -
9 4 import com.baomidou.mybatisplus.annotation.TableName;
10   -import io.swagger.annotations.ApiModel;
11 5 import lombok.Data;
12 6 import lombok.EqualsAndHashCode;
13   -import lombok.experimental.Accessors;
  7 +
  8 +import java.io.Serializable;
  9 +import java.sql.Timestamp;
14 10  
15 11 /**
16   - * <p>
17 12 * 邮箱日志
18   - * </p>
  13 + * 记录每一次邮件的发送
19 14 *
20 15 * @author wangjingyi
21 16 * @since 2022-03-21
... ... @@ -23,7 +18,6 @@ import lombok.experimental.Accessors;
23 18 @TableName(value = "system_mail_log", autoResultMap = true)
24 19 @Data
25 20 @EqualsAndHashCode(callSuper = true)
26   -@Accessors(chain = true)
27 21 public class MailLogDO extends BaseDO implements Serializable {
28 22  
29 23 /**
... ... @@ -31,11 +25,13 @@ public class MailLogDO extends BaseDO implements Serializable {
31 25 */
32 26 private Long id;
33 27  
  28 + // TODO @wangjingyi:accountId
34 29 /**
35 30 * 邮箱账号编号
36 31 */
37 32 private String accountCode;
38 33  
  34 + // TODO @wangjingyi:如果是冗余字段,记得 @ 下;
39 35 /**
40 36 * 邮箱账号
41 37 */
... ... @@ -74,6 +70,7 @@ public class MailLogDO extends BaseDO implements Serializable {
74 70 /**
75 71 * 发送状态
76 72 */
  73 + // TODO @wangjingyi:四个状态,参考短信模块
77 74 private Boolean sendStatus;
78 75  
79 76 /**
... ...
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/mail/MailTemplateDO.java
1 1 package cn.iocoder.yudao.module.system.dal.dataobject.mail;
2 2  
  3 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
3 4 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
4   -import com.baomidou.mybatisplus.annotation.IdType;
5   -import com.baomidou.mybatisplus.annotation.TableId;
6   -import com.baomidou.mybatisplus.annotation.TableField;
7   -import java.io.Serializable;
8   -
9 5 import com.baomidou.mybatisplus.annotation.TableName;
10   -import io.swagger.annotations.ApiModel;
11   -import io.swagger.annotations.ApiModelProperty;
12 6 import lombok.Data;
13 7 import lombok.EqualsAndHashCode;
14   -import lombok.experimental.Accessors;
15 8  
16 9 /**
17   - * <p>
18 10 * 邮箱模版
19   - * </p>
20 11 *
21 12 * @author wangjingyi
22 13 * @since 2022-03-21
... ... @@ -24,48 +15,42 @@ import lombok.experimental.Accessors;
24 15 @TableName(value = "system_mail_template", autoResultMap = true)
25 16 @Data
26 17 @EqualsAndHashCode(callSuper = true)
27   -@Accessors(chain = true)
28   -public class MailTemplateDO extends BaseDO implements Serializable {
  18 +public class MailTemplateDO extends BaseDO {
29 19  
30 20 /**
31 21 * 主键
32 22 */
33 23 private Long id;
34   -
35 24 /**
36 25 * 模版名称
37 26 */
38 27 private String name;
39   -
40 28 /**
41 29 * 模版编号
42 30 */
43 31 private String code;
44   -
  32 + // TODO @wangjingyi:应该使用 accountId 呀
45 33 /**
46 34 * 用户名
47 35 */
48 36 private String username;
49   -
50 37 /**
51 38 * 标题
52 39 */
53 40 private String title;
54   -
55 41 /**
56 42 * 内容
57 43 */
58 44 private String content;
59   -
60 45 /**
61 46 * 状态
  47 + *
  48 + * 枚举 {@link CommonStatusEnum}
62 49 */
63   - private String status;
64   -
  50 + private String status; // TODO @wangjingyi:Integer
65 51 /**
66 52 * 备注
67 53 */
68 54 private String remark;
69 55  
70   -
71 56 }
... ...
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/mail/MailAccountMapper.java
... ... @@ -7,8 +7,6 @@ import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccou
7 7 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
8 8 import org.apache.ibatis.annotations.Mapper;
9 9  
10   -import java.util.Map;
11   -
12 10 @Mapper
13 11 public interface MailAccountMapper extends BaseMapperX<MailAccountDO> {
14 12  
... ... @@ -23,7 +21,8 @@ public interface MailAccountMapper extends BaseMapperX&lt;MailAccountDO&gt; {
23 21 }
24 22  
25 23 default MailAccountDO selectByUserName(String userName){
26   - QueryWrapperX queryWrapperX = new QueryWrapperX<MailAccountDO>();
  24 + // TODO @wangjingyi:selectOne 有封装的方法;然后,编码一定要学会使用泛型呀。例如说 QueryWrapperX<MailAccountDO> queryWrapperX = new QueryWrapperX<>();
  25 + QueryWrapperX<MailAccountDO> queryWrapperX = new QueryWrapperX<>();
27 26 queryWrapperX.eqIfPresent("username", userName);
28 27 return this.selectOne(queryWrapperX);
29 28 };
... ...
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/mail/MailTemplateMapper.java
... ... @@ -23,6 +23,7 @@ public interface MailTemplateMapper extends BaseMapperX&lt;MailTemplateDO&gt; {
23 23 }
24 24  
25 25 default MailTemplateDO selectOneByCode(String code){
  26 + // TODO @wangjingyi:优先使用 lambada 查询
26 27 return selectOne("code" , code);
27 28 };
28 29 }
... ...
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailAccountService.java
... ... @@ -4,7 +4,6 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountCreateReqVO;
5 5 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO;
6 6 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountUpdateReqVO;
7   -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.send.MailReqVO;
8 7 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
9 8  
10 9 import javax.validation.Valid;
... ... @@ -19,10 +18,8 @@ import java.util.List;
19 18 */
20 19 public interface MailAccountService {
21 20  
22   - // TODO @wangjingyi:注释,完整;参数校验还是要做的;
23   -
24 21 /**
25   - * 创建邮箱账号 // TODO @wangjingyi:方法描述,和参数要空行
  22 + * 创建邮箱账号
26 23 *
27 24 * @param createReqVO 邮箱账号信息
28 25 * @return 编号
... ...
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailTemplateService.java
... ... @@ -20,6 +20,7 @@ public interface MailTemplateService {
20 20  
21 21 /**
22 22 * 邮箱模版创建
  23 + *
23 24 * @param createReqVO 邮箱信息
24 25 * @return 编号
25 26 */
... ... @@ -27,12 +28,14 @@ public interface MailTemplateService {
27 28  
28 29 /**
29 30 * 邮箱模版修改
  31 + *
30 32 * @param updateReqVO 邮箱信息
31 33 */
32 34 void update(@Valid MailTemplateUpdateReqVO updateReqVO);
33 35  
34 36 /**
35 37 * 邮箱模版删除
  38 + *
36 39 * @param id 编号
37 40 */
38 41 void delete(Long id);
... ...
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/mail/impl/MailAccountServiceImpl.java
1 1 package cn.iocoder.yudao.module.system.service.mail.impl;
2 2  
3   -import cn.hutool.core.util.StrUtil;
4   -import cn.hutool.extra.mail.MailAccount;
5   -import cn.hutool.extra.mail.MailUtil;
6 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
7 4 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountCreateReqVO;
8 5 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO;
9 6 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountUpdateReqVO;
10   -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.send.MailReqVO;
11 7 import cn.iocoder.yudao.module.system.convert.mail.MailAccountConvert;
12 8 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
13   -import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO;
14 9 import cn.iocoder.yudao.module.system.dal.mysql.mail.MailAccountMapper;
15 10 import cn.iocoder.yudao.module.system.dal.mysql.mail.MailTemplateMapper;
16 11 import cn.iocoder.yudao.module.system.service.mail.MailAccountService;
... ... @@ -18,9 +13,7 @@ import org.springframework.stereotype.Service;
18 13 import org.springframework.validation.annotation.Validated;
19 14  
20 15 import javax.annotation.Resource;
21   -import java.util.HashMap;
22 16 import java.util.List;
23   -import java.util.Map;
24 17  
25 18 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
26 19 import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.MAIL_ACCOUNT_EXISTS;
... ... @@ -54,7 +47,7 @@ public class MailAccountServiceImpl implements MailAccountService {
54 47  
55 48 @Override
56 49 public void update(MailAccountUpdateReqVO updateReqVO) {
57   - // username 要校验唯一
  50 + // username 要校验唯一 // TODO @wangjingyi:更新的就是自己,username 这样写,会重复呀。
58 51 this.validateMailAccountOnlyByUserName(updateReqVO.getUsername());
59 52 MailAccountDO mailAccountDO = MailAccountConvert.INSTANCE.convert(updateReqVO);
60 53 // 校验是否存在
... ... @@ -64,6 +57,7 @@ public class MailAccountServiceImpl implements MailAccountService {
64 57  
65 58 @Override
66 59 public void delete(Long id) {
  60 + // TODO @wangjingyi:删除时,要判断是否有使用的模板
67 61 // 校验是否存在
68 62 this.validateMailAccountExists(id);
69 63 mailAccountMapper.deleteById(id);
... ...
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/mail/impl/MailTemplateServiceImpl.java
... ... @@ -15,15 +15,12 @@ import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
15 15 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO;
16 16 import cn.iocoder.yudao.module.system.dal.mysql.mail.MailAccountMapper;
17 17 import cn.iocoder.yudao.module.system.dal.mysql.mail.MailTemplateMapper;
18   -import cn.iocoder.yudao.module.system.service.mail.MailAccountService;
19 18 import cn.iocoder.yudao.module.system.service.mail.MailTemplateService;
20   -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
21 19 import org.springframework.stereotype.Service;
22 20 import org.springframework.validation.annotation.Validated;
23 21  
24 22 import javax.annotation.Resource;
25 23 import javax.validation.Valid;
26   -import java.util.HashMap;
27 24 import java.util.List;
28 25 import java.util.Map;
29 26  
... ... @@ -58,7 +55,7 @@ public class MailTemplateServiceImpl implements MailTemplateService {
58 55 @Override
59 56 public void update(@Valid MailTemplateUpdateReqVO updateReqVO) {
60 57 // code 要校验唯一
61   - this.validateMailTemplateOnlyByCode(updateReqVO.getCode());
  58 + this.validateMailTemplateOnlyByCode(updateReqVO.getCode()); // TODO @wangjingyi:code 这样写,修改自己会有问题
62 59 MailTemplateDO mailTemplateDO = MailTemplateConvert.INSTANCE.convert(updateReqVO);
63 60 // 校验是否存在
64 61 this.validateMailTemplateExists(mailTemplateDO.getId());
... ... @@ -85,6 +82,7 @@ public class MailTemplateServiceImpl implements MailTemplateService {
85 82  
86 83 @Override
87 84 public void sendMail(MailReqVO mailReqVO) {
  85 + // TODO @@wangjingyi:发送的时候,参考下短信;
88 86 MailTemplateDO mailTemplateDO = mailTemplateMapper.selectById(mailReqVO.getTemplateId());
89 87 //查询账号信息
90 88 MailAccountDO mailAccountDO = mailAccountMapper.selectOne(
... ...