Prechádzať zdrojové kódy

🔧 简化 sms 模块的 VO

YunaiV 1 rok pred
rodič
commit
e61ecb63dd
32 zmenil súbory, kde vykonal 207 pridanie a 664 odobranie
  1. 1 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/permission/RoleController.java
  2. 16 14
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/SmsChannelController.java
  3. 15 15
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/SmsLogController.java
  4. 12 10
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/SmsTemplateController.java
  5. 0 20
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/channel/SmsChannelCreateReqVO.java
  6. 25 5
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/channel/SmsChannelRespVO.java
  7. 10 5
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/channel/SmsChannelSaveReqVO.java
  8. 0 4
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/channel/SmsChannelSimpleRespVO.java
  9. 0 20
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/channel/SmsChannelUpdateReqVO.java
  10. 0 94
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/log/SmsLogExcelVO.java
  11. 0 38
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/log/SmsLogExportReqVO.java
  12. 34 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/log/SmsLogRespVO.java
  13. 0 13
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/template/SmsTemplateCreateReqVO.java
  14. 0 55
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/template/SmsTemplateExcelVO.java
  15. 0 37
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/template/SmsTemplateExportReqVO.java
  16. 47 7
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/template/SmsTemplateRespVO.java
  17. 6 5
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/template/SmsTemplateSaveReqVO.java
  18. 0 20
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/template/SmsTemplateUpdateReqVO.java
  19. 0 39
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/sms/SmsChannelConvert.java
  20. 0 30
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/sms/SmsLogConvert.java
  21. 0 31
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/sms/SmsTemplateConvert.java
  22. 0 15
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/sms/SmsLogMapper.java
  23. 0 15
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/sms/SmsTemplateMapper.java
  24. 3 4
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsChannelService.java
  25. 9 10
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsChannelServiceImpl.java
  26. 1 11
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsLogService.java
  27. 0 7
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsLogServiceImpl.java
  28. 5 17
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsTemplateService.java
  29. 7 14
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsTemplateServiceImpl.java
  30. 10 10
      yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/sms/SmsChannelServiceTest.java
  31. 0 46
      yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/sms/SmsLogServiceImplTest.java
  32. 6 52
      yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/sms/SmsTemplateServiceImplTest.java

+ 1 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/permission/RoleController.java

@@ -85,7 +85,7 @@ public class RoleController {
         return success(BeanUtils.toBean(pageResult, RoleRespVO.class));
     }
 
