Commit c4933976530a1b4bd80d081a8c094aa22d4653de

Authored by YunaiV
1 parent a9c8f6c8

🔧 简化 dictType 和 dictData 模块的 VO

Showing 28 changed files with 200 additions and 500 deletions
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/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  
... ... @@ -63,14 +67,15 @@ public class DictDataController {
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   -}
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/type/DictTypeCreateReqVO.java deleted
1   -package cn.iocoder.yudao.module.system.controller.admin.dict.vo.type;
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   -import javax.validation.constraints.Size;
9   -
10   -@Schema(description = "管理后台 - 字典类型创建 Request VO")
11   -@Data
12   -@EqualsAndHashCode(callSuper = true)
13   -public class DictTypeCreateReqVO extends DictTypeBaseVO {
14   -
15   - @Schema(description = "字典类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "sys_common_sex")
16   - @NotNull(message = "字典类型不能为空")
17   - @Size(max = 100, message = "字典类型类型长度不能超过100个字符")
18   - private String type;
19   -
20   -}
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/type/DictTypeExcelVO.java deleted
1   -package cn.iocoder.yudao.module.system.controller.admin.dict.vo.type;
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 DictTypeExcelVO {
14   -
15   - @ExcelProperty("字典主键")
16   - private Long id;
17   -
18   - @ExcelProperty("字典名称")
19   - private String name;
20   -
21   - @ExcelProperty("字典类型")
22   - private String type;
23   -
24   - @ExcelProperty(value = "状态", converter = DictConvert.class)
25   - @DictFormat(DictTypeConstants.COMMON_STATUS)
26   - private Integer status;
27   -
28   -}
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/type/DictTypeExportReqVO.java deleted
1   -package cn.iocoder.yudao.module.system.controller.admin.dict.vo.type;
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 DictTypeExportReqVO {
14   -
15   - @Schema(description = "字典类型名称,模糊匹配", example = "芋道")
16   - private String name;
17   -
18   - @Schema(description = "字典类型,模糊匹配", example = "sys_common_sex")
19   - private String type;
20   -
21   - @Schema(description = "展示状态,参见 CommonStatusEnum 枚举类", example = "1")
22   - private Integer status;
23   -
24   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
25   - @Schema(description = "创建时间")
26   - private LocalDateTime[] createTime;
27   -
28   -}
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/type/DictTypeRespVO.java
1 1 package cn.iocoder.yudao.module.system.controller.admin.dict.vo.type;
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 DictTypeRespVO extends DictTypeBaseVO {
  15 +@ExcelIgnoreUnannotated
  16 +public class DictTypeRespVO {
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 = "性别")
  23 + @ExcelProperty("字典名称")
  24 + private String name;
  25 +
21 26 @Schema(description = "字典类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "sys_common_sex")
  27 + @ExcelProperty("字典类型")
22 28 private String type;
23 29  
  30 + @Schema(description = "状态,参见 CommonStatusEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  31 + @ExcelProperty(value = "状态", converter = DictConvert.class)
  32 + @DictFormat(DictTypeConstants.COMMON_STATUS)
  33 + private Integer status;
  34 +
  35 + @Schema(description = "备注", example = "快乐的备注")
  36 + private String remark;
  37 +
24 38 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
25 39 private LocalDateTime createTime;
26 40  
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/type/DictTypeBaseVO.java renamed to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/type/DictTypeSaveReqVO.java
... ... @@ -7,18 +7,23 @@ import javax.validation.constraints.NotBlank;
7 7 import javax.validation.constraints.NotNull;
8 8 import javax.validation.constraints.Size;
9 9  
10   -/**
11   - * 字典类型 Base VO,提供给添加、修改、详细的子 VO 使用
12   - * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
13   - */
  10 +@Schema(description = "管理后台 - 字典类型创建/修改 Request VO")
14 11 @Data
15   -public class DictTypeBaseVO {
  12 +public class DictTypeSaveReqVO {
  13 +
  14 + @Schema(description = "字典类型编号", example = "1024")
  15 + private Long id;
16 16  
17 17 @Schema(description = "字典名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "性别")
18 18 @NotBlank(message = "字典名称不能为空")
19 19 @Size(max = 100, message = "字典类型名称长度不能超过100个字符")
20 20 private String name;
21 21  
  22 + @Schema(description = "字典类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "sys_common_sex")
  23 + @NotNull(message = "字典类型不能为空")
  24 + @Size(max = 100, message = "字典类型类型长度不能超过 100 个字符")
  25 + private String type;
  26 +
22 27 @Schema(description = "状态,参见 CommonStatusEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
23 28 @NotNull(message = "状态不能为空")
24 29 private Integer status;
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/type/DictTypeSimpleRespVO.java
1 1 package cn.iocoder.yudao.module.system.controller.admin.dict.vo.type;
2 2  
3 3 import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.AllArgsConstructor;
5 4 import lombok.Data;
6   -import lombok.NoArgsConstructor;
7 5  
8 6 @Schema(description = "管理后台 - 字典类型精简信息 Response VO")
9 7 @Data
10   -@NoArgsConstructor
11   -@AllArgsConstructor
12 8 public class DictTypeSimpleRespVO {
13 9  
14 10 @Schema(description = "字典类型编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/type/DictTypeUpdateReqVO.java deleted
1   -package cn.iocoder.yudao.module.system.controller.admin.dict.vo.type;
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 DictTypeUpdateReqVO extends DictTypeBaseVO {
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/app/dict/AppDictDataController.java
1 1 package cn.iocoder.yudao.module.system.controller.app.dict;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
4 5 import cn.iocoder.yudao.module.system.controller.app.dict.vo.AppDictDataRespVO;
5   -import cn.iocoder.yudao.module.system.convert.dict.DictDataConvert;
6 6 import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
7 7 import cn.iocoder.yudao.module.system.service.dict.DictDataService;
8 8 import io.swagger.v3.oas.annotations.Operation;
... ... @@ -33,7 +33,7 @@ public class AppDictDataController {
33 33 @Parameter(name = "type", description = "字典类型", required = true, example = "common_status")
34 34 public CommonResult<List<AppDictDataRespVO>> getDictDataListByType(@RequestParam("type") String type) {
35 35 List<DictDataDO> list = dictDataService.getEnabledDictDataListByType(type);
36   - return success(DictDataConvert.INSTANCE.convertList03(list));
  36 + return success(BeanUtils.toBean(list, AppDictDataRespVO.class));
37 37 }
38 38  
39 39 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/dict/DictDataConvert.java deleted
1   -package cn.iocoder.yudao.module.system.convert.dict;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.system.api.dict.dto.DictDataRespDTO;
5   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.*;
6   -import cn.iocoder.yudao.module.system.controller.app.dict.vo.AppDictDataRespVO;
7   -import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
8   -import org.mapstruct.Mapper;
9   -import org.mapstruct.factory.Mappers;
10   -
11   -import java.util.List;
12   -
13   -@Mapper
14   -public interface DictDataConvert {
15   -
16   - DictDataConvert INSTANCE = Mappers.getMapper(DictDataConvert.class);
17   -
18   - List<DictDataSimpleRespVO> convertList(List<DictDataDO> list);
19   -
20   - DictDataRespVO convert(DictDataDO bean);
21   -
22   - PageResult<DictDataRespVO> convertPage(PageResult<DictDataDO> page);
23   -
24   - DictDataDO convert(DictDataUpdateReqVO bean);
25   -
26   - DictDataDO convert(DictDataCreateReqVO bean);
27   -
28   - List<DictDataExcelVO> convertList02(List<DictDataDO> bean);
29   -
30   - DictDataRespDTO convert02(DictDataDO bean);
31   -
32   - List<AppDictDataRespVO> convertList03(List<DictDataDO> list);
33   -
34   -}
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/dict/DictTypeConvert.java deleted
1   -package cn.iocoder.yudao.module.system.convert.dict;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.*;
5   -import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictTypeDO;
6   -import org.mapstruct.Mapper;
7   -import org.mapstruct.factory.Mappers;
8   -
9   -import java.util.List;
10   -
11   -@Mapper
12   -public interface DictTypeConvert {
13   -
14   - DictTypeConvert INSTANCE = Mappers.getMapper(DictTypeConvert.class);
15   -
16   - PageResult<DictTypeRespVO> convertPage(PageResult<DictTypeDO> bean);
17   -
18   - DictTypeRespVO convert(DictTypeDO bean);
19   -
20   - DictTypeDO convert(DictTypeCreateReqVO bean);
21   -
22   - DictTypeDO convert(DictTypeUpdateReqVO bean);
23   -
24   - List<DictTypeSimpleRespVO> convertList(List<DictTypeDO> list);
25   -
26   - List<DictTypeExcelVO> convertList02(List<DictTypeDO> list);
27   -
28   -}
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dict/DictDataMapper.java
... ... @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.system.dal.mysql.dict;
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.system.controller.admin.dict.vo.data.DictDataExportReqVO;
7 6 import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataPageReqVO;
8 7 import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
9 8 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
... ... @@ -41,13 +40,6 @@ public interface DictDataMapper extends BaseMapperX&lt;DictDataDO&gt; {
41 40 .orderByDesc(Arrays.asList(DictDataDO::getDictType, DictDataDO::getSort)));
42 41 }
43 42  
44   - default List<DictDataDO> selectList(DictDataExportReqVO reqVO) {
45   - return selectList(new LambdaQueryWrapperX<DictDataDO>()
46   - .likeIfPresent(DictDataDO::getLabel, reqVO.getLabel())
47   - .eqIfPresent(DictDataDO::getDictType, reqVO.getDictType())
48   - .eqIfPresent(DictDataDO::getStatus, reqVO.getStatus()));
49   - }
50   -
51 43 default List<DictDataDO> selectListByTypeAndStatus(String dictType, Integer status) {
52 44 return selectList(new LambdaQueryWrapper<DictDataDO>()
53 45 .eq(DictDataDO::getDictType, dictType)
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dict/DictTypeMapper.java
... ... @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.system.dal.mysql.dict;
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.system.controller.admin.dict.vo.type.DictTypeExportReqVO;
7 6 import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypePageReqVO;
8 7 import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictTypeDO;
9 8 import org.apache.ibatis.annotations.Mapper;
... ... @@ -11,7 +10,6 @@ import org.apache.ibatis.annotations.Param;
11 10 import org.apache.ibatis.annotations.Update;
12 11  
13 12 import java.time.LocalDateTime;
14   -import java.util.List;
15 13  
16 14 @Mapper
17 15 public interface DictTypeMapper extends BaseMapperX<DictTypeDO> {
... ... @@ -25,14 +23,6 @@ public interface DictTypeMapper extends BaseMapperX&lt;DictTypeDO&gt; {
25 23 .orderByDesc(DictTypeDO::getId));
26 24 }
27 25  
28   - default List<DictTypeDO> selectList(DictTypeExportReqVO reqVO) {
29   - return selectList(new LambdaQueryWrapperX<DictTypeDO>()
30   - .likeIfPresent(DictTypeDO::getName, reqVO.getName())
31   - .likeIfPresent(DictTypeDO::getType, reqVO.getType())
32   - .eqIfPresent(DictTypeDO::getStatus, reqVO.getStatus())
33   - .betweenIfPresent(DictTypeDO::getCreateTime, reqVO.getCreateTime()));
34   - }
35   -
36 26 default DictTypeDO selectByType(String type) {
37 27 return selectOne(DictTypeDO::getType, type);
38 28 }
... ... @@ -41,8 +31,7 @@ public interface DictTypeMapper extends BaseMapperX&lt;DictTypeDO&gt; {
41 31 return selectOne(DictTypeDO::getName, name);
42 32 }
43 33  
44   - int deleteById(@Param("id") Long id, @Param("deletedTime") LocalDateTime deletedTime);
45   -
46 34 @Update("UPDATE system_dict_type SET deleted = 1, deleted_time = #{deletedTime} WHERE id = #{id}")
47 35 void updateToDelete(@Param("id") Long id, @Param("deletedTime") LocalDateTime deletedTime);
  36 +
48 37 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictDataService.java
1 1 package cn.iocoder.yudao.module.system.service.dict;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataCreateReqVO;
5   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataExportReqVO;
6 4 import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataPageReqVO;
7   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataUpdateReqVO;
  5 +import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataSaveReqVO;
8 6 import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
9 7  
10 8 import java.util.Collection;
... ... @@ -20,17 +18,17 @@ public interface DictDataService {
20 18 /**
21 19 * 创建字典数据
22 20 *
23   - * @param reqVO 字典数据信息
  21 + * @param createReqVO 字典数据信息
24 22 * @return 字典数据编号
25 23 */
26   - Long createDictData(DictDataCreateReqVO reqVO);
  24 + Long createDictData(DictDataSaveReqVO createReqVO);
27 25  
28 26 /**
29 27 * 更新字典数据
30 28 *
31   - * @param reqVO 字典数据信息
  29 + * @param updateReqVO 字典数据信息
32 30 */
33   - void updateDictData(DictDataUpdateReqVO reqVO);
  31 + void updateDictData(DictDataSaveReqVO updateReqVO);
34 32  
35 33 /**
36 34 * 删除字典数据
... ... @@ -49,18 +47,10 @@ public interface DictDataService {
49 47 /**
50 48 * 获得字典数据分页列表
51 49 *
52   - * @param reqVO 分页请求
  50 + * @param pageReqVO 分页请求
53 51 * @return 字典数据分页列表
54 52 */
55   - PageResult<DictDataDO> getDictDataPage(DictDataPageReqVO reqVO);
56   -
57   - /**
58   - * 获得字典数据列表
59   - *
60   - * @param reqVO 列表请求
61   - * @return 字典数据列表
62   - */
63   - List<DictDataDO> getDictDataList(DictDataExportReqVO reqVO);
  53 + PageResult<DictDataDO> getDictDataPage(DictDataPageReqVO pageReqVO);
64 54  
65 55 /**
66 56 * 获得字典数据列表
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictDataServiceImpl.java
... ... @@ -4,11 +4,9 @@ import cn.hutool.core.collection.CollUtil;
4 4 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
5 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 6 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
7   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataCreateReqVO;
8   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataExportReqVO;
  7 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
9 8 import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataPageReqVO;
10   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataUpdateReqVO;
11   -import cn.iocoder.yudao.module.system.convert.dict.DictDataConvert;
  9 +import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataSaveReqVO;
12 10 import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
13 11 import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictTypeDO;
14 12 import cn.iocoder.yudao.module.system.dal.mysql.dict.DictDataMapper;
... ... @@ -55,15 +53,8 @@ public class DictDataServiceImpl implements DictDataService {
55 53 }
56 54  
57 55 @Override
58   - public PageResult<DictDataDO> getDictDataPage(DictDataPageReqVO reqVO) {
59   - return dictDataMapper.selectPage(reqVO);
60   - }
61   -
62   - @Override
63   - public List<DictDataDO> getDictDataList(DictDataExportReqVO reqVO) {
64   - List<DictDataDO> list = dictDataMapper.selectList(reqVO);
65   - list.sort(COMPARATOR_TYPE_AND_SORT);
66   - return list;
  56 + public PageResult<DictDataDO> getDictDataPage(DictDataPageReqVO pageReqVO) {
  57 + return dictDataMapper.selectPage(pageReqVO);
67 58 }
68 59  
69 60 @Override
... ... @@ -79,23 +70,29 @@ public class DictDataServiceImpl implements DictDataService {
79 70 }
80 71  
81 72 @Override
82   - public Long createDictData(DictDataCreateReqVO reqVO) {
83   - // 校验正确性
84   - validateDictDataForCreateOrUpdate(null, reqVO.getValue(), reqVO.getDictType());
  73 + public Long createDictData(DictDataSaveReqVO createReqVO) {
  74 + // 校验字典类型有效
  75 + validateDictTypeExists(createReqVO.getDictType());
  76 + // 校验字典数据的值的唯一性
  77 + validateDictDataValueUnique(null, createReqVO.getDictType(), createReqVO.getValue());
85 78  
86 79 // 插入字典类型
87   - DictDataDO dictData = DictDataConvert.INSTANCE.convert(reqVO);
  80 + DictDataDO dictData = BeanUtils.toBean(createReqVO, DictDataDO.class);
88 81 dictDataMapper.insert(dictData);
89 82 return dictData.getId();
90 83 }
91 84  
92 85 @Override
93   - public void updateDictData(DictDataUpdateReqVO reqVO) {
94   - // 校验正确性
95   - validateDictDataForCreateOrUpdate(reqVO.getId(), reqVO.getValue(), reqVO.getDictType());
  86 + public void updateDictData(DictDataSaveReqVO updateReqVO) {
  87 + // 校验自己存在
  88 + validateDictDataExists(updateReqVO.getId());
  89 + // 校验字典类型有效
  90 + validateDictTypeExists(updateReqVO.getDictType());
  91 + // 校验字典数据的值的唯一性
  92 + validateDictDataValueUnique(updateReqVO.getId(), updateReqVO.getDictType(), updateReqVO.getValue());
96 93  
97 94 // 更新字典类型
98   - DictDataDO updateObj = DictDataConvert.INSTANCE.convert(reqVO);
  95 + DictDataDO updateObj = BeanUtils.toBean(updateReqVO, DictDataDO.class);
99 96 dictDataMapper.updateById(updateObj);
100 97 }
101 98  
... ... @@ -113,15 +110,6 @@ public class DictDataServiceImpl implements DictDataService {
113 110 return dictDataMapper.selectCountByDictType(dictType);
114 111 }
115 112  
116   - private void validateDictDataForCreateOrUpdate(Long id, String value, String dictType) {
117   - // 校验自己存在
118   - validateDictDataExists(id);
119   - // 校验字典类型有效
120   - validateDictTypeExists(dictType);
121   - // 校验字典数据的值的唯一性
122   - validateDictDataValueUnique(id, dictType, value);
123   - }
124   -
125 113 @VisibleForTesting
126 114 public void validateDictDataValueUnique(Long id, String dictType, String value) {
127 115 DictDataDO dictData = dictDataMapper.selectByDictTypeAndValue(dictType, value);
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictTypeService.java
1 1 package cn.iocoder.yudao.module.system.service.dict;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeCreateReqVO;
5   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeExportReqVO;
6 4 import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypePageReqVO;
7   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeUpdateReqVO;
  5 +import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeSaveReqVO;
8 6 import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictTypeDO;
9 7  
10 8 import java.util.List;
... ... @@ -19,17 +17,17 @@ public interface DictTypeService {
19 17 /**
20 18 * 创建字典类型
21 19 *
22   - * @param reqVO 字典类型信息
  20 + * @param createReqVO 字典类型信息
23 21 * @return 字典类型编号
24 22 */
25   - Long createDictType(DictTypeCreateReqVO reqVO);
  23 + Long createDictType(DictTypeSaveReqVO createReqVO);
26 24  
27 25 /**
28 26 * 更新字典类型
29 27 *
30   - * @param reqVO 字典类型信息
  28 + * @param updateReqVO 字典类型信息
31 29 */
32   - void updateDictType(DictTypeUpdateReqVO reqVO);
  30 + void updateDictType(DictTypeSaveReqVO updateReqVO);
33 31  
34 32 /**
35 33 * 删除字典类型
... ... @@ -41,18 +39,10 @@ public interface DictTypeService {
41 39 /**
42 40 * 获得字典类型分页列表
43 41 *
44   - * @param reqVO 分页请求
  42 + * @param pageReqVO 分页请求
45 43 * @return 字典类型分页列表
46 44 */
47   - PageResult<DictTypeDO> getDictTypePage(DictTypePageReqVO reqVO);
48   -
49   - /**
50   - * 获得字典类型列表
51   - *
52   - * @param reqVO 列表请求
53   - * @return 字典类型列表
54   - */
55   - List<DictTypeDO> getDictTypeList(DictTypeExportReqVO reqVO);
  45 + PageResult<DictTypeDO> getDictTypePage(DictTypePageReqVO pageReqVO);
56 46  
57 47 /**
58 48 * 获得字典类型详情
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictTypeServiceImpl.java
... ... @@ -3,11 +3,9 @@ package cn.iocoder.yudao.module.system.service.dict;
3 3 import cn.hutool.core.util.StrUtil;
4 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 5 import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
6   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeCreateReqVO;
7   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeExportReqVO;
  6 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
8 7 import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypePageReqVO;
9   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeUpdateReqVO;
10   -import cn.iocoder.yudao.module.system.convert.dict.DictTypeConvert;
  8 +import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeSaveReqVO;
11 9 import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictTypeDO;
12 10 import cn.iocoder.yudao.module.system.dal.mysql.dict.DictTypeMapper;
13 11 import com.google.common.annotations.VisibleForTesting;
... ... @@ -35,13 +33,8 @@ public class DictTypeServiceImpl implements DictTypeService {
35 33 private DictTypeMapper dictTypeMapper;
36 34  
37 35 @Override
38   - public PageResult<DictTypeDO> getDictTypePage(DictTypePageReqVO reqVO) {
39   - return dictTypeMapper.selectPage(reqVO);
40   - }
41   -
42   - @Override
43   - public List<DictTypeDO> getDictTypeList(DictTypeExportReqVO reqVO) {
44   - return dictTypeMapper.selectList(reqVO);
  36 + public PageResult<DictTypeDO> getDictTypePage(DictTypePageReqVO pageReqVO) {
  37 + return dictTypeMapper.selectPage(pageReqVO);
45 38 }
46 39  
47 40 @Override
... ... @@ -55,24 +48,30 @@ public class DictTypeServiceImpl implements DictTypeService {
55 48 }
56 49  
57 50 @Override
58   - public Long createDictType(DictTypeCreateReqVO reqVO) {
59   - // 校验正确性
60   - validateDictTypeForCreateOrUpdate(null, reqVO.getName(), reqVO.getType());
  51 + public Long createDictType(DictTypeSaveReqVO createReqVO) {
  52 + // 校验字典类型的名字的唯一性
  53 + validateDictTypeNameUnique(null, createReqVO.getName());
  54 + // 校验字典类型的类型的唯一性
  55 + validateDictTypeUnique(null, createReqVO.getType());
61 56  
62 57 // 插入字典类型
63   - DictTypeDO dictType = DictTypeConvert.INSTANCE.convert(reqVO)
64   - .setDeletedTime(LocalDateTimeUtils.EMPTY); // 唯一索引,避免 null 值
  58 + DictTypeDO dictType = BeanUtils.toBean(createReqVO, DictTypeDO.class);
  59 + dictType.setDeletedTime(LocalDateTimeUtils.EMPTY); // 唯一索引,避免 null 值
65 60 dictTypeMapper.insert(dictType);
66 61 return dictType.getId();
67 62 }
68 63  
69 64 @Override
70   - public void updateDictType(DictTypeUpdateReqVO reqVO) {
71   - // 校验正确性
72   - validateDictTypeForCreateOrUpdate(reqVO.getId(), reqVO.getName(), null);
  65 + public void updateDictType(DictTypeSaveReqVO updateReqVO) {
  66 + // 校验自己存在
  67 + validateDictTypeExists(updateReqVO.getId());
  68 + // 校验字典类型的名字的唯一性
  69 + validateDictTypeNameUnique(updateReqVO.getId(), updateReqVO.getName());
  70 + // 校验字典类型的类型的唯一性
  71 + validateDictTypeUnique(updateReqVO.getId(), updateReqVO.getType());
73 72  
74 73 // 更新字典类型
75   - DictTypeDO updateObj = DictTypeConvert.INSTANCE.convert(reqVO);
  74 + DictTypeDO updateObj = BeanUtils.toBean(updateReqVO, DictTypeDO.class);
76 75 dictTypeMapper.updateById(updateObj);
77 76 }
78 77  
... ... @@ -93,15 +92,6 @@ public class DictTypeServiceImpl implements DictTypeService {
93 92 return dictTypeMapper.selectList();
94 93 }
95 94  
96   - private void validateDictTypeForCreateOrUpdate(Long id, String name, String type) {
97   - // 校验自己存在
98   - validateDictTypeExists(id);
99   - // 校验字典类型的名字的唯一性
100   - validateDictTypeNameUnique(id, name);
101   - // 校验字典类型的类型的唯一性
102   - validateDictTypeUnique(id, type);
103   - }
104   -
105 95 @VisibleForTesting
106 96 void validateDictTypeNameUnique(Long id, String name) {
107 97 DictTypeDO dictType = dictTypeMapper.selectByName(name);
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/dict/DictDataServiceImplTest.java
... ... @@ -4,10 +4,8 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 5 import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
6 6 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
7   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataCreateReqVO;
8   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataExportReqVO;
9 7 import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataPageReqVO;
10   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataUpdateReqVO;
  8 +import cn.iocoder.yudao.module.system.controller.admin.dict.vo.data.DictDataSaveReqVO;
11 9 import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
12 10 import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictTypeDO;
13 11 import cn.iocoder.yudao.module.system.dal.mysql.dict.DictDataMapper;
... ... @@ -92,34 +90,6 @@ public class DictDataServiceImplTest extends BaseDbUnitTest {
92 90 }
93 91  
94 92 @Test
95   - public void testGetDictDataList_export() {
96   - // mock 数据
97   - DictDataDO dbDictData = randomPojo(DictDataDO.class, o -> { // 等会查询到
98   - o.setLabel("芋艿");
99   - o.setDictType("yunai");
100   - o.setStatus(CommonStatusEnum.ENABLE.getStatus());
101   - });
102   - dictDataMapper.insert(dbDictData);
103   - // 测试 label 不匹配
104   - dictDataMapper.insert(cloneIgnoreId(dbDictData, o -> o.setLabel("艿")));
105   - // 测试 dictType 不匹配
106   - dictDataMapper.insert(cloneIgnoreId(dbDictData, o -> o.setDictType("nai")));
107   - // 测试 status 不匹配
108   - dictDataMapper.insert(cloneIgnoreId(dbDictData, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
109   - // 准备参数
110   - DictDataExportReqVO reqVO = new DictDataExportReqVO();
111   - reqVO.setLabel("芋");
112   - reqVO.setDictType("yunai");
113   - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
114   -
115   - // 调用
116   - List<DictDataDO> list = dictDataService.getDictDataList(reqVO);
117   - // 断言
118   - assertEquals(1, list.size());
119   - assertPojoEquals(dbDictData, list.get(0));
120   - }
121   -
122   - @Test
123 93 public void testGetDictData() {
124 94 // mock 数据
125 95 DictDataDO dbDictData = randomDictDataDO();
... ... @@ -136,8 +106,9 @@ public class DictDataServiceImplTest extends BaseDbUnitTest {
136 106 @Test
137 107 public void testCreateDictData_success() {
138 108 // 准备参数
139   - DictDataCreateReqVO reqVO = randomPojo(DictDataCreateReqVO.class,
140   - o -> o.setStatus(randomCommonStatus()));
  109 + DictDataSaveReqVO reqVO = randomPojo(DictDataSaveReqVO.class,
  110 + o -> o.setStatus(randomCommonStatus()))
  111 + .setId(null); // 防止 id 被赋值
141 112 // mock 方法
142 113 when(dictTypeService.getDictType(eq(reqVO.getDictType()))).thenReturn(randomDictTypeDO(reqVO.getDictType()));
143 114  
... ... @@ -147,7 +118,7 @@ public class DictDataServiceImplTest extends BaseDbUnitTest {
147 118 assertNotNull(dictDataId);
148 119 // 校验记录的属性是否正确
149 120 DictDataDO dictData = dictDataMapper.selectById(dictDataId);
150   - assertPojoEquals(reqVO, dictData);
  121 + assertPojoEquals(reqVO, dictData, "id");
151 122 }
152 123  
153 124 @Test
... ... @@ -156,7 +127,7 @@ public class DictDataServiceImplTest extends BaseDbUnitTest {
156 127 DictDataDO dbDictData = randomDictDataDO();
157 128 dictDataMapper.insert(dbDictData);// @Sql: 先插入出一条存在的数据
158 129 // 准备参数
159   - DictDataUpdateReqVO reqVO = randomPojo(DictDataUpdateReqVO.class, o -> {
  130 + DictDataSaveReqVO reqVO = randomPojo(DictDataSaveReqVO.class, o -> {
160 131 o.setId(dbDictData.getId()); // 设置更新的 ID
161 132 o.setStatus(randomCommonStatus());
162 133 });
... ...
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/dict/DictTypeServiceImplTest.java
... ... @@ -4,10 +4,8 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 5 import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
6 6 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
7   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeCreateReqVO;
8   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeExportReqVO;
9 7 import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypePageReqVO;
10   -import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeUpdateReqVO;
  8 +import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeSaveReqVO;
11 9 import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictTypeDO;
12 10 import cn.iocoder.yudao.module.system.dal.mysql.dict.DictTypeMapper;
13 11 import org.junit.jupiter.api.Test;
... ... @@ -75,38 +73,6 @@ public class DictTypeServiceImplTest extends BaseDbUnitTest {
75 73 }
76 74  
77 75 @Test
78   - public void testGetDictTypeList_export() {
79   - // mock 数据
80   - DictTypeDO dbDictType = randomPojo(DictTypeDO.class, o -> { // 等会查询到
81   - o.setName("yunai");
82   - o.setType("芋艿");
83   - o.setStatus(CommonStatusEnum.ENABLE.getStatus());
84   - o.setCreateTime(buildTime(2021, 1, 15));
85   - });
86   - dictTypeMapper.insert(dbDictType);
87   - // 测试 name 不匹配
88   - dictTypeMapper.insert(cloneIgnoreId(dbDictType, o -> o.setName("tudou")));
89   - // 测试 type 不匹配
90   - dictTypeMapper.insert(cloneIgnoreId(dbDictType, o -> o.setType("土豆")));
91   - // 测试 status 不匹配
92   - dictTypeMapper.insert(cloneIgnoreId(dbDictType, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
93   - // 测试 createTime 不匹配
94   - dictTypeMapper.insert(cloneIgnoreId(dbDictType, o -> o.setCreateTime(buildTime(2021, 1, 1))));
95   - // 准备参数
96   - DictTypeExportReqVO reqVO = new DictTypeExportReqVO();
97   - reqVO.setName("nai");
98   - reqVO.setType("艿");
99   - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
100   - reqVO.setCreateTime(buildBetweenTime(2021, 1, 10, 2021, 1, 20));
101   -
102   - // 调用
103   - List<DictTypeDO> list = dictTypeService.getDictTypeList(reqVO);
104   - // 断言
105   - assertEquals(1, list.size());
106   - assertPojoEquals(dbDictType, list.get(0));
107   - }
108   -
109   - @Test
110 76 public void testGetDictType_id() {
111 77 // mock 数据
112 78 DictTypeDO dbDictType = randomDictTypeDO();
... ... @@ -139,8 +105,9 @@ public class DictTypeServiceImplTest extends BaseDbUnitTest {
139 105 @Test
140 106 public void testCreateDictType_success() {
141 107 // 准备参数
142   - DictTypeCreateReqVO reqVO = randomPojo(DictTypeCreateReqVO.class,
143   - o -> o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()));
  108 + DictTypeSaveReqVO reqVO = randomPojo(DictTypeSaveReqVO.class,
  109 + o -> o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()))
  110 + .setId(null); // 避免 id 被赋值
144 111  
145 112 // 调用
146 113 Long dictTypeId = dictTypeService.createDictType(reqVO);
... ... @@ -148,7 +115,7 @@ public class DictTypeServiceImplTest extends BaseDbUnitTest {
148 115 assertNotNull(dictTypeId);
149 116 // 校验记录的属性是否正确
150 117 DictTypeDO dictType = dictTypeMapper.selectById(dictTypeId);
151   - assertPojoEquals(reqVO, dictType);
  118 + assertPojoEquals(reqVO, dictType, "id");
152 119 }
153 120  
154 121 @Test
... ... @@ -157,7 +124,7 @@ public class DictTypeServiceImplTest extends BaseDbUnitTest {
157 124 DictTypeDO dbDictType = randomDictTypeDO();
158 125 dictTypeMapper.insert(dbDictType);// @Sql: 先插入出一条存在的数据
159 126 // 准备参数
160   - DictTypeUpdateReqVO reqVO = randomPojo(DictTypeUpdateReqVO.class, o -> {
  127 + DictTypeSaveReqVO reqVO = randomPojo(DictTypeSaveReqVO.class, o -> {
161 128 o.setId(dbDictType.getId()); // 设置更新的 ID
162 129 o.setStatus(randomEle(CommonStatusEnum.values()).getStatus());
163 130 });
... ...