Commit 47b77d7360caf4b12098cfd2d6888bcef1ca7ef0

Authored by 芋道源码
Committed by Gitee
2 parents a5c59c60 30fef09e

!774 简化 system 和 infra 大模块模块的 VO

Merge pull request !774 from 芋道源码/feature/vo-optimize
Showing 337 changed files with 2447 additions and 6200 deletions

Too many changes.

To preserve performance only 100 of 337 files are displayed.

yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelog/core/service/OperateLogFrameworkServiceImpl.java
... ... @@ -21,7 +21,7 @@ public class OperateLogFrameworkServiceImpl implements OperateLogFrameworkServic
21 21 @Override
22 22 @Async
23 23 public void createOperateLog(OperateLog operateLog) {
24   - OperateLogCreateReqDTO reqDTO = BeanUtil.copyProperties(operateLog, OperateLogCreateReqDTO.class);
  24 + OperateLogCreateReqDTO reqDTO = BeanUtil.toBean(operateLog, OperateLogCreateReqDTO.class);
25 25 operateLogApi.createOperateLog(reqDTO);
26 26 }
27 27  
... ...
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java
... ... @@ -28,7 +28,7 @@ public interface BaseMapperX<T> extends MPJBaseMapper<T> {
28 28  
29 29 default PageResult<T> selectPage(PageParam pageParam, @Param("ew") Wrapper<T> queryWrapper) {
30 30 // 特殊:不分页,直接查询全部
31   - if (PageParam.PAGE_SIZE_NONE.equals(pageParam.getPageNo())) {
  31 + if (PageParam.PAGE_SIZE_NONE.equals(pageParam.getPageSize())) {
32 32 List<T> list = selectList(queryWrapper);
33 33 return new PageResult<>(list, (long) list.size());
34 34 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/ConfigController.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.config;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 6 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
6 7 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
... ... @@ -38,15 +39,15 @@ public class ConfigController {
38 39 @PostMapping("/create")
39 40 @Operation(summary = "创建参数配置")
40 41 @PreAuthorize("@ss.hasPermission('infra:config:create')")
41   - public CommonResult<Long> createConfig(@Valid @RequestBody ConfigCreateReqVO reqVO) {
42   - return success(configService.createConfig(reqVO));
  42 + public CommonResult<Long> createConfig(@Valid @RequestBody ConfigSaveReqVO createReqVO) {
  43 + return success(configService.createConfig(createReqVO));
43 44 }
44 45  
45 46 @PutMapping("/update")
46 47 @Operation(summary = "修改参数配置")
47 48 @PreAuthorize("@ss.hasPermission('infra:config:update')")
48   - public CommonResult<Boolean> updateConfig(@Valid @RequestBody ConfigUpdateReqVO reqVO) {
49   - configService.updateConfig(reqVO);
  49 + public CommonResult<Boolean> updateConfig(@Valid @RequestBody ConfigSaveReqVO updateReqVO) {
  50 + configService.updateConfig(updateReqVO);
50 51 return success(true);
51 52 }
52 53  
... ... @@ -84,8 +85,8 @@ public class ConfigController {
84 85 @GetMapping("/page")
85 86 @Operation(summary = "获取参数配置分页")
86 87 @PreAuthorize("@ss.hasPermission('infra:config:query')")
87   - public CommonResult<PageResult<ConfigRespVO>> getConfigPage(@Valid ConfigPageReqVO reqVO) {
88   - PageResult<ConfigDO> page = configService.getConfigPage(reqVO);
  88 + public CommonResult<PageResult<ConfigRespVO>> getConfigPage(@Valid ConfigPageReqVO pageReqVO) {
  89 + PageResult<ConfigDO> page = configService.getConfigPage(pageReqVO);
89 90 return success(ConfigConvert.INSTANCE.convertPage(page));
90 91 }
91 92  
... ... @@ -93,13 +94,13 @@ public class ConfigController {
93 94 @Operation(summary = "导出参数配置")
94 95 @PreAuthorize("@ss.hasPermission('infra:config:export')")
95 96 @OperateLog(type = EXPORT)
96   - public void exportConfig(@Valid ConfigExportReqVO reqVO,
  97 + public void exportConfig(@Valid ConfigPageReqVO exportReqVO,
97 98 HttpServletResponse response) throws IOException {
98   - List<ConfigDO> list = configService.getConfigList(reqVO);
99   - // 拼接数据
100   - List<ConfigExcelVO> datas = ConfigConvert.INSTANCE.convertList(list);
  99 + exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
  100 + List<ConfigDO> list = configService.getConfigPage(exportReqVO).getList();
101 101 // 输出
102   - ExcelUtils.write(response, "参数配置.xls", "数据", ConfigExcelVO.class, datas);
  102 + ExcelUtils.write(response, "参数配置.xls", "数据", ConfigRespVO.class,
  103 + ConfigConvert.INSTANCE.convertList(list));
103 104 }
104 105  
105 106 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigCreateReqVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.config.vo;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.Data;
5   -import lombok.EqualsAndHashCode;
6   -
7   -import javax.validation.constraints.NotBlank;
8   -import javax.validation.constraints.Size;
9   -
10   -@Schema(description = "管理后台 - 参数配置创建 Request VO")
11   -@Data
12   -@EqualsAndHashCode(callSuper = true)
13   -public class ConfigCreateReqVO extends ConfigBaseVO {
14   -
15   - @Schema(description = "参数键名", requiredMode = Schema.RequiredMode.REQUIRED, example = "yunai.db.username")
16   - @NotBlank(message = "参数键名长度不能为空")
17   - @Size(max = 100, message = "参数键名长度不能超过100个字符")
18   - private String key;
19   -
20   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigExcelVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.config.vo;
2   -
3   -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
4   -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
5   -import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
6   -import com.alibaba.excel.annotation.ExcelProperty;
7   -import lombok.Data;
8   -
9   -import java.time.LocalDateTime;
10   -
11   -/**
12   - * 参数配置 Excel 导出响应 VO
13   - */
14   -@Data
15   -public class ConfigExcelVO {
16   -
17   - @ExcelProperty("参数配置序号")
18   - private Long id;
19   -
20   - @ExcelProperty("参数键名")
21   - private String configKey;
22   -
23   - @ExcelProperty("参数分类")
24   - private String category;
25   -
26   - @ExcelProperty("参数名称")
27   - private String name;
28   -
29   - @ExcelProperty("参数键值")
30   - private String value;
31   -
32   - @ExcelProperty(value = "参数类型", converter = DictConvert.class)
33   - @DictFormat(DictTypeConstants.CONFIG_TYPE)
34   - private Integer type;
35   -
36   - @ExcelProperty(value = "是否可见", converter = DictConvert.class)
37   - @DictFormat(DictTypeConstants.BOOLEAN_STRING)
38   - private Boolean visible;
39   -
40   - @ExcelProperty("备注")
41   - private String remark;
42   -
43   - @ExcelProperty("创建时间")
44   - private LocalDateTime createTime;
45   -
46   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigExportReqVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.config.vo;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.Data;
5   -import org.springframework.format.annotation.DateTimeFormat;
6   -
7   -import java.time.LocalDateTime;
8   -
9   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
10   -
11   -@Schema(description = "管理后台 - 参数配置导出 Request VO")
12   -@Data
13   -public class ConfigExportReqVO {
14   -
15   - @Schema(description = "参数名称", example = "模糊匹配")
16   - private String name;
17   -
18   - @Schema(description = "参数键名,模糊匹配", example = "yunai.db.username")
19   - private String key;
20   -
21   - @Schema(description = "参数类型,参见 SysConfigTypeEnum 枚举", example = "1")
22   - private Integer type;
23   -
24   - @Schema(description = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
25   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
26   - private LocalDateTime[] createTime;
27   -
28   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigRespVO.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.config.vo;
2 2  
  3 +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
  4 +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
  5 +import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
  6 +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
  7 +import com.alibaba.excel.annotation.ExcelProperty;
3 8 import io.swagger.v3.oas.annotations.media.Schema;
4 9 import lombok.Data;
5   -import lombok.EqualsAndHashCode;
6 10  
7   -import javax.validation.constraints.NotBlank;
8   -import javax.validation.constraints.Size;
9 11 import java.time.LocalDateTime;
10 12  
11 13 @Schema(description = "管理后台 - 参数配置信息 Response VO")
12 14 @Data
13   -@EqualsAndHashCode(callSuper = true)
14   -public class ConfigRespVO extends ConfigBaseVO {
  15 +@ExcelIgnoreUnannotated
  16 +public class ConfigRespVO {
15 17  
16 18 @Schema(description = "参数配置序号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  19 + @ExcelProperty("参数配置序号")
17 20 private Long id;
18 21  
  22 + @Schema(description = "参数分类", requiredMode = Schema.RequiredMode.REQUIRED, example = "biz")
  23 + @ExcelProperty("参数分类")
  24 + private String category;
  25 +
  26 + @Schema(description = "参数名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "数据库名")
  27 + @ExcelProperty("参数名称")
  28 + private String name;
  29 +
19 30 @Schema(description = "参数键名", requiredMode = Schema.RequiredMode.REQUIRED, example = "yunai.db.username")
20   - @NotBlank(message = "参数键名长度不能为空")
21   - @Size(max = 100, message = "参数键名长度不能超过100个字符")
  31 + @ExcelProperty("参数键名")
22 32 private String key;
23 33  
  34 + @Schema(description = "参数键值", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  35 + @ExcelProperty("参数键值")
  36 + private String value;
  37 +
24 38 @Schema(description = "参数类型,参见 SysConfigTypeEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  39 + @ExcelProperty(value = "参数类型", converter = DictConvert.class)
  40 + @DictFormat(DictTypeConstants.CONFIG_TYPE)
25 41 private Integer type;
26 42  
  43 + @Schema(description = "是否可见", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
  44 + @ExcelProperty(value = "是否可见", converter = DictConvert.class)
  45 + @DictFormat(DictTypeConstants.BOOLEAN_STRING)
  46 + private Boolean visible;
  47 +
  48 + @Schema(description = "备注", example = "备注一下很帅气!")
  49 + @ExcelProperty("备注")
  50 + private String remark;
  51 +
27 52 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
  53 + @ExcelProperty("创建时间")
28 54 private LocalDateTime createTime;
29 55  
30 56 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigBaseVO.java renamed to yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigSaveReqVO.java
... ... @@ -8,26 +8,31 @@ import javax.validation.constraints.NotEmpty;
8 8 import javax.validation.constraints.NotNull;
9 9 import javax.validation.constraints.Size;
10 10  
11   -/**
12   - * 参数配置 Base VO,提供给添加、修改、详细的子 VO 使用
13   - * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
14   - */
  11 +@Schema(description = "管理后台 - 参数配置创建/修改 Request VO")
15 12 @Data
16   -public class ConfigBaseVO {
  13 +public class ConfigSaveReqVO {
  14 +
  15 + @Schema(description = "参数配置序号", example = "1024")
  16 + private Long id;
17 17  
18 18 @Schema(description = "参数分组", requiredMode = Schema.RequiredMode.REQUIRED, example = "biz")
19 19 @NotEmpty(message = "参数分组不能为空")
20   - @Size(max = 50, message = "参数名称不能超过50个字符")
  20 + @Size(max = 50, message = "参数名称不能超过 50 个字符")
21 21 private String category;
22 22  
23 23 @Schema(description = "参数名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "数据库名")
24 24 @NotBlank(message = "参数名称不能为空")
25   - @Size(max = 100, message = "参数名称不能超过100个字符")
  25 + @Size(max = 100, message = "参数名称不能超过 100 个字符")
26 26 private String name;
27 27  
  28 + @Schema(description = "参数键名", requiredMode = Schema.RequiredMode.REQUIRED, example = "yunai.db.username")
  29 + @NotBlank(message = "参数键名长度不能为空")
  30 + @Size(max = 100, message = "参数键名长度不能超过 100 个字符")
  31 + private String key;
  32 +
28 33 @Schema(description = "参数键值", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
29 34 @NotBlank(message = "参数键值不能为空")
30   - @Size(max = 500, message = "参数键值长度不能超过500个字符")
  35 + @Size(max = 500, message = "参数键值长度不能超过 500 个字符")
31 36 private String value;
32 37  
33 38 @Schema(description = "是否可见", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigUpdateReqVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.config.vo;
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 ConfigUpdateReqVO extends ConfigBaseVO {
15   -
16   - @Schema(description = "参数配置序号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
17   - @NotNull(message = "参数配置编号不能为空")
18   - private Long id;
19   -
20   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/db/DataSourceConfigController.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.db;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4   -import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigCreateReqVO;
  4 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 5 import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigRespVO;
6   -import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigUpdateReqVO;
7   -import cn.iocoder.yudao.module.infra.convert.db.DataSourceConfigConvert;
  6 +import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigSaveReqVO;
8 7 import cn.iocoder.yudao.module.infra.dal.dataobject.db.DataSourceConfigDO;
9 8 import cn.iocoder.yudao.module.infra.service.db.DataSourceConfigService;
10   -import io.swagger.v3.oas.annotations.tags.Tag;
11   -import io.swagger.v3.oas.annotations.Parameter;
12 9 import io.swagger.v3.oas.annotations.Operation;
  10 +import io.swagger.v3.oas.annotations.Parameter;
  11 +import io.swagger.v3.oas.annotations.tags.Tag;
13 12 import org.springframework.security.access.prepost.PreAuthorize;
14 13 import org.springframework.validation.annotation.Validated;
15 14 import org.springframework.web.bind.annotation.*;
... ... @@ -32,14 +31,14 @@ public class DataSourceConfigController {
32 31 @PostMapping("/create")
33 32 @Operation(summary = "创建数据源配置")
34 33 @PreAuthorize("@ss.hasPermission('infra:data-source-config:create')")
35   - public CommonResult<Long> createDataSourceConfig(@Valid @RequestBody DataSourceConfigCreateReqVO createReqVO) {
  34 + public CommonResult<Long> createDataSourceConfig(@Valid @RequestBody DataSourceConfigSaveReqVO createReqVO) {
36 35 return success(dataSourceConfigService.createDataSourceConfig(createReqVO));
37 36 }
38 37  
39 38 @PutMapping("/update")
40 39 @Operation(summary = "更新数据源配置")
41 40 @PreAuthorize("@ss.hasPermission('infra:data-source-config:update')")
42   - public CommonResult<Boolean> updateDataSourceConfig(@Valid @RequestBody DataSourceConfigUpdateReqVO updateReqVO) {
  41 + public CommonResult<Boolean> updateDataSourceConfig(@Valid @RequestBody DataSourceConfigSaveReqVO updateReqVO) {
43 42 dataSourceConfigService.updateDataSourceConfig(updateReqVO);
44 43 return success(true);
45 44 }
... ... @@ -58,8 +57,8 @@ public class DataSourceConfigController {
58 57 @Parameter(name = "id", description = "编号", required = true, example = "1024")
59 58 @PreAuthorize("@ss.hasPermission('infra:data-source-config:query')")
60 59 public CommonResult<DataSourceConfigRespVO> getDataSourceConfig(@RequestParam("id") Long id) {
61   - DataSourceConfigDO dataSourceConfig = dataSourceConfigService.getDataSourceConfig(id);
62   - return success(DataSourceConfigConvert.INSTANCE.convert(dataSourceConfig));
  60 + DataSourceConfigDO config = dataSourceConfigService.getDataSourceConfig(id);
  61 + return success(BeanUtils.toBean(config, DataSourceConfigRespVO.class));
63 62 }
64 63  
65 64 @GetMapping("/list")
... ... @@ -67,7 +66,7 @@ public class DataSourceConfigController {
67 66 @PreAuthorize("@ss.hasPermission('infra:data-source-config:query')")
68 67 public CommonResult<List<DataSourceConfigRespVO>> getDataSourceConfigList() {
69 68 List<DataSourceConfigDO> list = dataSourceConfigService.getDataSourceConfigList();
70   - return success(DataSourceConfigConvert.INSTANCE.convertList(list));
  69 + return success(BeanUtils.toBean(list, DataSourceConfigRespVO.class));
71 70 }
72 71  
73 72 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/db/vo/DataSourceConfigCreateReqVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.db.vo;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.*;
5   -import javax.validation.constraints.*;
6   -
7   -@Schema(description = "管理后台 - 数据源配置创建 Request VO")
8   -@Data
9   -@EqualsAndHashCode(callSuper = true)
10   -@ToString(callSuper = true)
11   -public class DataSourceConfigCreateReqVO extends DataSourceConfigBaseVO {
12   -
13   - @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")
14   - @NotNull(message = "密码不能为空")
15   - private String password;
16   -
17   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/db/vo/DataSourceConfigRespVO.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.db.vo;
2 2  
3 3 import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.*;
  4 +import lombok.Data;
5 5  
6 6 import java.time.LocalDateTime;
7 7  
8 8 @Schema(description = "管理后台 - 数据源配置 Response VO")
9 9 @Data
10   -@EqualsAndHashCode(callSuper = true)
11   -@ToString(callSuper = true)
12   -public class DataSourceConfigRespVO extends DataSourceConfigBaseVO {
  10 +public class DataSourceConfigRespVO {
13 11  
14 12 @Schema(description = "主键编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
15 13 private Integer id;
16 14  
  15 + @Schema(description = "数据源名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "test")
  16 + private String name;
  17 +
  18 + @Schema(description = "数据源连接", requiredMode = Schema.RequiredMode.REQUIRED, example = "jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro")
  19 + private String url;
  20 +
  21 + @Schema(description = "用户名", requiredMode = Schema.RequiredMode.REQUIRED, example = "root")
  22 + private String username;
  23 +
17 24 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
18 25 private LocalDateTime createTime;
19 26  
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/db/vo/DataSourceConfigBaseVO.java renamed to yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/db/vo/DataSourceConfigSaveReqVO.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.db.vo;
  2 +
2 3 import io.swagger.v3.oas.annotations.media.Schema;
3 4 import lombok.*;
4 5 import javax.validation.constraints.*;
5 6  
6   -/**
7   -* 数据源配置 Base VO,提供给添加、修改、详细的子 VO 使用
8   -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
9   -*/
  7 +@Schema(description = "管理后台 - 数据源配置创建/修改 Request VO")
10 8 @Data
11   -public class DataSourceConfigBaseVO {
  9 +public class DataSourceConfigSaveReqVO {
  10 +
  11 + @Schema(description = "主键编号", example = "1024")
  12 + private Long id;
12 13  
13 14 @Schema(description = "数据源名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "test")
14 15 @NotNull(message = "数据源名称不能为空")
... ... @@ -22,4 +23,8 @@ public class DataSourceConfigBaseVO {
22 23 @NotNull(message = "用户名不能为空")
23 24 private String username;
24 25  
  26 + @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")
  27 + @NotNull(message = "密码不能为空")
  28 + private String password;
  29 +
25 30 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/db/vo/DataSourceConfigUpdateReqVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.db.vo;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.*;
5   -import javax.validation.constraints.*;
6   -
7   -@Schema(description = "管理后台 - 数据源配置更新 Request VO")
8   -@Data
9   -@EqualsAndHashCode(callSuper = true)
10   -@ToString(callSuper = true)
11   -public class DataSourceConfigUpdateReqVO extends DataSourceConfigBaseVO {
12   -
13   - @Schema(description = "主键编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
14   - @NotNull(message = "主键编号不能为空")
15   - private Long id;
16   -
17   - @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")
18   - @NotNull(message = "密码不能为空")
19   - private String password;
20   -
21   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileConfigController.java
... ... @@ -2,16 +2,15 @@ package cn.iocoder.yudao.module.infra.controller.admin.file;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5   -import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigCreateReqVO;
  5 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
6 6 import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigPageReqVO;
7 7 import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigRespVO;
8   -import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigUpdateReqVO;
9   -import cn.iocoder.yudao.module.infra.convert.file.FileConfigConvert;
  8 +import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigSaveReqVO;
10 9 import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileConfigDO;
11 10 import cn.iocoder.yudao.module.infra.service.file.FileConfigService;
12   -import io.swagger.v3.oas.annotations.tags.Tag;
13   -import io.swagger.v3.oas.annotations.Parameter;
14 11 import io.swagger.v3.oas.annotations.Operation;
  12 +import io.swagger.v3.oas.annotations.Parameter;
  13 +import io.swagger.v3.oas.annotations.tags.Tag;
15 14 import org.springframework.security.access.prepost.PreAuthorize;
16 15 import org.springframework.validation.annotation.Validated;
17 16 import org.springframework.web.bind.annotation.*;
... ... @@ -33,14 +32,14 @@ public class FileConfigController {
33 32 @PostMapping("/create")
34 33 @Operation(summary = "创建文件配置")
35 34 @PreAuthorize("@ss.hasPermission('infra:file-config:create')")
36   - public CommonResult<Long> createFileConfig(@Valid @RequestBody FileConfigCreateReqVO createReqVO) {
  35 + public CommonResult<Long> createFileConfig(@Valid @RequestBody FileConfigSaveReqVO createReqVO) {
37 36 return success(fileConfigService.createFileConfig(createReqVO));
38 37 }
39 38  
40 39 @PutMapping("/update")
41 40 @Operation(summary = "更新文件配置")
42 41 @PreAuthorize("@ss.hasPermission('infra:file-config:update')")
43   - public CommonResult<Boolean> updateFileConfig(@Valid @RequestBody FileConfigUpdateReqVO updateReqVO) {
  42 + public CommonResult<Boolean> updateFileConfig(@Valid @RequestBody FileConfigSaveReqVO updateReqVO) {
44 43 fileConfigService.updateFileConfig(updateReqVO);
45 44 return success(true);
46 45 }
... ... @@ -67,8 +66,8 @@ public class FileConfigController {
67 66 @Parameter(name = "id", description = "编号", required = true, example = "1024")
68 67 @PreAuthorize("@ss.hasPermission('infra:file-config:query')")
69 68 public CommonResult<FileConfigRespVO> getFileConfig(@RequestParam("id") Long id) {
70   - FileConfigDO fileConfig = fileConfigService.getFileConfig(id);
71   - return success(FileConfigConvert.INSTANCE.convert(fileConfig));
  69 + FileConfigDO config = fileConfigService.getFileConfig(id);
  70 + return success(BeanUtils.toBean(config, FileConfigRespVO.class));
72 71 }
73 72  
74 73 @GetMapping("/page")
... ... @@ -76,7 +75,7 @@ public class FileConfigController {
76 75 @PreAuthorize("@ss.hasPermission('infra:file-config:query')")
77 76 public CommonResult<PageResult<FileConfigRespVO>> getFileConfigPage(@Valid FileConfigPageReqVO pageVO) {
78 77 PageResult<FileConfigDO> pageResult = fileConfigService.getFileConfigPage(pageVO);
79   - return success(FileConfigConvert.INSTANCE.convertPage(pageResult));
  78 + return success(BeanUtils.toBean(pageResult, FileConfigRespVO.class));
80 79 }
81 80  
82 81 @GetMapping("/test")
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java
... ... @@ -4,17 +4,17 @@ import cn.hutool.core.io.IoUtil;
4 4 import cn.hutool.core.util.StrUtil;
5 5 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
6 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  7 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
7 8 import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
8 9 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
9 10 import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FilePageReqVO;
10 11 import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FileRespVO;
11 12 import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FileUploadReqVO;
12   -import cn.iocoder.yudao.module.infra.convert.file.FileConvert;
13 13 import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileDO;
14 14 import cn.iocoder.yudao.module.infra.service.file.FileService;
15   -import io.swagger.v3.oas.annotations.tags.Tag;
16   -import io.swagger.v3.oas.annotations.Parameter;
17 15 import io.swagger.v3.oas.annotations.Operation;
  16 +import io.swagger.v3.oas.annotations.Parameter;
  17 +import io.swagger.v3.oas.annotations.tags.Tag;
18 18 import lombok.extern.slf4j.Slf4j;
19 19 import org.springframework.http.HttpStatus;
20 20 import org.springframework.security.access.prepost.PreAuthorize;
... ... @@ -86,7 +86,7 @@ public class FileController {
86 86 @PreAuthorize("@ss.hasPermission('infra:file:query')")
87 87 public CommonResult<PageResult<FileRespVO>> getFilePage(@Valid FilePageReqVO pageVO) {
88 88 PageResult<FileDO> pageResult = fileService.getFilePage(pageVO);
89   - return success(FileConvert.INSTANCE.convertPage(pageResult));
  89 + return success(BeanUtils.toBean(pageResult, FileRespVO.class));
90 90 }
91 91  
92 92 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/config/FileConfigBaseVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.file.vo.config;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.Data;
5   -
6   -import javax.validation.constraints.NotNull;
7   -
8   -/**
9   -* 文件配置 Base VO,提供给添加、修改、详细的子 VO 使用
10   -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
11   -*/
12   -@Data
13   -public class FileConfigBaseVO {
14   -
15   - @Schema(description = "配置名", requiredMode = Schema.RequiredMode.REQUIRED, example = "S3 - 阿里云")
16   - @NotNull(message = "配置名不能为空")
17   - private String name;
18   -
19   - @Schema(description = "备注", example = "我是备注")
20   - private String remark;
21   -
22   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/config/FileConfigPageReqVO.java
... ... @@ -27,4 +27,4 @@ public class FileConfigPageReqVO extends PageParam {
27 27 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
28 28 private LocalDateTime[] createTime;
29 29  
30 30 -}
  31 +}
31 32 \ No newline at end of file
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/config/FileConfigRespVO.java
... ... @@ -3,32 +3,31 @@ package cn.iocoder.yudao.module.infra.controller.admin.file.vo.config;
3 3 import cn.iocoder.yudao.framework.file.core.client.FileClientConfig;
4 4 import io.swagger.v3.oas.annotations.media.Schema;
5 5 import lombok.Data;
6   -import lombok.EqualsAndHashCode;
7   -import lombok.ToString;
8 6  
9   -import javax.validation.constraints.NotNull;
10 7 import java.time.LocalDateTime;
11 8  
12 9 @Schema(description = "管理后台 - 文件配置 Response VO")
13 10 @Data
14   -@EqualsAndHashCode(callSuper = true)
15   -@ToString(callSuper = true)
16   -public class FileConfigRespVO extends FileConfigBaseVO {
  11 +public class FileConfigRespVO {
17 12  
18 13 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
19 14 private Long id;
20 15  
  16 + @Schema(description = "配置名", requiredMode = Schema.RequiredMode.REQUIRED, example = "S3 - 阿里云")
  17 + private String name;
  18 +
21 19 @Schema(description = "存储器,参见 FileStorageEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
22   - @NotNull(message = "存储器不能为空")
23 20 private Integer storage;
24 21  
25 22 @Schema(description = "是否为主配置", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
26   - @NotNull(message = "是否为主配置不能为空")
27 23 private Boolean master;
28 24  
29 25 @Schema(description = "存储配置", requiredMode = Schema.RequiredMode.REQUIRED)
30 26 private FileClientConfig config;
31 27  
  28 + @Schema(description = "备注", example = "我是备注")
  29 + private String remark;
  30 +
32 31 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
33 32 private LocalDateTime createTime;
34 33  
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/config/FileConfigCreateReqVO.java renamed to yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/config/FileConfigSaveReqVO.java 100755 → 100644
... ... @@ -2,17 +2,20 @@ package cn.iocoder.yudao.module.infra.controller.admin.file.vo.config;
2 2  
3 3 import io.swagger.v3.oas.annotations.media.Schema;
4 4 import lombok.Data;
5   -import lombok.EqualsAndHashCode;
6   -import lombok.ToString;
7 5  
8 6 import javax.validation.constraints.NotNull;
9 7 import java.util.Map;
10 8  
11   -@Schema(description = "管理后台 - 文件配置创建 Request VO")
  9 +@Schema(description = "管理后台 - 文件配置创建/修改 Request VO")
12 10 @Data
13   -@EqualsAndHashCode(callSuper = true)
14   -@ToString(callSuper = true)
15   -public class FileConfigCreateReqVO extends FileConfigBaseVO {
  11 +public class FileConfigSaveReqVO {
  12 +
  13 + @Schema(description = "编号", example = "1")
  14 + private Long id;
  15 +
  16 + @Schema(description = "配置名", requiredMode = Schema.RequiredMode.REQUIRED, example = "S3 - 阿里云")
  17 + @NotNull(message = "配置名不能为空")
  18 + private String name;
16 19  
17 20 @Schema(description = "存储器,参见 FileStorageEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
18 21 @NotNull(message = "存储器不能为空")
... ... @@ -22,4 +25,7 @@ public class FileConfigCreateReqVO extends FileConfigBaseVO {
22 25 @NotNull(message = "存储配置不能为空")
23 26 private Map<String, Object> config;
24 27  
  28 + @Schema(description = "备注", example = "我是备注")
  29 + private String remark;
  30 +
25 31 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/config/FileConfigUpdateReqVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.file.vo.config;
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   -import java.util.Map;
10   -
11   -@Schema(description = "管理后台 - 文件配置更新 Request VO")
12   -@Data
13   -@EqualsAndHashCode(callSuper = true)
14   -@ToString(callSuper = true)
15   -public class FileConfigUpdateReqVO extends FileConfigBaseVO {
16   -
17   - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
18   - @NotNull(message = "编号不能为空")
19   - private Long id;
20   -
21   - @Schema(description = "存储配置,配置是动态参数,所以使用 Map 接收", requiredMode = Schema.RequiredMode.REQUIRED)
22   - @NotNull(message = "存储配置不能为空")
23   - private Map<String, Object> config;
24   -
25   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/JobController.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.job;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 7 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
6 8 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
7 9 import cn.iocoder.yudao.framework.quartz.core.util.CronUtils;
8   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.*;
9   -import cn.iocoder.yudao.module.infra.convert.job.JobConvert;
  10 +import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobPageReqVO;
  11 +import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobRespVO;
  12 +import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobSaveReqVO;
10 13 import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobDO;
11 14 import cn.iocoder.yudao.module.infra.service.job.JobService;
12   -import io.swagger.v3.oas.annotations.tags.Tag;
  15 +import io.swagger.v3.oas.annotations.Operation;
13 16 import io.swagger.v3.oas.annotations.Parameter;
14 17 import io.swagger.v3.oas.annotations.Parameters;
15   -import io.swagger.v3.oas.annotations.Operation;
  18 +import io.swagger.v3.oas.annotations.tags.Tag;
16 19 import org.quartz.SchedulerException;
17 20 import org.springframework.security.access.prepost.PreAuthorize;
18 21 import org.springframework.validation.annotation.Validated;
... ... @@ -23,7 +26,6 @@ import javax.servlet.http.HttpServletResponse;
23 26 import javax.validation.Valid;
24 27 import java.io.IOException;
25 28 import java.time.LocalDateTime;
26   -import java.util.Collection;
27 29 import java.util.Collections;
28 30 import java.util.List;
29 31  
... ... @@ -42,7 +44,7 @@ public class JobController {
42 44 @PostMapping("/create")
43 45 @Operation(summary = "创建定时任务")
44 46 @PreAuthorize("@ss.hasPermission('infra:job:create')")
45   - public CommonResult<Long> createJob(@Valid @RequestBody JobCreateReqVO createReqVO)
  47 + public CommonResult<Long> createJob(@Valid @RequestBody JobSaveReqVO createReqVO)
46 48 throws SchedulerException {
47 49 return success(jobService.createJob(createReqVO));
48 50 }
... ... @@ -50,7 +52,7 @@ public class JobController {
50 52 @PutMapping("/update")
51 53 @Operation(summary = "更新定时任务")
52 54 @PreAuthorize("@ss.hasPermission('infra:job:update')")
53   - public CommonResult<Boolean> updateJob(@Valid @RequestBody JobUpdateReqVO updateReqVO)
  55 + public CommonResult<Boolean> updateJob(@Valid @RequestBody JobSaveReqVO updateReqVO)
54 56 throws SchedulerException {
55 57 jobService.updateJob(updateReqVO);
56 58 return success(true);
... ... @@ -94,16 +96,7 @@ public class JobController {
94 96 @PreAuthorize("@ss.hasPermission('infra:job:query')")
95 97 public CommonResult<JobRespVO> getJob(@RequestParam("id") Long id) {
96 98 JobDO job = jobService.getJob(id);
97   - return success(JobConvert.INSTANCE.convert(job));
98   - }
99   -
100   - @GetMapping("/list")
101   - @Operation(summary = "获得定时任务列表")
102   - @Parameter(name = "ids", description = "编号列表", required = true)
103   - @PreAuthorize("@ss.hasPermission('infra:job:query')")
104   - public CommonResult<List<JobRespVO>> getJobList(@RequestParam("ids") Collection<Long> ids) {
105   - List<JobDO> list = jobService.getJobList(ids);
106   - return success(JobConvert.INSTANCE.convertList(list));
  99 + return success(BeanUtils.toBean(job, JobRespVO.class));
107 100 }
108 101  
109 102 @GetMapping("/page")
... ... @@ -111,19 +104,20 @@ public class JobController {
111 104 @PreAuthorize("@ss.hasPermission('infra:job:query')")
112 105 public CommonResult<PageResult<JobRespVO>> getJobPage(@Valid JobPageReqVO pageVO) {
113 106 PageResult<JobDO> pageResult = jobService.getJobPage(pageVO);
114   - return success(JobConvert.INSTANCE.convertPage(pageResult));
  107 + return success(BeanUtils.toBean(pageResult, JobRespVO.class));
115 108 }
116 109  
117 110 @GetMapping("/export-excel")
118 111 @Operation(summary = "导出定时任务 Excel")
119 112 @PreAuthorize("@ss.hasPermission('infra:job:export')")
120 113 @OperateLog(type = EXPORT)
121   - public void exportJobExcel(@Valid JobExportReqVO exportReqVO,
  114 + public void exportJobExcel(@Valid JobPageReqVO exportReqVO,
122 115 HttpServletResponse response) throws IOException {
123   - List<JobDO> list = jobService.getJobList(exportReqVO);
  116 + exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
  117 + List<JobDO> list = jobService.getJobPage(exportReqVO).getList();
124 118 // 导出 Excel
125   - List<JobExcelVO> datas = JobConvert.INSTANCE.convertList02(list);
126   - ExcelUtils.write(response, "定时任务.xls", "数据", JobExcelVO.class, datas);
  119 + ExcelUtils.write(response, "定时任务.xls", "数据", JobRespVO.class,
  120 + BeanUtils.toBean(list, JobRespVO.class));
127 121 }
128 122  
129 123 @GetMapping("/get_next_times")
... ... @@ -133,8 +127,9 @@ public class JobController {
133 127 @Parameter(name = "count", description = "数量", example = "5")
134 128 })
135 129 @PreAuthorize("@ss.hasPermission('infra:job:query')")
136   - public CommonResult<List<LocalDateTime>> getJobNextTimes(@RequestParam("id") Long id,
137   - @RequestParam(value = "count", required = false, defaultValue = "5") Integer count) {
  130 + public CommonResult<List<LocalDateTime>> getJobNextTimes(
  131 + @RequestParam("id") Long id,
  132 + @RequestParam(value = "count", required = false, defaultValue = "5") Integer count) {
138 133 JobDO job = jobService.getJob(id);
139 134 if (job == null) {
140 135 return success(Collections.emptyList());
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/JobLogController.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.job;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 7 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
6 8 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
7   -import cn.iocoder.yudao.framework.operatelog.core.util.OperateLogUtils;
8   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogExcelVO;
9   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogExportReqVO;
10 9 import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogPageReqVO;
11 10 import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogRespVO;
12   -import cn.iocoder.yudao.module.infra.convert.job.JobLogConvert;
13 11 import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobLogDO;
14 12 import cn.iocoder.yudao.module.infra.service.job.JobLogService;
15   -import io.swagger.v3.oas.annotations.tags.Tag;
16   -import io.swagger.v3.oas.annotations.Parameter;
17 13 import io.swagger.v3.oas.annotations.Operation;
  14 +import io.swagger.v3.oas.annotations.Parameter;
  15 +import io.swagger.v3.oas.annotations.tags.Tag;
18 16 import org.springframework.security.access.prepost.PreAuthorize;
19 17 import org.springframework.validation.annotation.Validated;
20 18 import org.springframework.web.bind.annotation.GetMapping;
... ... @@ -26,7 +24,6 @@ import javax.annotation.Resource;
26 24 import javax.servlet.http.HttpServletResponse;
27 25 import javax.validation.Valid;
28 26 import java.io.IOException;
29   -import java.util.Collection;
30 27 import java.util.List;
31 28  
32 29 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
... ... @@ -47,16 +44,7 @@ public class JobLogController {
47 44 @PreAuthorize("@ss.hasPermission('infra:job:query')")
48 45 public CommonResult<JobLogRespVO> getJobLog(@RequestParam("id") Long id) {
49 46 JobLogDO jobLog = jobLogService.getJobLog(id);
50   - return success(JobLogConvert.INSTANCE.convert(jobLog));
51   - }
52   -
53   - @GetMapping("/list")
54   - @Operation(summary = "获得定时任务日志列表")
55   - @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
56   - @PreAuthorize("@ss.hasPermission('infra:job:query')")
57   - public CommonResult<List<JobLogRespVO>> getJobLogList(@RequestParam("ids") Collection<Long> ids) {
58   - List<JobLogDO> list = jobLogService.getJobLogList(ids);
59   - return success(JobLogConvert.INSTANCE.convertList(list));
  47 + return success(BeanUtils.toBean(jobLog, JobLogRespVO.class));
60 48 }
61 49  
62 50 @GetMapping("/page")
... ... @@ -64,19 +52,20 @@ public class JobLogController {
64 52 @PreAuthorize("@ss.hasPermission('infra:job:query')")
65 53 public CommonResult<PageResult<JobLogRespVO>> getJobLogPage(@Valid JobLogPageReqVO pageVO) {
66 54 PageResult<JobLogDO> pageResult = jobLogService.getJobLogPage(pageVO);
67   - return success(JobLogConvert.INSTANCE.convertPage(pageResult));
  55 + return success(BeanUtils.toBean(pageResult, JobLogRespVO.class));
68 56 }
69 57  
70 58 @GetMapping("/export-excel")
71 59 @Operation(summary = "导出定时任务日志 Excel")
72 60 @PreAuthorize("@ss.hasPermission('infra:job:export')")
73 61 @OperateLog(type = EXPORT)
74   - public void exportJobLogExcel(@Valid JobLogExportReqVO exportReqVO,
  62 + public void exportJobLogExcel(@Valid JobLogPageReqVO exportReqVO,
75 63 HttpServletResponse response) throws IOException {
76   - List<JobLogDO> list = jobLogService.getJobLogList(exportReqVO);
  64 + exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
  65 + List<JobLogDO> list = jobLogService.getJobLogPage(exportReqVO).getList();
77 66 // 导出 Excel
78   - List<JobLogExcelVO> datas = JobLogConvert.INSTANCE.convertList02(list);
79   - ExcelUtils.write(response, "任务日志.xls", "数据", JobLogExcelVO.class, datas);
  67 + ExcelUtils.write(response, "任务日志.xls", "数据", JobLogRespVO.class,
  68 + BeanUtils.toBean(list, JobLogRespVO.class));
80 69 }
81 70  
82 71 -}
  72 +}
83 73 \ No newline at end of file
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/job/JobCreateReqVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.job.vo.job;
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 JobCreateReqVO extends JobBaseVO {
15   -
16   - @Schema(description = "处理器的名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "sysUserSessionTimeoutJob")
17   - @NotNull(message = "处理器的名字不能为空")
18   - private String handlerName;
19   -
20   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/job/JobExcelVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.job.vo.job;
2   -
3   -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
4   -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
5   -import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
6   -import com.alibaba.excel.annotation.ExcelProperty;
7   -import lombok.Data;
8   -
9   -import java.time.LocalDateTime;
10   -
11   -/**
12   - * 定时任务 Excel VO
13   - *
14   - * @author 芋道源码
15   - */
16   -@Data
17   -public class JobExcelVO {
18   -
19   - @ExcelProperty("任务编号")
20   - private Long id;
21   -
22   - @ExcelProperty("任务名称")
23   - private String name;
24   -
25   - @ExcelProperty(value = "任务状态", converter = DictConvert.class)
26   - @DictFormat(DictTypeConstants.JOB_STATUS)
27   - private Integer status;
28   -
29   - @ExcelProperty("处理器的名字")
30   - private String handlerName;
31   -
32   - @ExcelProperty("处理器的参数")
33   - private String handlerParam;
34   -
35   - @ExcelProperty("CRON 表达式")
36   - private String cronExpression;
37   -
38   - @ExcelProperty("最后一次执行的开始时间")
39   - private LocalDateTime executeBeginTime;
40   -
41   - @ExcelProperty("最后一次执行的结束时间")
42   - private LocalDateTime executeEndTime;
43   -
44   - @ExcelProperty("上一次触发时间")
45   - private LocalDateTime firePrevTime;
46   -
47   - @ExcelProperty("下一次触发时间")
48   - private LocalDateTime fireNextTime;
49   -
50   - @ExcelProperty("监控超时时间")
51   - private Integer monitorTimeout;
52   -
53   - @ExcelProperty("创建时间")
54   - private LocalDateTime createTime;
55   -
56   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/job/JobExportReqVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.job.vo.job;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.Data;
5   -
6   -@Schema(description = "管理后台 - 定时任务 Excel 导出 Request VO-参数和 JobPageReqVO 是一致的")
7   -@Data
8   -public class JobExportReqVO {
9   -
10   - @Schema(description = "任务名称-模糊匹配", example = "测试任务")
11   - private String name;
12   -
13   - @Schema(description = "任务状态-参见 JobStatusEnum 枚举", example = "1")
14   - private Integer status;
15   -
16   - @Schema(description = "处理器的名字-模糊匹配", example = "UserSessionTimeoutJob")
17   - private String handlerName;
18   -
19   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/job/JobRespVO.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.job.vo.job;
2 2  
  3 +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
  4 +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
  5 +import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
  6 +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
  7 +import com.alibaba.excel.annotation.ExcelProperty;
3 8 import io.swagger.v3.oas.annotations.media.Schema;
4 9 import lombok.Data;
5   -import lombok.EqualsAndHashCode;
6   -import lombok.ToString;
7 10  
8 11 import javax.validation.constraints.NotNull;
9 12 import java.time.LocalDateTime;
10 13  
11 14 @Schema(description = "管理后台 - 定时任务 Response VO")
12 15 @Data
13   -@EqualsAndHashCode(callSuper = true)
14   -@ToString(callSuper = true)
15   -public class JobRespVO extends JobBaseVO {
  16 +@ExcelIgnoreUnannotated
  17 +public class JobRespVO {
16 18  
17 19 @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  20 + @ExcelProperty("任务编号")
18 21 private Long id;
19 22  
  23 + @Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试任务")
  24 + @ExcelProperty("任务名称")
  25 + private String name;
  26 +
20 27 @Schema(description = "任务状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  28 + @ExcelProperty(value = "任务状态", converter = DictConvert.class)
  29 + @DictFormat(DictTypeConstants.JOB_STATUS)
21 30 private Integer status;
22 31  
23 32 @Schema(description = "处理器的名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "sysUserSessionTimeoutJob")
24   - @NotNull(message = "处理器的名字不能为空")
  33 + @ExcelProperty("处理器的名字")
25 34 private String handlerName;
26 35  
  36 + @Schema(description = "处理器的参数", example = "yudao")
  37 + @ExcelProperty("处理器的参数")
  38 + private String handlerParam;
  39 +
  40 + @Schema(description = "CRON 表达式", requiredMode = Schema.RequiredMode.REQUIRED, example = "0/10 * * * * ? *")
  41 + @ExcelProperty("CRON 表达式")
  42 + private String cronExpression;
  43 +
  44 + @Schema(description = "重试次数", requiredMode = Schema.RequiredMode.REQUIRED, example = "3")
  45 + @NotNull(message = "重试次数不能为空")
  46 + private Integer retryCount;
  47 +
  48 + @Schema(description = "重试间隔", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000")
  49 + private Integer retryInterval;
  50 +
  51 + @Schema(description = "监控超时时间", example = "1000")
  52 + @ExcelProperty("监控超时时间")
  53 + private Integer monitorTimeout;
  54 +
27 55 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
  56 + @ExcelProperty("创建时间")
28 57 private LocalDateTime createTime;
29 58  
30 59 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/job/JobBaseVO.java renamed to yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/job/JobSaveReqVO.java
... ... @@ -3,24 +3,29 @@ package cn.iocoder.yudao.module.infra.controller.admin.job.vo.job;
3 3 import io.swagger.v3.oas.annotations.media.Schema;
4 4 import lombok.Data;
5 5  
  6 +import javax.validation.constraints.NotEmpty;
6 7 import javax.validation.constraints.NotNull;
7 8  
8   -/**
9   -* 定时任务 Base VO,提供给添加、修改、详细的子 VO 使用
10   -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
11   -*/
  9 +@Schema(description = "管理后台 - 定时任务创建/修改 Request VO")
12 10 @Data
13   -public class JobBaseVO {
  11 +public class JobSaveReqVO {
  12 +
  13 + @Schema(description = "任务编号", example = "1024")
  14 + private Long id;
14 15  
15 16 @Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试任务")
16   - @NotNull(message = "任务名称不能为空")
  17 + @NotEmpty(message = "任务名称不能为空")
17 18 private String name;
18 19  
  20 + @Schema(description = "处理器的名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "sysUserSessionTimeoutJob")
  21 + @NotEmpty(message = "处理器的名字不能为空")
  22 + private String handlerName;
  23 +
19 24 @Schema(description = "处理器的参数", example = "yudao")
20 25 private String handlerParam;
21 26  
22 27 @Schema(description = "CRON 表达式", requiredMode = Schema.RequiredMode.REQUIRED, example = "0/10 * * * * ? *")
23   - @NotNull(message = "CRON 表达式不能为空")
  28 + @NotEmpty(message = "CRON 表达式不能为空")
24 29 private String cronExpression;
25 30  
26 31 @Schema(description = "重试次数", requiredMode = Schema.RequiredMode.REQUIRED, example = "3")
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/job/JobUpdateReqVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.job.vo.job;
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 JobUpdateReqVO extends JobBaseVO {
15   -
16   - @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
17   - @NotNull(message = "任务编号不能为空")
18   - private Long id;
19   -
20   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/log/JobLogBaseVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.job.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   -
10   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11   -
12   -/**
13   -* 定时任务日志 Base VO,提供给添加、修改、详细的子 VO 使用
14   -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
15   -*/
16   -@Data
17   -public class JobLogBaseVO {
18   -
19   - @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
20   - @NotNull(message = "任务编号不能为空")
21   - private Long jobId;
22   -
23   - @Schema(description = "处理器的名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "sysUserSessionTimeoutJob")
24   - @NotNull(message = "处理器的名字不能为空")
25   - private String handlerName;
26   -
27   - @Schema(description = "处理器的参数", example = "yudao")
28   - private String handlerParam;
29   -
30   - @Schema(description = "第几次执行", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
31   - @NotNull(message = "第几次执行不能为空")
32   - private Integer executeIndex;
33   -
34   - @Schema(description = "开始执行时间", requiredMode = Schema.RequiredMode.REQUIRED)
35   - @NotNull(message = "开始执行时间不能为空")
36   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
37   - private LocalDateTime beginTime;
38   -
39   - @Schema(description = "结束执行时间")
40   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
41   - private LocalDateTime endTime;
42   -
43   - @Schema(description = "执行时长", example = "123")
44   - private Integer duration;
45   -
46   - @Schema(description = "任务状态,参见 JobLogStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
47   - @NotNull(message = "任务状态不能为空")
48   - private Integer status;
49   -
50   - @Schema(description = "结果数据", example = "执行成功")
51   - private String result;
52   -
53   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/log/JobLogExcelVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.job.vo.log;
2   -
3   -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
4   -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
5   -import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
6   -import com.alibaba.excel.annotation.ExcelProperty;
7   -import lombok.Data;
8   -
9   -import java.time.LocalDateTime;
10   -
11   -/**
12   - * 定时任务 Excel VO
13   - *
14   - * @author 芋艿
15   - */
16   -@Data
17   -public class JobLogExcelVO {
18   -
19   - @ExcelProperty("日志编号")
20   - private Long id;
21   -
22   - @ExcelProperty("任务编号")
23   - private Long jobId;
24   -
25   - @ExcelProperty("处理器的名字")
26   - private String handlerName;
27   -
28   - @ExcelProperty("处理器的参数")
29   - private String handlerParam;
30   -
31   - @ExcelProperty("第几次执行")
32   - private Integer executeIndex;
33   -
34   - @ExcelProperty("开始执行时间")
35   - private LocalDateTime beginTime;
36   -
37   - @ExcelProperty("结束执行时间")
38   - private LocalDateTime endTime;
39   -
40   - @ExcelProperty("执行时长")
41   - private Integer duration;
42   -
43   - @ExcelProperty(value = "任务状态", converter = DictConvert.class)
44   - @DictFormat(DictTypeConstants.JOB_STATUS)
45   - private Integer status;
46   -
47   - @ExcelProperty("结果数据")
48   - private String result;
49   -
50   - @ExcelProperty("创建时间")
51   - private LocalDateTime createTime;
52   -
53   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/log/JobLogExportReqVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.job.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 java.time.LocalDateTime;
8   -
9   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
10   -
11   -@Schema(description = "管理后台 - 定时任务 Excel 导出 Request VO,参数和 JobLogPageReqVO 是一致的")
12   -@Data
13   -public class JobLogExportReqVO {
14   -
15   - @Schema(description = "任务编号", example = "10")
16   - private Long jobId;
17   -
18   - @Schema(description = "处理器的名字,模糊匹配")
19   - private String handlerName;
20   -
21   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
22   - @Schema(description = "开始执行时间")
23   - private LocalDateTime beginTime;
24   -
25   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
26   - @Schema(description = "结束执行时间")
27   - private LocalDateTime endTime;
28   -
29   - @Schema(description = "任务状态,参见 JobLogStatusEnum 枚举")
30   - private Integer status;
31   -
32   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/log/JobLogRespVO.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.job.vo.log;
2 2  
  3 +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
  4 +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
  5 +import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
  6 +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
  7 +import com.alibaba.excel.annotation.ExcelProperty;
3 8 import io.swagger.v3.oas.annotations.media.Schema;
4 9 import lombok.Data;
5   -import lombok.EqualsAndHashCode;
6   -import lombok.ToString;
7 10  
8 11 import java.time.LocalDateTime;
9 12  
10 13 @Schema(description = "管理后台 - 定时任务日志 Response VO")
11 14 @Data
12   -@EqualsAndHashCode(callSuper = true)
13   -@ToString(callSuper = true)
14   -public class JobLogRespVO extends JobLogBaseVO {
  15 +@ExcelIgnoreUnannotated
  16 +public class JobLogRespVO {
15 17  
16 18 @Schema(description = "日志编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  19 + @ExcelProperty("日志编号")
17 20 private Long id;
18 21  
  22 + @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  23 + @ExcelProperty("任务编号")
  24 + private Long jobId;
  25 +
  26 + @Schema(description = "处理器的名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "sysUserSessionTimeoutJob")
  27 + @ExcelProperty("处理器的名字")
  28 + private String handlerName;
  29 +
  30 + @Schema(description = "处理器的参数", example = "yudao")
  31 + @ExcelProperty("处理器的参数")
  32 + private String handlerParam;
  33 +
  34 + @Schema(description = "第几次执行", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  35 + @ExcelProperty("第几次执行")
  36 + private Integer executeIndex;
  37 +
  38 + @Schema(description = "开始执行时间", requiredMode = Schema.RequiredMode.REQUIRED)
  39 + @ExcelProperty("开始执行时间")
  40 + private LocalDateTime beginTime;
  41 +
  42 + @Schema(description = "结束执行时间")
  43 + @ExcelProperty("结束执行时间")
  44 + private LocalDateTime endTime;
  45 +
  46 + @Schema(description = "执行时长", example = "123")
  47 + @ExcelProperty("执行时长")
  48 + private Integer duration;
  49 +
  50 + @Schema(description = "任务状态,参见 JobLogStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  51 + @ExcelProperty(value = "任务状态", converter = DictConvert.class)
  52 + @DictFormat(DictTypeConstants.JOB_STATUS)
  53 + private Integer status;
  54 +
  55 + @Schema(description = "结果数据", example = "执行成功")
  56 + @ExcelProperty("结果数据")
  57 + private String result;
  58 +
19 59 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
  60 + @ExcelProperty("创建时间")
20 61 private LocalDateTime createTime;
21 62  
22 63 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/ApiAccessLogController.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.logger;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 7 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
6 8 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
7   -import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogExcelVO;
8   -import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogExportReqVO;
9 9 import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogPageReqVO;
10 10 import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogRespVO;
11   -import cn.iocoder.yudao.module.infra.convert.logger.ApiAccessLogConvert;
12 11 import cn.iocoder.yudao.module.infra.dal.dataobject.logger.ApiAccessLogDO;
13 12 import cn.iocoder.yudao.module.infra.service.logger.ApiAccessLogService;
14   -import io.swagger.v3.oas.annotations.tags.Tag;
15 13 import io.swagger.v3.oas.annotations.Operation;
  14 +import io.swagger.v3.oas.annotations.tags.Tag;
16 15 import org.springframework.security.access.prepost.PreAuthorize;
17 16 import org.springframework.validation.annotation.Validated;
18 17 import org.springframework.web.bind.annotation.GetMapping;
... ... @@ -40,21 +39,22 @@ public class ApiAccessLogController {
40 39 @GetMapping("/page")
41 40 @Operation(summary = "获得API 访问日志分页")
42 41 @PreAuthorize("@ss.hasPermission('infra:api-access-log:query')")
43   - public CommonResult<PageResult<ApiAccessLogRespVO>> getApiAccessLogPage(@Valid ApiAccessLogPageReqVO pageVO) {
44   - PageResult<ApiAccessLogDO> pageResult = apiAccessLogService.getApiAccessLogPage(pageVO);
45   - return success(ApiAccessLogConvert.INSTANCE.convertPage(pageResult));
  42 + public CommonResult<PageResult<ApiAccessLogRespVO>> getApiAccessLogPage(@Valid ApiAccessLogPageReqVO pageReqVO) {
  43 + PageResult<ApiAccessLogDO> pageResult = apiAccessLogService.getApiAccessLogPage(pageReqVO);
  44 + return success(BeanUtils.toBean(pageResult, ApiAccessLogRespVO.class));
46 45 }
47 46  
48 47 @GetMapping("/export-excel")
49 48 @Operation(summary = "导出API 访问日志 Excel")
50 49 @PreAuthorize("@ss.hasPermission('infra:api-access-log:export')")
51 50 @OperateLog(type = EXPORT)
52   - public void exportApiAccessLogExcel(@Valid ApiAccessLogExportReqVO exportReqVO,
  51 + public void exportApiAccessLogExcel(@Valid ApiAccessLogPageReqVO exportReqVO,
53 52 HttpServletResponse response) throws IOException {
54   - List<ApiAccessLogDO> list = apiAccessLogService.getApiAccessLogList(exportReqVO);
  53 + exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
  54 + List<ApiAccessLogDO> list = apiAccessLogService.getApiAccessLogPage(exportReqVO).getList();
55 55 // 导出 Excel
56   - List<ApiAccessLogExcelVO> datas = ApiAccessLogConvert.INSTANCE.convertList02(list);
57   - ExcelUtils.write(response, "API 访问日志.xls", "数据", ApiAccessLogExcelVO.class, datas);
  56 + ExcelUtils.write(response, "API 访问日志.xls", "数据", ApiAccessLogRespVO.class,
  57 + BeanUtils.toBean(list, ApiAccessLogRespVO.class));
58 58 }
59 59  
60 60 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/ApiErrorLogController.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.logger;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 7 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
6 8 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
7   -import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogExcelVO;
8   -import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogExportReqVO;
9 9 import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogPageReqVO;
10 10 import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogRespVO;
11   -import cn.iocoder.yudao.module.infra.convert.logger.ApiErrorLogConvert;
12 11 import cn.iocoder.yudao.module.infra.dal.dataobject.logger.ApiErrorLogDO;
13 12 import cn.iocoder.yudao.module.infra.service.logger.ApiErrorLogService;
14   -import io.swagger.v3.oas.annotations.tags.Tag;
  13 +import io.swagger.v3.oas.annotations.Operation;
15 14 import io.swagger.v3.oas.annotations.Parameter;
16 15 import io.swagger.v3.oas.annotations.Parameters;
17   -import io.swagger.v3.oas.annotations.Operation;
  16 +import io.swagger.v3.oas.annotations.tags.Tag;
18 17 import org.springframework.security.access.prepost.PreAuthorize;
19 18 import org.springframework.validation.annotation.Validated;
20 19 import org.springframework.web.bind.annotation.*;
... ... @@ -54,21 +53,22 @@ public class ApiErrorLogController {
54 53 @GetMapping("/page")
55 54 @Operation(summary = "获得 API 错误日志分页")
56 55 @PreAuthorize("@ss.hasPermission('infra:api-error-log:query')")
57   - public CommonResult<PageResult<ApiErrorLogRespVO>> getApiErrorLogPage(@Valid ApiErrorLogPageReqVO pageVO) {
58   - PageResult<ApiErrorLogDO> pageResult = apiErrorLogService.getApiErrorLogPage(pageVO);
59   - return success(ApiErrorLogConvert.INSTANCE.convertPage(pageResult));
  56 + public CommonResult<PageResult<ApiErrorLogRespVO>> getApiErrorLogPage(@Valid ApiErrorLogPageReqVO pageReqVO) {
  57 + PageResult<ApiErrorLogDO> pageResult = apiErrorLogService.getApiErrorLogPage(pageReqVO);
  58 + return success(BeanUtils.toBean(pageResult, ApiErrorLogRespVO.class));
60 59 }
61 60  
62 61 @GetMapping("/export-excel")
63 62 @Operation(summary = "导出 API 错误日志 Excel")
64 63 @PreAuthorize("@ss.hasPermission('infra:api-error-log:export')")
65 64 @OperateLog(type = EXPORT)
66   - public void exportApiErrorLogExcel(@Valid ApiErrorLogExportReqVO exportReqVO,
  65 + public void exportApiErrorLogExcel(@Valid ApiErrorLogPageReqVO exportReqVO,
67 66 HttpServletResponse response) throws IOException {
68   - List<ApiErrorLogDO> list = apiErrorLogService.getApiErrorLogList(exportReqVO);
  67 + exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
  68 + List<ApiErrorLogDO> list = apiErrorLogService.getApiErrorLogPage(exportReqVO).getList();
69 69 // 导出 Excel
70   - List<ApiErrorLogExcelVO> datas = ApiErrorLogConvert.INSTANCE.convertList02(list);
71   - ExcelUtils.write(response, "API 错误日志.xls", "数据", ApiErrorLogExcelVO.class, datas);
  70 + ExcelUtils.write(response, "API 错误日志.xls", "数据", ApiErrorLogRespVO.class,
  71 + BeanUtils.toBean(list, ApiErrorLogRespVO.class));
72 72 }
73 73  
74 74 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogBaseVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog;
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   -
10   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11   -
12   -/**
13   -* API 访问日志 Base VO,提供给添加、修改、详细的子 VO 使用
14   -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
15   -*/
16   -@Data
17   -public class ApiAccessLogBaseVO {
18   -
19   - @Schema(description = "链路追踪编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "66600cb6-7852-11eb-9439-0242ac130002")
20   - @NotNull(message = "链路追踪编号不能为空")
21   - private String traceId;
22   -
23   - @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "666")
24   - @NotNull(message = "用户编号不能为空")
25   - private Long userId;
26   -
27   - @Schema(description = "用户类型,参见 UserTypeEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
28   - @NotNull(message = "用户类型不能为空")
29   - private Integer userType;
30   -
31   - @Schema(description = "应用名", requiredMode = Schema.RequiredMode.REQUIRED, example = "dashboard")
32   - @NotNull(message = "应用名不能为空")
33   - private String applicationName;
34   -
35   - @Schema(description = "请求方法名", requiredMode = Schema.RequiredMode.REQUIRED, example = "GET")
36   - @NotNull(message = "请求方法名不能为空")
37   - private String requestMethod;
38   -
39   - @Schema(description = "请求地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "/xxx/yyy")
40   - @NotNull(message = "请求地址不能为空")
41   - private String requestUrl;
42   -
43   - @Schema(description = "请求参数")
44   - private String requestParams;
45   -
46   - @Schema(description = "用户 IP", requiredMode = Schema.RequiredMode.REQUIRED, example = "127.0.0.1")
47   - @NotNull(message = "用户 IP不能为空")
48   - private String userIp;
49   -
50   - @Schema(description = "浏览器 UA", requiredMode = Schema.RequiredMode.REQUIRED, example = "Mozilla/5.0")
51   - @NotNull(message = "浏览器 UA不能为空")
52   - private String userAgent;
53   -
54   - @Schema(description = "开始请求时间", requiredMode = Schema.RequiredMode.REQUIRED)
55   - @NotNull(message = "开始请求时间不能为空")
56   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
57   - private LocalDateTime beginTime;
58   -
59   - @Schema(description = "结束请求时间", requiredMode = Schema.RequiredMode.REQUIRED)
60   - @NotNull(message = "结束请求时间不能为空")
61   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
62   - private LocalDateTime endTime;
63   -
64   - @Schema(description = "执行时长", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
65   - @NotNull(message = "执行时长不能为空")
66   - private Integer duration;
67   -
68   - @Schema(description = "结果码", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
69   - @NotNull(message = "结果码不能为空")
70   - private Integer resultCode;
71   -
72   - @Schema(description = "结果提示", example = "芋道源码,牛逼!")
73   - private String resultMsg;
74   -
75   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogExcelVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog;
2   -
3   -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
4   -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
5   -import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
6   -import com.alibaba.excel.annotation.ExcelProperty;
7   -import lombok.Data;
8   -
9   -import java.time.LocalDateTime;
10   -
11   -/**
12   - * API 访问日志 Excel VO
13   - *
14   - * @author 芋道源码
15   - */
16   -@Data
17   -public class ApiAccessLogExcelVO {
18   -
19   - @ExcelProperty("日志主键")
20   - private Long id;
21   -
22   - @ExcelProperty("链路追踪编号")
23   - private String traceId;
24   -
25   - @ExcelProperty("用户编号")
26   - private Long userId;
27   -
28   - @ExcelProperty(value = "用户类型", converter = DictConvert.class)
29   - @DictFormat(DictTypeConstants.USER_TYPE)
30   - private Integer userType;
31   -
32   - @ExcelProperty("应用名")
33   - private String applicationName;
34   -
35   - @ExcelProperty("请求方法名")
36   - private String requestMethod;
37   -
38   - @ExcelProperty("请求地址")
39   - private String requestUrl;
40   -
41   - @ExcelProperty("请求参数")
42   - private String requestParams;
43   -
44   - @ExcelProperty("用户 IP")
45   - private String userIp;
46   -
47   - @ExcelProperty("浏览器 UA")
48   - private String userAgent;
49   -
50   - @ExcelProperty("开始请求时间")
51   - private LocalDateTime beginTime;
52   -
53   - @ExcelProperty("结束请求时间")
54   - private LocalDateTime endTime;
55   -
56   - @ExcelProperty("执行时长")
57   - private Integer duration;
58   -
59   - @ExcelProperty("结果码")
60   - private Integer resultCode;
61   -
62   - @ExcelProperty("结果提示")
63   - private String resultMsg;
64   -
65   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogExportReqVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.Data;
5   -import org.springframework.format.annotation.DateTimeFormat;
6   -
7   -import java.time.LocalDateTime;
8   -
9   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
10   -
11   -@Schema(description = "管理后台 - API 访问日志 Excel 导出 Request VO,参数和 ApiAccessLogPageReqVO 是一致的")
12   -@Data
13   -public class ApiAccessLogExportReqVO {
14   -
15   - @Schema(description = "用户编号", example = "666")
16   - private Long userId;
17   -
18   - @Schema(description = "用户类型", example = "2")
19   - private Integer userType;
20   -
21   - @Schema(description = "应用名", example = "dashboard")
22   - private String applicationName;
23   -
24   - @Schema(description = "请求地址,模糊匹配", example = "/xxx/yyy")
25   - private String requestUrl;
26   -
27   - @Schema(description = "开始时间", example = "[2022-07-01 00:00:00, 2022-07-01 23:59:59]")
28   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
29   - private LocalDateTime[] beginTime;
30   -
31   - @Schema(description = "执行时长,大于等于,单位:毫秒", example = "100")
32   - private Integer duration;
33   -
34   - @Schema(description = "结果码", example = "0")
35   - private Integer resultCode;
36   -
37   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogRespVO.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog;
2 2  
  3 +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
  4 +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
  5 +import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
  6 +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
  7 +import com.alibaba.excel.annotation.ExcelProperty;
3 8 import io.swagger.v3.oas.annotations.media.Schema;
4 9 import lombok.Data;
5   -import lombok.EqualsAndHashCode;
6   -import lombok.ToString;
7 10  
8 11 import java.time.LocalDateTime;
9 12  
10 13 @Schema(description = "管理后台 - API 访问日志 Response VO")
11 14 @Data
12   -@EqualsAndHashCode(callSuper = true)
13   -@ToString(callSuper = true)
14   -public class ApiAccessLogRespVO extends ApiAccessLogBaseVO {
  15 +@ExcelIgnoreUnannotated
  16 +public class ApiAccessLogRespVO {
15 17  
16 18 @Schema(description = "日志主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  19 + @ExcelProperty("日志主键")
17 20 private Long id;
18 21  
  22 + @Schema(description = "链路追踪编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "66600cb6-7852-11eb-9439-0242ac130002")
  23 + @ExcelProperty("链路追踪编号")
  24 + private String traceId;
  25 +
  26 + @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "666")
  27 + @ExcelProperty("用户编号")
  28 + private Long userId;
  29 +
  30 + @Schema(description = "用户类型,参见 UserTypeEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
  31 + @ExcelProperty(value = "用户类型", converter = DictConvert.class)
  32 + @DictFormat(DictTypeConstants.USER_TYPE)
  33 + private Integer userType;
  34 +
  35 + @Schema(description = "应用名", requiredMode = Schema.RequiredMode.REQUIRED, example = "dashboard")
  36 + @ExcelProperty("应用名")
  37 + private String applicationName;
  38 +
  39 + @Schema(description = "请求方法名", requiredMode = Schema.RequiredMode.REQUIRED, example = "GET")
  40 + @ExcelProperty("请求方法名")
  41 + private String requestMethod;
  42 +
  43 + @Schema(description = "请求地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "/xxx/yyy")
  44 + @ExcelProperty("请求地址")
  45 + private String requestUrl;
  46 +
  47 + @Schema(description = "请求参数")
  48 + @ExcelProperty("请求参数")
  49 + private String requestParams;
  50 +
  51 + @Schema(description = "用户 IP", requiredMode = Schema.RequiredMode.REQUIRED, example = "127.0.0.1")
  52 + @ExcelProperty("用户 IP")
  53 + private String userIp;
  54 +
  55 + @Schema(description = "浏览器 UA", requiredMode = Schema.RequiredMode.REQUIRED, example = "Mozilla/5.0")
  56 + @ExcelProperty("浏览器 UA")
  57 + private String userAgent;
  58 +
  59 + @Schema(description = "开始请求时间", requiredMode = Schema.RequiredMode.REQUIRED)
  60 + @ExcelProperty("开始请求时间")
  61 + private LocalDateTime beginTime;
  62 +
  63 + @Schema(description = "结束请求时间", requiredMode = Schema.RequiredMode.REQUIRED)
  64 + @ExcelProperty("结束请求时间")
  65 + private LocalDateTime endTime;
  66 +
  67 + @Schema(description = "执行时长", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
  68 + @ExcelProperty("执行时长")
  69 + private Integer duration;
  70 +
  71 + @Schema(description = "结果码", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
  72 + @ExcelProperty("结果码")
  73 + private Integer resultCode;
  74 +
  75 + @Schema(description = "结果提示", example = "芋道源码,牛逼!")
  76 + @ExcelProperty("结果提示")
  77 + private String resultMsg;
  78 +
19 79 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
20 80 private LocalDateTime createTime;
21 81  
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogBaseVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog;
2   -import io.swagger.v3.oas.annotations.media.Schema;
3   -import lombok.Data;
4   -import org.springframework.format.annotation.DateTimeFormat;
5   -
6   -import javax.validation.constraints.NotNull;
7   -import java.time.LocalDateTime;
8   -
9   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
10   -
11   -/**
12   -* API 错误日志 Base VO,提供给添加、修改、详细的子 VO 使用
13   -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
14   -*/
15   -@Data
16   -public class ApiErrorLogBaseVO {
17   -
18   - @Schema(description = "链路追踪编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "66600cb6-7852-11eb-9439-0242ac130002")
19   - @NotNull(message = "链路追踪编号不能为空")
20   - private String traceId;
21   -
22   - @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "666")
23   - @NotNull(message = "用户编号不能为空")
24   - private Integer userId;
25   -
26   - @Schema(description = "用户类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
27   - @NotNull(message = "用户类型不能为空")
28   - private Integer userType;
29   -
30   - @Schema(description = "应用名", requiredMode = Schema.RequiredMode.REQUIRED, example = "dashboard")
31   - @NotNull(message = "应用名不能为空")
32   - private String applicationName;
33   -
34   - @Schema(description = "请求方法名", requiredMode = Schema.RequiredMode.REQUIRED, example = "GET")
35   - @NotNull(message = "请求方法名不能为空")
36   - private String requestMethod;
37   -
38   - @Schema(description = "请求地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "/xx/yy")
39   - @NotNull(message = "请求地址不能为空")
40   - private String requestUrl;
41   -
42   - @Schema(description = "请求参数", requiredMode = Schema.RequiredMode.REQUIRED)
43   - @NotNull(message = "请求参数不能为空")
44   - private String requestParams;
45   -
46   - @Schema(description = "用户 IP", requiredMode = Schema.RequiredMode.REQUIRED, example = "127.0.0.1")
47   - @NotNull(message = "用户 IP不能为空")
48   - private String userIp;
49   -
50   - @Schema(description = "浏览器 UA", requiredMode = Schema.RequiredMode.REQUIRED, example = "Mozilla/5.0")
51   - @NotNull(message = "浏览器 UA不能为空")
52   - private String userAgent;
53   -
54   - @Schema(description = "异常发生时间", requiredMode = Schema.RequiredMode.REQUIRED)
55   - @NotNull(message = "异常发生时间不能为空")
56   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
57   - private LocalDateTime exceptionTime;
58   -
59   - @Schema(description = "异常名", requiredMode = Schema.RequiredMode.REQUIRED)
60   - @NotNull(message = "异常名不能为空")
61   - private String exceptionName;
62   -
63   - @Schema(description = "异常导致的消息", requiredMode = Schema.RequiredMode.REQUIRED)
64   - @NotNull(message = "异常导致的消息不能为空")
65   - private String exceptionMessage;
66   -
67   - @Schema(description = "异常导致的根消息", requiredMode = Schema.RequiredMode.REQUIRED)
68   - @NotNull(message = "异常导致的根消息不能为空")
69   - private String exceptionRootCauseMessage;
70   -
71   - @Schema(description = "异常的栈轨迹", requiredMode = Schema.RequiredMode.REQUIRED)
72   - @NotNull(message = "异常的栈轨迹不能为空")
73   - private String exceptionStackTrace;
74   -
75   - @Schema(description = "异常发生的类全名", requiredMode = Schema.RequiredMode.REQUIRED)
76   - @NotNull(message = "异常发生的类全名不能为空")
77   - private String exceptionClassName;
78   -
79   - @Schema(description = "异常发生的类文件", requiredMode = Schema.RequiredMode.REQUIRED)
80   - @NotNull(message = "异常发生的类文件不能为空")
81   - private String exceptionFileName;
82   -
83   - @Schema(description = "异常发生的方法名", requiredMode = Schema.RequiredMode.REQUIRED)
84   - @NotNull(message = "异常发生的方法名不能为空")
85   - private String exceptionMethodName;
86   -
87   - @Schema(description = "异常发生的方法所在行", requiredMode = Schema.RequiredMode.REQUIRED)
88   - @NotNull(message = "异常发生的方法所在行不能为空")
89   - private Integer exceptionLineNumber;
90   -
91   - @Schema(description = "处理状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
92   - @NotNull(message = "处理状态不能为空")
93   - private Integer processStatus;
94   -
95   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogExcelVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog;
2   -
3   -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
4   -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
5   -import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
6   -import com.alibaba.excel.annotation.ExcelProperty;
7   -import lombok.Data;
8   -
9   -import java.time.LocalDateTime;
10   -
11   -/**
12   - * API 错误日志 Excel VO
13   - *
14   - * @author 芋道源码
15   - */
16   -@Data
17   -public class ApiErrorLogExcelVO {
18   -
19   - @ExcelProperty("编号")
20   - private Integer id;
21   -
22   - @ExcelProperty("链路追踪编号")
23   - private String traceId;
24   -
25   - @ExcelProperty("用户编号")
26   - private Integer userId;
27   -
28   - @ExcelProperty(value = "用户类型", converter = DictConvert.class)
29   - @DictFormat(cn.iocoder.yudao.module.system.enums.DictTypeConstants.USER_TYPE)
30   - private Integer userType;
31   -
32   - @ExcelProperty("应用名")
33   - private String applicationName;
34   -
35   - @ExcelProperty("请求方法名")
36   - private String requestMethod;
37   -
38   - @ExcelProperty("请求地址")
39   - private String requestUrl;
40   -
41   - @ExcelProperty("请求参数")
42   - private String requestParams;
43   -
44   - @ExcelProperty("用户 IP")
45   - private String userIp;
46   -
47   - @ExcelProperty("浏览器 UA")
48   - private String userAgent;
49   -
50   - @ExcelProperty("异常发生时间")
51   - private LocalDateTime exceptionTime;
52   -
53   - @ExcelProperty("异常名")
54   - private String exceptionName;
55   -
56   - @ExcelProperty("异常导致的消息")
57   - private String exceptionMessage;
58   -
59   - @ExcelProperty("异常导致的根消息")
60   - private String exceptionRootCauseMessage;
61   -
62   - @ExcelProperty("异常的栈轨迹")
63   - private String exceptionStackTrace;
64   -
65   - @ExcelProperty("异常发生的类全名")
66   - private String exceptionClassName;
67   -
68   - @ExcelProperty("异常发生的类文件")
69   - private String exceptionFileName;
70   -
71   - @ExcelProperty("异常发生的方法名")
72   - private String exceptionMethodName;
73   -
74   - @ExcelProperty("异常发生的方法所在行")
75   - private Integer exceptionLineNumber;
76   -
77   - @ExcelProperty("创建时间")
78   - private LocalDateTime createTime;
79   -
80   - @ExcelProperty(value = "处理状态", converter = DictConvert.class)
81   - @DictFormat(DictTypeConstants.API_ERROR_LOG_PROCESS_STATUS)
82   - private Integer processStatus;
83   -
84   - @ExcelProperty("处理时间")
85   - private LocalDateTime processTime;
86   -
87   - @ExcelProperty("处理用户编号")
88   - private Integer processUserId;
89   -
90   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogExportReqVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.Data;
5   -import org.springframework.format.annotation.DateTimeFormat;
6   -
7   -import java.time.LocalDateTime;
8   -
9   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
10   -
11   -@Schema(description = "管理后台 - API 错误日志 Excel 导出 Request VO,参数和 ApiErrorLogPageReqVO 是一致的")
12   -@Data
13   -public class ApiErrorLogExportReqVO {
14   -
15   - @Schema(description = "用户编号", example = "666")
16   - private Long userId;
17   -
18   - @Schema(description = "用户类型", example = "1")
19   - private Integer userType;
20   -
21   - @Schema(description = "应用名", example = "dashboard")
22   - private String applicationName;
23   -
24   - @Schema(description = "请求地址", example = "/xx/yy")
25   - private String requestUrl;
26   -
27   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
28   - @Schema(description = "异常发生时间")
29   - private LocalDateTime[] exceptionTime;
30   -
31   - @Schema(description = "处理状态", example = "0")
32   - private Integer processStatus;
33   -
34   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogRespVO.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog;
2 2  
  3 +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
  4 +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
  5 +import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
  6 +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
  7 +import com.alibaba.excel.annotation.ExcelProperty;
3 8 import io.swagger.v3.oas.annotations.media.Schema;
4 9 import lombok.Data;
5   -import lombok.EqualsAndHashCode;
6   -import lombok.ToString;
7 10  
8 11 import java.time.LocalDateTime;
9 12  
10 13 @Schema(description = "管理后台 - API 错误日志 Response VO")
11 14 @Data
12   -@EqualsAndHashCode(callSuper = true)
13   -@ToString(callSuper = true)
14   -public class ApiErrorLogRespVO extends ApiErrorLogBaseVO {
  15 +@ExcelIgnoreUnannotated
  16 +public class ApiErrorLogRespVO {
15 17  
16 18 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  19 + @ExcelProperty("编号")
17 20 private Integer id;
18 21  
19   - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
20   - private LocalDateTime createTime;
  22 + @Schema(description = "链路追踪编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "66600cb6-7852-11eb-9439-0242ac130002")
  23 + @ExcelProperty("链路追踪编号")
  24 + private String traceId;
  25 +
  26 + @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "666")
  27 + @ExcelProperty("用户编号")
  28 + private Integer userId;
  29 +
  30 + @Schema(description = "用户类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  31 + @ExcelProperty(value = "用户类型", converter = DictConvert.class)
  32 + @DictFormat(cn.iocoder.yudao.module.system.enums.DictTypeConstants.USER_TYPE)
  33 + private Integer userType;
  34 +
  35 + @Schema(description = "应用名", requiredMode = Schema.RequiredMode.REQUIRED, example = "dashboard")
  36 + @ExcelProperty("应用名")
  37 + private String applicationName;
  38 +
  39 + @Schema(description = "请求方法名", requiredMode = Schema.RequiredMode.REQUIRED, example = "GET")
  40 + @ExcelProperty("请求方法名")
  41 + private String requestMethod;
  42 +
  43 + @Schema(description = "请求地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "/xx/yy")
  44 + @ExcelProperty("请求地址")
  45 + private String requestUrl;
  46 +
  47 + @Schema(description = "请求参数", requiredMode = Schema.RequiredMode.REQUIRED)
  48 + @ExcelProperty("请求参数")
  49 + private String requestParams;
  50 +
  51 + @Schema(description = "用户 IP", requiredMode = Schema.RequiredMode.REQUIRED, example = "127.0.0.1")
  52 + @ExcelProperty("用户 IP")
  53 + private String userIp;
  54 +
  55 + @Schema(description = "浏览器 UA", requiredMode = Schema.RequiredMode.REQUIRED, example = "Mozilla/5.0")
  56 + @ExcelProperty("浏览器 UA")
  57 + private String userAgent;
  58 +
  59 + @Schema(description = "异常发生时间", requiredMode = Schema.RequiredMode.REQUIRED)
  60 + @ExcelProperty("异常发生时间")
  61 + private LocalDateTime exceptionTime;
  62 +
  63 + @Schema(description = "异常名", requiredMode = Schema.RequiredMode.REQUIRED)
  64 + @ExcelProperty("异常名")
  65 + private String exceptionName;
  66 +
  67 + @Schema(description = "异常导致的消息", requiredMode = Schema.RequiredMode.REQUIRED)
  68 + @ExcelProperty("异常导致的消息")
  69 + private String exceptionMessage;
  70 +
  71 + @Schema(description = "异常导致的根消息", requiredMode = Schema.RequiredMode.REQUIRED)
  72 + @ExcelProperty("异常导致的根消息")
  73 + private String exceptionRootCauseMessage;
  74 +
  75 + @Schema(description = "异常的栈轨迹", requiredMode = Schema.RequiredMode.REQUIRED)
  76 + @ExcelProperty("异常的栈轨迹")
  77 + private String exceptionStackTrace;
  78 +
  79 + @Schema(description = "异常发生的类全名", requiredMode = Schema.RequiredMode.REQUIRED)
  80 + @ExcelProperty("异常发生的类全名")
  81 + private String exceptionClassName;
  82 +
  83 + @Schema(description = "异常发生的类文件", requiredMode = Schema.RequiredMode.REQUIRED)
  84 + @ExcelProperty("异常发生的类文件")
  85 + private String exceptionFileName;
  86 +
  87 + @Schema(description = "异常发生的方法名", requiredMode = Schema.RequiredMode.REQUIRED)
  88 + @ExcelProperty("异常发生的方法名")
  89 + private String exceptionMethodName;
  90 +
  91 + @Schema(description = "异常发生的方法所在行", requiredMode = Schema.RequiredMode.REQUIRED)
  92 + @ExcelProperty("异常发生的方法所在行")
  93 + private Integer exceptionLineNumber;
  94 +
  95 + @Schema(description = "处理状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
  96 + @ExcelProperty(value = "处理状态", converter = DictConvert.class)
  97 + @DictFormat(DictTypeConstants.API_ERROR_LOG_PROCESS_STATUS)
  98 + private Integer processStatus;
21 99  
22 100 @Schema(description = "处理时间", requiredMode = Schema.RequiredMode.REQUIRED)
  101 + @ExcelProperty("处理时间")
23 102 private LocalDateTime processTime;
24 103  
25 104 @Schema(description = "处理用户编号", example = "233")
  105 + @ExcelProperty("处理用户编号")
26 106 private Integer processUserId;
27 107  
  108 + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
  109 + @ExcelProperty("创建时间")
  110 + private LocalDateTime createTime;
  111 +
28 112 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/convert/config/ConfigConvert.java
1 1 package cn.iocoder.yudao.module.infra.convert.config;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigCreateReqVO;
5   -import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigExcelVO;
6 4 import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigRespVO;
7   -import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigUpdateReqVO;
  5 +import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigSaveReqVO;
8 6 import cn.iocoder.yudao.module.infra.dal.dataobject.config.ConfigDO;
9 7 import org.mapstruct.Mapper;
10 8 import org.mapstruct.Mapping;
... ... @@ -19,15 +17,12 @@ public interface ConfigConvert {
19 17  
20 18 PageResult<ConfigRespVO> convertPage(PageResult<ConfigDO> page);
21 19  
  20 + List<ConfigRespVO> convertList(List<ConfigDO> list);
  21 +
22 22 @Mapping(source = "configKey", target = "key")
23 23 ConfigRespVO convert(ConfigDO bean);
24 24  
25 25 @Mapping(source = "key", target = "configKey")
26   - ConfigDO convert(ConfigCreateReqVO bean);
27   -
28   - ConfigDO convert(ConfigUpdateReqVO bean);
29   -
30   - @Mapping(source = "configKey", target = "key")
31   - List<ConfigExcelVO> convertList(List<ConfigDO> list);
  26 + ConfigDO convert(ConfigSaveReqVO bean);
32 27  
33 28 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/convert/db/DataSourceConfigConvert.java deleted
1   -package cn.iocoder.yudao.module.infra.convert.db;
2   -
3   -import java.util.*;
4   -
5   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
6   -
7   -import org.mapstruct.Mapper;
8   -import org.mapstruct.factory.Mappers;
9   -import cn.iocoder.yudao.module.infra.controller.admin.db.vo.*;
10   -import cn.iocoder.yudao.module.infra.dal.dataobject.db.DataSourceConfigDO;
11   -
12   -/**
13   - * 数据源配置 Convert
14   - *
15   - * @author 芋道源码
16   - */
17   -@Mapper
18   -public interface DataSourceConfigConvert {
19   -
20   - DataSourceConfigConvert INSTANCE = Mappers.getMapper(DataSourceConfigConvert.class);
21   -
22   - DataSourceConfigDO convert(DataSourceConfigCreateReqVO bean);
23   -
24   - DataSourceConfigDO convert(DataSourceConfigUpdateReqVO bean);
25   -
26   - DataSourceConfigRespVO convert(DataSourceConfigDO bean);
27   -
28   - List<DataSourceConfigRespVO> convertList(List<DataSourceConfigDO> list);
29   -
30   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/convert/file/FileConfigConvert.java
1 1 package cn.iocoder.yudao.module.infra.convert.file;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigCreateReqVO;
5   -import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigRespVO;
6   -import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigUpdateReqVO;
  3 +import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigSaveReqVO;
7 4 import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileConfigDO;
8 5 import org.mapstruct.Mapper;
9 6 import org.mapstruct.Mapping;
10 7 import org.mapstruct.factory.Mappers;
11 8  
12   -import java.util.List;
13   -
14 9 /**
15 10 * 文件配置 Convert
16 11 *
... ... @@ -22,15 +17,6 @@ public interface FileConfigConvert {
22 17 FileConfigConvert INSTANCE = Mappers.getMapper(FileConfigConvert.class);
23 18  
24 19 @Mapping(target = "config", ignore = true)
25   - FileConfigDO convert(FileConfigCreateReqVO bean);
26   -
27   - @Mapping(target = "config", ignore = true)
28   - FileConfigDO convert(FileConfigUpdateReqVO bean);
29   -
30   - FileConfigRespVO convert(FileConfigDO bean);
31   -
32   - List<FileConfigRespVO> convertList(List<FileConfigDO> list);
33   -
34   - PageResult<FileConfigRespVO> convertPage(PageResult<FileConfigDO> page);
  20 + FileConfigDO convert(FileConfigSaveReqVO bean);
35 21  
36 22 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/convert/file/FileConvert.java deleted
1   -package cn.iocoder.yudao.module.infra.convert.file;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FileRespVO;
5   -import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileDO;
6   -import org.mapstruct.Mapper;
7   -import org.mapstruct.factory.Mappers;
8   -
9   -@Mapper
10   -public interface FileConvert {
11   -
12   - FileConvert INSTANCE = Mappers.getMapper(FileConvert.class);
13   -
14   - FileRespVO convert(FileDO bean);
15   -
16   - PageResult<FileRespVO> convertPage(PageResult<FileDO> page);
17   -
18   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/convert/job/JobConvert.java deleted
1   -package cn.iocoder.yudao.module.infra.convert.job;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobCreateReqVO;
5   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobExcelVO;
6   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobRespVO;
7   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobUpdateReqVO;
8   -import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobDO;
9   -import org.mapstruct.Mapper;
10   -import org.mapstruct.factory.Mappers;
11   -
12   -import java.util.List;
13   -
14   -/**
15   - * 定时任务 Convert
16   - *
17   - * @author 芋道源码
18   - */
19   -@Mapper
20   -public interface JobConvert {
21   -
22   - JobConvert INSTANCE = Mappers.getMapper(JobConvert.class);
23   -
24   - JobDO convert(JobCreateReqVO bean);
25   -
26   - JobDO convert(JobUpdateReqVO bean);
27   -
28   - JobRespVO convert(JobDO bean);
29   -
30   - List<JobRespVO> convertList(List<JobDO> list);
31   -
32   - PageResult<JobRespVO> convertPage(PageResult<JobDO> page);
33   -
34   - List<JobExcelVO> convertList02(List<JobDO> list);
35   -
36   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/convert/job/JobLogConvert.java deleted
1   -package cn.iocoder.yudao.module.infra.convert.job;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogExcelVO;
5   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogRespVO;
6   -import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobLogDO;
7   -import org.mapstruct.Mapper;
8   -import org.mapstruct.factory.Mappers;
9   -
10   -import java.util.List;
11   -
12   -/**
13   - * 定时任务日志 Convert
14   - *
15   - * @author 芋艿
16   - */
17   -@Mapper
18   -public interface JobLogConvert {
19   -
20   - JobLogConvert INSTANCE = Mappers.getMapper(JobLogConvert.class);
21   -
22   - JobLogRespVO convert(JobLogDO bean);
23   -
24   - List<JobLogRespVO> convertList(List<JobLogDO> list);
25   -
26   - PageResult<JobLogRespVO> convertPage(PageResult<JobLogDO> page);
27   -
28   - List<JobLogExcelVO> convertList02(List<JobLogDO> list);
29   -
30   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/convert/logger/ApiAccessLogConvert.java deleted
1   -package cn.iocoder.yudao.module.infra.convert.logger;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.infra.api.logger.dto.ApiAccessLogCreateReqDTO;
5   -import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogExcelVO;
6   -import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogRespVO;
7   -import cn.iocoder.yudao.module.infra.dal.dataobject.logger.ApiAccessLogDO;
8   -import org.mapstruct.Mapper;
9   -import org.mapstruct.factory.Mappers;
10   -
11   -import java.util.List;
12   -
13   -/**
14   - * API 访问日志 Convert
15   - *
16   - * @author 芋道源码
17   - */
18   -@Mapper
19   -public interface ApiAccessLogConvert {
20   -
21   - ApiAccessLogConvert INSTANCE = Mappers.getMapper(ApiAccessLogConvert.class);
22   -
23   - ApiAccessLogRespVO convert(ApiAccessLogDO bean);
24   -
25   - List<ApiAccessLogRespVO> convertList(List<ApiAccessLogDO> list);
26   -
27   - PageResult<ApiAccessLogRespVO> convertPage(PageResult<ApiAccessLogDO> page);
28   -
29   - List<ApiAccessLogExcelVO> convertList02(List<ApiAccessLogDO> list);
30   -
31   - ApiAccessLogDO convert(ApiAccessLogCreateReqDTO bean);
32   -
33   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/convert/logger/ApiErrorLogConvert.java deleted
1   -package cn.iocoder.yudao.module.infra.convert.logger;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.infra.api.logger.dto.ApiErrorLogCreateReqDTO;
5   -import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogExcelVO;
6   -import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogRespVO;
7   -import cn.iocoder.yudao.module.infra.dal.dataobject.logger.ApiErrorLogDO;
8   -import org.mapstruct.Mapper;
9   -import org.mapstruct.factory.Mappers;
10   -
11   -import java.util.List;
12   -
13   -/**
14   - * API 错误日志 Convert
15   - *
16   - * @author 芋道源码
17   - */
18   -@Mapper
19   -public interface ApiErrorLogConvert {
20   -
21   - ApiErrorLogConvert INSTANCE = Mappers.getMapper(ApiErrorLogConvert.class);
22   -
23   - ApiErrorLogRespVO convert(ApiErrorLogDO bean);
24   -
25   - PageResult<ApiErrorLogRespVO> convertPage(PageResult<ApiErrorLogDO> page);
26   -
27   - List<ApiErrorLogExcelVO> convertList02(List<ApiErrorLogDO> list);
28   -
29   - ApiErrorLogDO convert(ApiErrorLogCreateReqDTO bean);
30   -
31   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/config/ConfigMapper.java
... ... @@ -3,13 +3,10 @@ package cn.iocoder.yudao.module.infra.dal.mysql.config;
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6   -import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigExportReqVO;
7 6 import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigPageReqVO;
8 7 import cn.iocoder.yudao.module.infra.dal.dataobject.config.ConfigDO;
9 8 import org.apache.ibatis.annotations.Mapper;
10 9  
11   -import java.util.List;
12   -
13 10 @Mapper
14 11 public interface ConfigMapper extends BaseMapperX<ConfigDO> {
15 12  
... ... @@ -25,12 +22,4 @@ public interface ConfigMapper extends BaseMapperX&lt;ConfigDO&gt; {
25 22 .betweenIfPresent(ConfigDO::getCreateTime, reqVO.getCreateTime()));
26 23 }
27 24  
28   - default List<ConfigDO> selectList(ConfigExportReqVO reqVO) {
29   - return selectList(new LambdaQueryWrapperX<ConfigDO>()
30   - .likeIfPresent(ConfigDO::getName, reqVO.getName())
31   - .likeIfPresent(ConfigDO::getConfigKey, reqVO.getKey())
32   - .eqIfPresent(ConfigDO::getType, reqVO.getType())
33   - .betweenIfPresent(ConfigDO::getCreateTime, reqVO.getCreateTime()));
34   - }
35   -
36 25 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/job/JobLogMapper.java
... ... @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.infra.dal.mysql.job;
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogExportReqVO;
7 6 import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogPageReqVO;
8 7 import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobLogDO;
9 8 import org.apache.ibatis.annotations.Delete;
... ... @@ -11,7 +10,6 @@ import org.apache.ibatis.annotations.Mapper;
11 10 import org.apache.ibatis.annotations.Param;
12 11  
13 12 import java.time.LocalDateTime;
14   -import java.util.List;
15 13  
16 14 /**
17 15 * 任务日志 Mapper
... ... @@ -32,17 +30,6 @@ public interface JobLogMapper extends BaseMapperX&lt;JobLogDO&gt; {
32 30 );
33 31 }
34 32  
35   - default List<JobLogDO> selectList(JobLogExportReqVO reqVO) {
36   - return selectList(new LambdaQueryWrapperX<JobLogDO>()
37   - .eqIfPresent(JobLogDO::getJobId, reqVO.getJobId())
38   - .likeIfPresent(JobLogDO::getHandlerName, reqVO.getHandlerName())
39   - .geIfPresent(JobLogDO::getBeginTime, reqVO.getBeginTime())
40   - .leIfPresent(JobLogDO::getEndTime, reqVO.getEndTime())
41   - .eqIfPresent(JobLogDO::getStatus, reqVO.getStatus())
42   - .orderByDesc(JobLogDO::getId) // ID 倒序
43   - );
44   - }
45   -
46 33 /**
47 34 * 物理删除指定时间之前的日志
48 35 *
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/job/JobMapper.java
1 1 package cn.iocoder.yudao.module.infra.dal.mysql.job;
2 2  
3   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobExportReqVO;
4   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobPageReqVO;
5   -import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobDO;
6 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
7 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
8 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
  6 +import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobPageReqVO;
  7 +import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobDO;
9 8 import org.apache.ibatis.annotations.Mapper;
10 9  
11   -import java.util.List;
12   -
13 10 /**
14 11 * 定时任务 Mapper
15 12 *
... ... @@ -30,12 +27,4 @@ public interface JobMapper extends BaseMapperX&lt;JobDO&gt; {
30 27 );
31 28 }
32 29  
33   - default List<JobDO> selectList(JobExportReqVO reqVO) {
34   - return selectList(new LambdaQueryWrapperX<JobDO>()
35   - .likeIfPresent(JobDO::getName, reqVO.getName())
36   - .eqIfPresent(JobDO::getStatus, reqVO.getStatus())
37   - .likeIfPresent(JobDO::getHandlerName, reqVO.getHandlerName())
38   - );
39   - }
40   -
41 30 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/logger/ApiAccessLogMapper.java
... ... @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.infra.dal.mysql.logger;
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6   -import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogExportReqVO;
7 6 import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogPageReqVO;
8 7 import cn.iocoder.yudao.module.infra.dal.dataobject.logger.ApiAccessLogDO;
9 8 import org.apache.ibatis.annotations.Delete;
... ... @@ -11,7 +10,6 @@ import org.apache.ibatis.annotations.Mapper;
11 10 import org.apache.ibatis.annotations.Param;
12 11  
13 12 import java.time.LocalDateTime;
14   -import java.util.List;
15 13  
16 14 /**
17 15 * API 访问日志 Mapper
... ... @@ -34,19 +32,6 @@ public interface ApiAccessLogMapper extends BaseMapperX&lt;ApiAccessLogDO&gt; {
34 32 );
35 33 }
36 34  
37   - default List<ApiAccessLogDO> selectList(ApiAccessLogExportReqVO reqVO) {
38   - return selectList(new LambdaQueryWrapperX<ApiAccessLogDO>()
39   - .eqIfPresent(ApiAccessLogDO::getUserId, reqVO.getUserId())
40   - .eqIfPresent(ApiAccessLogDO::getUserType, reqVO.getUserType())
41   - .eqIfPresent(ApiAccessLogDO::getApplicationName, reqVO.getApplicationName())
42   - .likeIfPresent(ApiAccessLogDO::getRequestUrl, reqVO.getRequestUrl())
43   - .betweenIfPresent(ApiAccessLogDO::getBeginTime, reqVO.getBeginTime())
44   - .geIfPresent(ApiAccessLogDO::getDuration, reqVO.getDuration())
45   - .eqIfPresent(ApiAccessLogDO::getResultCode, reqVO.getResultCode())
46   - .orderByDesc(ApiAccessLogDO::getId)
47   - );
48   - }
49   -
50 35 /**
51 36 * 物理删除指定时间之前的日志
52 37 *
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/logger/ApiErrorLogMapper.java
... ... @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.infra.dal.mysql.logger;
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6   -import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogExportReqVO;
7 6 import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogPageReqVO;
8 7 import cn.iocoder.yudao.module.infra.dal.dataobject.logger.ApiErrorLogDO;
9 8 import org.apache.ibatis.annotations.Delete;
... ... @@ -11,7 +10,6 @@ import org.apache.ibatis.annotations.Mapper;
11 10 import org.apache.ibatis.annotations.Param;
12 11  
13 12 import java.time.LocalDateTime;
14   -import java.util.List;
15 13  
16 14 /**
17 15 * API 错误日志 Mapper
... ... @@ -33,18 +31,6 @@ public interface ApiErrorLogMapper extends BaseMapperX&lt;ApiErrorLogDO&gt; {
33 31 );
34 32 }
35 33  
36   - default List<ApiErrorLogDO> selectList(ApiErrorLogExportReqVO reqVO) {
37   - return selectList(new LambdaQueryWrapperX<ApiErrorLogDO>()
38   - .eqIfPresent(ApiErrorLogDO::getUserId, reqVO.getUserId())
39   - .eqIfPresent(ApiErrorLogDO::getUserType, reqVO.getUserType())
40   - .eqIfPresent(ApiErrorLogDO::getApplicationName, reqVO.getApplicationName())
41   - .likeIfPresent(ApiErrorLogDO::getRequestUrl, reqVO.getRequestUrl())
42   - .betweenIfPresent(ApiErrorLogDO::getExceptionTime, reqVO.getExceptionTime())
43   - .eqIfPresent(ApiErrorLogDO::getProcessStatus, reqVO.getProcessStatus())
44   - .orderByDesc(ApiErrorLogDO::getId)
45   - );
46   - }
47   -
48 34 /**
49 35 * 物理删除指定时间之前的日志
50 36 *
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigService.java
1 1 package cn.iocoder.yudao.module.infra.service.config;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigCreateReqVO;
5   -import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigExportReqVO;
6 4 import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigPageReqVO;
7   -import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigUpdateReqVO;
  5 +import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigSaveReqVO;
8 6 import cn.iocoder.yudao.module.infra.dal.dataobject.config.ConfigDO;
9 7  
10 8 import javax.validation.Valid;
11   -import java.util.List;
12 9  
13 10 /**
14 11 * 参数配置 Service 接口
... ... @@ -20,17 +17,17 @@ public interface ConfigService {
20 17 /**
21 18 * 创建参数配置
22 19 *
23   - * @param reqVO 创建信息
  20 + * @param createReqVO 创建信息
24 21 * @return 配置编号
25 22 */
26   - Long createConfig(@Valid ConfigCreateReqVO reqVO);
  23 + Long createConfig(@Valid ConfigSaveReqVO createReqVO);
27 24  
28 25 /**
29 26 * 更新参数配置
30 27 *
31   - * @param reqVO 更新信息
  28 + * @param updateReqVO 更新信息
32 29 */
33   - void updateConfig(@Valid ConfigUpdateReqVO reqVO);
  30 + void updateConfig(@Valid ConfigSaveReqVO updateReqVO);
34 31  
35 32 /**
36 33 * 删除参数配置
... ... @@ -63,13 +60,4 @@ public interface ConfigService {
63 60 */
64 61 PageResult<ConfigDO> getConfigPage(@Valid ConfigPageReqVO reqVO);
65 62  
66   - /**
67   - * 获得参数配置列表
68   - *
69   - * @param reqVO 列表
70   - * @return 列表
71   - */
72   - List<ConfigDO> getConfigList(@Valid ConfigExportReqVO reqVO);
73   -
74   -
75 63 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImpl.java
1 1 package cn.iocoder.yudao.module.infra.service.config;
2 2  
3   -import cn.hutool.core.util.StrUtil;
4 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5   -import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigCreateReqVO;
6   -import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigExportReqVO;
7 4 import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigPageReqVO;
8   -import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigUpdateReqVO;
  5 +import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigSaveReqVO;
9 6 import cn.iocoder.yudao.module.infra.convert.config.ConfigConvert;
10 7 import cn.iocoder.yudao.module.infra.dal.dataobject.config.ConfigDO;
11 8 import cn.iocoder.yudao.module.infra.dal.mysql.config.ConfigMapper;
... ... @@ -16,7 +13,6 @@ import org.springframework.stereotype.Service;
16 13 import org.springframework.validation.annotation.Validated;
17 14  
18 15 import javax.annotation.Resource;
19   -import java.util.List;
20 16  
21 17 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
22 18 import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.*;
... ... @@ -33,22 +29,26 @@ public class ConfigServiceImpl implements ConfigService {
33 29 private ConfigMapper configMapper;
34 30  
35 31 @Override
36   - public Long createConfig(ConfigCreateReqVO reqVO) {
37   - // 校验正确性
38   - validateConfigForCreateOrUpdate(null, reqVO.getKey());
  32 + public Long createConfig(ConfigSaveReqVO createReqVO) {
  33 + // 校验参数配置 key 的唯一性
  34 + validateConfigKeyUnique(null, createReqVO.getKey());
  35 +
39 36 // 插入参数配置
40   - ConfigDO config = ConfigConvert.INSTANCE.convert(reqVO);
  37 + ConfigDO config = ConfigConvert.INSTANCE.convert(createReqVO);
41 38 config.setType(ConfigTypeEnum.CUSTOM.getType());
42 39 configMapper.insert(config);
43 40 return config.getId();
44 41 }
45 42  
46 43 @Override
47   - public void updateConfig(ConfigUpdateReqVO reqVO) {
48   - // 校验正确性
49   - validateConfigForCreateOrUpdate(reqVO.getId(), null); // 不允许更新 key
  44 + public void updateConfig(ConfigSaveReqVO updateReqVO) {
  45 + // 校验自己存在
  46 + validateConfigExists(updateReqVO.getId());
  47 + // 校验参数配置 key 的唯一性
  48 + validateConfigKeyUnique(updateReqVO.getId(), updateReqVO.getKey());
  49 +
50 50 // 更新参数配置
51   - ConfigDO updateObj = ConfigConvert.INSTANCE.convert(reqVO);
  51 + ConfigDO updateObj = ConfigConvert.INSTANCE.convert(updateReqVO);
52 52 configMapper.updateById(updateObj);
53 53 }
54 54  
... ... @@ -75,22 +75,8 @@ public class ConfigServiceImpl implements ConfigService {
75 75 }
76 76  
77 77 @Override
78   - public PageResult<ConfigDO> getConfigPage(ConfigPageReqVO reqVO) {
79   - return configMapper.selectPage(reqVO);
80   - }
81   -
82   - @Override
83   - public List<ConfigDO> getConfigList(ConfigExportReqVO reqVO) {
84   - return configMapper.selectList(reqVO);
85   - }
86   -
87   - private void validateConfigForCreateOrUpdate(Long id, String key) {
88   - // 校验自己存在
89   - validateConfigExists(id);
90   - // 校验参数配置 key 的唯一性
91   - if (StrUtil.isNotEmpty(key)) {
92   - validateConfigKeyUnique(id, key);
93   - }
  78 + public PageResult<ConfigDO> getConfigPage(ConfigPageReqVO pageReqVO) {
  79 + return configMapper.selectPage(pageReqVO);
94 80 }
95 81  
96 82 @VisibleForTesting
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/db/DataSourceConfigService.java
1 1 package cn.iocoder.yudao.module.infra.service.db;
2 2  
3   -import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigCreateReqVO;
4   -import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigUpdateReqVO;
  3 +import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigSaveReqVO;
5 4 import cn.iocoder.yudao.module.infra.dal.dataobject.db.DataSourceConfigDO;
6 5  
7 6 import javax.validation.Valid;
... ... @@ -20,14 +19,14 @@ public interface DataSourceConfigService {
20 19 * @param createReqVO 创建信息
21 20 * @return 编号
22 21 */
23   - Long createDataSourceConfig(@Valid DataSourceConfigCreateReqVO createReqVO);
  22 + Long createDataSourceConfig(@Valid DataSourceConfigSaveReqVO createReqVO);
24 23  
25 24 /**
26 25 * 更新数据源配置
27 26 *
28 27 * @param updateReqVO 更新信息
29 28 */
30   - void updateDataSourceConfig(@Valid DataSourceConfigUpdateReqVO updateReqVO);
  29 + void updateDataSourceConfig(@Valid DataSourceConfigSaveReqVO updateReqVO);
31 30  
32 31 /**
33 32 * 删除数据源配置
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/db/DataSourceConfigServiceImpl.java
1 1 package cn.iocoder.yudao.module.infra.service.db;
2 2  
  3 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
3 4 import cn.iocoder.yudao.framework.mybatis.core.util.JdbcUtils;
4   -import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigCreateReqVO;
5   -import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigUpdateReqVO;
6   -import cn.iocoder.yudao.module.infra.convert.db.DataSourceConfigConvert;
  5 +import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigSaveReqVO;
7 6 import cn.iocoder.yudao.module.infra.dal.dataobject.db.DataSourceConfigDO;
8 7 import cn.iocoder.yudao.module.infra.dal.mysql.db.DataSourceConfigMapper;
9 8 import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
... ... @@ -35,21 +34,21 @@ public class DataSourceConfigServiceImpl implements DataSourceConfigService {
35 34 private DynamicDataSourceProperties dynamicDataSourceProperties;
36 35  
37 36 @Override
38   - public Long createDataSourceConfig(DataSourceConfigCreateReqVO createReqVO) {
39   - DataSourceConfigDO dataSourceConfig = DataSourceConfigConvert.INSTANCE.convert(createReqVO);
40   - validateConnectionOK(dataSourceConfig);
  37 + public Long createDataSourceConfig(DataSourceConfigSaveReqVO createReqVO) {
  38 + DataSourceConfigDO config = BeanUtils.toBean(createReqVO, DataSourceConfigDO.class);
  39 + validateConnectionOK(config);
41 40  
42 41 // 插入
43   - dataSourceConfigMapper.insert(dataSourceConfig);
  42 + dataSourceConfigMapper.insert(config);
44 43 // 返回
45   - return dataSourceConfig.getId();
  44 + return config.getId();
46 45 }
47 46  
48 47 @Override
49   - public void updateDataSourceConfig(DataSourceConfigUpdateReqVO updateReqVO) {
  48 + public void updateDataSourceConfig(DataSourceConfigSaveReqVO updateReqVO) {
50 49 // 校验存在
51 50 validateDataSourceConfigExists(updateReqVO.getId());
52   - DataSourceConfigDO updateObj = DataSourceConfigConvert.INSTANCE.convert(updateReqVO);
  51 + DataSourceConfigDO updateObj = BeanUtils.toBean(updateReqVO, DataSourceConfigDO.class);
53 52 validateConnectionOK(updateObj);
54 53  
55 54 // 更新
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileConfigService.java
... ... @@ -2,9 +2,8 @@ package cn.iocoder.yudao.module.infra.service.file;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.file.core.client.FileClient;
5   -import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigCreateReqVO;
6 5 import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigPageReqVO;
7   -import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigUpdateReqVO;
  6 +import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigSaveReqVO;
8 7 import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileConfigDO;
9 8  
10 9 import javax.validation.Valid;
... ... @@ -22,14 +21,14 @@ public interface FileConfigService {
22 21 * @param createReqVO 创建信息
23 22 * @return 编号
24 23 */
25   - Long createFileConfig(@Valid FileConfigCreateReqVO createReqVO);
  24 + Long createFileConfig(@Valid FileConfigSaveReqVO createReqVO);
26 25  
27 26 /**
28 27 * 更新文件配置
29 28 *
30 29 * @param updateReqVO 更新信息
31 30 */
32   - void updateFileConfig(@Valid FileConfigUpdateReqVO updateReqVO);
  31 + void updateFileConfig(@Valid FileConfigSaveReqVO updateReqVO);
33 32  
34 33 /**
35 34 * 更新文件配置为 Master
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileConfigServiceImpl.java
... ... @@ -4,14 +4,14 @@ import cn.hutool.core.io.resource.ResourceUtil;
4 4 import cn.hutool.core.util.IdUtil;
5 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 6 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
  7 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
7 8 import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils;
8 9 import cn.iocoder.yudao.framework.file.core.client.FileClient;
9 10 import cn.iocoder.yudao.framework.file.core.client.FileClientConfig;
10 11 import cn.iocoder.yudao.framework.file.core.client.FileClientFactory;
11 12 import cn.iocoder.yudao.framework.file.core.enums.FileStorageEnum;
12   -import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigCreateReqVO;
13 13 import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigPageReqVO;
14   -import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigUpdateReqVO;
  14 +import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigSaveReqVO;
15 15 import cn.iocoder.yudao.module.infra.convert.file.FileConfigConvert;
16 16 import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileConfigDO;
17 17 import cn.iocoder.yudao.module.infra.dal.mysql.file.FileConfigMapper;
... ... @@ -63,7 +63,7 @@ public class FileConfigServiceImpl implements FileConfigService {
63 63 return fileClientFactory.getFileClient(null == config ? id : config.getId());
64 64 }
65 65  
66   - });
  66 + });
67 67  
68 68 @Resource
69 69 private FileClientFactory fileClientFactory;
... ... @@ -75,7 +75,7 @@ public class FileConfigServiceImpl implements FileConfigService {
75 75 private Validator validator;
76 76  
77 77 @Override
78   - public Long createFileConfig(FileConfigCreateReqVO createReqVO) {
  78 + public Long createFileConfig(FileConfigSaveReqVO createReqVO) {
79 79 FileConfigDO fileConfig = FileConfigConvert.INSTANCE.convert(createReqVO)
80 80 .setConfig(parseClientConfig(createReqVO.getStorage(), createReqVO.getConfig()))
81 81 .setMaster(false); // 默认非 master
... ... @@ -84,7 +84,7 @@ public class FileConfigServiceImpl implements FileConfigService {
84 84 }
85 85  
86 86 @Override
87   - public void updateFileConfig(FileConfigUpdateReqVO updateReqVO) {
  87 + public void updateFileConfig(FileConfigSaveReqVO updateReqVO) {
88 88 // 校验存在
89 89 FileConfigDO config = validateFileConfigExists(updateReqVO.getId());
90 90 // 更新
... ... @@ -126,7 +126,7 @@ public class FileConfigServiceImpl implements FileConfigService {
126 126 // 校验存在
127 127 FileConfigDO config = validateFileConfigExists(id);
128 128 if (Boolean.TRUE.equals(config.getMaster())) {
129   - throw exception(FILE_CONFIG_DELETE_FAIL_MASTER);
  129 + throw exception(FILE_CONFIG_DELETE_FAIL_MASTER);
130 130 }
131 131 // 删除
132 132 fileConfigMapper.deleteById(id);
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/job/JobLogService.java
... ... @@ -2,13 +2,9 @@ package cn.iocoder.yudao.module.infra.service.job;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.quartz.core.service.JobLogFrameworkService;
5   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogExportReqVO;
6 5 import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogPageReqVO;
7 6 import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobLogDO;
8 7  
9   -import java.util.Collection;
10   -import java.util.List;
11   -
12 8 /**
13 9 * Job 日志 Service 接口
14 10 *
... ... @@ -25,14 +21,6 @@ public interface JobLogService extends JobLogFrameworkService {
25 21 JobLogDO getJobLog(Long id);
26 22  
27 23 /**
28   - * 获得定时任务列表
29   - *
30   - * @param ids 编号
31   - * @return 定时任务列表
32   - */
33   - List<JobLogDO> getJobLogList(Collection<Long> ids);
34   -
35   - /**
36 24 * 获得定时任务分页
37 25 *
38 26 * @param pageReqVO 分页查询
... ... @@ -41,14 +29,6 @@ public interface JobLogService extends JobLogFrameworkService {
41 29 PageResult<JobLogDO> getJobLogPage(JobLogPageReqVO pageReqVO);
42 30  
43 31 /**
44   - * 获得定时任务列表, 用于 Excel 导出
45   - *
46   - * @param exportReqVO 查询条件
47   - * @return 定时任务分页
48   - */
49   - List<JobLogDO> getJobLogList(JobLogExportReqVO exportReqVO);
50   -
51   - /**
52 32 * 清理 exceedDay 天前的任务日志
53 33 *
54 34 * @param exceedDay 超过多少天就进行清理
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/job/JobLogServiceImpl.java
1 1 package cn.iocoder.yudao.module.infra.service.job;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogExportReqVO;
5 4 import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogPageReqVO;
6 5 import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobLogDO;
7 6 import cn.iocoder.yudao.module.infra.dal.mysql.job.JobLogMapper;
... ... @@ -13,8 +12,6 @@ import org.springframework.validation.annotation.Validated;
13 12  
14 13 import javax.annotation.Resource;
15 14 import java.time.LocalDateTime;
16   -import java.util.Collection;
17   -import java.util.List;
18 15  
19 16 /**
20 17 * Job 日志 Service 实现类
... ... @@ -30,8 +27,10 @@ public class JobLogServiceImpl implements JobLogService {
30 27 private JobLogMapper jobLogMapper;
31 28  
32 29 @Override
33   - public Long createJobLog(Long jobId, LocalDateTime beginTime, String jobHandlerName, String jobHandlerParam, Integer executeIndex) {
34   - JobLogDO log = JobLogDO.builder().jobId(jobId).handlerName(jobHandlerName).handlerParam(jobHandlerParam).executeIndex(executeIndex)
  30 + public Long createJobLog(Long jobId, LocalDateTime beginTime,
  31 + String jobHandlerName, String jobHandlerParam, Integer executeIndex) {
  32 + JobLogDO log = JobLogDO.builder().jobId(jobId).handlerName(jobHandlerName)
  33 + .handlerParam(jobHandlerParam).executeIndex(executeIndex)
35 34 .beginTime(beginTime).status(JobLogStatusEnum.RUNNING.getStatus()).build();
36 35 jobLogMapper.insert(log);
37 36 return log.getId();
... ... @@ -42,7 +41,8 @@ public class JobLogServiceImpl implements JobLogService {
42 41 public void updateJobLogResultAsync(Long logId, LocalDateTime endTime, Integer duration, boolean success, String result) {
43 42 try {
44 43 JobLogDO updateObj = JobLogDO.builder().id(logId).endTime(endTime).duration(duration)
45   - .status(success ? JobLogStatusEnum.SUCCESS.getStatus() : JobLogStatusEnum.FAILURE.getStatus()).result(result).build();
  44 + .status(success ? JobLogStatusEnum.SUCCESS.getStatus() : JobLogStatusEnum.FAILURE.getStatus())
  45 + .result(result).build();
46 46 jobLogMapper.updateById(updateObj);
47 47 } catch (Exception ex) {
48 48 log.error("[updateJobLogResultAsync][logId({}) endTime({}) duration({}) success({}) result({})]",
... ... @@ -73,18 +73,8 @@ public class JobLogServiceImpl implements JobLogService {
73 73 }
74 74  
75 75 @Override
76   - public List<JobLogDO> getJobLogList(Collection<Long> ids) {
77   - return jobLogMapper.selectBatchIds(ids);
78   - }
79   -
80   - @Override
81 76 public PageResult<JobLogDO> getJobLogPage(JobLogPageReqVO pageReqVO) {
82 77 return jobLogMapper.selectPage(pageReqVO);
83 78 }
84 79  
85   - @Override
86   - public List<JobLogDO> getJobLogList(JobLogExportReqVO exportReqVO) {
87   - return jobLogMapper.selectList(exportReqVO);
88   - }
89   -
90 80 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/job/JobService.java
1 1 package cn.iocoder.yudao.module.infra.service.job;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobCreateReqVO;
5   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobExportReqVO;
6 4 import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobPageReqVO;
7   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobUpdateReqVO;
  5 +import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobSaveReqVO;
8 6 import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobDO;
9 7 import org.quartz.SchedulerException;
10 8  
... ... @@ -25,14 +23,14 @@ public interface JobService {
25 23 * @param createReqVO 创建信息
26 24 * @return 编号
27 25 */
28   - Long createJob(@Valid JobCreateReqVO createReqVO) throws SchedulerException;
  26 + Long createJob(@Valid JobSaveReqVO createReqVO) throws SchedulerException;
29 27  
30 28 /**
31 29 * 更新定时任务
32 30 *
33 31 * @param updateReqVO 更新信息
34 32 */
35   - void updateJob(@Valid JobUpdateReqVO updateReqVO) throws SchedulerException;
  33 + void updateJob(@Valid JobSaveReqVO updateReqVO) throws SchedulerException;
36 34  
37 35 /**
38 36 * 更新定时任务的状态
... ... @@ -80,12 +78,4 @@ public interface JobService {
80 78 */
81 79 PageResult<JobDO> getJobPage(JobPageReqVO pageReqVO);
82 80  
83   - /**
84   - * 获得定时任务列表, 用于 Excel 导出
85   - *
86   - * @param exportReqVO 查询条件
87   - * @return 定时任务分页
88   - */
89   - List<JobDO> getJobList(JobExportReqVO exportReqVO);
90   -
91 81 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/job/JobServiceImpl.java
1 1 package cn.iocoder.yudao.module.infra.service.job;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
4 5 import cn.iocoder.yudao.framework.quartz.core.scheduler.SchedulerManager;
5 6 import cn.iocoder.yudao.framework.quartz.core.util.CronUtils;
6   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobCreateReqVO;
7   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobExportReqVO;
8 7 import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobPageReqVO;
9   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobUpdateReqVO;
10   -import cn.iocoder.yudao.module.infra.convert.job.JobConvert;
  8 +import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobSaveReqVO;
11 9 import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobDO;
12 10 import cn.iocoder.yudao.module.infra.dal.mysql.job.JobMapper;
13 11 import cn.iocoder.yudao.module.infra.enums.job.JobStatusEnum;
... ... @@ -21,8 +19,8 @@ import java.util.Collection;
21 19 import java.util.List;
22 20  
23 21 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
24   -import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.*;
25 22 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.containsAny;
  23 +import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.*;
26 24  
27 25 /**
28 26 * 定时任务 Service 实现类
... ... @@ -41,14 +39,14 @@ public class JobServiceImpl implements JobService {
41 39  
42 40 @Override
43 41 @Transactional(rollbackFor = Exception.class)
44   - public Long createJob(JobCreateReqVO createReqVO) throws SchedulerException {
  42 + public Long createJob(JobSaveReqVO createReqVO) throws SchedulerException {
45 43 validateCronExpression(createReqVO.getCronExpression());
46 44 // 校验唯一性
47 45 if (jobMapper.selectByHandlerName(createReqVO.getHandlerName()) != null) {
48 46 throw exception(JOB_HANDLER_EXISTS);
49 47 }
50 48 // 插入
51   - JobDO job = JobConvert.INSTANCE.convert(createReqVO);
  49 + JobDO job = BeanUtils.toBean(createReqVO, JobDO.class);
52 50 job.setStatus(JobStatusEnum.INIT.getStatus());
53 51 fillJobMonitorTimeoutEmpty(job);
54 52 jobMapper.insert(job);
... ... @@ -66,7 +64,7 @@ public class JobServiceImpl implements JobService {
66 64  
67 65 @Override
68 66 @Transactional(rollbackFor = Exception.class)
69   - public void updateJob(JobUpdateReqVO updateReqVO) throws SchedulerException {
  67 + public void updateJob(JobSaveReqVO updateReqVO) throws SchedulerException {
70 68 validateCronExpression(updateReqVO.getCronExpression());
71 69 // 校验存在
72 70 JobDO job = validateJobExists(updateReqVO.getId());
... ... @@ -75,7 +73,7 @@ public class JobServiceImpl implements JobService {
75 73 throw exception(JOB_UPDATE_ONLY_NORMAL_STATUS);
76 74 }
77 75 // 更新
78   - JobDO updateObj = JobConvert.INSTANCE.convert(updateReqVO);
  76 + JobDO updateObj = BeanUtils.toBean(updateReqVO, JobDO.class);
79 77 fillJobMonitorTimeoutEmpty(updateObj);
80 78 jobMapper.updateById(updateObj);
81 79  
... ... @@ -159,11 +157,6 @@ public class JobServiceImpl implements JobService {
159 157 return jobMapper.selectPage(pageReqVO);
160 158 }
161 159  
162   - @Override
163   - public List<JobDO> getJobList(JobExportReqVO exportReqVO) {
164   - return jobMapper.selectList(exportReqVO);
165   - }
166   -
167 160 private static void fillJobMonitorTimeoutEmpty(JobDO job) {
168 161 if (job.getMonitorTimeout() == null) {
169 162 job.setMonitorTimeout(0);
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/logger/ApiAccessLogService.java
... ... @@ -2,12 +2,9 @@ package cn.iocoder.yudao.module.infra.service.logger;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.module.infra.api.logger.dto.ApiAccessLogCreateReqDTO;
5   -import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogExportReqVO;
6 5 import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogPageReqVO;
7 6 import cn.iocoder.yudao.module.infra.dal.dataobject.logger.ApiAccessLogDO;
8 7  
9   -import java.util.List;
10   -
11 8 /**
12 9 * API 访问日志 Service 接口
13 10 *
... ... @@ -31,14 +28,6 @@ public interface ApiAccessLogService {
31 28 PageResult<ApiAccessLogDO> getApiAccessLogPage(ApiAccessLogPageReqVO pageReqVO);
32 29  
33 30 /**
34   - * 获得 API 访问日志列表, 用于 Excel 导出
35   - *
36   - * @param exportReqVO 查询条件
37   - * @return API 访问日志分页
38   - */
39   - List<ApiAccessLogDO> getApiAccessLogList(ApiAccessLogExportReqVO exportReqVO);
40   -
41   - /**
42 31 * 清理 exceedDay 天前的访问日志
43 32 *
44 33 * @param exceedDay 超过多少天就进行清理
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/logger/ApiAccessLogServiceImpl.java
1 1 package cn.iocoder.yudao.module.infra.service.logger;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
4 5 import cn.iocoder.yudao.module.infra.api.logger.dto.ApiAccessLogCreateReqDTO;
5   -import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogExportReqVO;
6 6 import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogPageReqVO;
7   -import cn.iocoder.yudao.module.infra.convert.logger.ApiAccessLogConvert;
8 7 import cn.iocoder.yudao.module.infra.dal.dataobject.logger.ApiAccessLogDO;
9 8 import cn.iocoder.yudao.module.infra.dal.mysql.logger.ApiAccessLogMapper;
10 9 import lombok.extern.slf4j.Slf4j;
... ... @@ -13,7 +12,6 @@ import org.springframework.validation.annotation.Validated;
13 12  
14 13 import javax.annotation.Resource;
15 14 import java.time.LocalDateTime;
16   -import java.util.List;
17 15  
18 16 /**
19 17 * API 访问日志 Service 实现类
... ... @@ -30,7 +28,7 @@ public class ApiAccessLogServiceImpl implements ApiAccessLogService {
30 28  
31 29 @Override
32 30 public void createApiAccessLog(ApiAccessLogCreateReqDTO createDTO) {
33   - ApiAccessLogDO apiAccessLog = ApiAccessLogConvert.INSTANCE.convert(createDTO);
  31 + ApiAccessLogDO apiAccessLog = BeanUtils.toBean(createDTO, ApiAccessLogDO.class);
34 32 apiAccessLogMapper.insert(apiAccessLog);
35 33 }
36 34  
... ... @@ -40,11 +38,6 @@ public class ApiAccessLogServiceImpl implements ApiAccessLogService {
40 38 }
41 39  
42 40 @Override
43   - public List<ApiAccessLogDO> getApiAccessLogList(ApiAccessLogExportReqVO exportReqVO) {
44   - return apiAccessLogMapper.selectList(exportReqVO);
45   - }
46   -
47   - @Override
48 41 @SuppressWarnings("DuplicatedCode")
49 42 public Integer cleanAccessLog(Integer exceedDay, Integer deleteLimit) {
50 43 int count = 0;
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/logger/ApiErrorLogService.java
... ... @@ -2,12 +2,9 @@ package cn.iocoder.yudao.module.infra.service.logger;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.module.infra.api.logger.dto.ApiErrorLogCreateReqDTO;
5   -import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogExportReqVO;
6 5 import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogPageReqVO;
7 6 import cn.iocoder.yudao.module.infra.dal.dataobject.logger.ApiErrorLogDO;
8 7  
9   -import java.util.List;
10   -
11 8 /**
12 9 * API 错误日志 Service 接口
13 10 *
... ... @@ -31,14 +28,6 @@ public interface ApiErrorLogService {
31 28 PageResult<ApiErrorLogDO> getApiErrorLogPage(ApiErrorLogPageReqVO pageReqVO);
32 29  
33 30 /**
34   - * 获得 API 错误日志列表, 用于 Excel 导出
35   - *
36   - * @param exportReqVO 查询条件
37   - * @return API 错误日志分页
38   - */
39   - List<ApiErrorLogDO> getApiErrorLogList(ApiErrorLogExportReqVO exportReqVO);
40   -
41   - /**
42 31 * 更新 API 错误日志已处理
43 32 *
44 33 * @param id API 日志编号
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/logger/ApiErrorLogServiceImpl.java
1 1 package cn.iocoder.yudao.module.infra.service.logger;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
4 5 import cn.iocoder.yudao.module.infra.api.logger.dto.ApiErrorLogCreateReqDTO;
5   -import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogExportReqVO;
6 6 import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogPageReqVO;
7   -import cn.iocoder.yudao.module.infra.convert.logger.ApiErrorLogConvert;
8 7 import cn.iocoder.yudao.module.infra.dal.dataobject.logger.ApiErrorLogDO;
9 8 import cn.iocoder.yudao.module.infra.dal.mysql.logger.ApiErrorLogMapper;
10 9 import cn.iocoder.yudao.module.infra.enums.logger.ApiErrorLogProcessStatusEnum;
... ... @@ -14,11 +13,9 @@ import org.springframework.validation.annotation.Validated;
14 13  
15 14 import javax.annotation.Resource;
16 15 import java.time.LocalDateTime;
17   -import java.util.List;
18 16  
19 17 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
20   -import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.API_ERROR_LOG_NOT_FOUND;
21   -import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.API_ERROR_LOG_PROCESSED;
  18 +import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.*;
22 19  
23 20 /**
24 21 * API 错误日志 Service 实现类
... ... @@ -35,7 +32,7 @@ public class ApiErrorLogServiceImpl implements ApiErrorLogService {
35 32  
36 33 @Override
37 34 public void createApiErrorLog(ApiErrorLogCreateReqDTO createDTO) {
38   - ApiErrorLogDO apiErrorLog = ApiErrorLogConvert.INSTANCE.convert(createDTO)
  35 + ApiErrorLogDO apiErrorLog = BeanUtils.toBean(createDTO, ApiErrorLogDO.class)
39 36 .setProcessStatus(ApiErrorLogProcessStatusEnum.INIT.getStatus());
40 37 apiErrorLogMapper.insert(apiErrorLog);
41 38 }
... ... @@ -46,11 +43,6 @@ public class ApiErrorLogServiceImpl implements ApiErrorLogService {
46 43 }
47 44  
48 45 @Override
49   - public List<ApiErrorLogDO> getApiErrorLogList(ApiErrorLogExportReqVO exportReqVO) {
50   - return apiErrorLogMapper.selectList(exportReqVO);
51   - }
52   -
53   - @Override
54 46 public void updateApiErrorLogProcess(Long id, Integer processStatus, Long processUserId) {
55 47 ApiErrorLogDO errorLog = apiErrorLogMapper.selectById(id);
56 48 if (errorLog == null) {
... ...
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImplTest.java
... ... @@ -4,10 +4,8 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
5 5 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
6 6 import cn.iocoder.yudao.framework.test.core.util.RandomUtils;
7   -import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigCreateReqVO;
8   -import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigExportReqVO;
9 7 import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigPageReqVO;
10   -import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigUpdateReqVO;
  8 +import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigSaveReqVO;
11 9 import cn.iocoder.yudao.module.infra.dal.dataobject.config.ConfigDO;
12 10 import cn.iocoder.yudao.module.infra.dal.mysql.config.ConfigMapper;
13 11 import cn.iocoder.yudao.module.infra.enums.config.ConfigTypeEnum;
... ... @@ -15,7 +13,6 @@ import org.junit.jupiter.api.Test;
15 13 import org.springframework.context.annotation.Import;
16 14  
17 15 import javax.annotation.Resource;
18   -import java.util.List;
19 16 import java.util.function.Consumer;
20 17  
21 18 import static cn.hutool.core.util.RandomUtil.randomEle;
... ... @@ -40,7 +37,8 @@ public class ConfigServiceImplTest extends BaseDbUnitTest {
40 37 @Test
41 38 public void testCreateConfig_success() {
42 39 // 准备参数
43   - ConfigCreateReqVO reqVO = randomPojo(ConfigCreateReqVO.class);
  40 + ConfigSaveReqVO reqVO = randomPojo(ConfigSaveReqVO.class)
  41 + .setId(null); // 防止 id 被赋值,导致唯一性校验失败
44 42  
45 43 // 调用
46 44 Long configId = configService.createConfig(reqVO);
... ... @@ -48,7 +46,7 @@ public class ConfigServiceImplTest extends BaseDbUnitTest {
48 46 assertNotNull(configId);
49 47 // 校验记录的属性是否正确
50 48 ConfigDO config = configMapper.selectById(configId);
51   - assertPojoEquals(reqVO, config);
  49 + assertPojoEquals(reqVO, config, "id");
52 50 assertEquals(ConfigTypeEnum.CUSTOM.getType(), config.getType());
53 51 }
54 52  
... ... @@ -58,7 +56,7 @@ public class ConfigServiceImplTest extends BaseDbUnitTest {
58 56 ConfigDO dbConfig = randomConfigDO();
59 57 configMapper.insert(dbConfig);// @Sql: 先插入出一条存在的数据
60 58 // 准备参数
61   - ConfigUpdateReqVO reqVO = randomPojo(ConfigUpdateReqVO.class, o -> {
  59 + ConfigSaveReqVO reqVO = randomPojo(ConfigSaveReqVO.class, o -> {
62 60 o.setId(dbConfig.getId()); // 设置更新的 ID
63 61 });
64 62  
... ... @@ -179,38 +177,6 @@ public class ConfigServiceImplTest extends BaseDbUnitTest {
179 177 }
180 178  
181 179 @Test
182   - public void testGetConfigList() {
183   - // mock 数据
184   - ConfigDO dbConfig = randomConfigDO(o -> { // 等会查询到
185   - o.setName("芋艿");
186   - o.setConfigKey("yunai");
187   - o.setType(ConfigTypeEnum.SYSTEM.getType());
188   - o.setCreateTime(buildTime(2021, 2, 1));
189   - });
190   - configMapper.insert(dbConfig);
191   - // 测试 name 不匹配
192   - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setName("土豆")));
193   - // 测试 key 不匹配
194   - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setConfigKey("tudou")));
195   - // 测试 type 不匹配
196   - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setType(ConfigTypeEnum.CUSTOM.getType())));
197   - // 测试 createTime 不匹配
198   - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setCreateTime(buildTime(2021, 1, 1))));
199   - // 准备参数
200   - ConfigExportReqVO reqVO = new ConfigExportReqVO();
201   - reqVO.setName("艿");
202   - reqVO.setKey("nai");
203   - reqVO.setType(ConfigTypeEnum.SYSTEM.getType());
204   - reqVO.setCreateTime(buildBetweenTime(2021, 1, 15, 2021, 2, 15));
205   -
206   - // 调用
207   - List<ConfigDO> list = configService.getConfigList(reqVO);
208   - // 断言
209   - assertEquals(1, list.size());
210   - assertPojoEquals(dbConfig, list.get(0));
211   - }
212   -
213   - @Test
214 180 public void testGetConfig() {
215 181 // mock 数据
216 182 ConfigDO dbConfig = randomConfigDO();
... ...
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/db/DataSourceConfigServiceImplTest.java
... ... @@ -6,8 +6,7 @@ import cn.hutool.crypto.symmetric.AES;
6 6 import cn.iocoder.yudao.framework.mybatis.core.type.EncryptTypeHandler;
7 7 import cn.iocoder.yudao.framework.mybatis.core.util.JdbcUtils;
8 8 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
9   -import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigCreateReqVO;
10   -import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigUpdateReqVO;
  9 +import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigSaveReqVO;
11 10 import cn.iocoder.yudao.module.infra.dal.dataobject.db.DataSourceConfigDO;
12 11 import cn.iocoder.yudao.module.infra.dal.mysql.db.DataSourceConfigMapper;
13 12 import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
... ... @@ -70,7 +69,8 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest {
70 69 public void testCreateDataSourceConfig_success() {
71 70 try (MockedStatic<JdbcUtils> databaseUtilsMock = mockStatic(JdbcUtils.class)) {
72 71 // 准备参数
73   - DataSourceConfigCreateReqVO reqVO = randomPojo(DataSourceConfigCreateReqVO.class);
  72 + DataSourceConfigSaveReqVO reqVO = randomPojo(DataSourceConfigSaveReqVO.class)
  73 + .setId(null); // 避免 id 被设置
74 74 // mock 方法
75 75 databaseUtilsMock.when(() -> JdbcUtils.isConnectionOK(eq(reqVO.getUrl()),
76 76 eq(reqVO.getUsername()), eq(reqVO.getPassword()))).thenReturn(true);
... ... @@ -81,7 +81,7 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest {
81 81 assertNotNull(dataSourceConfigId);
82 82 // 校验记录的属性是否正确
83 83 DataSourceConfigDO dataSourceConfig = dataSourceConfigMapper.selectById(dataSourceConfigId);
84   - assertPojoEquals(reqVO, dataSourceConfig);
  84 + assertPojoEquals(reqVO, dataSourceConfig, "id");
85 85 }
86 86 }
87 87  
... ... @@ -92,7 +92,7 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest {
92 92 DataSourceConfigDO dbDataSourceConfig = randomPojo(DataSourceConfigDO.class);
93 93 dataSourceConfigMapper.insert(dbDataSourceConfig);// @Sql: 先插入出一条存在的数据
94 94 // 准备参数
95   - DataSourceConfigUpdateReqVO reqVO = randomPojo(DataSourceConfigUpdateReqVO.class, o -> {
  95 + DataSourceConfigSaveReqVO reqVO = randomPojo(DataSourceConfigSaveReqVO.class, o -> {
96 96 o.setId(dbDataSourceConfig.getId()); // 设置更新的 ID
97 97 });
98 98 // mock 方法
... ... @@ -110,7 +110,7 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest {
110 110 @Test
111 111 public void testUpdateDataSourceConfig_notExists() {
112 112 // 准备参数
113   - DataSourceConfigUpdateReqVO reqVO = randomPojo(DataSourceConfigUpdateReqVO.class);
  113 + DataSourceConfigSaveReqVO reqVO = randomPojo(DataSourceConfigSaveReqVO.class);
114 114  
115 115 // 调用, 并断言异常
116 116 assertServiceException(() -> dataSourceConfigService.updateDataSourceConfig(reqVO), DATA_SOURCE_CONFIG_NOT_EXISTS);
... ...
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/file/FileConfigServiceImplTest.java
... ... @@ -11,9 +11,8 @@ import cn.iocoder.yudao.framework.file.core.client.local.LocalFileClient;
11 11 import cn.iocoder.yudao.framework.file.core.client.local.LocalFileClientConfig;
12 12 import cn.iocoder.yudao.framework.file.core.enums.FileStorageEnum;
13 13 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
14   -import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigCreateReqVO;
15 14 import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigPageReqVO;
16   -import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigUpdateReqVO;
  15 +import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigSaveReqVO;
17 16 import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileConfigDO;
18 17 import cn.iocoder.yudao.module.infra.dal.mysql.file.FileConfigMapper;
19 18 import lombok.Data;
... ... @@ -41,10 +40,10 @@ import static org.mockito.ArgumentMatchers.eq;
41 40 import static org.mockito.Mockito.*;
42 41  
43 42 /**
44   -* {@link FileConfigServiceImpl} 的单元测试类
45   -*
46   -* @author 芋道源码
47   -*/
  43 + * {@link FileConfigServiceImpl} 的单元测试类
  44 + *
  45 + * @author 芋道源码
  46 + */
48 47 @Import(FileConfigServiceImpl.class)
49 48 public class FileConfigServiceImplTest extends BaseDbUnitTest {
50 49  
... ... @@ -64,8 +63,9 @@ public class FileConfigServiceImplTest extends BaseDbUnitTest {
64 63 // 准备参数
65 64 Map<String, Object> config = MapUtil.<String, Object>builder().put("basePath", "/yunai")
66 65 .put("domain", "https://www.iocoder.cn").build();
67   - FileConfigCreateReqVO reqVO = randomPojo(FileConfigCreateReqVO.class,
68   - o -> o.setStorage(FileStorageEnum.LOCAL.getStorage()).setConfig(config));
  66 + FileConfigSaveReqVO reqVO = randomPojo(FileConfigSaveReqVO.class,
  67 + o -> o.setStorage(FileStorageEnum.LOCAL.getStorage()).setConfig(config))
  68 + .setId(null); // 避免 id 被赋值
69 69  
70 70 // 调用
71 71 Long fileConfigId = fileConfigService.createFileConfig(reqVO);
... ... @@ -73,7 +73,7 @@ public class FileConfigServiceImplTest extends BaseDbUnitTest {
73 73 assertNotNull(fileConfigId);
74 74 // 校验记录的属性是否正确
75 75 FileConfigDO fileConfig = fileConfigMapper.selectById(fileConfigId);
76   - assertPojoEquals(reqVO, fileConfig, "config");
  76 + assertPojoEquals(reqVO, fileConfig, "id", "config");
77 77 assertFalse(fileConfig.getMaster());
78 78 assertEquals("/yunai", ((LocalFileClientConfig) fileConfig.getConfig()).getBasePath());
79 79 assertEquals("https://www.iocoder.cn", ((LocalFileClientConfig) fileConfig.getConfig()).getDomain());
... ... @@ -88,8 +88,9 @@ public class FileConfigServiceImplTest extends BaseDbUnitTest {
88 88 .setConfig(new LocalFileClientConfig().setBasePath("/yunai").setDomain("https://www.iocoder.cn")));
89 89 fileConfigMapper.insert(dbFileConfig);// @Sql: 先插入出一条存在的数据
90 90 // 准备参数
91   - FileConfigUpdateReqVO reqVO = randomPojo(FileConfigUpdateReqVO.class, o -> {
  91 + FileConfigSaveReqVO reqVO = randomPojo(FileConfigSaveReqVO.class, o -> {
92 92 o.setId(dbFileConfig.getId()); // 设置更新的 ID
  93 + o.setStorage(FileStorageEnum.LOCAL.getStorage());
93 94 Map<String, Object> config = MapUtil.<String, Object>builder().put("basePath", "/yunai2")
94 95 .put("domain", "https://doc.iocoder.cn").build();
95 96 o.setConfig(config);
... ... @@ -109,7 +110,7 @@ public class FileConfigServiceImplTest extends BaseDbUnitTest {
109 110 @Test
110 111 public void testUpdateFileConfig_notExists() {
111 112 // 准备参数
112   - FileConfigUpdateReqVO reqVO = randomPojo(FileConfigUpdateReqVO.class);
  113 + FileConfigSaveReqVO reqVO = randomPojo(FileConfigSaveReqVO.class);
113 114  
114 115 // 调用, 并断言异常
115 116 assertServiceException(() -> fileConfigService.updateFileConfig(reqVO), FILE_CONFIG_NOT_EXISTS);
... ... @@ -148,8 +149,8 @@ public class FileConfigServiceImplTest extends BaseDbUnitTest {
148 149  
149 150 // 调用
150 151 fileConfigService.deleteFileConfig(id);
151   - // 校验数据不存在了
152   - assertNull(fileConfigMapper.selectById(id));
  152 + // 校验数据不存在了
  153 + assertNull(fileConfigMapper.selectById(id));
153 154 // 验证 cache
154 155 assertNull(fileConfigService.getClientCache().getIfPresent(id));
155 156 }
... ... @@ -177,30 +178,30 @@ public class FileConfigServiceImplTest extends BaseDbUnitTest {
177 178  
178 179 @Test
179 180 public void testGetFileConfigPage() {
180   - // mock 数据
181   - FileConfigDO dbFileConfig = randomFileConfigDO().setName("芋道源码")
182   - .setStorage(FileStorageEnum.LOCAL.getStorage());
183   - dbFileConfig.setCreateTime(LocalDateTimeUtil.parse("2020-01-23", DatePattern.NORM_DATE_PATTERN));// 等会查询到
184   - fileConfigMapper.insert(dbFileConfig);
185   - // 测试 name 不匹配
186   - fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setName("源码")));
187   - // 测试 storage 不匹配
188   - fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setStorage(FileStorageEnum.DB.getStorage())));
189   - // 测试 createTime 不匹配
190   - fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setCreateTime(LocalDateTimeUtil.parse("2020-11-23", DatePattern.NORM_DATE_PATTERN))));
191   - // 准备参数
192   - FileConfigPageReqVO reqVO = new FileConfigPageReqVO();
193   - reqVO.setName("芋道");
194   - reqVO.setStorage(FileStorageEnum.LOCAL.getStorage());
195   - reqVO.setCreateTime((new LocalDateTime[]{buildTime(2020, 1, 1),
196   - buildTime(2020, 1, 24)}));
197   -
198   - // 调用
199   - PageResult<FileConfigDO> pageResult = fileConfigService.getFileConfigPage(reqVO);
200   - // 断言
201   - assertEquals(1, pageResult.getTotal());
202   - assertEquals(1, pageResult.getList().size());
203   - assertPojoEquals(dbFileConfig, pageResult.getList().get(0));
  181 + // mock 数据
  182 + FileConfigDO dbFileConfig = randomFileConfigDO().setName("芋道源码")
  183 + .setStorage(FileStorageEnum.LOCAL.getStorage());
  184 + dbFileConfig.setCreateTime(LocalDateTimeUtil.parse("2020-01-23", DatePattern.NORM_DATE_PATTERN));// 等会查询到
  185 + fileConfigMapper.insert(dbFileConfig);
  186 + // 测试 name 不匹配
  187 + fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setName("源码")));
  188 + // 测试 storage 不匹配
  189 + fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setStorage(FileStorageEnum.DB.getStorage())));
  190 + // 测试 createTime 不匹配
  191 + fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setCreateTime(LocalDateTimeUtil.parse("2020-11-23", DatePattern.NORM_DATE_PATTERN))));
  192 + // 准备参数
  193 + FileConfigPageReqVO reqVO = new FileConfigPageReqVO();
  194 + reqVO.setName("芋道");
  195 + reqVO.setStorage(FileStorageEnum.LOCAL.getStorage());
  196 + reqVO.setCreateTime((new LocalDateTime[]{buildTime(2020, 1, 1),
  197 + buildTime(2020, 1, 24)}));
  198 +
  199 + // 调用
  200 + PageResult<FileConfigDO> pageResult = fileConfigService.getFileConfigPage(reqVO);
  201 + // 断言
  202 + assertEquals(1, pageResult.getTotal());
  203 + assertEquals(1, pageResult.getList().size());
  204 + assertPojoEquals(dbFileConfig, pageResult.getList().get(0));
204 205 }
205 206  
206 207 @Test
... ...
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/job/JobLogServiceImplTest.java
... ... @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.infra.service.job;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
5   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogExportReqVO;
6 5 import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogPageReqVO;
7 6 import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobLogDO;
8 7 import cn.iocoder.yudao.module.infra.dal.mysql.job.JobLogMapper;
... ... @@ -12,14 +11,11 @@ import org.springframework.context.annotation.Import;
12 11  
13 12 import javax.annotation.Resource;
14 13 import java.time.LocalDateTime;
15   -import java.util.Collection;
16   -import java.util.List;
17 14  
18 15 import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildTime;
19 16 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
20 17 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
21 18 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
22   -import static java.util.Collections.singleton;
23 19 import static org.junit.jupiter.api.Assertions.assertEquals;
24 20 import static org.junit.jupiter.api.Assertions.assertNotNull;
25 21  
... ... @@ -111,23 +107,6 @@ public class JobLogServiceImplTest extends BaseDbUnitTest {
111 107 }
112 108  
113 109 @Test
114   - public void testGetJobLogList() {
115   - // mock 数据
116   - JobLogDO dbJobLog = randomPojo(JobLogDO.class, o -> o.setExecuteIndex(1));
117   - jobLogMapper.insert(dbJobLog);
118   - // 测试 handlerName 不匹配
119   - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> {}));
120   - // 准备参数
121   - Collection<Long> ids = singleton(dbJobLog.getId());
122   -
123   - // 调用
124   - List<JobLogDO> list = jobLogService.getJobLogList(ids);
125   - // 断言
126   - assertEquals(1, list.size());
127   - assertPojoEquals(dbJobLog, list.get(0));
128   - }
129   -
130   - @Test
131 110 public void testGetJobPage() {
132 111 // mock 数据
133 112 JobLogDO dbJobLog = randomPojo(JobLogDO.class, o -> {
... ... @@ -164,40 +143,4 @@ public class JobLogServiceImplTest extends BaseDbUnitTest {
164 143 assertPojoEquals(dbJobLog, pageResult.getList().get(0));
165 144 }
166 145  
167   - @Test
168   - public void testGetJobList_export() {
169   - // mock 数据
170   - JobLogDO dbJobLog = randomPojo(JobLogDO.class, o -> {
171   - o.setExecuteIndex(1);
172   - o.setHandlerName("handlerName 单元测试");
173   - o.setStatus(JobLogStatusEnum.SUCCESS.getStatus());
174   - o.setBeginTime(buildTime(2021, 1, 8));
175   - o.setEndTime(buildTime(2021, 1, 8));
176   - });
177   - jobLogMapper.insert(dbJobLog);
178   - // 测试 jobId 不匹配
179   - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setJobId(randomLongId())));
180   - // 测试 handlerName 不匹配
181   - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setHandlerName(randomString())));
182   - // 测试 beginTime 不匹配
183   - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setBeginTime(buildTime(2021, 1, 7))));
184   - // 测试 endTime 不匹配
185   - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setEndTime(buildTime(2021, 1, 9))));
186   - // 测试 status 不匹配
187   - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setStatus(JobLogStatusEnum.FAILURE.getStatus())));
188   - // 准备参数
189   - JobLogExportReqVO reqVo = new JobLogExportReqVO();
190   - reqVo.setJobId(dbJobLog.getJobId());
191   - reqVo.setHandlerName("单元");
192   - reqVo.setBeginTime(dbJobLog.getBeginTime());
193   - reqVo.setEndTime(dbJobLog.getEndTime());
194   - reqVo.setStatus(JobLogStatusEnum.SUCCESS.getStatus());
195   -
196   - // 调用
197   - List<JobLogDO> list = jobLogService.getJobLogList(reqVo);
198   - // 断言
199   - assertEquals(1, list.size());
200   - assertPojoEquals(dbJobLog, list.get(0));
201   - }
202   -
203 146 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/job/JobServiceImplTest.java
... ... @@ -3,10 +3,8 @@ package cn.iocoder.yudao.module.infra.service.job;
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.quartz.core.scheduler.SchedulerManager;
5 5 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
6   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobCreateReqVO;
7   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobExportReqVO;
8 6 import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobPageReqVO;
9   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobUpdateReqVO;
  7 +import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobSaveReqVO;
10 8 import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobDO;
11 9 import cn.iocoder.yudao.module.infra.dal.mysql.job.JobMapper;
12 10 import cn.iocoder.yudao.module.infra.enums.job.JobStatusEnum;
... ... @@ -16,17 +14,13 @@ import org.springframework.boot.test.mock.mockito.MockBean;
16 14 import org.springframework.context.annotation.Import;
17 15  
18 16 import javax.annotation.Resource;
19   -import java.util.Collection;
20   -import java.util.List;
21 17  
22   -import static cn.hutool.core.util.RandomUtil.randomEle;
23 18 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
24 19 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
25 20 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
26 21 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
27 22 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString;
28 23 import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.*;
29   -import static java.util.Collections.singletonList;
30 24 import static org.junit.jupiter.api.Assertions.*;
31 25 import static org.mockito.ArgumentMatchers.eq;
32 26 import static org.mockito.Mockito.verify;
... ... @@ -44,7 +38,7 @@ public class JobServiceImplTest extends BaseDbUnitTest {
44 38 @Test
45 39 public void testCreateJob_cronExpressionValid() {
46 40 // 准备参数。Cron 表达式为 String 类型,默认随机字符串。
47   - JobCreateReqVO reqVO = randomPojo(JobCreateReqVO.class);
  41 + JobSaveReqVO reqVO = randomPojo(JobSaveReqVO.class);
48 42  
49 43 // 调用,并断言异常
50 44 assertServiceException(() -> jobService.createJob(reqVO), JOB_CRON_EXPRESSION_VALID);
... ... @@ -53,7 +47,7 @@ public class JobServiceImplTest extends BaseDbUnitTest {
53 47 @Test
54 48 public void testCreateJob_jobHandlerExists() throws SchedulerException {
55 49 // 准备参数 指定 Cron 表达式
56   - JobCreateReqVO reqVO = randomPojo(JobCreateReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *"));
  50 + JobSaveReqVO reqVO = randomPojo(JobSaveReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *"));
57 51  
58 52 // 调用
59 53 jobService.createJob(reqVO);
... ... @@ -64,7 +58,8 @@ public class JobServiceImplTest extends BaseDbUnitTest {
64 58 @Test
65 59 public void testCreateJob_success() throws SchedulerException {
66 60 // 准备参数 指定 Cron 表达式
67   - JobCreateReqVO reqVO = randomPojo(JobCreateReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *"));
  61 + JobSaveReqVO reqVO = randomPojo(JobSaveReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *"))
  62 + .setId(null);
68 63  
69 64 // 调用
70 65 Long jobId = jobService.createJob(reqVO);
... ... @@ -72,7 +67,7 @@ public class JobServiceImplTest extends BaseDbUnitTest {
72 67 assertNotNull(jobId);
73 68 // 校验记录的属性是否正确
74 69 JobDO job = jobMapper.selectById(jobId);
75   - assertPojoEquals(reqVO, job);
  70 + assertPojoEquals(reqVO, job, "id");
76 71 assertEquals(JobStatusEnum.NORMAL.getStatus(), job.getStatus());
77 72 // 校验调用
78 73 verify(schedulerManager).addJob(eq(job.getId()), eq(job.getHandlerName()), eq(job.getHandlerParam()),
... ... @@ -82,7 +77,7 @@ public class JobServiceImplTest extends BaseDbUnitTest {
82 77 @Test
83 78 public void testUpdateJob_jobNotExists(){
84 79 // 准备参数
85   - JobUpdateReqVO reqVO = randomPojo(JobUpdateReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *"));
  80 + JobSaveReqVO reqVO = randomPojo(JobSaveReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *"));
86 81  
87 82 // 调用,并断言异常
88 83 assertServiceException(() -> jobService.updateJob(reqVO), JOB_NOT_EXISTS);
... ... @@ -94,7 +89,7 @@ public class JobServiceImplTest extends BaseDbUnitTest {
94 89 JobDO job = randomPojo(JobDO.class, o -> o.setStatus(JobStatusEnum.INIT.getStatus()));
95 90 jobMapper.insert(job);
96 91 // 准备参数
97   - JobUpdateReqVO updateReqVO = randomPojo(JobUpdateReqVO.class, o -> {
  92 + JobSaveReqVO updateReqVO = randomPojo(JobSaveReqVO.class, o -> {
98 93 o.setId(job.getId());
99 94 o.setCronExpression("0 0/1 * * * ? *");
100 95 });
... ... @@ -110,7 +105,7 @@ public class JobServiceImplTest extends BaseDbUnitTest {
110 105 JobDO job = randomPojo(JobDO.class, o -> o.setStatus(JobStatusEnum.NORMAL.getStatus()));
111 106 jobMapper.insert(job);
112 107 // 准备参数
113   - JobUpdateReqVO updateReqVO = randomPojo(JobUpdateReqVO.class, o -> {
  108 + JobSaveReqVO updateReqVO = randomPojo(JobSaveReqVO.class, o -> {
114 109 o.setId(job.getId());
115 110 o.setCronExpression("0 0/1 * * * ? *");
116 111 });
... ... @@ -201,25 +196,6 @@ public class JobServiceImplTest extends BaseDbUnitTest {
201 196 }
202 197  
203 198 @Test
204   - public void testGetJobList() {
205   - // mock 数据
206   - JobDO dbJob = randomPojo(JobDO.class, o -> {
207   - o.setStatus(randomEle(JobStatusEnum.values()).getStatus()); // 保证 status 的范围
208   - });
209   - jobMapper.insert(dbJob);
210   - // 测试 id 不匹配
211   - jobMapper.insert(cloneIgnoreId(dbJob, o -> {}));
212   -
213   - // 准备参数
214   - Collection<Long> ids = singletonList(dbJob.getId());
215   - // 调用
216   - List<JobDO> list = jobService.getJobList(ids);
217   - // 断言
218   - assertEquals(1, list.size());
219   - assertPojoEquals(dbJob, list.get(0));
220   - }
221   -
222   - @Test
223 199 public void testGetJobPage() {
224 200 // mock 数据
225 201 JobDO dbJob = randomPojo(JobDO.class, o -> {
... ... @@ -249,34 +225,6 @@ public class JobServiceImplTest extends BaseDbUnitTest {
249 225 }
250 226  
251 227 @Test
252   - public void testGetJobList_export() {
253   - // mock 数据
254   - JobDO dbJob = randomPojo(JobDO.class, o -> {
255   - o.setName("定时任务测试");
256   - o.setHandlerName("handlerName 单元测试");
257   - o.setStatus(JobStatusEnum.INIT.getStatus());
258   - });
259   - jobMapper.insert(dbJob);
260   - // 测试 name 不匹配
261   - jobMapper.insert(cloneIgnoreId(dbJob, o -> o.setName("土豆")));
262   - // 测试 status 不匹配
263   - jobMapper.insert(cloneIgnoreId(dbJob, o -> o.setStatus(JobStatusEnum.NORMAL.getStatus())));
264   - // 测试 handlerName 不匹配
265   - jobMapper.insert(cloneIgnoreId(dbJob, o -> o.setHandlerName(randomString())));
266   - // 准备参数
267   - JobExportReqVO reqVo = new JobExportReqVO();
268   - reqVo.setName("定时");
269   - reqVo.setStatus(JobStatusEnum.INIT.getStatus());
270   - reqVo.setHandlerName("单元");
271   -
272   - // 调用
273   - List<JobDO> list = jobService.getJobList(reqVo);
274   - // 断言
275   - assertEquals(1, list.size());
276   - assertPojoEquals(dbJob, list.get(0));
277   - }
278   -
279   - @Test
280 228 public void testGetJob() {
281 229 // mock 数据
282 230 JobDO dbJob = randomPojo(JobDO.class);
... ...
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/logger/ApiAccessLogServiceImplTest.java
... ... @@ -5,7 +5,6 @@ import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstant
5 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 6 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
7 7 import cn.iocoder.yudao.module.infra.api.logger.dto.ApiAccessLogCreateReqDTO;
8   -import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogExportReqVO;
9 8 import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogPageReqVO;
10 9 import cn.iocoder.yudao.module.infra.dal.dataobject.logger.ApiAccessLogDO;
11 10 import cn.iocoder.yudao.module.infra.dal.mysql.logger.ApiAccessLogMapper;
... ... @@ -13,7 +12,6 @@ import org.junit.jupiter.api.Test;
13 12 import org.springframework.context.annotation.Import;
14 13  
15 14 import javax.annotation.Resource;
16   -import java.util.List;
17 15  
18 16 import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime;
19 17 import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildTime;
... ... @@ -76,49 +74,6 @@ public class ApiAccessLogServiceImplTest extends BaseDbUnitTest {
76 74 }
77 75  
78 76 @Test
79   - public void testGetApiAccessLogList() {
80   - ApiAccessLogDO apiAccessLogDO = randomPojo(ApiAccessLogDO.class, o -> {
81   - o.setUserId(2233L);
82   - o.setUserType(UserTypeEnum.ADMIN.getValue());
83   - o.setApplicationName("yudao-test");
84   - o.setRequestUrl("foo");
85   - o.setBeginTime(buildTime(2021, 3, 13));
86   - o.setDuration(1000);
87   - o.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode());
88   - });
89   - apiAccessLogMapper.insert(apiAccessLogDO);
90   - // 测试 userId 不匹配
91   - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setUserId(3344L)));
92   - // 测试 userType 不匹配
93   - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setUserType(UserTypeEnum.MEMBER.getValue())));
94   - // 测试 applicationName 不匹配
95   - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setApplicationName("test")));
96   - // 测试 requestUrl 不匹配
97   - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setRequestUrl("bar")));
98   - // 测试 beginTime 不匹配:构造一个早期时间 2021-02-06 00:00:00
99   - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setBeginTime(buildTime(2021, 2, 6))));
100   - // 测试 duration 不匹配
101   - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setDuration(100)));
102   - // 测试 resultCode 不匹配
103   - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setResultCode(2)));
104   - // 准备参数
105   - ApiAccessLogExportReqVO reqVO = new ApiAccessLogExportReqVO();
106   - reqVO.setUserId(2233L);
107   - reqVO.setUserType(UserTypeEnum.ADMIN.getValue());
108   - reqVO.setApplicationName("yudao-test");
109   - reqVO.setRequestUrl("foo");
110   - reqVO.setBeginTime(buildBetweenTime(2021, 3, 13, 2021, 3, 13));
111   - reqVO.setDuration(1000);
112   - reqVO.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode());
113   -
114   - // 调用
115   - List<ApiAccessLogDO> list = apiAccessLogService.getApiAccessLogList(reqVO);
116   - // 断言,只查到了一条符合条件的
117   - assertEquals(1, list.size());
118   - assertPojoEquals(apiAccessLogDO, list.get(0));
119   - }
120   -
121   - @Test
122 77 public void testCreateApiAccessLog() {
123 78 // 准备参数
124 79 ApiAccessLogCreateReqDTO createDTO = randomPojo(ApiAccessLogCreateReqDTO.class);
... ...
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/logger/ApiErrorLogServiceImplTest.java
... ... @@ -4,7 +4,6 @@ import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
4 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 5 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
6 6 import cn.iocoder.yudao.module.infra.api.logger.dto.ApiErrorLogCreateReqDTO;
7   -import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogExportReqVO;
8 7 import cn.iocoder.yudao.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogPageReqVO;
9 8 import cn.iocoder.yudao.module.infra.dal.dataobject.logger.ApiErrorLogDO;
10 9 import cn.iocoder.yudao.module.infra.dal.mysql.logger.ApiErrorLogMapper;
... ... @@ -13,7 +12,6 @@ import org.junit.jupiter.api.Test;
13 12 import org.springframework.context.annotation.Import;
14 13  
15 14 import javax.annotation.Resource;
16   -import java.util.List;
17 15  
18 16 import static cn.hutool.core.util.RandomUtil.randomEle;
19 17 import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime;
... ... @@ -79,46 +77,6 @@ public class ApiErrorLogServiceImplTest extends BaseDbUnitTest {
79 77 }
80 78  
81 79 @Test
82   - public void testGetApiErrorLogList() {
83   - // mock 数据
84   - ApiErrorLogDO apiErrorLogDO = randomPojo(ApiErrorLogDO.class, o -> {
85   - o.setUserId(2233L);
86   - o.setUserType(UserTypeEnum.ADMIN.getValue());
87   - o.setApplicationName("yudao-test");
88   - o.setRequestUrl("foo");
89   - o.setExceptionTime(buildTime(2021, 3, 13));
90   - o.setProcessStatus(ApiErrorLogProcessStatusEnum.INIT.getStatus());
91   - });
92   - apiErrorLogMapper.insert(apiErrorLogDO);
93   - // 测试 userId 不匹配
94   - apiErrorLogMapper.insert(cloneIgnoreId(apiErrorLogDO, o -> o.setUserId(3344L)));
95   - // 测试 userType 不匹配
96   - apiErrorLogMapper.insert(cloneIgnoreId(apiErrorLogDO, logDO -> logDO.setUserType(UserTypeEnum.MEMBER.getValue())));
97   - // 测试 applicationName 不匹配
98   - apiErrorLogMapper.insert(cloneIgnoreId(apiErrorLogDO, logDO -> logDO.setApplicationName("test")));
99   - // 测试 requestUrl 不匹配
100   - apiErrorLogMapper.insert(cloneIgnoreId(apiErrorLogDO, logDO -> logDO.setRequestUrl("bar")));
101   - // 测试 exceptionTime 不匹配:构造一个早期时间 2021-02-06 00:00:00
102   - apiErrorLogMapper.insert(cloneIgnoreId(apiErrorLogDO, logDO -> logDO.setExceptionTime(buildTime(2021, 2, 6))));
103   - // 测试 progressStatus 不匹配
104   - apiErrorLogMapper.insert(cloneIgnoreId(apiErrorLogDO, logDO -> logDO.setProcessStatus(ApiErrorLogProcessStatusEnum.DONE.getStatus())));
105   - // 准备参数
106   - ApiErrorLogExportReqVO reqVO = new ApiErrorLogExportReqVO();
107   - reqVO.setUserId(2233L);
108   - reqVO.setUserType(UserTypeEnum.ADMIN.getValue());
109   - reqVO.setApplicationName("yudao-test");
110   - reqVO.setRequestUrl("foo");
111   - reqVO.setExceptionTime(buildBetweenTime(2021, 3, 1, 2021, 3, 31));
112   - reqVO.setProcessStatus(ApiErrorLogProcessStatusEnum.INIT.getStatus());
113   -
114   - // 调用
115   - List<ApiErrorLogDO> list = apiErrorLogService.getApiErrorLogList(reqVO);
116   - // 断言,只查到了一条符合条件的
117   - assertEquals(1, list.size());
118   - assertPojoEquals(apiErrorLogDO, list.get(0));
119   - }
120   -
121   - @Test
122 80 public void testCreateApiErrorLog() {
123 81 // 准备参数
124 82 ApiErrorLogCreateReqDTO createDTO = randomPojo(ApiErrorLogCreateReqDTO.class);
... ...
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/permission/DataScopeEnum.java
1 1 package cn.iocoder.yudao.module.system.enums.permission;
2 2  
  3 +import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
3 4 import lombok.AllArgsConstructor;
4 5 import lombok.Getter;
5 6  
  7 +import java.util.Arrays;
  8 +
6 9 /**
7 10 * 数据范围枚举类
8 11 *
... ... @@ -12,7 +15,7 @@ import lombok.Getter;
12 15 */
13 16 @Getter
14 17 @AllArgsConstructor
15   -public enum DataScopeEnum {
  18 +public enum DataScopeEnum implements IntArrayValuable {
16 19  
17 20 ALL(1), // 全部数据权限
18 21  
... ... @@ -27,4 +30,11 @@ public enum DataScopeEnum {
27 30 */
28 31 private final Integer scope;
29 32  
  33 + public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(DataScopeEnum::getScope).toArray();
  34 +
  35 + @Override
  36 + public int[] array() {
  37 + return ARRAYS;
  38 + }
  39 +
30 40 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApiImpl.java
1 1 package cn.iocoder.yudao.module.system.api.dept;
2 2  
  3 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
3 4 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
4   -import cn.iocoder.yudao.module.system.convert.dept.DeptConvert;
5 5 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
6 6 import cn.iocoder.yudao.module.system.service.dept.DeptService;
7 7 import org.springframework.stereotype.Service;
... ... @@ -24,13 +24,13 @@ public class DeptApiImpl implements DeptApi {
24 24 @Override
25 25 public DeptRespDTO getDept(Long id) {
26 26 DeptDO dept = deptService.getDept(id);
27   - return DeptConvert.INSTANCE.convert03(dept);
  27 + return BeanUtils.toBean(dept, DeptRespDTO.class);
28 28 }
29 29  
30 30 @Override
31 31 public List<DeptRespDTO> getDeptList(Collection<Long> ids) {
32 32 List<DeptDO> depts = deptService.getDeptList(ids);
33   - return DeptConvert.INSTANCE.convertList03(depts);
  33 + return BeanUtils.toBean(depts, DeptRespDTO.class);
34 34 }
35 35  
36 36 @Override
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dict/DictDataApiImpl.java
1 1 package cn.iocoder.yudao.module.system.api.dict;
2 2  
  3 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
3 4 import cn.iocoder.yudao.module.system.api.dict.dto.DictDataRespDTO;
4   -import cn.iocoder.yudao.module.system.convert.dict.DictDataConvert;
5 5 import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
6 6 import cn.iocoder.yudao.module.system.service.dict.DictDataService;
7 7 import org.springframework.stereotype.Service;
... ... @@ -28,13 +28,13 @@ public class DictDataApiImpl implements DictDataApi {
28 28 @Override
29 29 public DictDataRespDTO getDictData(String dictType, String value) {
30 30 DictDataDO dictData = dictDataService.getDictData(dictType, value);
31   - return DictDataConvert.INSTANCE.convert02(dictData);
  31 + return BeanUtils.toBean(dictData, DictDataRespDTO.class);
32 32 }
33 33  
34 34 @Override
35 35 public DictDataRespDTO parseDictData(String dictType, String label) {
36 36 DictDataDO dictData = dictDataService.parseDictData(dictType, label);
37   - return DictDataConvert.INSTANCE.convert02(dictData);
  37 + return BeanUtils.toBean(dictData, DictDataRespDTO.class);
38 38 }
39 39  
40 40 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/oauth2/OAuth2TokenApiImpl.java
1 1 package cn.iocoder.yudao.module.system.api.oauth2;
2 2  
  3 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
3 4 import cn.iocoder.yudao.module.system.api.oauth2.dto.OAuth2AccessTokenCheckRespDTO;
4 5 import cn.iocoder.yudao.module.system.api.oauth2.dto.OAuth2AccessTokenCreateReqDTO;
5 6 import cn.iocoder.yudao.module.system.api.oauth2.dto.OAuth2AccessTokenRespDTO;
6   -import cn.iocoder.yudao.module.system.convert.auth.OAuth2TokenConvert;
7 7 import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO;
8 8 import cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenService;
9 9 import org.springframework.stereotype.Service;
... ... @@ -25,24 +25,25 @@ public class OAuth2TokenApiImpl implements OAuth2TokenApi {
25 25 public OAuth2AccessTokenRespDTO createAccessToken(OAuth2AccessTokenCreateReqDTO reqDTO) {
26 26 OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.createAccessToken(
27 27 reqDTO.getUserId(), reqDTO.getUserType(), reqDTO.getClientId(), reqDTO.getScopes());
28   - return OAuth2TokenConvert.INSTANCE.convert2(accessTokenDO);
  28 + return BeanUtils.toBean(accessTokenDO, OAuth2AccessTokenRespDTO.class);
29 29 }
30 30  
31 31 @Override
32 32 public OAuth2AccessTokenCheckRespDTO checkAccessToken(String accessToken) {
33   - return OAuth2TokenConvert.INSTANCE.convert(oauth2TokenService.checkAccessToken(accessToken));
  33 + OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.checkAccessToken(accessToken);
  34 + return BeanUtils.toBean(accessTokenDO, OAuth2AccessTokenCheckRespDTO.class);
34 35 }
35 36  
36 37 @Override
37 38 public OAuth2AccessTokenRespDTO removeAccessToken(String accessToken) {
38 39 OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.removeAccessToken(accessToken);
39   - return OAuth2TokenConvert.INSTANCE.convert2(accessTokenDO);
  40 + return BeanUtils.toBean(accessTokenDO, OAuth2AccessTokenRespDTO.class);
40 41 }
41 42  
42 43 @Override
43 44 public OAuth2AccessTokenRespDTO refreshAccessToken(String refreshToken, String clientId) {
44 45 OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.refreshAccessToken(refreshToken, clientId);
45   - return OAuth2TokenConvert.INSTANCE.convert2(accessTokenDO);
  46 + return BeanUtils.toBean(accessTokenDO, OAuth2AccessTokenRespDTO.class);
46 47 }
47 48  
48 49 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/social/SocialClientApiImpl.java
1 1 package cn.iocoder.yudao.module.system.api.social;
2 2  
3 3 import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
  4 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
4 5 import cn.iocoder.yudao.module.system.api.social.dto.SocialWxJsapiSignatureRespDTO;
5 6 import cn.iocoder.yudao.module.system.api.social.dto.SocialWxPhoneNumberInfoRespDTO;
6   -import cn.iocoder.yudao.module.system.convert.social.SocialClientConvert;
7 7 import cn.iocoder.yudao.module.system.service.social.SocialClientService;
8 8 import me.chanjar.weixin.common.bean.WxJsapiSignature;
9 9 import org.springframework.stereotype.Service;
... ... @@ -31,13 +31,13 @@ public class SocialClientApiImpl implements SocialClientApi {
31 31 @Override
32 32 public SocialWxJsapiSignatureRespDTO createWxMpJsapiSignature(Integer userType, String url) {
33 33 WxJsapiSignature signature = socialClientService.createWxMpJsapiSignature(userType, url);
34   - return SocialClientConvert.INSTANCE.convert(signature);
  34 + return BeanUtils.toBean(signature, SocialWxJsapiSignatureRespDTO.class);
35 35 }
36 36  
37 37 @Override
38 38 public SocialWxPhoneNumberInfoRespDTO getWxMaPhoneNumberInfo(Integer userType, String phoneCode) {
39 39 WxMaPhoneNumberInfo info = socialClientService.getWxMaPhoneNumberInfo(userType, phoneCode);
40   - return SocialClientConvert.INSTANCE.convert(info);
  40 + return BeanUtils.toBean(info, SocialWxPhoneNumberInfoRespDTO.class);
41 41 }
42 42  
43 43 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApiImpl.java
1 1 package cn.iocoder.yudao.module.system.api.user;
2 2  
  3 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
3 4 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
4   -import cn.iocoder.yudao.module.system.convert.user.UserConvert;
5 5 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
6 6 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
7 7 import org.springframework.stereotype.Service;
... ... @@ -24,25 +24,25 @@ public class AdminUserApiImpl implements AdminUserApi {
24 24 @Override
25 25 public AdminUserRespDTO getUser(Long id) {
26 26 AdminUserDO user = userService.getUser(id);
27   - return UserConvert.INSTANCE.convert4(user);
  27 + return BeanUtils.toBean(user, AdminUserRespDTO.class);
28 28 }
29 29  
30 30 @Override
31 31 public List<AdminUserRespDTO> getUserList(Collection<Long> ids) {
32 32 List<AdminUserDO> users = userService.getUserList(ids);
33   - return UserConvert.INSTANCE.convertList4(users);
  33 + return BeanUtils.toBean(users, AdminUserRespDTO.class);
34 34 }
35 35  
36 36 @Override
37 37 public List<AdminUserRespDTO> getUserListByDeptIds(Collection<Long> deptIds) {
38 38 List<AdminUserDO> users = userService.getUserListByDeptIds(deptIds);
39   - return UserConvert.INSTANCE.convertList4(users);
  39 + return BeanUtils.toBean(users, AdminUserRespDTO.class);
40 40 }
41 41  
42 42 @Override
43 43 public List<AdminUserRespDTO> getUserListByPostIds(Collection<Long> postIds) {
44 44 List<AdminUserDO> users = userService.getUserListByPostIds(postIds);
45   - return UserConvert.INSTANCE.convertList4(users);
  45 + return BeanUtils.toBean(users, AdminUserRespDTO.class);
46 46 }
47 47  
48 48 @Override
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/captcha/CaptchaController.java
... ... @@ -17,11 +17,6 @@ import javax.annotation.Resource;
17 17 import javax.annotation.security.PermitAll;
18 18 import javax.servlet.http.HttpServletRequest;
19 19  
20   -/**
21   - * 验证码
22   - *
23   - * @author 芋道源码
24   - */
25 20 @Tag(name = "管理后台 - 验证码")
26 21 @RestController("adminCaptchaController")
27 22 @RequestMapping("/system/captcha")
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/DeptController.java
... ... @@ -2,20 +2,22 @@ package cn.iocoder.yudao.module.system.controller.admin.dept;
2 2  
3 3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
5   -import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.*;
6   -import cn.iocoder.yudao.module.system.convert.dept.DeptConvert;
  5 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  6 +import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO;
  7 +import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptRespVO;
  8 +import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO;
  9 +import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSimpleRespVO;
7 10 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
8 11 import cn.iocoder.yudao.module.system.service.dept.DeptService;
9   -import io.swagger.v3.oas.annotations.tags.Tag;
10   -import io.swagger.v3.oas.annotations.Parameter;
11 12 import io.swagger.v3.oas.annotations.Operation;
  13 +import io.swagger.v3.oas.annotations.Parameter;
  14 +import io.swagger.v3.oas.annotations.tags.Tag;
12 15 import org.springframework.security.access.prepost.PreAuthorize;
13 16 import org.springframework.validation.annotation.Validated;
14 17 import org.springframework.web.bind.annotation.*;
15 18  
16 19 import javax.annotation.Resource;
17 20 import javax.validation.Valid;
18   -import java.util.Comparator;
19 21 import java.util.List;
20 22  
21 23 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
... ... @@ -32,16 +34,16 @@ public class DeptController {
32 34 @PostMapping("create")
33 35 @Operation(summary = "创建部门")
34 36 @PreAuthorize("@ss.hasPermission('system:dept:create')")
35   - public CommonResult<Long> createDept(@Valid @RequestBody DeptCreateReqVO reqVO) {
36   - Long deptId = deptService.createDept(reqVO);
  37 + public CommonResult<Long> createDept(@Valid @RequestBody DeptSaveReqVO createReqVO) {
  38 + Long deptId = deptService.createDept(createReqVO);
37 39 return success(deptId);
38 40 }
39 41  
40 42 @PutMapping("update")
41 43 @Operation(summary = "更新部门")
42 44 @PreAuthorize("@ss.hasPermission('system:dept:update')")
43   - public CommonResult<Boolean> updateDept(@Valid @RequestBody DeptUpdateReqVO reqVO) {
44   - deptService.updateDept(reqVO);
  45 + public CommonResult<Boolean> updateDept(@Valid @RequestBody DeptSaveReqVO updateReqVO) {
  46 + deptService.updateDept(updateReqVO);
45 47 return success(true);
46 48 }
47 49  
... ... @@ -59,20 +61,15 @@ public class DeptController {
59 61 @PreAuthorize("@ss.hasPermission('system:dept:query')")
60 62 public CommonResult<List<DeptRespVO>> getDeptList(DeptListReqVO reqVO) {
61 63 List<DeptDO> list = deptService.getDeptList(reqVO);
62   - list.sort(Comparator.comparing(DeptDO::getSort));
63   - return success(DeptConvert.INSTANCE.convertList(list));
  64 + return success(BeanUtils.toBean(list, DeptRespVO.class));
64 65 }
65 66  
66   - @GetMapping("/list-all-simple")
  67 + @GetMapping(value = {"/list-all-simple", "/simple-list"})
67 68 @Operation(summary = "获取部门精简信息列表", description = "只包含被开启的部门,主要用于前端的下拉选项")
68 69 public CommonResult<List<DeptSimpleRespVO>> getSimpleDeptList() {
69   - // 获得部门列表,只要开启状态的
70   - DeptListReqVO reqVO = new DeptListReqVO();
71   - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
72   - List<DeptDO> list = deptService.getDeptList(reqVO);
73   - // 排序后,返回给前端
74   - list.sort(Comparator.comparing(DeptDO::getSort));
75   - return success(DeptConvert.INSTANCE.convertList02(list));
  70 + List<DeptDO> list = deptService.getDeptList(
  71 + new DeptListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus()));
  72 + return success(BeanUtils.toBean(list, DeptSimpleRespVO.class));
76 73 }
77 74  
78 75 @GetMapping("/get")
... ... @@ -80,7 +77,8 @@ public class DeptController {
80 77 @Parameter(name = "id", description = "编号", required = true, example = "1024")
81 78 @PreAuthorize("@ss.hasPermission('system:dept:query')")
82 79 public CommonResult<DeptRespVO> getDept(@RequestParam("id") Long id) {
83   - return success(DeptConvert.INSTANCE.convert(deptService.getDept(id)));
  80 + DeptDO dept = deptService.getDept(id);
  81 + return success(BeanUtils.toBean(dept, DeptRespVO.class));
84 82 }
85 83  
86 84 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/PostController.java
... ... @@ -73,7 +73,7 @@ public class PostController {
73 73 return success(BeanUtils.toBean(post, PostRespVO.class));
74 74 }
75 75  
76   - @GetMapping("/list-all-simple")
  76 + @GetMapping(value = {"/list-all-simple", "simple-list"})
77 77 @Operation(summary = "获取岗位全列表", description = "只包含被开启的岗位,主要用于前端的下拉选项")
78 78 public CommonResult<List<PostSimpleRespVO>> getSimplePostList() {
79 79 // 获得岗位列表,只要开启状态的
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptCreateReqVO.java deleted
1   -package cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept;
2   -import io.swagger.v3.oas.annotations.media.Schema;
3   -import lombok.Data;
4   -import lombok.EqualsAndHashCode;
5   -import lombok.ToString;
6   -
7   -@Schema(description = "管理后台 - 部门创建 Request VO")
8   -@Data
9   -@EqualsAndHashCode(callSuper = true)
10   -@ToString(callSuper = true)
11   -public class DeptCreateReqVO extends DeptBaseVO {
12   -}
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptRespVO.java
... ... @@ -2,19 +2,35 @@ package cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept;
2 2  
3 3 import io.swagger.v3.oas.annotations.media.Schema;
4 4 import lombok.Data;
5   -import lombok.EqualsAndHashCode;
6 5  
7 6 import java.time.LocalDateTime;
8 7  
9 8 @Schema(description = "管理后台 - 部门信息 Response VO")
10 9 @Data
11   -@EqualsAndHashCode(callSuper = true)
12   -public class DeptRespVO extends DeptBaseVO {
  10 +public class DeptRespVO {
13 11  
14   - @Schema(description = "部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  12 + @Schema(description = "部门编号", example = "1024")
15 13 private Long id;
16 14  
17   - @Schema(description = "状态,参见 CommonStatusEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  15 + @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
  16 + private String name;
  17 +
  18 + @Schema(description = "父部门 ID", example = "1024")
  19 + private Long parentId;
  20 +
  21 + @Schema(description = "显示顺序不能为空", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  22 + private Integer sort;
  23 +
  24 + @Schema(description = "负责人的用户编号", example = "2048")
  25 + private Long leaderUserId;
  26 +
  27 + @Schema(description = "联系电话", example = "15601691000")
  28 + private String phone;
  29 +
  30 + @Schema(description = "邮箱", example = "yudao@iocoder.cn")
  31 + private String email;
  32 +
  33 + @Schema(description = "状态,见 CommonStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
18 34 private Integer status;
19 35  
20 36 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptBaseVO.java renamed to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptSaveReqVO.java
1 1 package cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept;
2 2  
  3 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  4 +import cn.iocoder.yudao.framework.common.validation.InEnum;
3 5 import io.swagger.v3.oas.annotations.media.Schema;
4 6 import lombok.Data;
5 7  
... ... @@ -8,19 +10,19 @@ import javax.validation.constraints.NotBlank;
8 10 import javax.validation.constraints.NotNull;
9 11 import javax.validation.constraints.Size;
10 12  
11   -/**
12   - * 部门 Base VO,提供给添加、修改、详细的子 VO 使用
13   - * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
14   - */
  13 +@Schema(description = "管理后台 - 部门创建/修改 Request VO")
15 14 @Data
16   -public class DeptBaseVO {
  15 +public class DeptSaveReqVO {
17 16  
18   - @Schema(description = "菜单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
  17 + @Schema(description = "部门编号", example = "1024")
  18 + private Long id;
  19 +
  20 + @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
19 21 @NotBlank(message = "部门名称不能为空")
20   - @Size(max = 30, message = "部门名称长度不能超过30个字符")
  22 + @Size(max = 30, message = "部门名称长度不能超过 30 个字符")
21 23 private String name;
22 24  
23   - @Schema(description = "父菜单 ID", example = "1024")
  25 + @Schema(description = "父部门 ID", example = "1024")
24 26 private Long parentId;
25 27  
26 28 @Schema(description = "显示顺序不能为空", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
... ... @@ -36,12 +38,12 @@ public class DeptBaseVO {
36 38  
37 39 @Schema(description = "邮箱", example = "yudao@iocoder.cn")
38 40 @Email(message = "邮箱格式不正确")
39   - @Size(max = 50, message = "邮箱长度不能超过50个字符")
  41 + @Size(max = 50, message = "邮箱长度不能超过 50 个字符")
40 42 private String email;
41 43  
42 44 @Schema(description = "状态,见 CommonStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
43 45 @NotNull(message = "状态不能为空")
44   -// @InEnum(value = CommonStatusEnum.class, message = "修改状态必须是 {value}")
  46 + @InEnum(value = CommonStatusEnum.class, message = "修改状态必须是 {value}")
45 47 private Integer status;
46 48  
47 49 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptUpdateReqVO.java deleted
1   -package cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.Data;
5   -import lombok.EqualsAndHashCode;
6   -
7   -import javax.validation.constraints.NotNull;
8   -
9   -@Schema(description = "管理后台 - 部门更新 Request VO")
10   -@Data
11   -@EqualsAndHashCode(callSuper = true)
12   -public class DeptUpdateReqVO extends DeptBaseVO {
13   -
14   - @Schema(description = "部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
15   - @NotNull(message = "部门编号不能为空")
16   - private Long id;
17   -
18   -}
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/post/PostRespVO.java
1 1 package cn.iocoder.yudao.module.system.controller.admin.dept.vo.post;
2 2  
3 3 import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
  4 +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
4 5 import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
  6 +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
5 7 import com.alibaba.excel.annotation.ExcelProperty;
6 8 import io.swagger.v3.oas.annotations.media.Schema;
7 9 import lombok.Data;
... ... @@ -10,6 +12,7 @@ import java.time.LocalDateTime;
10 12  
11 13 @Schema(description = "管理后台 - 岗位信息 Response VO")
12 14 @Data
  15 +@ExcelIgnoreUnannotated
13 16 public class PostRespVO {
14 17  
15 18 @Schema(description = "岗位序号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
... ... @@ -29,6 +32,7 @@ public class PostRespVO {
29 32 private Integer sort;
30 33  
31 34 @Schema(description = "状态,参见 CommonStatusEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  35 + @ExcelProperty(value = "状态", converter = DictConvert.class)
32 36 @DictFormat(DictTypeConstants.COMMON_STATUS)
33 37 private Integer status;
34 38  
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/DictDataController.java
1 1 package cn.iocoder.yudao.module.system.controller.admin.dict;
2 2  
3   -import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
4 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
5 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
6 7 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
7 8 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
8   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.*;
9   -import cn.iocoder.yudao.module.system.convert.dict.DictDataConvert;
  9 +import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataPageReqVO;
  10 +import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataRespVO;
  11 +import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataSaveReqVO;
  12 +import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataSimpleRespVO;
  13 +import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
10 14 import cn.iocoder.yudao.module.system.service.dict.DictDataService;
11   -import io.swagger.v3.oas.annotations.tags.Tag;
12   -import io.swagger.v3.oas.annotations.Parameter;
13 15 import io.swagger.v3.oas.annotations.Operation;
  16 +import io.swagger.v3.oas.annotations.Parameter;
  17 +import io.swagger.v3.oas.annotations.tags.Tag;
14 18 import org.springframework.security.access.prepost.PreAuthorize;
15 19 import org.springframework.validation.annotation.Validated;
16 20 import org.springframework.web.bind.annotation.*;
... ... @@ -36,16 +40,16 @@ public class DictDataController {
36 40 @PostMapping("/create")
37 41 @Operation(summary = "新增字典数据")
38 42 @PreAuthorize("@ss.hasPermission('system:dict:create')")
39   - public CommonResult<Long> createDictData(@Valid @RequestBody DictDataCreateReqVO reqVO) {
40   - Long dictDataId = dictDataService.createDictData(reqVO);
  43 + public CommonResult<Long> createDictData(@Valid @RequestBody DictDataSaveReqVO createReqVO) {
  44 + Long dictDataId = dictDataService.createDictData(createReqVO);
41 45 return success(dictDataId);
42 46 }
43 47  
44 48 @PutMapping("/update")
45 49 @Operation(summary = "修改字典数据")
46 50 @PreAuthorize("@ss.hasPermission('system:dict:update')")
47   - public CommonResult<Boolean> updateDictData(@Valid @RequestBody DictDataUpdateReqVO reqVO) {
48   - dictDataService.updateDictData(reqVO);
  51 + public CommonResult<Boolean> updateDictData(@Valid @RequestBody DictDataSaveReqVO updateReqVO) {
  52 + dictDataService.updateDictData(updateReqVO);
49 53 return success(true);
50 54 }
51 55  
... ... @@ -58,19 +62,20 @@ public class DictDataController {
58 62 return success(true);
59 63 }
60 64  
61   - @GetMapping("/list-all-simple")
  65 + @GetMapping(value = {"/list-all-simple", "simple-list"})
62 66 @Operation(summary = "获得全部字典数据列表", description = "一般用于管理后台缓存字典数据在本地")
63 67 // 无需添加权限认证,因为前端全局都需要
64 68 public CommonResult<List<DictDataSimpleRespVO>> getSimpleDictDataList() {
65 69 List<DictDataDO> list = dictDataService.getDictDataList();
66   - return success(DictDataConvert.INSTANCE.convertList(list));
  70 + return success(BeanUtils.toBean(list, DictDataSimpleRespVO.class));
67 71 }
68 72  
69 73 @GetMapping("/page")
70 74 @Operation(summary = "/获得字典类型的分页列表")
71 75 @PreAuthorize("@ss.hasPermission('system:dict:query')")
72   - public CommonResult<PageResult<DictDataRespVO>> getDictTypePage(@Valid DictDataPageReqVO reqVO) {
73   - return success(DictDataConvert.INSTANCE.convertPage(dictDataService.getDictDataPage(reqVO)));
  76 + public CommonResult<PageResult<DictDataRespVO>> getDictTypePage(@Valid DictDataPageReqVO pageReqVO) {
  77 + PageResult<DictDataDO> pageResult = dictDataService.getDictDataPage(pageReqVO);
  78 + return success(BeanUtils.toBean(pageResult, DictDataRespVO.class));
74 79 }
75 80  
76 81 @GetMapping(value = "/get")
... ... @@ -78,18 +83,20 @@ public class DictDataController {
78 83 @Parameter(name = "id", description = "编号", required = true, example = "1024")
79 84 @PreAuthorize("@ss.hasPermission('system:dict:query')")
80 85 public CommonResult<DictDataRespVO> getDictData(@RequestParam("id") Long id) {
81   - return success(DictDataConvert.INSTANCE.convert(dictDataService.getDictData(id)));
  86 + DictDataDO dictData = dictDataService.getDictData(id);
  87 + return success(BeanUtils.toBean(dictData, DictDataRespVO.class));
82 88 }
83 89  
84 90 @GetMapping("/export")
85 91 @Operation(summary = "导出字典数据")
86 92 @PreAuthorize("@ss.hasPermission('system:dict:export')")
87 93 @OperateLog(type = EXPORT)
88   - public void export(HttpServletResponse response, @Valid DictDataExportReqVO reqVO) throws IOException {
89   - List<DictDataDO> list = dictDataService.getDictDataList(reqVO);
90   - List<DictDataExcelVO> data = DictDataConvert.INSTANCE.convertList02(list);
  94 + public void export(HttpServletResponse response, @Valid DictDataPageReqVO exportReqVO) throws IOException {
  95 + exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
  96 + List<DictDataDO> list = dictDataService.getDictDataPage(exportReqVO).getList();
91 97 // 输出
92   - ExcelUtils.write(response, "字典数据.xls", "数据列表", DictDataExcelVO.class, data);
  98 + ExcelUtils.write(response, "字典数据.xls", "数据", DictDataRespVO.class,
  99 + BeanUtils.toBean(list, DictDataRespVO.class));
93 100 }
94 101  
95 102 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/DictTypeController.java
1 1 package cn.iocoder.yudao.module.system.controller.admin.dict;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 7 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
6 8 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
7   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.*;
8   -import cn.iocoder.yudao.module.system.convert.dict.DictTypeConvert;
  9 +import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypePageReqVO;
  10 +import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeRespVO;
  11 +import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeSaveReqVO;
  12 +import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeSimpleRespVO;
9 13 import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictTypeDO;
10 14 import cn.iocoder.yudao.module.system.service.dict.DictTypeService;
11   -import io.swagger.v3.oas.annotations.tags.Tag;
12   -import io.swagger.v3.oas.annotations.Parameter;
13 15 import io.swagger.v3.oas.annotations.Operation;
  16 +import io.swagger.v3.oas.annotations.Parameter;
  17 +import io.swagger.v3.oas.annotations.tags.Tag;
14 18 import org.springframework.security.access.prepost.PreAuthorize;
15 19 import org.springframework.validation.annotation.Validated;
16 20 import org.springframework.web.bind.annotation.*;
... ... @@ -36,16 +40,16 @@ public class DictTypeController {
36 40 @PostMapping("/create")
37 41 @Operation(summary = "创建字典类型")
38 42 @PreAuthorize("@ss.hasPermission('system:dict:create')")
39   - public CommonResult<Long> createDictType(@Valid @RequestBody DictTypeCreateReqVO reqVO) {
40   - Long dictTypeId = dictTypeService.createDictType(reqVO);
  43 + public CommonResult<Long> createDictType(@Valid @RequestBody DictTypeSaveReqVO createReqVO) {
  44 + Long dictTypeId = dictTypeService.createDictType(createReqVO);
41 45 return success(dictTypeId);
42 46 }
43 47  
44 48 @PutMapping("/update")
45 49 @Operation(summary = "修改字典类型")
46 50 @PreAuthorize("@ss.hasPermission('system:dict:update')")
47   - public CommonResult<Boolean> updateDictType(@Valid @RequestBody DictTypeUpdateReqVO reqVO) {
48   - dictTypeService.updateDictType(reqVO);
  51 + public CommonResult<Boolean> updateDictType(@Valid @RequestBody DictTypeSaveReqVO updateReqVO) {
  52 + dictTypeService.updateDictType(updateReqVO);
49 53 return success(true);
50 54 }
51 55  
... ... @@ -58,11 +62,12 @@ public class DictTypeController {
58 62 return success(true);
59 63 }
60 64  
61   - @Operation(summary = "/获得字典类型的分页列表")
62 65 @GetMapping("/page")
  66 + @Operation(summary = "获得字典类型的分页列表")
63 67 @PreAuthorize("@ss.hasPermission('system:dict:query')")
64   - public CommonResult<PageResult<DictTypeRespVO>> pageDictTypes(@Valid DictTypePageReqVO reqVO) {
65   - return success(DictTypeConvert.INSTANCE.convertPage(dictTypeService.getDictTypePage(reqVO)));
  68 + public CommonResult<PageResult<DictTypeRespVO>> pageDictTypes(@Valid DictTypePageReqVO pageReqVO) {
  69 + PageResult<DictTypeDO> pageResult = dictTypeService.getDictTypePage(pageReqVO);
  70 + return success(BeanUtils.toBean(pageResult, DictTypeRespVO.class));
66 71 }
67 72  
68 73 @Operation(summary = "/查询字典类型详细")
... ... @@ -70,26 +75,28 @@ public class DictTypeController {
70 75 @GetMapping(value = "/get")
71 76 @PreAuthorize("@ss.hasPermission('system:dict:query')")
72 77 public CommonResult<DictTypeRespVO> getDictType(@RequestParam("id") Long id) {
73   - return success(DictTypeConvert.INSTANCE.convert(dictTypeService.getDictType(id)));
  78 + DictTypeDO dictType = dictTypeService.getDictType(id);
  79 + return success(BeanUtils.toBean(dictType, DictTypeRespVO.class));
74 80 }
75 81  
76   - @GetMapping("/list-all-simple")
  82 + @GetMapping(value = {"/list-all-simple", "simple-list"})
77 83 @Operation(summary = "获得全部字典类型列表", description = "包括开启 + 禁用的字典类型,主要用于前端的下拉选项")
78 84 // 无需添加权限认证,因为前端全局都需要
79 85 public CommonResult<List<DictTypeSimpleRespVO>> getSimpleDictTypeList() {
80 86 List<DictTypeDO> list = dictTypeService.getDictTypeList();
81   - return success(DictTypeConvert.INSTANCE.convertList(list));
  87 + return success(BeanUtils.toBean(list, DictTypeSimpleRespVO.class));
82 88 }
83 89  
84 90 @Operation(summary = "导出数据类型")
85 91 @GetMapping("/export")
86 92 @PreAuthorize("@ss.hasPermission('system:dict:query')")
87 93 @OperateLog(type = EXPORT)
88   - public void export(HttpServletResponse response, @Valid DictTypeExportReqVO reqVO) throws IOException {
89   - List<DictTypeDO> list = dictTypeService.getDictTypeList(reqVO);
90   - List<DictTypeExcelVO> data = DictTypeConvert.INSTANCE.convertList02(list);
91   - // 输出
92   - ExcelUtils.write(response, "字典类型.xls", "类型列表", DictTypeExcelVO.class, data);
  94 + public void export(HttpServletResponse response, @Valid DictTypePageReqVO exportReqVO) throws IOException {
  95 + exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
  96 + List<DictTypeDO> list = dictTypeService.getDictTypePage(exportReqVO).getList();
  97 + // 导出
  98 + ExcelUtils.write(response, "字典类型.xls", "数据", DictTypeRespVO.class,
  99 + BeanUtils.toBean(list, DictTypeRespVO.class));
93 100 }
94 101  
95 102 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/data/DictDataCreateReqVO.java deleted
1   -package cn.iocoder.yudao.module.system.controller.admin.dict.vo.data;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.Data;
5   -import lombok.EqualsAndHashCode;
6   -
7   -@Schema(description = "管理后台 - 字典数据创建 Request VO")
8   -@Data
9   -@EqualsAndHashCode(callSuper = true)
10   -public class DictDataCreateReqVO extends DictDataBaseVO {
11   -
12   -}
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/data/DictDataExcelVO.java deleted
1   -package cn.iocoder.yudao.module.system.controller.admin.dict.vo.data;
2   -
3   -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
4   -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
5   -import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
6   -import com.alibaba.excel.annotation.ExcelProperty;
7   -import lombok.Data;
8   -
9   -/**
10   - * 字典数据 Excel 导出响应 VO
11   - */
12   -@Data
13   -public class DictDataExcelVO {
14   -
15   - @ExcelProperty("字典编码")
16   - private Long id;
17   -
18   - @ExcelProperty("字典排序")
19   - private Integer sort;
20   -
21   - @ExcelProperty("字典标签")
22   - private String label;
23   -
24   - @ExcelProperty("字典键值")
25   - private String value;
26   -
27   - @ExcelProperty("字典类型")
28   - private String dictType;
29   -
30   - @ExcelProperty(value = "状态", converter = DictConvert.class)
31   - @DictFormat(DictTypeConstants.COMMON_STATUS)
32   - private Integer status;
33   -
34   -}
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/data/DictDataExportReqVO.java deleted
1   -package cn.iocoder.yudao.module.system.controller.admin.dict.vo.data;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.Data;
5   -
6   -import javax.validation.constraints.Size;
7   -
8   -@Schema(description = "管理后台 - 字典类型导出 Request VO")
9   -@Data
10   -public class DictDataExportReqVO {
11   -
12   - @Schema(description = "字典标签", example = "芋道")
13   - @Size(max = 100, message = "字典标签长度不能超过100个字符")
14   - private String label;
15   -
16   - @Schema(description = "字典类型,模糊匹配", example = "sys_common_sex")
17   - @Size(max = 100, message = "字典类型类型长度不能超过100个字符")
18   - private String dictType;
19   -
20   - @Schema(description = "展示状态,参见 CommonStatusEnum 枚举类", example = "1")
21   - private Integer status;
22   -
23   -}
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/data/DictDataPageReqVO.java
1 1 package cn.iocoder.yudao.module.system.controller.admin.dict.vo.data;
2 2  
  3 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
3 4 import cn.iocoder.yudao.framework.common.pojo.PageParam;
  5 +import cn.iocoder.yudao.framework.common.validation.InEnum;
4 6 import io.swagger.v3.oas.annotations.media.Schema;
5 7 import lombok.Data;
6 8 import lombok.EqualsAndHashCode;
... ... @@ -21,6 +23,7 @@ public class DictDataPageReqVO extends PageParam {
21 23 private String dictType;
22 24  
23 25 @Schema(description = "展示状态,参见 CommonStatusEnum 枚举类", example = "1")
  26 + @InEnum(value = CommonStatusEnum.class, message = "修改状态必须是 {value}")
24 27 private Integer status;
25 28  
26 29 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/data/DictDataRespVO.java
1 1 package cn.iocoder.yudao.module.system.controller.admin.dict.vo.data;
2 2  
  3 +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
  4 +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
  5 +import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
  6 +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
  7 +import com.alibaba.excel.annotation.ExcelProperty;
3 8 import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.AllArgsConstructor;
5 9 import lombok.Data;
6   -import lombok.EqualsAndHashCode;
7   -import lombok.NoArgsConstructor;
8 10  
9 11 import java.time.LocalDateTime;
10 12  
11 13 @Schema(description = "管理后台 - 字典数据信息 Response VO")
12 14 @Data
13   -@NoArgsConstructor
14   -@AllArgsConstructor
15   -@EqualsAndHashCode(callSuper = true)
16   -public class DictDataRespVO extends DictDataBaseVO {
  15 +@ExcelIgnoreUnannotated
  16 +public class DictDataRespVO {
17 17  
18 18 @Schema(description = "字典数据编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  19 + @ExcelProperty("字典编码")
19 20 private Long id;
20 21  
  22 + @Schema(description = "显示顺序不能为空", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  23 + @ExcelProperty("字典排序")
  24 + private Integer sort;
  25 +
  26 + @Schema(description = "字典标签", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
  27 + @ExcelProperty("字典标签")
  28 + private String label;
  29 +
  30 + @Schema(description = "字典值", requiredMode = Schema.RequiredMode.REQUIRED, example = "iocoder")
  31 + @ExcelProperty("字典键值")
  32 + private String value;
  33 +
  34 + @Schema(description = "字典类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "sys_common_sex")
  35 + @ExcelProperty("字典类型")
  36 + private String dictType;
  37 +
  38 + @Schema(description = "状态,见 CommonStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  39 + @ExcelProperty(value = "状态", converter = DictConvert.class)
  40 + @DictFormat(DictTypeConstants.COMMON_STATUS)
  41 + private Integer status;
  42 +
  43 + @Schema(description = "颜色类型,default、primary、success、info、warning、danger", example = "default")
  44 + private String colorType;
  45 +
  46 + @Schema(description = "css 样式", example = "btn-visible")
  47 + private String cssClass;
  48 +
  49 + @Schema(description = "备注", example = "我是一个角色")
  50 + private String remark;
  51 +
21 52 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
22 53 private LocalDateTime createTime;
23 54  
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/data/DictDataBaseVO.java renamed to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/data/DictDataSaveReqVO.java
1 1 package cn.iocoder.yudao.module.system.controller.admin.dict.vo.data;
2 2  
  3 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  4 +import cn.iocoder.yudao.framework.common.validation.InEnum;
3 5 import io.swagger.v3.oas.annotations.media.Schema;
4 6 import lombok.Data;
5 7  
... ... @@ -7,12 +9,12 @@ import javax.validation.constraints.NotBlank;
7 9 import javax.validation.constraints.NotNull;
8 10 import javax.validation.constraints.Size;
9 11  
10   -/**
11   - * 字典数据 Base VO,提供给添加、修改、详细的子 VO 使用
12   - * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
13   - */
  12 +@Schema(description = "管理后台 - 字典数据创建/修改 Request VO")
14 13 @Data
15   -public class DictDataBaseVO {
  14 +public class DictDataSaveReqVO {
  15 +
  16 + @Schema(description = "字典数据编号", example = "1024")
  17 + private Long id;
16 18  
17 19 @Schema(description = "显示顺序不能为空", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
18 20 @NotNull(message = "显示顺序不能为空")
... ... @@ -35,11 +37,12 @@ public class DictDataBaseVO {
35 37  
36 38 @Schema(description = "状态,见 CommonStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
37 39 @NotNull(message = "状态不能为空")
38   -// @InEnum(value = CommonStatusEnum.class, message = "修改状态必须是 {value}")
  40 + @InEnum(value = CommonStatusEnum.class, message = "修改状态必须是 {value}")
39 41 private Integer status;
40 42  
41 43 @Schema(description = "颜色类型,default、primary、success、info、warning、danger", example = "default")
42 44 private String colorType;
  45 +
43 46 @Schema(description = "css 样式", example = "btn-visible")
44 47 private String cssClass;
45 48  
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/data/DictDataUpdateReqVO.java deleted
1   -package cn.iocoder.yudao.module.system.controller.admin.dict.vo.data;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.Data;
5   -import lombok.EqualsAndHashCode;
6   -
7   -import javax.validation.constraints.NotNull;
8   -
9   -@Schema(description = "管理后台 - 字典数据更新 Request VO")
10   -@Data
11   -@EqualsAndHashCode(callSuper = true)
12   -public class DictDataUpdateReqVO extends DictDataBaseVO {
13   -
14   - @Schema(description = "字典数据编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
15   - @NotNull(message = "字典数据编号不能为空")
16   - private Long id;
17   -
18   -}