Commit d1812761db1e7a485c32f1bc6be051a6f3ca1d02
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<MailAccountDO> { |
| 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
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( | ... | ... |