Commit b77b6322e1f46e44a633f24c948ce788e64c39db

Authored by YunaiV
1 parent 4225db21

🔧 简化 mail 模块的 VO

Showing 24 changed files with 169 additions and 291 deletions
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/DictDataController.java
@@ -62,7 +62,7 @@ public class DictDataController { @@ -62,7 +62,7 @@ public class DictDataController {
62 return success(true); 62 return success(true);
63 } 63 }
64 64
65 - @GetMapping("/list-all-simple") 65 + @GetMapping(value = {"/list-all-simple", "simple-list"})
66 @Operation(summary = "获得全部字典数据列表", description = "一般用于管理后台缓存字典数据在本地") 66 @Operation(summary = "获得全部字典数据列表", description = "一般用于管理后台缓存字典数据在本地")
67 // 无需添加权限认证,因为前端全局都需要 67 // 无需添加权限认证,因为前端全局都需要
68 public CommonResult<List<DictDataSimpleRespVO>> getSimpleDictDataList() { 68 public CommonResult<List<DictDataSimpleRespVO>> getSimpleDictDataList() {
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/MailAccountController.java
@@ -3,8 +3,11 @@ package cn.iocoder.yudao.module.system.controller.admin.mail; @@ -3,8 +3,11 @@ package cn.iocoder.yudao.module.system.controller.admin.mail;
3 3
4 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.*;  
7 -import cn.iocoder.yudao.module.system.convert.mail.MailAccountConvert; 6 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  7 +import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO;
  8 +import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountRespVO;
  9 +import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountSaveReqVO;
  10 +import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountSimpleRespVO;
8 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO; 11 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
9 import cn.iocoder.yudao.module.system.service.mail.MailAccountService; 12 import cn.iocoder.yudao.module.system.service.mail.MailAccountService;
10 import io.swagger.v3.oas.annotations.Operation; 13 import io.swagger.v3.oas.annotations.Operation;
@@ -30,14 +33,14 @@ public class MailAccountController { @@ -30,14 +33,14 @@ public class MailAccountController {
30 @PostMapping("/create") 33 @PostMapping("/create")
31 @Operation(summary = "创建邮箱账号") 34 @Operation(summary = "创建邮箱账号")
32 @PreAuthorize("@ss.hasPermission('system:mail-account:create')") 35 @PreAuthorize("@ss.hasPermission('system:mail-account:create')")
33 - public CommonResult<Long> createMailAccount(@Valid @RequestBody MailAccountCreateReqVO createReqVO) { 36 + public CommonResult<Long> createMailAccount(@Valid @RequestBody MailAccountSaveReqVO createReqVO) {
34 return success(mailAccountService.createMailAccount(createReqVO)); 37 return success(mailAccountService.createMailAccount(createReqVO));
35 } 38 }
36 39
37 @PutMapping("/update") 40 @PutMapping("/update")
38 @Operation(summary = "修改邮箱账号") 41 @Operation(summary = "修改邮箱账号")
39 @PreAuthorize("@ss.hasPermission('system:mail-account:update')") 42 @PreAuthorize("@ss.hasPermission('system:mail-account:update')")
40 - public CommonResult<Boolean> updateMailAccount(@Valid @RequestBody MailAccountUpdateReqVO updateReqVO) { 43 + public CommonResult<Boolean> updateMailAccount(@Valid @RequestBody MailAccountSaveReqVO updateReqVO) {
41 mailAccountService.updateMailAccount(updateReqVO); 44 mailAccountService.updateMailAccount(updateReqVO);
42 return success(true); 45 return success(true);
43 } 46 }
@@ -56,23 +59,23 @@ public class MailAccountController { @@ -56,23 +59,23 @@ public class MailAccountController {
56 @Parameter(name = "id", description = "编号", required = true, example = "1024") 59 @Parameter(name = "id", description = "编号", required = true, example = "1024")
57 @PreAuthorize("@ss.hasPermission('system:mail-account:get')") 60 @PreAuthorize("@ss.hasPermission('system:mail-account:get')")
58 public CommonResult<MailAccountRespVO> getMailAccount(@RequestParam("id") Long id) { 61 public CommonResult<MailAccountRespVO> getMailAccount(@RequestParam("id") Long id) {
59 - MailAccountDO mailAccountDO = mailAccountService.getMailAccount(id);  
60 - return success(MailAccountConvert.INSTANCE.convert(mailAccountDO)); 62 + MailAccountDO account = mailAccountService.getMailAccount(id);
  63 + return success(BeanUtils.toBean(account, MailAccountRespVO.class));
61 } 64 }
62 65
63 @GetMapping("/page") 66 @GetMapping("/page")
64 @Operation(summary = "获得邮箱账号分页") 67 @Operation(summary = "获得邮箱账号分页")
65 @PreAuthorize("@ss.hasPermission('system:mail-account:query')") 68 @PreAuthorize("@ss.hasPermission('system:mail-account:query')")
66 - public CommonResult<PageResult<MailAccountBaseVO>> getMailAccountPage(@Valid MailAccountPageReqVO pageReqVO) { 69 + public CommonResult<PageResult<MailAccountRespVO>> getMailAccountPage(@Valid MailAccountPageReqVO pageReqVO) {
67 PageResult<MailAccountDO> pageResult = mailAccountService.getMailAccountPage(pageReqVO); 70 PageResult<MailAccountDO> pageResult = mailAccountService.getMailAccountPage(pageReqVO);
68 - return success(MailAccountConvert.INSTANCE.convertPage(pageResult)); 71 + return success(BeanUtils.toBean(pageResult, MailAccountRespVO.class));
69 } 72 }
70 73
71 - @GetMapping("/list-all-simple") 74 + @GetMapping({"/list-all-simple", "simple-list"})
72 @Operation(summary = "获得邮箱账号精简列表") 75 @Operation(summary = "获得邮箱账号精简列表")
73 public CommonResult<List<MailAccountSimpleRespVO>> getSimpleMailAccountList() { 76 public CommonResult<List<MailAccountSimpleRespVO>> getSimpleMailAccountList() {
74 List<MailAccountDO> list = mailAccountService.getMailAccountList(); 77 List<MailAccountDO> list = mailAccountService.getMailAccountList();
75 - return success(MailAccountConvert.INSTANCE.convertList02(list)); 78 + return success(BeanUtils.toBean(list, MailAccountSimpleRespVO.class));
76 } 79 }
77 80
78 } 81 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/MailLogController.java
@@ -2,9 +2,9 @@ package cn.iocoder.yudao.module.system.controller.admin.mail; @@ -2,9 +2,9 @@ package cn.iocoder.yudao.module.system.controller.admin.mail;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  5 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogPageReqVO; 6 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogPageReqVO;
6 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogRespVO; 7 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogRespVO;
7 -import cn.iocoder.yudao.module.system.convert.mail.MailLogConvert;  
8 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailLogDO; 8 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailLogDO;
9 import cn.iocoder.yudao.module.system.service.mail.MailLogService; 9 import cn.iocoder.yudao.module.system.service.mail.MailLogService;
10 import io.swagger.v3.oas.annotations.Operation; 10 import io.swagger.v3.oas.annotations.Operation;
@@ -34,7 +34,7 @@ public class MailLogController { @@ -34,7 +34,7 @@ public class MailLogController {
34 @PreAuthorize("@ss.hasPermission('system:mail-log:query')") 34 @PreAuthorize("@ss.hasPermission('system:mail-log:query')")
35 public CommonResult<PageResult<MailLogRespVO>> getMailLogPage(@Valid MailLogPageReqVO pageVO) { 35 public CommonResult<PageResult<MailLogRespVO>> getMailLogPage(@Valid MailLogPageReqVO pageVO) {
36 PageResult<MailLogDO> pageResult = mailLogService.getMailLogPage(pageVO); 36 PageResult<MailLogDO> pageResult = mailLogService.getMailLogPage(pageVO);
37 - return success(MailLogConvert.INSTANCE.convertPage(pageResult)); 37 + return success(BeanUtils.toBean(pageResult, MailLogRespVO.class));
38 } 38 }
39 39
40 @GetMapping("/get") 40 @GetMapping("/get")
@@ -42,8 +42,8 @@ public class MailLogController { @@ -42,8 +42,8 @@ public class MailLogController {
42 @Parameter(name = "id", description = "编号", required = true, example = "1024") 42 @Parameter(name = "id", description = "编号", required = true, example = "1024")
43 @PreAuthorize("@ss.hasPermission('system:mail-log:query')") 43 @PreAuthorize("@ss.hasPermission('system:mail-log:query')")
44 public CommonResult<MailLogRespVO> getMailTemplate(@RequestParam("id") Long id) { 44 public CommonResult<MailLogRespVO> getMailTemplate(@RequestParam("id") Long id) {
45 - MailLogDO mailLogDO = mailLogService.getMailLog(id);  
46 - return success(MailLogConvert.INSTANCE.convert(mailLogDO)); 45 + MailLogDO log = mailLogService.getMailLog(id);
  46 + return success(BeanUtils.toBean(log, MailLogRespVO.class));
47 } 47 }
48 48
49 } 49 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/MailTemplateController.java
@@ -2,8 +2,8 @@ package cn.iocoder.yudao.module.system.controller.admin.mail; @@ -2,8 +2,8 @@ package cn.iocoder.yudao.module.system.controller.admin.mail;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  5 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.*; 6 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.*;
6 -import cn.iocoder.yudao.module.system.convert.mail.MailTemplateConvert;  
7 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO; 7 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO;
8 import cn.iocoder.yudao.module.system.service.mail.MailSendService; 8 import cn.iocoder.yudao.module.system.service.mail.MailSendService;
9 import cn.iocoder.yudao.module.system.service.mail.MailTemplateService; 9 import cn.iocoder.yudao.module.system.service.mail.MailTemplateService;
@@ -33,14 +33,14 @@ public class MailTemplateController { @@ -33,14 +33,14 @@ public class MailTemplateController {
33 @PostMapping("/create") 33 @PostMapping("/create")
34 @Operation(summary = "创建邮件模版") 34 @Operation(summary = "创建邮件模版")
35 @PreAuthorize("@ss.hasPermission('system:mail-template:create')") 35 @PreAuthorize("@ss.hasPermission('system:mail-template:create')")
36 - public CommonResult<Long> createMailTemplate(@Valid @RequestBody MailTemplateCreateReqVO createReqVO){ 36 + public CommonResult<Long> createMailTemplate(@Valid @RequestBody MailTemplateSaveReqVO createReqVO){
37 return success(mailTempleService.createMailTemplate(createReqVO)); 37 return success(mailTempleService.createMailTemplate(createReqVO));
38 } 38 }
39 39
40 @PutMapping("/update") 40 @PutMapping("/update")
41 @Operation(summary = "修改邮件模版") 41 @Operation(summary = "修改邮件模版")
42 @PreAuthorize("@ss.hasPermission('system:mail-template:update')") 42 @PreAuthorize("@ss.hasPermission('system:mail-template:update')")
43 - public CommonResult<Boolean> updateMailTemplate(@Valid @RequestBody MailTemplateUpdateReqVO updateReqVO){ 43 + public CommonResult<Boolean> updateMailTemplate(@Valid @RequestBody MailTemplateSaveReqVO updateReqVO){
44 mailTempleService.updateMailTemplate(updateReqVO); 44 mailTempleService.updateMailTemplate(updateReqVO);
45 return success(true); 45 return success(true);
46 } 46 }
@@ -59,8 +59,8 @@ public class MailTemplateController { @@ -59,8 +59,8 @@ public class MailTemplateController {
59 @Parameter(name = "id", description = "编号", required = true, example = "1024") 59 @Parameter(name = "id", description = "编号", required = true, example = "1024")
60 @PreAuthorize("@ss.hasPermission('system:mail-template:get')") 60 @PreAuthorize("@ss.hasPermission('system:mail-template:get')")
61 public CommonResult<MailTemplateRespVO> getMailTemplate(@RequestParam("id") Long id) { 61 public CommonResult<MailTemplateRespVO> getMailTemplate(@RequestParam("id") Long id) {
62 - MailTemplateDO mailTemplateDO = mailTempleService.getMailTemplate(id);  
63 - return success(MailTemplateConvert.INSTANCE.convert(mailTemplateDO)); 62 + MailTemplateDO template = mailTempleService.getMailTemplate(id);
  63 + return success(BeanUtils.toBean(template, MailTemplateRespVO.class));
64 } 64 }
65 65
66 @GetMapping("/page") 66 @GetMapping("/page")
@@ -68,14 +68,14 @@ public class MailTemplateController { @@ -68,14 +68,14 @@ public class MailTemplateController {
68 @PreAuthorize("@ss.hasPermission('system:mail-template:query')") 68 @PreAuthorize("@ss.hasPermission('system:mail-template:query')")
69 public CommonResult<PageResult<MailTemplateRespVO>> getMailTemplatePage(@Valid MailTemplatePageReqVO pageReqVO) { 69 public CommonResult<PageResult<MailTemplateRespVO>> getMailTemplatePage(@Valid MailTemplatePageReqVO pageReqVO) {
70 PageResult<MailTemplateDO> pageResult = mailTempleService.getMailTemplatePage(pageReqVO); 70 PageResult<MailTemplateDO> pageResult = mailTempleService.getMailTemplatePage(pageReqVO);
71 - return success(MailTemplateConvert.INSTANCE.convertPage(pageResult)); 71 + return success(BeanUtils.toBean(pageResult, MailTemplateRespVO.class));
72 } 72 }
73 73
74 - @GetMapping("/list-all-simple") 74 + @GetMapping({"/list-all-simple", "simple-list"})
75 @Operation(summary = "获得邮件模版精简列表") 75 @Operation(summary = "获得邮件模版精简列表")
76 public CommonResult<List<MailTemplateSimpleRespVO>> getSimpleTemplateList() { 76 public CommonResult<List<MailTemplateSimpleRespVO>> getSimpleTemplateList() {
77 List<MailTemplateDO> list = mailTempleService.getMailTemplateList(); 77 List<MailTemplateDO> list = mailTempleService.getMailTemplateList();
78 - return success(MailTemplateConvert.INSTANCE.convertList02(list)); 78 + return success(BeanUtils.toBean(list, MailTemplateSimpleRespVO.class));
79 } 79 }
80 80
81 @PostMapping("/send-mail") 81 @PostMapping("/send-mail")
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/account/MailAccountCreateReqVO.java deleted
1 -package cn.iocoder.yudao.module.system.controller.admin.mail.vo.account;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 -  
8 -@Schema(description = "管理后台 - 邮箱账号创建 Request VO")  
9 -@Data  
10 -@EqualsAndHashCode(callSuper = true)  
11 -@ToString(callSuper = true)  
12 -public class MailAccountCreateReqVO extends MailAccountBaseVO {  
13 -  
14 -}  
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/account/MailAccountRespVO.java
@@ -2,22 +2,34 @@ package cn.iocoder.yudao.module.system.controller.admin.mail.vo.account; @@ -2,22 +2,34 @@ package cn.iocoder.yudao.module.system.controller.admin.mail.vo.account;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 4 import lombok.Data;
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 5
8 -import javax.validation.constraints.NotNull;  
9 import java.time.LocalDateTime; 6 import java.time.LocalDateTime;
10 7
11 @Schema(description = "管理后台 - 邮箱账号 Response VO") 8 @Schema(description = "管理后台 - 邮箱账号 Response VO")
12 @Data 9 @Data
13 -@EqualsAndHashCode(callSuper = true)  
14 -@ToString(callSuper = true)  
15 -public class MailAccountRespVO extends MailAccountBaseVO { 10 +public class MailAccountRespVO {
16 11
17 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") 12 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
18 - @NotNull(message = "编号不能为空")  
19 private Long id; 13 private Long id;
20 14
  15 + @Schema(description = "邮箱", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudaoyuanma@123.com")
  16 + private String mail;
  17 +
  18 + @Schema(description = "用户名", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
  19 + private String username;
  20 +
  21 + @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")
  22 + private String password;
  23 +
  24 + @Schema(description = "SMTP 服务器域名", requiredMode = Schema.RequiredMode.REQUIRED, example = "www.iocoder.cn")
  25 + private String host;
  26 +
  27 + @Schema(description = "SMTP 服务器端口", requiredMode = Schema.RequiredMode.REQUIRED, example = "80")
  28 + private Integer port;
  29 +
  30 + @Schema(description = "是否开启 ssl", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
  31 + private Boolean sslEnable;
  32 +
21 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) 33 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
22 private LocalDateTime createTime; 34 private LocalDateTime createTime;
23 35
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/account/MailAccountBaseVO.java renamed to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/account/MailAccountSaveReqVO.java
@@ -6,12 +6,12 @@ import lombok.Data; @@ -6,12 +6,12 @@ import lombok.Data;
6 import javax.validation.constraints.Email; 6 import javax.validation.constraints.Email;
7 import javax.validation.constraints.NotNull; 7 import javax.validation.constraints.NotNull;
8 8
9 -/**  
10 - * 邮箱账号 Base VO,提供给添加、修改、详细的子 VO 使用  
11 - * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成  
12 - */ 9 +@Schema(description = "管理后台 - 邮箱账号创建/修改 Request VO")
13 @Data 10 @Data
14 -public class MailAccountBaseVO { 11 +public class MailAccountSaveReqVO {
  12 +
  13 + @Schema(description = "编号", example = "1024")
  14 + private Long id;
15 15
16 @Schema(description = "邮箱", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudaoyuanma@123.com") 16 @Schema(description = "邮箱", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudaoyuanma@123.com")
17 @NotNull(message = "邮箱不能为空") 17 @NotNull(message = "邮箱不能为空")
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/account/MailAccountUpdateReqVO.java deleted
1 -package cn.iocoder.yudao.module.system.controller.admin.mail.vo.account;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 -  
8 -import javax.validation.constraints.NotNull;  
9 -  
10 -@Schema(description = "管理后台 - 邮箱账号修改 Request VO")  
11 -@Data  
12 -@EqualsAndHashCode(callSuper = true)  
13 -@ToString(callSuper = true)  
14 -public class MailAccountUpdateReqVO extends MailAccountBaseVO {  
15 -  
16 - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
17 - @NotNull(message = "编号不能为空")  
18 - private Long id;  
19 -  
20 -}  
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogBaseVO.java deleted
1 -package cn.iocoder.yudao.module.system.controller.admin.mail.vo.log;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -import org.springframework.format.annotation.DateTimeFormat;  
6 -  
7 -import javax.validation.constraints.NotNull;  
8 -import java.time.LocalDateTime;  
9 -import java.util.Map;  
10 -  
11 -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;  
12 -  
13 -/**  
14 - * 邮件日志 Base VO,提供给添加、修改、详细的子 VO 使用  
15 - * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成  
16 - */  
17 -@Data  
18 -public class MailLogBaseVO {  
19 -  
20 - @Schema(description = "用户编号", example = "30883")  
21 - private Long userId;  
22 -  
23 - @Schema(description = "用户类型,参见 UserTypeEnum 枚举", example = "2")  
24 - private Byte userType;  
25 -  
26 - @Schema(description = "接收邮箱地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "76854@qq.com")  
27 - @NotNull(message = "接收邮箱地址不能为空")  
28 - private String toMail;  
29 -  
30 - @Schema(description = "邮箱账号编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "18107")  
31 - @NotNull(message = "邮箱账号编号不能为空")  
32 - private Long accountId;  
33 -  
34 - @Schema(description = "发送邮箱地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "85757@qq.com")  
35 - @NotNull(message = "发送邮箱地址不能为空")  
36 - private String fromMail;  
37 -  
38 - @Schema(description = "模板编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5678")  
39 - @NotNull(message = "模板编号不能为空")  
40 - private Long templateId;  
41 -  
42 - @Schema(description = "模板编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "test_01")  
43 - @NotNull(message = "模板编码不能为空")  
44 - private String templateCode;  
45 -  
46 - @Schema(description = "模版发送人名称", example = "李四")  
47 - private String templateNickname;  
48 -  
49 - @Schema(description = "邮件标题", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试标题")  
50 - @NotNull(message = "邮件标题不能为空")  
51 - private String templateTitle;  
52 -  
53 - @Schema(description = "邮件内容", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试内容")  
54 - @NotNull(message = "邮件内容不能为空")  
55 - private String templateContent;  
56 -  
57 - @Schema(description = "邮件参数", requiredMode = Schema.RequiredMode.REQUIRED)  
58 - @NotNull(message = "邮件参数不能为空")  
59 - private Map<String, Object> templateParams;  
60 -  
61 - @Schema(description = "发送状态,参见 MailSendStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
62 - @NotNull(message = "发送状态不能为空")  
63 - private Byte sendStatus;  
64 -  
65 - @Schema(description = "发送时间")  
66 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)  
67 - private LocalDateTime sendTime;  
68 -  
69 - @Schema(description = "发送返回的消息 ID", example = "28568")  
70 - private String sendMessageId;  
71 -  
72 - @Schema(description = "发送异常")  
73 - private String sendException;  
74 -  
75 -}  
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/log/MailLogRespVO.java
1 package cn.iocoder.yudao.module.system.controller.admin.mail.vo.log; 1 package cn.iocoder.yudao.module.system.controller.admin.mail.vo.log;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 -import lombok.*; 4 +import lombok.Data;
  5 +import org.springframework.format.annotation.DateTimeFormat;
  6 +
5 import java.time.LocalDateTime; 7 import java.time.LocalDateTime;
  8 +import java.util.Map;
  9 +
  10 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
6 11
7 @Schema(description = "管理后台 - 邮件日志 Response VO") 12 @Schema(description = "管理后台 - 邮件日志 Response VO")
8 @Data 13 @Data
9 -@EqualsAndHashCode(callSuper = true)  
10 -@ToString(callSuper = true)  
11 -public class MailLogRespVO extends MailLogBaseVO { 14 +public class MailLogRespVO {
12 15
13 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31020") 16 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31020")
14 private Long id; 17 private Long id;
15 18
  19 + @Schema(description = "用户编号", example = "30883")
  20 + private Long userId;
  21 +
  22 + @Schema(description = "用户类型,参见 UserTypeEnum 枚举", example = "2")
  23 + private Byte userType;
  24 +
  25 + @Schema(description = "接收邮箱地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "76854@qq.com")
  26 + private String toMail;
  27 +
  28 + @Schema(description = "邮箱账号编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "18107")
  29 + private Long accountId;
  30 +
  31 + @Schema(description = "发送邮箱地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "85757@qq.com")
  32 + private String fromMail;
  33 +
  34 + @Schema(description = "模板编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5678")
  35 + private Long templateId;
  36 +
  37 + @Schema(description = "模板编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "test_01")
  38 + private String templateCode;
  39 +
  40 + @Schema(description = "模版发送人名称", example = "李四")
  41 + private String templateNickname;
  42 +
  43 + @Schema(description = "邮件标题", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试标题")
  44 + private String templateTitle;
  45 +
  46 + @Schema(description = "邮件内容", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试内容")
  47 + private String templateContent;
  48 +
  49 + @Schema(description = "邮件参数", requiredMode = Schema.RequiredMode.REQUIRED)
  50 + private Map<String, Object> templateParams;
  51 +
  52 + @Schema(description = "发送状态,参见 MailSendStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  53 + private Byte sendStatus;
  54 +
  55 + @Schema(description = "发送时间")
  56 + private LocalDateTime sendTime;
  57 +
  58 + @Schema(description = "发送返回的消息 ID", example = "28568")
  59 + private String sendMessageId;
  60 +
  61 + @Schema(description = "发送异常")
  62 + private String sendException;
  63 +
16 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) 64 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
17 private LocalDateTime createTime; 65 private LocalDateTime createTime;
18 66
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/template/MailTemplateCreateReqVO.java deleted
1 -package cn.iocoder.yudao.module.system.controller.admin.mail.vo.template;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 -  
8 -@Schema(description = "管理后台 - 邮件模版创建 Request VO")  
9 -@Data  
10 -@EqualsAndHashCode(callSuper = true)  
11 -@ToString(callSuper = true)  
12 -public class MailTemplateCreateReqVO extends MailTemplateBaseVO {  
13 -  
14 -}  
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/template/MailTemplateRespVO.java
@@ -2,24 +2,46 @@ package cn.iocoder.yudao.module.system.controller.admin.mail.vo.template; @@ -2,24 +2,46 @@ package cn.iocoder.yudao.module.system.controller.admin.mail.vo.template;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 4 import lombok.Data;
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 5
  6 +import javax.validation.constraints.NotEmpty;
  7 +import javax.validation.constraints.NotNull;
8 import java.time.LocalDateTime; 8 import java.time.LocalDateTime;
9 import java.util.List; 9 import java.util.List;
10 10
11 @Schema(description = "管理后台 - 邮件末班 Response VO") 11 @Schema(description = "管理后台 - 邮件末班 Response VO")
12 @Data 12 @Data
13 -@EqualsAndHashCode(callSuper = true)  
14 -@ToString(callSuper = true)  
15 -public class MailTemplateRespVO extends MailTemplateBaseVO { 13 +public class MailTemplateRespVO {
16 14
17 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") 15 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
18 private Long id; 16 private Long id;
19 17
  18 + @Schema(description = "模版名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试名字")
  19 + private String name;
  20 +
  21 + @Schema(description = "模版编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "test")
  22 + private String code;
  23 +
  24 + @Schema(description = "发送的邮箱账号编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  25 + private Long accountId;
  26 +
  27 + @Schema(description = "发送人名称", example = "芋头")
  28 + private String nickname;
  29 +
  30 + @Schema(description = "标题", requiredMode = Schema.RequiredMode.REQUIRED, example = "注册成功")
  31 + private String title;
  32 +
  33 + @Schema(description = "内容", requiredMode = Schema.RequiredMode.REQUIRED, example = "你好,注册成功啦")
  34 + private String content;
  35 +
20 @Schema(description = "参数数组", example = "name,code") 36 @Schema(description = "参数数组", example = "name,code")
21 private List<String> params; 37 private List<String> params;
22 38
  39 + @Schema(description = "状态,参见 CommonStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  40 + private Integer status;
  41 +
  42 + @Schema(description = "备注", example = "奥特曼")
  43 + private String remark;
  44 +
23 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) 45 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
24 private LocalDateTime createTime; 46 private LocalDateTime createTime;
25 47
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/template/MailTemplateBaseVO.java renamed to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/template/MailTemplateSaveReqVO.java
@@ -6,12 +6,12 @@ import lombok.Data; @@ -6,12 +6,12 @@ import lombok.Data;
6 import javax.validation.constraints.NotEmpty; 6 import javax.validation.constraints.NotEmpty;
7 import javax.validation.constraints.NotNull; 7 import javax.validation.constraints.NotNull;
8 8
9 -/**  
10 - * 邮件模版 Base VO,提供给添加、修改、详细的子 VO 使用  
11 - * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成  
12 - */ 9 +@Schema(description = "管理后台 - 邮件模版创建/修改 Request VO")
13 @Data 10 @Data
14 -public class MailTemplateBaseVO { 11 +public class MailTemplateSaveReqVO {
  12 +
  13 + @Schema(description = "编号", example = "1024")
  14 + private Long id;
15 15
16 @Schema(description = "模版名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试名字") 16 @Schema(description = "模版名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试名字")
17 @NotNull(message = "名称不能为空") 17 @NotNull(message = "名称不能为空")
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/vo/template/MailTemplateUpdateReqVO.java deleted
1 -package cn.iocoder.yudao.module.system.controller.admin.mail.vo.template;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 -  
8 -import javax.validation.constraints.NotNull;  
9 -  
10 -@Schema(description = "管理后台 - 邮件模版修改 Request VO")  
11 -@Data  
12 -@EqualsAndHashCode(callSuper = true)  
13 -@ToString(callSuper = true)  
14 -public class MailTemplateUpdateReqVO extends MailTemplateBaseVO {  
15 -  
16 - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
17 - @NotNull(message = "编号不能为空")  
18 - private Long id;  
19 -  
20 -}  
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/mail/MailAccountConvert.java
@@ -2,29 +2,15 @@ package cn.iocoder.yudao.module.system.convert.mail; @@ -2,29 +2,15 @@ package cn.iocoder.yudao.module.system.convert.mail;
2 2
3 import cn.hutool.core.util.StrUtil; 3 import cn.hutool.core.util.StrUtil;
4 import cn.hutool.extra.mail.MailAccount; 4 import cn.hutool.extra.mail.MailAccount;
5 -import cn.iocoder.yudao.framework.common.pojo.PageResult;  
6 -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.*;  
7 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO; 5 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
8 import org.mapstruct.Mapper; 6 import org.mapstruct.Mapper;
9 import org.mapstruct.factory.Mappers; 7 import org.mapstruct.factory.Mappers;
10 8
11 -import java.util.List;  
12 -  
13 @Mapper 9 @Mapper
14 public interface MailAccountConvert { 10 public interface MailAccountConvert {
15 11
16 MailAccountConvert INSTANCE = Mappers.getMapper(MailAccountConvert.class); 12 MailAccountConvert INSTANCE = Mappers.getMapper(MailAccountConvert.class);
17 13
18 - MailAccountDO convert(MailAccountCreateReqVO bean);  
19 -  
20 - MailAccountDO convert(MailAccountUpdateReqVO bean);  
21 -  
22 - MailAccountRespVO convert(MailAccountDO bean);  
23 -  
24 - PageResult<MailAccountBaseVO> convertPage(PageResult<MailAccountDO> pageResult);  
25 -  
26 - List<MailAccountSimpleRespVO> convertList02(List<MailAccountDO> list);  
27 -  
28 default MailAccount convert(MailAccountDO account, String nickname) { 14 default MailAccount convert(MailAccountDO account, String nickname) {
29 String from = StrUtil.isNotEmpty(nickname) ? nickname + " <" + account.getMail() + ">" : account.getMail(); 15 String from = StrUtil.isNotEmpty(nickname) ? nickname + " <" + account.getMail() + ">" : account.getMail();
30 return new MailAccount().setFrom(from).setAuth(true) 16 return new MailAccount().setFrom(from).setAuth(true)
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/mail/MailLogConvert.java deleted
1 -package cn.iocoder.yudao.module.system.convert.mail;  
2 -  
3 -import cn.iocoder.yudao.framework.common.pojo.PageResult;  
4 -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.log.MailLogRespVO;  
5 -import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailLogDO;  
6 -import org.mapstruct.Mapper;  
7 -import org.mapstruct.factory.Mappers;  
8 -  
9 -@Mapper  
10 -public interface MailLogConvert {  
11 -  
12 - MailLogConvert INSTANCE = Mappers.getMapper(MailLogConvert.class);  
13 -  
14 - PageResult<MailLogRespVO> convertPage(PageResult<MailLogDO> pageResult);  
15 -  
16 - MailLogRespVO convert(MailLogDO bean);  
17 -  
18 -}  
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/mail/MailTemplateConvert.java deleted
1 -package cn.iocoder.yudao.module.system.convert.mail;  
2 -  
3 -import cn.iocoder.yudao.framework.common.pojo.PageResult;  
4 -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.*;  
5 -import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO;  
6 -import org.mapstruct.Mapper;  
7 -import org.mapstruct.factory.Mappers;  
8 -  
9 -import java.util.List;  
10 -  
11 -@Mapper  
12 -public interface MailTemplateConvert {  
13 -  
14 - MailTemplateConvert INSTANCE = Mappers.getMapper(MailTemplateConvert.class);  
15 -  
16 - MailTemplateDO convert(MailTemplateUpdateReqVO bean);  
17 -  
18 - MailTemplateDO convert(MailTemplateCreateReqVO bean);  
19 -  
20 - MailTemplateRespVO convert(MailTemplateDO bean);  
21 -  
22 - PageResult<MailTemplateRespVO> convertPage(PageResult<MailTemplateDO> pageResult);  
23 -  
24 - List<MailTemplateSimpleRespVO> convertList02(List<MailTemplateDO> list);  
25 -  
26 -}  
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailAccountService.java
1 package cn.iocoder.yudao.module.system.service.mail; 1 package cn.iocoder.yudao.module.system.service.mail;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountCreateReqVO;  
5 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO; 4 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO;
6 -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountUpdateReqVO; 5 +import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountSaveReqVO;
7 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO; 6 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
8 7
9 import javax.validation.Valid; 8 import javax.validation.Valid;
@@ -23,14 +22,14 @@ public interface MailAccountService { @@ -23,14 +22,14 @@ public interface MailAccountService {
23 * @param createReqVO 邮箱账号信息 22 * @param createReqVO 邮箱账号信息
24 * @return 编号 23 * @return 编号
25 */ 24 */
26 - Long createMailAccount(@Valid MailAccountCreateReqVO createReqVO); 25 + Long createMailAccount(@Valid MailAccountSaveReqVO createReqVO);
27 26
28 /** 27 /**
29 * 修改邮箱账号 28 * 修改邮箱账号
30 * 29 *
31 * @param updateReqVO 邮箱账号信息 30 * @param updateReqVO 邮箱账号信息
32 */ 31 */
33 - void updateMailAccount(@Valid MailAccountUpdateReqVO updateReqVO); 32 + void updateMailAccount(@Valid MailAccountSaveReqVO updateReqVO);
34 33
35 /** 34 /**
36 * 删除邮箱账号 35 * 删除邮箱账号
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailAccountServiceImpl.java
1 package cn.iocoder.yudao.module.system.service.mail; 1 package cn.iocoder.yudao.module.system.service.mail;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountCreateReqVO; 4 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO; 5 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO;
6 -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountUpdateReqVO;  
7 -import cn.iocoder.yudao.module.system.convert.mail.MailAccountConvert; 6 +import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountSaveReqVO;
8 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO; 7 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
9 import cn.iocoder.yudao.module.system.dal.mysql.mail.MailAccountMapper; 8 import cn.iocoder.yudao.module.system.dal.mysql.mail.MailAccountMapper;
10 import cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants; 9 import cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants;
@@ -39,21 +38,20 @@ public class MailAccountServiceImpl implements MailAccountService { @@ -39,21 +38,20 @@ public class MailAccountServiceImpl implements MailAccountService {
39 private MailTemplateService mailTemplateService; 38 private MailTemplateService mailTemplateService;
40 39
41 @Override 40 @Override
42 - public Long createMailAccount(MailAccountCreateReqVO createReqVO) {  
43 - // 插入  
44 - MailAccountDO account = MailAccountConvert.INSTANCE.convert(createReqVO); 41 + public Long createMailAccount(MailAccountSaveReqVO createReqVO) {
  42 + MailAccountDO account = BeanUtils.toBean(createReqVO, MailAccountDO.class);
45 mailAccountMapper.insert(account); 43 mailAccountMapper.insert(account);
46 return account.getId(); 44 return account.getId();
47 } 45 }
48 46
49 @Override 47 @Override
50 @CacheEvict(value = RedisKeyConstants.MAIL_ACCOUNT, key = "#updateReqVO.id") 48 @CacheEvict(value = RedisKeyConstants.MAIL_ACCOUNT, key = "#updateReqVO.id")
51 - public void updateMailAccount(MailAccountUpdateReqVO updateReqVO) { 49 + public void updateMailAccount(MailAccountSaveReqVO updateReqVO) {
52 // 校验是否存在 50 // 校验是否存在
53 validateMailAccountExists(updateReqVO.getId()); 51 validateMailAccountExists(updateReqVO.getId());
54 52
55 // 更新 53 // 更新
56 - MailAccountDO updateObj = MailAccountConvert.INSTANCE.convert(updateReqVO); 54 + MailAccountDO updateObj = BeanUtils.toBean(updateReqVO, MailAccountDO.class);
57 mailAccountMapper.updateById(updateObj); 55 mailAccountMapper.updateById(updateObj);
58 } 56 }
59 57
@@ -63,7 +61,7 @@ public class MailAccountServiceImpl implements MailAccountService { @@ -63,7 +61,7 @@ public class MailAccountServiceImpl implements MailAccountService {
63 // 校验是否存在账号 61 // 校验是否存在账号
64 validateMailAccountExists(id); 62 validateMailAccountExists(id);
65 // 校验是否存在关联模版 63 // 校验是否存在关联模版
66 - if (mailTemplateService.countByAccountId(id) > 0) { 64 + if (mailTemplateService.getMailTemplateCountByAccountId(id) > 0) {
67 throw exception(MAIL_ACCOUNT_RELATE_TEMPLATE_EXISTS); 65 throw exception(MAIL_ACCOUNT_RELATE_TEMPLATE_EXISTS);
68 } 66 }
69 67
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailLogServiceImpl.java
@@ -12,7 +12,6 @@ import org.springframework.validation.annotation.Validated; @@ -12,7 +12,6 @@ import org.springframework.validation.annotation.Validated;
12 12
13 import javax.annotation.Resource; 13 import javax.annotation.Resource;
14 import java.time.LocalDateTime; 14 import java.time.LocalDateTime;
15 -import java.util.Date;  
16 import java.util.Map; 15 import java.util.Map;
17 import java.util.Objects; 16 import java.util.Objects;
18 17
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailTemplateService.java
1 package cn.iocoder.yudao.module.system.service.mail; 1 package cn.iocoder.yudao.module.system.service.mail;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateCreateReqVO;  
5 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplatePageReqVO; 4 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplatePageReqVO;
6 -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateUpdateReqVO; 5 +import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateSaveReqVO;
7 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO; 6 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO;
8 7
9 import javax.validation.Valid; 8 import javax.validation.Valid;
@@ -24,14 +23,14 @@ public interface MailTemplateService { @@ -24,14 +23,14 @@ public interface MailTemplateService {
24 * @param createReqVO 邮件信息 23 * @param createReqVO 邮件信息
25 * @return 编号 24 * @return 编号
26 */ 25 */
27 - Long createMailTemplate(@Valid MailTemplateCreateReqVO createReqVO); 26 + Long createMailTemplate(@Valid MailTemplateSaveReqVO createReqVO);
28 27
29 /** 28 /**
30 * 邮件模版修改 29 * 邮件模版修改
31 * 30 *
32 * @param updateReqVO 邮件信息 31 * @param updateReqVO 邮件信息
33 */ 32 */
34 - void updateMailTemplate(@Valid MailTemplateUpdateReqVO updateReqVO); 33 + void updateMailTemplate(@Valid MailTemplateSaveReqVO updateReqVO);
35 34
36 /** 35 /**
37 * 邮件模版删除 36 * 邮件模版删除
@@ -86,6 +85,6 @@ public interface MailTemplateService { @@ -86,6 +85,6 @@ public interface MailTemplateService {
86 * @param accountId 账号编号 85 * @param accountId 账号编号
87 * @return 数量 86 * @return 数量
88 */ 87 */
89 - long countByAccountId(Long accountId); 88 + long getMailTemplateCountByAccountId(Long accountId);
90 89
91 } 90 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/mail/MailTemplateServiceImpl.java
@@ -4,10 +4,9 @@ import cn.hutool.core.util.ObjUtil; @@ -4,10 +4,9 @@ import cn.hutool.core.util.ObjUtil;
4 import cn.hutool.core.util.ReUtil; 4 import cn.hutool.core.util.ReUtil;
5 import cn.hutool.core.util.StrUtil; 5 import cn.hutool.core.util.StrUtil;
6 import cn.iocoder.yudao.framework.common.pojo.PageResult; 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
7 -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateCreateReqVO; 7 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
8 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplatePageReqVO; 8 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplatePageReqVO;
9 -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateUpdateReqVO;  
10 -import cn.iocoder.yudao.module.system.convert.mail.MailTemplateConvert; 9 +import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateSaveReqVO;
11 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO; 10 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO;
12 import cn.iocoder.yudao.module.system.dal.mysql.mail.MailTemplateMapper; 11 import cn.iocoder.yudao.module.system.dal.mysql.mail.MailTemplateMapper;
13 import cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants; 12 import cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants;
@@ -48,12 +47,12 @@ public class MailTemplateServiceImpl implements MailTemplateService { @@ -48,12 +47,12 @@ public class MailTemplateServiceImpl implements MailTemplateService {
48 private MailTemplateMapper mailTemplateMapper; 47 private MailTemplateMapper mailTemplateMapper;
49 48
50 @Override 49 @Override
51 - public Long createMailTemplate(MailTemplateCreateReqVO createReqVO) { 50 + public Long createMailTemplate(MailTemplateSaveReqVO createReqVO) {
52 // 校验 code 是否唯一 51 // 校验 code 是否唯一
53 validateCodeUnique(null, createReqVO.getCode()); 52 validateCodeUnique(null, createReqVO.getCode());
54 53
55 // 插入 54 // 插入
56 - MailTemplateDO template = MailTemplateConvert.INSTANCE.convert(createReqVO) 55 + MailTemplateDO template = BeanUtils.toBean(createReqVO, MailTemplateDO.class)
57 .setParams(parseTemplateContentParams(createReqVO.getContent())); 56 .setParams(parseTemplateContentParams(createReqVO.getContent()));
58 mailTemplateMapper.insert(template); 57 mailTemplateMapper.insert(template);
59 return template.getId(); 58 return template.getId();
@@ -62,14 +61,14 @@ public class MailTemplateServiceImpl implements MailTemplateService { @@ -62,14 +61,14 @@ public class MailTemplateServiceImpl implements MailTemplateService {
62 @Override 61 @Override
63 @CacheEvict(cacheNames = RedisKeyConstants.NOTIFY_TEMPLATE, 62 @CacheEvict(cacheNames = RedisKeyConstants.NOTIFY_TEMPLATE,
64 allEntries = true) // allEntries 清空所有缓存,因为可能修改到 code 字段,不好清理 63 allEntries = true) // allEntries 清空所有缓存,因为可能修改到 code 字段,不好清理
65 - public void updateMailTemplate(@Valid MailTemplateUpdateReqVO updateReqVO) { 64 + public void updateMailTemplate(@Valid MailTemplateSaveReqVO updateReqVO) {
66 // 校验是否存在 65 // 校验是否存在
67 validateMailTemplateExists(updateReqVO.getId()); 66 validateMailTemplateExists(updateReqVO.getId());
68 // 校验 code 是否唯一 67 // 校验 code 是否唯一
69 validateCodeUnique(updateReqVO.getId(),updateReqVO.getCode()); 68 validateCodeUnique(updateReqVO.getId(),updateReqVO.getCode());
70 69
71 // 更新 70 // 更新
72 - MailTemplateDO updateObj = MailTemplateConvert.INSTANCE.convert(updateReqVO) 71 + MailTemplateDO updateObj = BeanUtils.toBean(updateReqVO, MailTemplateDO.class)
73 .setParams(parseTemplateContentParams(updateReqVO.getContent())); 72 .setParams(parseTemplateContentParams(updateReqVO.getContent()));
74 mailTemplateMapper.updateById(updateObj); 73 mailTemplateMapper.updateById(updateObj);
75 } 74 }
@@ -132,7 +131,7 @@ public class MailTemplateServiceImpl implements MailTemplateService { @@ -132,7 +131,7 @@ public class MailTemplateServiceImpl implements MailTemplateService {
132 } 131 }
133 132
134 @Override 133 @Override
135 - public long countByAccountId(Long accountId) { 134 + public long getMailTemplateCountByAccountId(Long accountId) {
136 return mailTemplateMapper.selectCountByAccountId(accountId); 135 return mailTemplateMapper.selectCountByAccountId(accountId);
137 } 136 }
138 137
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/mail/MailAccountServiceImplTest.java
@@ -2,9 +2,8 @@ package cn.iocoder.yudao.module.system.service.mail; @@ -2,9 +2,8 @@ package cn.iocoder.yudao.module.system.service.mail;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; 4 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
5 -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountCreateReqVO;  
6 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO; 5 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountPageReqVO;
7 -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountUpdateReqVO; 6 +import cn.iocoder.yudao.module.system.controller.admin.mail.vo.account.MailAccountSaveReqVO;
8 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO; 7 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailAccountDO;
9 import cn.iocoder.yudao.module.system.dal.mysql.mail.MailAccountMapper; 8 import cn.iocoder.yudao.module.system.dal.mysql.mail.MailAccountMapper;
10 import org.junit.jupiter.api.Test; 9 import org.junit.jupiter.api.Test;
@@ -43,7 +42,8 @@ public class MailAccountServiceImplTest extends BaseDbUnitTest { @@ -43,7 +42,8 @@ public class MailAccountServiceImplTest extends BaseDbUnitTest {
43 @Test 42 @Test
44 public void testCreateMailAccount_success() { 43 public void testCreateMailAccount_success() {
45 // 准备参数 44 // 准备参数
46 - MailAccountCreateReqVO reqVO = randomPojo(MailAccountCreateReqVO.class, o -> o.setMail(randomEmail())); 45 + MailAccountSaveReqVO reqVO = randomPojo(MailAccountSaveReqVO.class, o -> o.setMail(randomEmail()))
  46 + .setId(null); // 防止 id 被赋值
47 47
48 // 调用 48 // 调用
49 Long mailAccountId = mailAccountService.createMailAccount(reqVO); 49 Long mailAccountId = mailAccountService.createMailAccount(reqVO);
@@ -51,7 +51,7 @@ public class MailAccountServiceImplTest extends BaseDbUnitTest { @@ -51,7 +51,7 @@ public class MailAccountServiceImplTest extends BaseDbUnitTest {
51 assertNotNull(mailAccountId); 51 assertNotNull(mailAccountId);
52 // 校验记录的属性是否正确 52 // 校验记录的属性是否正确
53 MailAccountDO mailAccount = mailAccountMapper.selectById(mailAccountId); 53 MailAccountDO mailAccount = mailAccountMapper.selectById(mailAccountId);
54 - assertPojoEquals(reqVO, mailAccount); 54 + assertPojoEquals(reqVO, mailAccount, "id");
55 } 55 }
56 56
57 @Test 57 @Test
@@ -60,7 +60,7 @@ public class MailAccountServiceImplTest extends BaseDbUnitTest { @@ -60,7 +60,7 @@ public class MailAccountServiceImplTest extends BaseDbUnitTest {
60 MailAccountDO dbMailAccount = randomPojo(MailAccountDO.class); 60 MailAccountDO dbMailAccount = randomPojo(MailAccountDO.class);
61 mailAccountMapper.insert(dbMailAccount);// @Sql: 先插入出一条存在的数据 61 mailAccountMapper.insert(dbMailAccount);// @Sql: 先插入出一条存在的数据
62 // 准备参数 62 // 准备参数
63 - MailAccountUpdateReqVO reqVO = randomPojo(MailAccountUpdateReqVO.class, o -> { 63 + MailAccountSaveReqVO reqVO = randomPojo(MailAccountSaveReqVO.class, o -> {
64 o.setId(dbMailAccount.getId()); // 设置更新的 ID 64 o.setId(dbMailAccount.getId()); // 设置更新的 ID
65 o.setMail(randomEmail()); 65 o.setMail(randomEmail());
66 }); 66 });
@@ -75,7 +75,7 @@ public class MailAccountServiceImplTest extends BaseDbUnitTest { @@ -75,7 +75,7 @@ public class MailAccountServiceImplTest extends BaseDbUnitTest {
75 @Test 75 @Test
76 public void testUpdateMailAccount_notExists() { 76 public void testUpdateMailAccount_notExists() {
77 // 准备参数 77 // 准备参数
78 - MailAccountUpdateReqVO reqVO = randomPojo(MailAccountUpdateReqVO.class); 78 + MailAccountSaveReqVO reqVO = randomPojo(MailAccountSaveReqVO.class);
79 79
80 // 调用, 并断言异常 80 // 调用, 并断言异常
81 assertServiceException(() -> mailAccountService.updateMailAccount(reqVO), MAIL_ACCOUNT_NOT_EXISTS); 81 assertServiceException(() -> mailAccountService.updateMailAccount(reqVO), MAIL_ACCOUNT_NOT_EXISTS);
@@ -89,7 +89,7 @@ public class MailAccountServiceImplTest extends BaseDbUnitTest { @@ -89,7 +89,7 @@ public class MailAccountServiceImplTest extends BaseDbUnitTest {
89 // 准备参数 89 // 准备参数
90 Long id = dbMailAccount.getId(); 90 Long id = dbMailAccount.getId();
91 // mock 方法(无关联模版) 91 // mock 方法(无关联模版)
92 - when(mailTemplateService.countByAccountId(eq(id))).thenReturn(0L); 92 + when(mailTemplateService.getMailTemplateCountByAccountId(eq(id))).thenReturn(0L);
93 93
94 // 调用 94 // 调用
95 mailAccountService.deleteMailAccount(id); 95 mailAccountService.deleteMailAccount(id);
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/mail/MailTemplateServiceImplTest.java
@@ -3,9 +3,8 @@ package cn.iocoder.yudao.module.system.service.mail; @@ -3,9 +3,8 @@ package cn.iocoder.yudao.module.system.service.mail;
3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; 5 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
6 -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateCreateReqVO; 6 +import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateSaveReqVO;
7 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplatePageReqVO; 7 import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplatePageReqVO;
8 -import cn.iocoder.yudao.module.system.controller.admin.mail.vo.template.MailTemplateUpdateReqVO;  
9 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO; 8 import cn.iocoder.yudao.module.system.dal.dataobject.mail.MailTemplateDO;
10 import cn.iocoder.yudao.module.system.dal.mysql.mail.MailTemplateMapper; 9 import cn.iocoder.yudao.module.system.dal.mysql.mail.MailTemplateMapper;
11 import org.junit.jupiter.api.Test; 10 import org.junit.jupiter.api.Test;
@@ -43,7 +42,8 @@ public class MailTemplateServiceImplTest extends BaseDbUnitTest { @@ -43,7 +42,8 @@ public class MailTemplateServiceImplTest extends BaseDbUnitTest {
43 @Test 42 @Test
44 public void testCreateMailTemplate_success() { 43 public void testCreateMailTemplate_success() {
45 // 准备参数 44 // 准备参数
46 - MailTemplateCreateReqVO reqVO = randomPojo(MailTemplateCreateReqVO.class); 45 + MailTemplateSaveReqVO reqVO = randomPojo(MailTemplateSaveReqVO.class)
  46 + .setId(null); // 防止 id 被赋值
47 47
48 // 调用 48 // 调用
49 Long mailTemplateId = mailTemplateService.createMailTemplate(reqVO); 49 Long mailTemplateId = mailTemplateService.createMailTemplate(reqVO);
@@ -51,7 +51,7 @@ public class MailTemplateServiceImplTest extends BaseDbUnitTest { @@ -51,7 +51,7 @@ public class MailTemplateServiceImplTest extends BaseDbUnitTest {
51 assertNotNull(mailTemplateId); 51 assertNotNull(mailTemplateId);
52 // 校验记录的属性是否正确 52 // 校验记录的属性是否正确
53 MailTemplateDO mailTemplate = mailTemplateMapper.selectById(mailTemplateId); 53 MailTemplateDO mailTemplate = mailTemplateMapper.selectById(mailTemplateId);
54 - assertPojoEquals(reqVO, mailTemplate); 54 + assertPojoEquals(reqVO, mailTemplate, "id");
55 } 55 }
56 56
57 @Test 57 @Test
@@ -60,7 +60,7 @@ public class MailTemplateServiceImplTest extends BaseDbUnitTest { @@ -60,7 +60,7 @@ public class MailTemplateServiceImplTest extends BaseDbUnitTest {
60 MailTemplateDO dbMailTemplate = randomPojo(MailTemplateDO.class); 60 MailTemplateDO dbMailTemplate = randomPojo(MailTemplateDO.class);
61 mailTemplateMapper.insert(dbMailTemplate);// @Sql: 先插入出一条存在的数据 61 mailTemplateMapper.insert(dbMailTemplate);// @Sql: 先插入出一条存在的数据
62 // 准备参数 62 // 准备参数
63 - MailTemplateUpdateReqVO reqVO = randomPojo(MailTemplateUpdateReqVO.class, o -> { 63 + MailTemplateSaveReqVO reqVO = randomPojo(MailTemplateSaveReqVO.class, o -> {
64 o.setId(dbMailTemplate.getId()); // 设置更新的 ID 64 o.setId(dbMailTemplate.getId()); // 设置更新的 ID
65 }); 65 });
66 66
@@ -74,7 +74,7 @@ public class MailTemplateServiceImplTest extends BaseDbUnitTest { @@ -74,7 +74,7 @@ public class MailTemplateServiceImplTest extends BaseDbUnitTest {
74 @Test 74 @Test
75 public void testUpdateMailTemplate_notExists() { 75 public void testUpdateMailTemplate_notExists() {
76 // 准备参数 76 // 准备参数
77 - MailTemplateUpdateReqVO reqVO = randomPojo(MailTemplateUpdateReqVO.class); 77 + MailTemplateSaveReqVO reqVO = randomPojo(MailTemplateSaveReqVO.class);
78 78
79 // 调用, 并断言异常 79 // 调用, 并断言异常
80 assertServiceException(() -> mailTemplateService.updateMailTemplate(reqVO), MAIL_TEMPLATE_NOT_EXISTS); 80 assertServiceException(() -> mailTemplateService.updateMailTemplate(reqVO), MAIL_TEMPLATE_NOT_EXISTS);
@@ -207,7 +207,7 @@ public class MailTemplateServiceImplTest extends BaseDbUnitTest { @@ -207,7 +207,7 @@ public class MailTemplateServiceImplTest extends BaseDbUnitTest {
207 Long accountId = dbMailTemplate.getAccountId(); 207 Long accountId = dbMailTemplate.getAccountId();
208 208
209 // 调用 209 // 调用
210 - long count = mailTemplateService.countByAccountId(accountId); 210 + long count = mailTemplateService.getMailTemplateCountByAccountId(accountId);
211 // 断言 211 // 断言
212 assertEquals(1, count); 212 assertEquals(1, count);
213 } 213 }