-    @GetMapping("/list-all-simple")
+    @GetMapping({"/list-all-simple", "/simple-list"})
     @Operation(summary = "获取角色精简信息列表", description = "只包含被开启的角色,主要用于前端的下拉选项")
     public CommonResult<List<RoleSimpleRespVO>> getSimpleRoleList() {
         List<RoleDO> list = roleService.getRoleListByStatus(singleton(CommonStatusEnum.ENABLE.getStatus()));

+ 16 - 14
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/SmsChannelController.java

@@ -1,14 +1,17 @@
 package cn.iocoder.yudao.module.system.controller.admin.sms;
 
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.*;
-import cn.iocoder.yudao.module.system.convert.sms.SmsChannelConvert;
-import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsChannelDO;
-import cn.iocoder.yudao.module.system.service.sms.SmsChannelService;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Parameter;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelRespVO;
+import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelSaveReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelSimpleRespVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsChannelDO;
+import cn.iocoder.yudao.module.system.service.sms.SmsChannelService;
 import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
@@ -30,14 +33,14 @@ public class SmsChannelController {
     @PostMapping("/create")
     @Operation(summary = "创建短信渠道")
     @PreAuthorize("@ss.hasPermission('system:sms-channel:create')")
-    public CommonResult<Long> createSmsChannel(@Valid @RequestBody SmsChannelCreateReqVO createReqVO) {
+    public CommonResult<Long> createSmsChannel(@Valid @RequestBody SmsChannelSaveReqVO createReqVO) {
         return success(smsChannelService.createSmsChannel(createReqVO));
     }
 
     @PutMapping("/update")
     @Operation(summary = "更新短信渠道")
     @PreAuthorize("@ss.hasPermission('system:sms-channel:update')")
-    public CommonResult<Boolean> updateSmsChannel(@Valid @RequestBody SmsChannelUpdateReqVO updateReqVO) {
+    public CommonResult<Boolean> updateSmsChannel(@Valid @RequestBody SmsChannelSaveReqVO updateReqVO) {
         smsChannelService.updateSmsChannel(updateReqVO);
         return success(true);
     }
@@ -56,8 +59,8 @@ public class SmsChannelController {
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
     @PreAuthorize("@ss.hasPermission('system:sms-channel:query')")
     public CommonResult<SmsChannelRespVO> getSmsChannel(@RequestParam("id") Long id) {
-        SmsChannelDO smsChannel = smsChannelService.getSmsChannel(id);
-        return success(SmsChannelConvert.INSTANCE.convert(smsChannel));
+        SmsChannelDO channel = smsChannelService.getSmsChannel(id);
+        return success(BeanUtils.toBean(channel, SmsChannelRespVO.class));
     }
 
     @GetMapping("/page")
@@ -65,16 +68,15 @@ public class SmsChannelController {
     @PreAuthorize("@ss.hasPermission('system:sms-channel:query')")
     public CommonResult<PageResult<SmsChannelRespVO>> getSmsChannelPage(@Valid SmsChannelPageReqVO pageVO) {
         PageResult<SmsChannelDO> pageResult = smsChannelService.getSmsChannelPage(pageVO);
-        return success(SmsChannelConvert.INSTANCE.convertPage(pageResult));
+        return success(BeanUtils.toBean(pageResult, SmsChannelRespVO.class));
     }
 
-    @GetMapping("/list-all-simple")
+    @GetMapping({"/list-all-simple", "/simple-list"})
     @Operation(summary = "获得短信渠道精简列表", description = "包含被禁用的短信渠道")
     public CommonResult<List<SmsChannelSimpleRespVO>> getSimpleSmsChannelList() {
         List<SmsChannelDO> list = smsChannelService.getSmsChannelList();
-        // 排序后,返回给前端
         list.sort(Comparator.comparing(SmsChannelDO::getId));
-        return success(SmsChannelConvert.INSTANCE.convertList03(list));
+        return success(BeanUtils.toBean(list, SmsChannelSimpleRespVO.class));
     }
 
 }

+ 15 - 15
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/SmsLogController.java

@@ -1,18 +1,17 @@
 package cn.iocoder.yudao.module.system.controller.admin.sms;
 
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExcelVO;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExportReqVO;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogPageReqVO;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogRespVO;
-import cn.iocoder.yudao.module.system.convert.sms.SmsLogConvert;
-import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsLogDO;
-import cn.iocoder.yudao.module.system.service.sms.SmsLogService;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
-import io.swagger.v3.oas.annotations.tags.Tag;
+import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogRespVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsLogDO;
+import cn.iocoder.yudao.module.system.service.sms.SmsLogService;
 import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -40,21 +39,22 @@ public class SmsLogController {
     @GetMapping("/page")
     @Operation(summary = "获得短信日志分页")
     @PreAuthorize("@ss.hasPermission('system:sms-log:query')")
-    public CommonResult<PageResult<SmsLogRespVO>> getSmsLogPage(@Valid SmsLogPageReqVO pageVO) {
-        PageResult<SmsLogDO> pageResult = smsLogService.getSmsLogPage(pageVO);
-        return success(SmsLogConvert.INSTANCE.convertPage(pageResult));
+    public CommonResult<PageResult<SmsLogRespVO>> getSmsLogPage(@Valid SmsLogPageReqVO pageReqVO) {
+        PageResult<SmsLogDO> pageResult = smsLogService.getSmsLogPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, SmsLogRespVO.class));
     }
 
     @GetMapping("/export-excel")
     @Operation(summary = "导出短信日志 Excel")
     @PreAuthorize("@ss.hasPermission('system:sms-log:export')")
     @OperateLog(type = EXPORT)
-    public void exportSmsLogExcel(@Valid SmsLogExportReqVO exportReqVO,
+    public void exportSmsLogExcel(@Valid SmsLogPageReqVO exportReqVO,
                                   HttpServletResponse response) throws IOException {
-        List<SmsLogDO> list = smsLogService.getSmsLogList(exportReqVO);
+        exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<SmsLogDO> list = smsLogService.getSmsLogPage(exportReqVO).getList();
         // 导出 Excel
-        List<SmsLogExcelVO> datas = SmsLogConvert.INSTANCE.convertList02(list);
-        ExcelUtils.write(response, "短信日志.xls", "数据", SmsLogExcelVO.class, datas);
+        ExcelUtils.write(response, "短信日志.xls", "数据", SmsLogRespVO.class,
+                BeanUtils.toBean(list, SmsLogRespVO.class));
     }
 
 }

+ 12 - 10
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/SmsTemplateController.java

@@ -1,7 +1,8 @@
 package cn.iocoder.yudao.module.system.controller.admin.sms;
 
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.*;
-import cn.iocoder.yudao.module.system.convert.sms.SmsTemplateConvert;
 import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsTemplateDO;
 import cn.iocoder.yudao.module.system.service.sms.SmsTemplateService;
 import cn.iocoder.yudao.module.system.service.sms.SmsSendService;
@@ -37,14 +38,14 @@ public class SmsTemplateController {
     @PostMapping("/create")
     @Operation(summary = "创建短信模板")
     @PreAuthorize("@ss.hasPermission('system:sms-template:create')")
-    public CommonResult<Long> createSmsTemplate(@Valid @RequestBody SmsTemplateCreateReqVO createReqVO) {
+    public CommonResult<Long> createSmsTemplate(@Valid @RequestBody SmsTemplateSaveReqVO createReqVO) {
         return success(smsTemplateService.createSmsTemplate(createReqVO));
     }
 
     @PutMapping("/update")
     @Operation(summary = "更新短信模板")
     @PreAuthorize("@ss.hasPermission('system:sms-template:update')")
-    public CommonResult<Boolean> updateSmsTemplate(@Valid @RequestBody SmsTemplateUpdateReqVO updateReqVO) {
+    public CommonResult<Boolean> updateSmsTemplate(@Valid @RequestBody SmsTemplateSaveReqVO updateReqVO) {
         smsTemplateService.updateSmsTemplate(updateReqVO);
         return success(true);
     }
@@ -63,8 +64,8 @@ public class SmsTemplateController {
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
     @PreAuthorize("@ss.hasPermission('system:sms-template:query')")
     public CommonResult<SmsTemplateRespVO> getSmsTemplate(@RequestParam("id") Long id) {
-        SmsTemplateDO smsTemplate = smsTemplateService.getSmsTemplate(id);
-        return success(SmsTemplateConvert.INSTANCE.convert(smsTemplate));
+        SmsTemplateDO template = smsTemplateService.getSmsTemplate(id);
+        return success(BeanUtils.toBean(template, SmsTemplateRespVO.class));
     }
 
     @GetMapping("/page")
@@ -72,19 +73,20 @@ public class SmsTemplateController {
     @PreAuthorize("@ss.hasPermission('system:sms-template:query')")
     public CommonResult<PageResult<SmsTemplateRespVO>> getSmsTemplatePage(@Valid SmsTemplatePageReqVO pageVO) {
         PageResult<SmsTemplateDO> pageResult = smsTemplateService.getSmsTemplatePage(pageVO);
-        return success(SmsTemplateConvert.INSTANCE.convertPage(pageResult));
+        return success(BeanUtils.toBean(pageResult, SmsTemplateRespVO.class));
     }
 
     @GetMapping("/export-excel")
     @Operation(summary = "导出短信模板 Excel")
     @PreAuthorize("@ss.hasPermission('system:sms-template:export')")
     @OperateLog(type = EXPORT)
-    public void exportSmsTemplateExcel(@Valid SmsTemplateExportReqVO exportReqVO,
+    public void exportSmsTemplateExcel(@Valid SmsTemplatePageReqVO exportReqVO,
                                        HttpServletResponse response) throws IOException {
-        List<SmsTemplateDO> list = smsTemplateService.getSmsTemplateList(exportReqVO);
+        exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<SmsTemplateDO> list = smsTemplateService.getSmsTemplatePage(exportReqVO).getList();
         // 导出 Excel
-        List<SmsTemplateExcelVO> datas = SmsTemplateConvert.INSTANCE.convertList02(list);
-        ExcelUtils.write(response, "短信模板.xls", "数据", SmsTemplateExcelVO.class, datas);
+        ExcelUtils.write(response, "短信模板.xls", "数据", SmsTemplateRespVO.class,
+                BeanUtils.toBean(list, SmsTemplateRespVO.class));
     }
 
     @PostMapping("/send-sms")

+ 0 - 20
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/channel/SmsChannelCreateReqVO.java

@@ -1,20 +0,0 @@
-package cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-
-import javax.validation.constraints.NotNull;
-
-@Schema(description = "管理后台 - 短信渠道创建 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class SmsChannelCreateReqVO extends SmsChannelBaseVO {
-
-    @Schema(description = "渠道编码,参见 SmsChannelEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "YUN_PIAN")
-    @NotNull(message = "渠道编码不能为空")
-    private String code;
-
-}

+ 25 - 5
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/channel/SmsChannelRespVO.java

@@ -2,23 +2,43 @@ package cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
+import org.hibernate.validator.constraints.URL;
 
+import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
 
 @Schema(description = "管理后台 - 短信渠道 Response VO")
 @Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class SmsChannelRespVO extends SmsChannelBaseVO {
+public class SmsChannelRespVO {
 
     @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
     private Long id;
 
+    @Schema(description = "短信签名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码")
+    @NotNull(message = "短信签名不能为空")
+    private String signature;
+
     @Schema(description = "渠道编码,参见 SmsChannelEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "YUN_PIAN")
     private String code;
 
+    @Schema(description = "启用状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "启用状态不能为空")
+    private Integer status;
+
+    @Schema(description = "备注", example = "好吃!")
+    private String remark;
+
+    @Schema(description = "短信 API 的账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
+    @NotNull(message = "短信 API 的账号不能为空")
+    private String apiKey;
+
+    @Schema(description = "短信 API 的密钥", example = "yuanma")
+    private String apiSecret;
+
+    @Schema(description = "短信发送回调 URL", example = "https://www.iocoder.cn")
+    @URL(message = "回调 URL 格式不正确")
+    private String callbackUrl;
+
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     private LocalDateTime createTime;
 

+ 10 - 5
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/channel/SmsChannelBaseVO.java → yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/channel/SmsChannelSaveReqVO.java

@@ -1,21 +1,26 @@
 package cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel;
+
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import org.hibernate.validator.constraints.URL;
 
 import javax.validation.constraints.NotNull;
 
-/**
-* 短信渠道 Base VO,提供给添加、修改、详细的子 VO 使用
-* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
-*/
+@Schema(description = "管理后台 - 短信渠道创建/修改 Request VO")
 @Data
-public class SmsChannelBaseVO {
+public class SmsChannelSaveReqVO {
+
+    @Schema(description = "编号", example = "1024")
+    private Long id;
 
     @Schema(description = "短信签名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码")
     @NotNull(message = "短信签名不能为空")
     private String signature;
 
+    @Schema(description = "渠道编码,参见 SmsChannelEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "YUN_PIAN")
+    @NotNull(message = "渠道编码不能为空")
+    private String code;
+
     @Schema(description = "启用状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @NotNull(message = "启用状态不能为空")
     private Integer status;

+ 0 - 4
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/channel/SmsChannelSimpleRespVO.java

@@ -3,18 +3,14 @@ package cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
-import javax.validation.constraints.NotNull;
-
 @Schema(description = "管理后台 - 短信渠道精简 Response VO")
 @Data
 public class SmsChannelSimpleRespVO {
 
     @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    @NotNull(message = "编号不能为空")
     private Long id;
 
     @Schema(description = "短信签名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码")
-    @NotNull(message = "短信签名不能为空")
     private String signature;
 
     @Schema(description = "渠道编码,参见 SmsChannelEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "YUN_PIAN")

+ 0 - 20
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/channel/SmsChannelUpdateReqVO.java

@@ -1,20 +0,0 @@
-package cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-
-import javax.validation.constraints.NotNull;
-
-@Schema(description = "管理后台 - 短信渠道更新 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class SmsChannelUpdateReqVO extends SmsChannelBaseVO {
-
-    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    @NotNull(message = "编号不能为空")
-    private Long id;
-
-}

+ 0 - 94
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/log/SmsLogExcelVO.java

@@ -1,94 +0,0 @@
-package cn.iocoder.yudao.module.system.controller.admin.sms.vo.log;
-
-import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
-import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
-import cn.iocoder.yudao.framework.excel.core.convert.JsonConvert;
-import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
-import com.alibaba.excel.annotation.ExcelProperty;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-import java.util.Map;
-
-/**
- * 短信日志 Excel VO
- *
- * @author 芋道源码
- */
-@Data
-public class SmsLogExcelVO {
-
-    @ExcelProperty("编号")
-    private Long id;
-
-    @ExcelProperty("短信渠道编号")
-    private Long channelId;
-
-    @ExcelProperty("短信渠道编码")
-    private String channelCode;
-
-    @ExcelProperty("模板编号")
-    private Long templateId;
-
-    @ExcelProperty("模板编码")
-    private String templateCode;
-
-    @ExcelProperty(value = "短信类型", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.SMS_TEMPLATE_TYPE)
-    private Integer templateType;
-
-    @ExcelProperty("短信内容")
-    private String templateContent;
-
-    @ExcelProperty(value = "短信参数", converter = JsonConvert.class)
-    private Map<String, Object> templateParams;
-
-    @ExcelProperty("短信 API 的模板编号")
-    private String apiTemplateId;
-
-    @ExcelProperty("手机号")
-    private String mobile;
-
-    @ExcelProperty("用户编号")
-    private Long userId;
-
-    @ExcelProperty(value = "用户类型", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.USER_TYPE)
-    private Integer userType;
-
-    @ExcelProperty(value = "发送状态", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.SMS_SEND_STATUS)
-    private Integer sendStatus;
-
-    @ExcelProperty("发送时间")
-    private LocalDateTime sendTime;
-
-    @ExcelProperty("短信 API 发送结果的编码")
-    private String apiSendCode;
-
-    @ExcelProperty("短信 API 发送失败的提示")
-    private String apiSendMsg;
-
-    @ExcelProperty("短信 API 发送返回的唯一请求 ID")
-    private String apiRequestId;
-
-    @ExcelProperty("短信 API 发送返回的序号")
-    private String apiSerialNo;
-
-    @ExcelProperty(value = "接收状态", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.SMS_RECEIVE_STATUS)
-    private Integer receiveStatus;
-
-    @ExcelProperty("接收时间")
-    private LocalDateTime receiveTime;
-
-    @ExcelProperty("API 接收结果的编码")
-    private String apiReceiveCode;
-
-    @ExcelProperty("API 接收结果的说明")
-    private String apiReceiveMsg;
-
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-}

+ 0 - 38
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/log/SmsLogExportReqVO.java

@@ -1,38 +0,0 @@
-package cn.iocoder.yudao.module.system.controller.admin.sms.vo.log;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 短信日志 Excel 导出 Request VO,参数和 SmsLogPageReqVO 是一致的")
-@Data
-public class SmsLogExportReqVO {
-
-    @Schema(description = "短信渠道编号", example = "10")
-    private Long channelId;
-
-    @Schema(description = "模板编号", example = "20")
-    private Long templateId;
-
-    @Schema(description = "手机号", example = "15601691300")
-    private String mobile;
-
-    @Schema(description = "发送状态", example = "1")
-    private Integer sendStatus;
-
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    @Schema(description = "开始发送时间")
-    private LocalDateTime[] sendTime;
-
-    @Schema(description = "接收状态", example = "0")
-    private Integer receiveStatus;
-
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    @Schema(description = "开始接收时间")
-    private LocalDateTime[] receiveTime;
-
-}

+ 34 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/log/SmsLogRespVO.java

@@ -1,5 +1,11 @@
 package cn.iocoder.yudao.module.system.controller.admin.sms.vo.log;
 
+import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
+import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
+import cn.iocoder.yudao.framework.excel.core.convert.JsonConvert;
+import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -8,75 +14,103 @@ import java.util.Map;
 
 @Schema(description = "管理后台 - 短信日志 Response VO")
 @Data
+@ExcelIgnoreUnannotated
 public class SmsLogRespVO {
 
     @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("编号")
     private Long id;
 
     @Schema(description = "短信渠道编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+    @ExcelProperty("短信渠道编号")
     private Long channelId;
 
     @Schema(description = "短信渠道编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "ALIYUN")
+    @ExcelProperty("短信渠道编码")
     private String channelCode;
 
     @Schema(description = "模板编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20")
+    @ExcelProperty("模板编号")
     private Long templateId;
 
     @Schema(description = "模板编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "test-01")
+    @ExcelProperty("模板编码")
     private String templateCode;
 
     @Schema(description = "短信类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty(value = "短信类型", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.SMS_TEMPLATE_TYPE)
     private Integer templateType;
 
     @Schema(description = "短信内容", requiredMode = Schema.RequiredMode.REQUIRED, example = "你好,你的验证码是 1024")
+    @ExcelProperty("短信内容")
     private String templateContent;
 
     @Schema(description = "短信参数", requiredMode = Schema.RequiredMode.REQUIRED, example = "name,code")
+    @ExcelProperty(value = "短信参数", converter = JsonConvert.class)
     private Map<String, Object> templateParams;
 
     @Schema(description = "短信 API 的模板编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "SMS_207945135")
+    @ExcelProperty("短信 API 的模板编号")
     private String apiTemplateId;
 
     @Schema(description = "手机号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15601691300")
+    @ExcelProperty("手机号")
     private String mobile;
 
     @Schema(description = "用户编号", example = "10")
+    @ExcelProperty("用户编号")
     private Long userId;
 
     @Schema(description = "用户类型", example = "1")
+    @ExcelProperty(value = "用户类型", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.USER_TYPE)
     private Integer userType;
 
     @Schema(description = "发送状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty(value = "发送状态", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.SMS_SEND_STATUS)
     private Integer sendStatus;
 
     @Schema(description = "发送时间")
+    @ExcelProperty("发送时间")
     private LocalDateTime sendTime;
 
     @Schema(description = "短信 API 发送结果的编码", example = "SUCCESS")
+    @ExcelProperty("短信 API 发送结果的编码")
     private String apiSendCode;
 
     @Schema(description = "短信 API 发送失败的提示", example = "成功")
+    @ExcelProperty("短信 API 发送失败的提示")
     private String apiSendMsg;
 
     @Schema(description = "短信 API 发送返回的唯一请求 ID", example = "3837C6D3-B96F-428C-BBB2-86135D4B5B99")
+    @ExcelProperty("短信 API 发送返回的唯一请求 ID")
     private String apiRequestId;
 
     @Schema(description = "短信 API 发送返回的序号", example = "62923244790")
+    @ExcelProperty("短信 API 发送返回的序号")
     private String apiSerialNo;
 
     @Schema(description = "接收状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
+    @ExcelProperty(value = "接收状态", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.SMS_RECEIVE_STATUS)
     private Integer receiveStatus;
 
     @Schema(description = "接收时间")
+    @ExcelProperty("接收时间")
     private LocalDateTime receiveTime;
 
     @Schema(description = "API 接收结果的编码", example = "DELIVRD")
+    @ExcelProperty("API 接收结果的编码")
     private String apiReceiveCode;
 
     @Schema(description = "API 接收结果的说明", example = "用户接收成功")
+    @ExcelProperty("API 接收结果的说明")
     private String apiReceiveMsg;
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
 }

+ 0 - 13
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/template/SmsTemplateCreateReqVO.java

@@ -1,13 +0,0 @@
-package cn.iocoder.yudao.module.system.controller.admin.sms.vo.template;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-
-@Schema(description = "管理后台 - 短信模板创建 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class SmsTemplateCreateReqVO extends SmsTemplateBaseVO {
-
-}

+ 0 - 55
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/template/SmsTemplateExcelVO.java

@@ -1,55 +0,0 @@
-package cn.iocoder.yudao.module.system.controller.admin.sms.vo.template;
-
-import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
-import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
-import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
-import com.alibaba.excel.annotation.ExcelProperty;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-/**
- * 短信模板 Excel VO
- *
- * @author 芋道源码
- */
-@Data
-public class SmsTemplateExcelVO {
-
-    @ExcelProperty("编号")
-    private Long id;
-
-    @ExcelProperty(value = "短信签名", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.SMS_TEMPLATE_TYPE)
-    private Integer type;
-
-    @ExcelProperty(value = "开启状态", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.COMMON_STATUS)
-    private Integer status;
-
-    @ExcelProperty("模板编码")
-    private String code;
-
-    @ExcelProperty("模板名称")
-    private String name;
-
-    @ExcelProperty("模板内容")
-    private String content;
-
-    @ExcelProperty("备注")
-    private String remark;
-
-    @ExcelProperty("短信 API 的模板编号")
-    private String apiTemplateId;
-
-    @ExcelProperty("短信渠道编号")
-    private Long channelId;
-
-    @ExcelProperty(value = "短信渠道编码", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.SMS_CHANNEL_CODE)
-    private String channelCode;
-
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
-}

+ 0 - 37
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/template/SmsTemplateExportReqVO.java

@@ -1,37 +0,0 @@
-package cn.iocoder.yudao.module.system.controller.admin.sms.vo.template;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-
-@Schema(description = "管理后台 - 短信模板 Excel 导出 Request VO,参数和 SmsTemplatePageReqVO 是一致的")
-@Data
-public class SmsTemplateExportReqVO {
-
-    @Schema(description = "短信签名", example = "1")
-    private Integer type;
-
-    @Schema(description = "开启状态", example = "1")
-    private Integer status;
-
-    @Schema(description = "模板编码,模糊匹配", example = "test_01")
-    private String code;
-
-    @Schema(description = "模板内容,模糊匹配", example = "你好,{name}。你长的太{like}啦!")
-    private String content;
-
-    @Schema(description = "短信 API 的模板编号,模糊匹配", example = "4383920")
-    private String apiTemplateId;
-
-    @Schema(description = "短信渠道编号", example = "10")
-    private Long channelId;
-
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    @Schema(description = "创建时间")
-    private LocalDateTime[] createTime;
-
-}

+ 47 - 7
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/template/SmsTemplateRespVO.java

@@ -1,29 +1,69 @@
 package cn.iocoder.yudao.module.system.controller.admin.sms.vo.template;
 
+import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
+import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
+import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
 
 import java.time.LocalDateTime;
 import java.util.List;
 
 @Schema(description = "管理后台 - 短信模板 Response VO")
 @Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class SmsTemplateRespVO extends SmsTemplateBaseVO {
+@ExcelIgnoreUnannotated
+public class SmsTemplateRespVO {
 
     @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @ExcelProperty("编号")
     private Long id;
 
-    @Schema(description = "短信渠道编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "ALIYUN")
-    private String channelCode;
+    @Schema(description = "短信类型,参见 SmsTemplateTypeEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty(value = "短信签名", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.SMS_TEMPLATE_TYPE)
+    private Integer type;
+
+    @Schema(description = "开启状态,参见 CommonStatusEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty(value = "开启状态", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.COMMON_STATUS)
+    private Integer status;
+
+    @Schema(description = "模板编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "test_01")
+    @ExcelProperty("模板编码")
+    private String code;
+
+    @Schema(description = "模板名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
+    @ExcelProperty("模板名称")
+    private String name;
+
+    @Schema(description = "模板内容", requiredMode = Schema.RequiredMode.REQUIRED, example = "你好,{name}。你长的太{like}啦!")
+    @ExcelProperty("模板内容")
+    private String content;
 
     @Schema(description = "参数数组", example = "name,code")
     private List<String> params;
 
+    @Schema(description = "备注", example = "哈哈哈")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "短信 API 的模板编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "4383920")
+    @ExcelProperty("短信 API 的模板编号")
+    private String apiTemplateId;
+
+    @Schema(description = "短信渠道编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+    @ExcelProperty("短信渠道编号")
+    private Long channelId;
+
+    @Schema(description = "短信渠道编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "ALIYUN")
+    @ExcelProperty(value = "短信渠道编码", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.SMS_CHANNEL_CODE)
+    private String channelCode;
+
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
 }

+ 6 - 5
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/template/SmsTemplateBaseVO.java → yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/template/SmsTemplateSaveReqVO.java

@@ -1,15 +1,16 @@
 package cn.iocoder.yudao.module.system.controller.admin.sms.vo.template;
+
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import javax.validation.constraints.NotNull;
 
-/**
-* 短信模板 Base VO,提供给添加、修改、详细的子 VO 使用
-* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
-*/
+@Schema(description = "管理后台 - 短信模板创建/修改 Request VO")
 @Data
-public class SmsTemplateBaseVO {
+public class SmsTemplateSaveReqVO {
+
+    @Schema(description = "编号", example = "1024")
+    private Long id;
 
     @Schema(description = "短信类型,参见 SmsTemplateTypeEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @NotNull(message = "短信类型不能为空")

+ 0 - 20
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/vo/template/SmsTemplateUpdateReqVO.java

@@ -1,20 +0,0 @@
-package cn.iocoder.yudao.module.system.controller.admin.sms.vo.template;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
-
-import javax.validation.constraints.NotNull;
-
-@Schema(description = "管理后台 - 短信模板更新 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class SmsTemplateUpdateReqVO extends SmsTemplateBaseVO {
-
-    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    @NotNull(message = "编号不能为空")
-    private Long id;
-
-}

+ 0 - 39
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/sms/SmsChannelConvert.java

@@ -1,39 +0,0 @@
-package cn.iocoder.yudao.module.system.convert.sms;
-
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelCreateReqVO;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelRespVO;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelSimpleRespVO;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelUpdateReqVO;
-import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsChannelDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties;
-import org.mapstruct.Mapper;
-import org.mapstruct.factory.Mappers;
-
-import java.util.List;
-
-/**
- * 短信渠道 Convert
- *
- * @author 芋道源码
- */
-@Mapper
-public interface SmsChannelConvert {
-
-    SmsChannelConvert INSTANCE = Mappers.getMapper(SmsChannelConvert.class);
-
-    SmsChannelDO convert(SmsChannelCreateReqVO bean);
-
-    SmsChannelDO convert(SmsChannelUpdateReqVO bean);
-
-    SmsChannelRespVO convert(SmsChannelDO bean);
-
-    List<SmsChannelRespVO> convertList(List<SmsChannelDO> list);
-
-    PageResult<SmsChannelRespVO> convertPage(PageResult<SmsChannelDO> page);
-
-    List<SmsChannelSimpleRespVO> convertList03(List<SmsChannelDO> list);
-
-    SmsChannelProperties convert02(SmsChannelDO channel);
-
-}

+ 0 - 30
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/sms/SmsLogConvert.java

@@ -1,30 +0,0 @@
-package cn.iocoder.yudao.module.system.convert.sms;
-
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExcelVO;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogRespVO;
-import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsLogDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import org.mapstruct.Mapper;
-import org.mapstruct.factory.Mappers;
-
-import java.util.List;
-
-/**
- * 短信日志 Convert
- *
- * @author 芋道源码
- */
-@Mapper
-public interface SmsLogConvert {
-
-    SmsLogConvert INSTANCE = Mappers.getMapper(SmsLogConvert.class);
-
-    SmsLogRespVO convert(SmsLogDO bean);
-
-    List<SmsLogRespVO> convertList(List<SmsLogDO> list);
-
-    PageResult<SmsLogRespVO> convertPage(PageResult<SmsLogDO> page);
-
-    List<SmsLogExcelVO> convertList02(List<SmsLogDO> list);
-
-}

+ 0 - 31
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/sms/SmsTemplateConvert.java

@@ -1,31 +0,0 @@
-package cn.iocoder.yudao.module.system.convert.sms;
-
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateCreateReqVO;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateExcelVO;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateRespVO;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateUpdateReqVO;
-import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsTemplateDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import org.mapstruct.Mapper;
-import org.mapstruct.factory.Mappers;
-
-import java.util.List;
-
-@Mapper
-public interface SmsTemplateConvert {
-
-    SmsTemplateConvert INSTANCE = Mappers.getMapper(SmsTemplateConvert.class);
-
-    SmsTemplateDO convert(SmsTemplateCreateReqVO bean);
-
-    SmsTemplateDO convert(SmsTemplateUpdateReqVO bean);
-
-    SmsTemplateRespVO convert(SmsTemplateDO bean);
-
-    List<SmsTemplateRespVO> convertList(List<SmsTemplateDO> list);
-
-    PageResult<SmsTemplateRespVO> convertPage(PageResult<SmsTemplateDO> page);
-
-    List<SmsTemplateExcelVO> convertList02(List<SmsTemplateDO> list);
-
-}

+ 0 - 15
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/sms/SmsLogMapper.java

@@ -3,13 +3,10 @@ package cn.iocoder.yudao.module.system.dal.mysql.sms;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExportReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogPageReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsLogDO;
 import org.apache.ibatis.annotations.Mapper;
 
-import java.util.List;
-
 @Mapper
 public interface SmsLogMapper extends BaseMapperX<SmsLogDO> {
 
@@ -25,16 +22,4 @@ public interface SmsLogMapper extends BaseMapperX<SmsLogDO> {
                 .orderByDesc(SmsLogDO::getId));
     }
 
-    default List<SmsLogDO> selectList(SmsLogExportReqVO reqVO) {
-        return selectList(new LambdaQueryWrapperX<SmsLogDO>()
-                .eqIfPresent(SmsLogDO::getChannelId, reqVO.getChannelId())
-                .eqIfPresent(SmsLogDO::getTemplateId, reqVO.getTemplateId())
-                .likeIfPresent(SmsLogDO::getMobile, reqVO.getMobile())
-                .eqIfPresent(SmsLogDO::getSendStatus, reqVO.getSendStatus())
-                .betweenIfPresent(SmsLogDO::getSendTime, reqVO.getSendTime())
-                .eqIfPresent(SmsLogDO::getReceiveStatus, reqVO.getReceiveStatus())
-                .betweenIfPresent(SmsLogDO::getReceiveTime, reqVO.getReceiveTime())
-                .orderByDesc(SmsLogDO::getId));
-    }
-
 }

+ 0 - 15
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/sms/SmsTemplateMapper.java

@@ -3,13 +3,10 @@ package cn.iocoder.yudao.module.system.dal.mysql.sms;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateExportReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplatePageReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsTemplateDO;
 import org.apache.ibatis.annotations.Mapper;
 
-import java.util.List;
-
 @Mapper
 public interface SmsTemplateMapper extends BaseMapperX<SmsTemplateDO> {
 
@@ -29,18 +26,6 @@ public interface SmsTemplateMapper extends BaseMapperX<SmsTemplateDO> {
                 .orderByDesc(SmsTemplateDO::getId));
     }
 
-    default List<SmsTemplateDO> selectList(SmsTemplateExportReqVO reqVO) {
-        return selectList(new LambdaQueryWrapperX<SmsTemplateDO>()
-                .eqIfPresent(SmsTemplateDO::getType, reqVO.getType())
-                .eqIfPresent(SmsTemplateDO::getStatus, reqVO.getStatus())
-                .likeIfPresent(SmsTemplateDO::getCode, reqVO.getCode())
-                .likeIfPresent(SmsTemplateDO::getContent, reqVO.getContent())
-                .likeIfPresent(SmsTemplateDO::getApiTemplateId, reqVO.getApiTemplateId())
-                .eqIfPresent(SmsTemplateDO::getChannelId, reqVO.getChannelId())
-                .betweenIfPresent(SmsTemplateDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(SmsTemplateDO::getId));
-    }
-
     default Long selectCountByChannelId(Long channelId) {
         return selectCount(SmsTemplateDO::getChannelId, channelId);
     }

+ 3 - 4
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsChannelService.java

@@ -2,9 +2,8 @@ package cn.iocoder.yudao.module.system.service.sms;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.sms.core.client.SmsClient;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelCreateReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelPageReqVO;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelUpdateReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelSaveReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsChannelDO;
 
 import javax.validation.Valid;
@@ -24,14 +23,14 @@ public interface SmsChannelService {
      * @param createReqVO 创建信息
      * @return 编号
      */
-    Long createSmsChannel(@Valid SmsChannelCreateReqVO createReqVO);
+    Long createSmsChannel(@Valid SmsChannelSaveReqVO createReqVO);
 
     /**
      * 更新短信渠道
      *
      * @param updateReqVO 更新信息
      */
-    void updateSmsChannel(@Valid SmsChannelUpdateReqVO updateReqVO);
+    void updateSmsChannel(@Valid SmsChannelSaveReqVO updateReqVO);
 
     /**
      * 删除短信渠道

+ 9 - 10
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsChannelServiceImpl.java

@@ -2,13 +2,12 @@ package cn.iocoder.yudao.module.system.service.sms;
 
 import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.sms.core.client.SmsClient;
 import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory;
 import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelCreateReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelPageReqVO;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelUpdateReqVO;
-import cn.iocoder.yudao.module.system.convert.sms.SmsChannelConvert;
+import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelSaveReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsChannelDO;
 import cn.iocoder.yudao.module.system.dal.mysql.sms.SmsChannelMapper;
 import com.google.common.cache.CacheLoader;
@@ -47,7 +46,7 @@ public class SmsChannelServiceImpl implements SmsChannelService {
                     // 查询,然后尝试刷新
                     SmsChannelDO channel = smsChannelMapper.selectById(id);
                     if (channel != null) {
-                        SmsChannelProperties properties = SmsChannelConvert.INSTANCE.convert02(channel);
+                        SmsChannelProperties properties = BeanUtils.toBean(channel, SmsChannelProperties.class);
                         smsClientFactory.createOrUpdateSmsClient(properties);
                     }
                     return smsClientFactory.getSmsClient(id);
@@ -67,7 +66,7 @@ public class SmsChannelServiceImpl implements SmsChannelService {
                     // 查询,然后尝试刷新
                     SmsChannelDO channel = smsChannelMapper.selectByCode(code);
                     if (channel != null) {
-                        SmsChannelProperties properties = SmsChannelConvert.INSTANCE.convert02(channel);
+                        SmsChannelProperties properties = BeanUtils.toBean(channel, SmsChannelProperties.class);
                         smsClientFactory.createOrUpdateSmsClient(properties);
                     }
                     return smsClientFactory.getSmsClient(code);
@@ -85,18 +84,18 @@ public class SmsChannelServiceImpl implements SmsChannelService {
     private SmsTemplateService smsTemplateService;
 
     @Override
-    public Long createSmsChannel(SmsChannelCreateReqVO createReqVO) {
-        SmsChannelDO channel = SmsChannelConvert.INSTANCE.convert(createReqVO);
+    public Long createSmsChannel(SmsChannelSaveReqVO createReqVO) {
+        SmsChannelDO channel = BeanUtils.toBean(createReqVO, SmsChannelDO.class);
         smsChannelMapper.insert(channel);
         return channel.getId();
     }
 
     @Override
-    public void updateSmsChannel(SmsChannelUpdateReqVO updateReqVO) {
+    public void updateSmsChannel(SmsChannelSaveReqVO updateReqVO) {
         // 校验存在
         SmsChannelDO channel = validateSmsChannelExists(updateReqVO.getId());
         // 更新
-        SmsChannelDO updateObj = SmsChannelConvert.INSTANCE.convert(updateReqVO);
+        SmsChannelDO updateObj = BeanUtils.toBean(updateReqVO, SmsChannelDO.class);
         smsChannelMapper.updateById(updateObj);
 
         // 清空缓存
@@ -108,7 +107,7 @@ public class SmsChannelServiceImpl implements SmsChannelService {
         // 校验存在
         SmsChannelDO channel = validateSmsChannelExists(id);
         // 校验是否有在使用该账号的模版
-        if (smsTemplateService.countByChannelId(id) > 0) {
+        if (smsTemplateService.getSmsTemplateCountByChannelId(id) > 0) {
             throw exception(SMS_CHANNEL_HAS_CHILDREN);
         }
         // 删除

+ 1 - 11
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsLogService.java

@@ -1,13 +1,11 @@
 package cn.iocoder.yudao.module.system.service.sms;
 
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExportReqVO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogPageReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsLogDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsTemplateDO;
 
 import java.time.LocalDateTime;
-import java.util.List;
 import java.util.Map;
 
 /**
@@ -67,12 +65,4 @@ public interface SmsLogService {
      */
     PageResult<SmsLogDO> getSmsLogPage(SmsLogPageReqVO pageReqVO);
 
-    /**
-     * 获得短信日志列表, 用于 Excel 导出
-     *
-     * @param exportReqVO 查询条件
-     * @return 短信日志列表
-     */
-    List<SmsLogDO> getSmsLogList(SmsLogExportReqVO exportReqVO);
-
 }

+ 0 - 7
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsLogServiceImpl.java

@@ -1,7 +1,6 @@
 package cn.iocoder.yudao.module.system.service.sms;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExportReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogPageReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsLogDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsTemplateDO;
@@ -13,7 +12,6 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
-import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
@@ -78,9 +76,4 @@ public class SmsLogServiceImpl implements SmsLogService {
         return smsLogMapper.selectPage(pageReqVO);
     }
 
-    @Override
-    public List<SmsLogDO> getSmsLogList(SmsLogExportReqVO exportReqVO) {
-        return smsLogMapper.selectList(exportReqVO);
-    }
-
 }

+ 5 - 17
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsTemplateService.java

@@ -1,14 +1,11 @@
 package cn.iocoder.yudao.module.system.service.sms;
 
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateCreateReqVO;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateExportReqVO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplatePageReqVO;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateUpdateReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateSaveReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsTemplateDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
 
 import javax.validation.Valid;
-import java.util.List;
 import java.util.Map;
 
 /**
@@ -25,14 +22,14 @@ public interface SmsTemplateService {
      * @param createReqVO 创建信息
      * @return 编号
      */
-    Long createSmsTemplate(@Valid SmsTemplateCreateReqVO createReqVO);
+    Long createSmsTemplate(@Valid SmsTemplateSaveReqVO createReqVO);
 
     /**
      * 更新短信模板
      *
      * @param updateReqVO 更新信息
      */
-    void updateSmsTemplate(@Valid SmsTemplateUpdateReqVO updateReqVO);
+    void updateSmsTemplate(@Valid SmsTemplateSaveReqVO updateReqVO);
 
     /**
      * 删除短信模板
@@ -65,22 +62,13 @@ public interface SmsTemplateService {
      */
     PageResult<SmsTemplateDO> getSmsTemplatePage(SmsTemplatePageReqVO pageReqVO);
 
-    /**
-     * 获得短信模板列表, 用于 Excel 导出
-     *
-     * @param exportReqVO 查询条件
-     * @return 短信模板分页
-     */
-    List<SmsTemplateDO> getSmsTemplateList(SmsTemplateExportReqVO exportReqVO);
-
     /**
      * 获得指定短信渠道下的短信模板数量
      *
      * @param channelId 短信渠道编号
      * @return 数量
      */
-    Long countByChannelId(Long channelId);
-
+    Long getSmsTemplateCountByChannelId(Long channelId);
 
     /**
      * 格式化短信内容

+ 7 - 14
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/sms/SmsTemplateServiceImpl.java

@@ -6,14 +6,12 @@ import cn.hutool.core.util.ReUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.sms.core.client.SmsClient;
 import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO;
 import cn.iocoder.yudao.framework.sms.core.enums.SmsTemplateAuditStatusEnum;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateCreateReqVO;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateExportReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplatePageReqVO;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateUpdateReqVO;
-import cn.iocoder.yudao.module.system.convert.sms.SmsTemplateConvert;
+import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateSaveReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsChannelDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsTemplateDO;
 import cn.iocoder.yudao.module.system.dal.mysql.sms.SmsTemplateMapper;
@@ -55,7 +53,7 @@ public class SmsTemplateServiceImpl implements SmsTemplateService {
     private SmsChannelService smsChannelService;
 
     @Override
-    public Long createSmsTemplate(SmsTemplateCreateReqVO createReqVO) {
+    public Long createSmsTemplate(SmsTemplateSaveReqVO createReqVO) {
         // 校验短信渠道
         SmsChannelDO channelDO = validateSmsChannel(createReqVO.getChannelId());
         // 校验短信编码是否重复
@@ -64,7 +62,7 @@ public class SmsTemplateServiceImpl implements SmsTemplateService {
         validateApiTemplate(createReqVO.getChannelId(), createReqVO.getApiTemplateId());
 
         // 插入
-        SmsTemplateDO template = SmsTemplateConvert.INSTANCE.convert(createReqVO);
+        SmsTemplateDO template = BeanUtils.toBean(createReqVO, SmsTemplateDO.class);
         template.setParams(parseTemplateContentParams(template.getContent()));
         template.setChannelCode(channelDO.getCode());
         smsTemplateMapper.insert(template);
@@ -75,7 +73,7 @@ public class SmsTemplateServiceImpl implements SmsTemplateService {
     @Override
     @CacheEvict(cacheNames = RedisKeyConstants.SMS_TEMPLATE,
             allEntries = true) // allEntries 清空所有缓存,因为可能修改到 code 字段,不好清理
-    public void updateSmsTemplate(SmsTemplateUpdateReqVO updateReqVO) {
+    public void updateSmsTemplate(SmsTemplateSaveReqVO updateReqVO) {
         // 校验存在
         validateSmsTemplateExists(updateReqVO.getId());
         // 校验短信渠道
@@ -86,7 +84,7 @@ public class SmsTemplateServiceImpl implements SmsTemplateService {
         validateApiTemplate(updateReqVO.getChannelId(), updateReqVO.getApiTemplateId());
 
         // 更新
-        SmsTemplateDO updateObj = SmsTemplateConvert.INSTANCE.convert(updateReqVO);
+        SmsTemplateDO updateObj = BeanUtils.toBean(updateReqVO, SmsTemplateDO.class);
         updateObj.setParams(parseTemplateContentParams(updateObj.getContent()));
         updateObj.setChannelCode(channelDO.getCode());
         smsTemplateMapper.updateById(updateObj);
@@ -126,12 +124,7 @@ public class SmsTemplateServiceImpl implements SmsTemplateService {
     }
 
     @Override
-    public List<SmsTemplateDO> getSmsTemplateList(SmsTemplateExportReqVO exportReqVO) {
-        return smsTemplateMapper.selectList(exportReqVO);
-    }
-
-    @Override
-    public Long countByChannelId(Long channelId) {
+    public Long getSmsTemplateCountByChannelId(Long channelId) {
         return smsTemplateMapper.selectCountByChannelId(channelId);
     }
 

+ 10 - 10
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/sms/SmsChannelServiceTest.java

@@ -2,14 +2,13 @@ package cn.iocoder.yudao.module.system.service.sms;
 
 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.sms.core.client.SmsClient;
 import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory;
 import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties;
 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelCreateReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelPageReqVO;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelUpdateReqVO;
-import cn.iocoder.yudao.module.system.convert.sms.SmsChannelConvert;
+import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelSaveReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsChannelDO;
 import cn.iocoder.yudao.module.system.dal.mysql.sms.SmsChannelMapper;
 import org.junit.jupiter.api.Test;
@@ -48,7 +47,8 @@ public class SmsChannelServiceTest extends BaseDbUnitTest {
     @Test
     public void testCreateSmsChannel_success() {
         // 准备参数
-        SmsChannelCreateReqVO reqVO = randomPojo(SmsChannelCreateReqVO.class, o -> o.setStatus(randomCommonStatus()));
+        SmsChannelSaveReqVO reqVO = randomPojo(SmsChannelSaveReqVO.class, o -> o.setStatus(randomCommonStatus()))
+                .setId(null); // 防止 id 被赋值
 
         // 调用
         Long smsChannelId = smsChannelService.createSmsChannel(reqVO);
@@ -56,7 +56,7 @@ public class SmsChannelServiceTest extends BaseDbUnitTest {
         assertNotNull(smsChannelId);
         // 校验记录的属性是否正确
         SmsChannelDO smsChannel = smsChannelMapper.selectById(smsChannelId);
-        assertPojoEquals(reqVO, smsChannel);
+        assertPojoEquals(reqVO, smsChannel, "id");
         // 断言 cache
         assertNull(smsChannelService.getIdClientCache().getIfPresent(smsChannel.getId()));
         assertNull(smsChannelService.getCodeClientCache().getIfPresent(smsChannel.getCode()));
@@ -68,7 +68,7 @@ public class SmsChannelServiceTest extends BaseDbUnitTest {
         SmsChannelDO dbSmsChannel = randomPojo(SmsChannelDO.class);
         smsChannelMapper.insert(dbSmsChannel);// @Sql: 先插入出一条存在的数据
         // 准备参数
-        SmsChannelUpdateReqVO reqVO = randomPojo(SmsChannelUpdateReqVO.class, o -> {
+        SmsChannelSaveReqVO reqVO = randomPojo(SmsChannelSaveReqVO.class, o -> {
             o.setId(dbSmsChannel.getId()); // 设置更新的 ID
             o.setStatus(randomCommonStatus());
             o.setCallbackUrl(randomString());
@@ -87,7 +87,7 @@ public class SmsChannelServiceTest extends BaseDbUnitTest {
     @Test
     public void testUpdateSmsChannel_notExists() {
         // 准备参数
-        SmsChannelUpdateReqVO reqVO = randomPojo(SmsChannelUpdateReqVO.class);
+        SmsChannelSaveReqVO reqVO = randomPojo(SmsChannelSaveReqVO.class);
 
         // 调用, 并断言异常
         assertServiceException(() -> smsChannelService.updateSmsChannel(reqVO), SMS_CHANNEL_NOT_EXISTS);
@@ -127,7 +127,7 @@ public class SmsChannelServiceTest extends BaseDbUnitTest {
         // 准备参数
         Long id = dbSmsChannel.getId();
         // mock 方法
-        when(smsTemplateService.countByChannelId(eq(id))).thenReturn(10L);
+        when(smsTemplateService.getSmsTemplateCountByChannelId(eq(id))).thenReturn(10L);
 
         // 调用, 并断言异常
         assertServiceException(() -> smsChannelService.deleteSmsChannel(id), SMS_CHANNEL_HAS_CHILDREN);
@@ -207,7 +207,7 @@ public class SmsChannelServiceTest extends BaseDbUnitTest {
         // 断言
         assertSame(client, mockClient);
         verify(smsClientFactory).createOrUpdateSmsClient(argThat(arg -> {
-            SmsChannelProperties properties = SmsChannelConvert.INSTANCE.convert02(channel);
+            SmsChannelProperties properties = BeanUtils.toBean(channel, SmsChannelProperties.class);
             return properties.equals(arg);
         }));
     }
@@ -228,7 +228,7 @@ public class SmsChannelServiceTest extends BaseDbUnitTest {
         // 断言
         assertSame(client, mockClient);
         verify(smsClientFactory).createOrUpdateSmsClient(argThat(arg -> {
-            SmsChannelProperties properties = SmsChannelConvert.INSTANCE.convert02(channel);
+            SmsChannelProperties properties = BeanUtils.toBean(channel, SmsChannelProperties.class);
             return properties.equals(arg);
         }));
     }

+ 0 - 46
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/sms/SmsLogServiceImplTest.java

@@ -5,7 +5,6 @@ import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogExportReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.sms.vo.log.SmsLogPageReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsLogDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsTemplateDO;
@@ -18,7 +17,6 @@ import org.springframework.context.annotation.Import;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
-import java.util.List;
 import java.util.Map;
 import java.util.function.Consumer;
 
@@ -86,50 +84,6 @@ public class SmsLogServiceImplTest extends BaseDbUnitTest {
        assertPojoEquals(dbSmsLog, pageResult.getList().get(0));
     }
 
-    @Test
-    public void testGetSmsLogList() {
-        // mock 数据
-        SmsLogDO dbSmsLog = randomSmsLogDO(o -> { // 等会查询到
-            o.setChannelId(1L);
-            o.setTemplateId(10L);
-            o.setMobile("15601691300");
-            o.setSendStatus(SmsSendStatusEnum.INIT.getStatus());
-            o.setSendTime(buildTime(2020, 11, 11));
-            o.setReceiveStatus(SmsReceiveStatusEnum.INIT.getStatus());
-            o.setReceiveTime(buildTime(2021, 11, 11));
-        });
-        smsLogMapper.insert(dbSmsLog);
-        // 测试 channelId 不匹配
-        smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setChannelId(2L)));
-        // 测试 templateId 不匹配
-        smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setTemplateId(20L)));
-        // 测试 mobile 不匹配
-        smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setMobile("18818260999")));
-        // 测试 sendStatus 不匹配
-        smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setSendStatus(SmsSendStatusEnum.IGNORE.getStatus())));
-        // 测试 sendTime 不匹配
-        smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setSendTime(buildTime(2020, 12, 12))));
-        // 测试 receiveStatus 不匹配
-        smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setReceiveStatus(SmsReceiveStatusEnum.SUCCESS.getStatus())));
-        // 测试 receiveTime 不匹配
-        smsLogMapper.insert(cloneIgnoreId(dbSmsLog, o -> o.setReceiveTime(buildTime(2021, 12, 12))));
-        // 准备参数
-        SmsLogExportReqVO reqVO = new SmsLogExportReqVO();
-        reqVO.setChannelId(1L);
-        reqVO.setTemplateId(10L);
-        reqVO.setMobile("156");
-        reqVO.setSendStatus(SmsSendStatusEnum.INIT.getStatus());
-        reqVO.setSendTime(buildBetweenTime(2020, 11, 1, 2020, 11, 30));
-        reqVO.setReceiveStatus(SmsReceiveStatusEnum.INIT.getStatus());
-        reqVO.setReceiveTime(buildBetweenTime(2021, 11, 1, 2021, 11, 30));
-
-       // 调用
-       List<SmsLogDO> list = smsLogService.getSmsLogList(reqVO);
-       // 断言
-       assertEquals(1, list.size());
-       assertPojoEquals(dbSmsLog, list.get(0));
-    }
-
     @Test
     public void testCreateSmsLog() {
         // 准备参数

+ 6 - 52
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/sms/SmsTemplateServiceImplTest.java

@@ -8,10 +8,8 @@ import cn.iocoder.yudao.framework.sms.core.client.SmsClient;
 import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO;
 import cn.iocoder.yudao.framework.sms.core.enums.SmsTemplateAuditStatusEnum;
 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateCreateReqVO;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateExportReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateSaveReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplatePageReqVO;
-import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateUpdateReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsChannelDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsTemplateDO;
 import cn.iocoder.yudao.module.system.dal.mysql.sms.SmsTemplateMapper;
@@ -66,11 +64,11 @@ public class SmsTemplateServiceImplTest extends BaseDbUnitTest {
     @SuppressWarnings("unchecked")
     public void testCreateSmsTemplate_success() throws Throwable {
         // 准备参数
-        SmsTemplateCreateReqVO reqVO = randomPojo(SmsTemplateCreateReqVO.class, o -> {
+        SmsTemplateSaveReqVO reqVO = randomPojo(SmsTemplateSaveReqVO.class, o -> {
             o.setContent("正在进行登录操作{operation},您的验证码是{code}");
             o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围
             o.setType(randomEle(SmsTemplateTypeEnum.values()).getType()); // 保证 type 的 范围
-        });
+        }).setId(null); // 防止 id 被赋值
         // mock Channel 的方法
         SmsChannelDO channelDO = randomPojo(SmsChannelDO.class, o -> {
             o.setId(reqVO.getChannelId());
@@ -88,7 +86,7 @@ public class SmsTemplateServiceImplTest extends BaseDbUnitTest {
         assertNotNull(smsTemplateId);
         // 校验记录的属性是否正确
         SmsTemplateDO smsTemplate = smsTemplateMapper.selectById(smsTemplateId);
-        assertPojoEquals(reqVO, smsTemplate);
+        assertPojoEquals(reqVO, smsTemplate, "id");
         assertEquals(Lists.newArrayList("operation", "code"), smsTemplate.getParams());
         assertEquals(channelDO.getCode(), smsTemplate.getChannelCode());
     }
@@ -100,7 +98,7 @@ public class SmsTemplateServiceImplTest extends BaseDbUnitTest {
         SmsTemplateDO dbSmsTemplate = randomSmsTemplateDO();
         smsTemplateMapper.insert(dbSmsTemplate);// @Sql: 先插入出一条存在的数据
         // 准备参数
-        SmsTemplateUpdateReqVO reqVO = randomPojo(SmsTemplateUpdateReqVO.class, o -> {
+        SmsTemplateSaveReqVO reqVO = randomPojo(SmsTemplateSaveReqVO.class, o -> {
             o.setId(dbSmsTemplate.getId()); // 设置更新的 ID
             o.setContent("正在进行登录操作{operation},您的验证码是{code}");
             o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围
@@ -129,7 +127,7 @@ public class SmsTemplateServiceImplTest extends BaseDbUnitTest {
     @Test
     public void testUpdateSmsTemplate_notExists() {
         // 准备参数
-        SmsTemplateUpdateReqVO reqVO = randomPojo(SmsTemplateUpdateReqVO.class);
+        SmsTemplateSaveReqVO reqVO = randomPojo(SmsTemplateSaveReqVO.class);
 
         // 调用, 并断言异常
         assertServiceException(() -> smsTemplateService.updateSmsTemplate(reqVO), SMS_TEMPLATE_NOT_EXISTS);
@@ -203,50 +201,6 @@ public class SmsTemplateServiceImplTest extends BaseDbUnitTest {
         assertPojoEquals(dbSmsTemplate, pageResult.getList().get(0));
     }
 
-    @Test
-    public void testGetSmsTemplateList() {
-        // mock 数据
-        SmsTemplateDO dbSmsTemplate = randomPojo(SmsTemplateDO.class, o -> { // 等会查询到
-            o.setType(SmsTemplateTypeEnum.PROMOTION.getType());
-            o.setStatus(CommonStatusEnum.ENABLE.getStatus());
-            o.setCode("tudou");
-            o.setContent("芋道源码");
-            o.setApiTemplateId("yunai");
-            o.setChannelId(1L);
-            o.setCreateTime(buildTime(2021, 11, 11));
-        });
-        smsTemplateMapper.insert(dbSmsTemplate);
-        // 测试 type 不匹配
-        smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setType(SmsTemplateTypeEnum.VERIFICATION_CODE.getType())));
-        // 测试 status 不匹配
-        smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
-        // 测试 code 不匹配
-        smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setCode("yuanma")));
-        // 测试 content 不匹配
-        smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setContent("源码")));
-        // 测试 apiTemplateId 不匹配
-        smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setApiTemplateId("nai")));
-        // 测试 channelId 不匹配
-        smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setChannelId(2L)));
-        // 测试 createTime 不匹配
-        smsTemplateMapper.insert(ObjectUtils.cloneIgnoreId(dbSmsTemplate, o -> o.setCreateTime(buildTime(2021, 12, 12))));
-        // 准备参数
-        SmsTemplateExportReqVO reqVO = new SmsTemplateExportReqVO();
-        reqVO.setType(SmsTemplateTypeEnum.PROMOTION.getType());
-        reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
-        reqVO.setCode("tu");
-        reqVO.setContent("芋道");
-        reqVO.setApiTemplateId("yu");
-        reqVO.setChannelId(1L);
-        reqVO.setCreateTime(buildBetweenTime(2021, 11, 1, 2021, 12, 1));
-
-        // 调用
-        List<SmsTemplateDO> list = smsTemplateService.getSmsTemplateList(reqVO);
-        // 断言
-        assertEquals(1, list.size());
-        assertPojoEquals(dbSmsTemplate, list.get(0));
-    }
-
     @Test
     public void testValidateSmsChannel_success() {
         // 准备参数