Selaa lähdekoodia

🔧 简化 dataSourceConfig 模块的 VO

YunaiV 1 vuosi sitten
vanhempi
commit
fc3bb430c3

+ 9 - 10
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/db/DataSourceConfigController.java

@@ -1,15 +1,14 @@
 package cn.iocoder.yudao.module.infra.controller.admin.db;
 
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigCreateReqVO;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigRespVO;
-import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigUpdateReqVO;
-import cn.iocoder.yudao.module.infra.convert.db.DataSourceConfigConvert;
+import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigSaveReqVO;
 import cn.iocoder.yudao.module.infra.dal.dataobject.db.DataSourceConfigDO;
 import cn.iocoder.yudao.module.infra.service.db.DataSourceConfigService;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -32,14 +31,14 @@ public class DataSourceConfigController {
     @PostMapping("/create")
     @Operation(summary = "创建数据源配置")
     @PreAuthorize("@ss.hasPermission('infra:data-source-config:create')")
-    public CommonResult<Long> createDataSourceConfig(@Valid @RequestBody DataSourceConfigCreateReqVO createReqVO) {
+    public CommonResult<Long> createDataSourceConfig(@Valid @RequestBody DataSourceConfigSaveReqVO createReqVO) {
         return success(dataSourceConfigService.createDataSourceConfig(createReqVO));
     }
 
     @PutMapping("/update")
     @Operation(summary = "更新数据源配置")
     @PreAuthorize("@ss.hasPermission('infra:data-source-config:update')")
-    public CommonResult<Boolean> updateDataSourceConfig(@Valid @RequestBody DataSourceConfigUpdateReqVO updateReqVO) {
+    public CommonResult<Boolean> updateDataSourceConfig(@Valid @RequestBody DataSourceConfigSaveReqVO updateReqVO) {
         dataSourceConfigService.updateDataSourceConfig(updateReqVO);
         return success(true);
     }
@@ -58,8 +57,8 @@ public class DataSourceConfigController {
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
     @PreAuthorize("@ss.hasPermission('infra:data-source-config:query')")
     public CommonResult<DataSourceConfigRespVO> getDataSourceConfig(@RequestParam("id") Long id) {
-        DataSourceConfigDO dataSourceConfig = dataSourceConfigService.getDataSourceConfig(id);
-        return success(DataSourceConfigConvert.INSTANCE.convert(dataSourceConfig));
+        DataSourceConfigDO config = dataSourceConfigService.getDataSourceConfig(id);
+        return success(BeanUtils.toBean(config, DataSourceConfigRespVO.class));
     }
 
     @GetMapping("/list")
@@ -67,7 +66,7 @@ public class DataSourceConfigController {
     @PreAuthorize("@ss.hasPermission('infra:data-source-config:query')")
     public CommonResult<List<DataSourceConfigRespVO>> getDataSourceConfigList() {
         List<DataSourceConfigDO> list = dataSourceConfigService.getDataSourceConfigList();
-        return success(DataSourceConfigConvert.INSTANCE.convertList(list));
+        return success(BeanUtils.toBean(list, DataSourceConfigRespVO.class));
     }
 
 }

+ 0 - 17
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/db/vo/DataSourceConfigCreateReqVO.java

@@ -1,17 +0,0 @@
-package cn.iocoder.yudao.module.infra.controller.admin.db.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import javax.validation.constraints.*;
-
-@Schema(description = "管理后台 - 数据源配置创建 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class DataSourceConfigCreateReqVO extends DataSourceConfigBaseVO {
-
-    @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")
-    @NotNull(message = "密码不能为空")
-    private String password;
-
-}

+ 11 - 4
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/db/vo/DataSourceConfigRespVO.java

@@ -1,19 +1,26 @@
 package cn.iocoder.yudao.module.infra.controller.admin.db.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
+import lombok.Data;
 
 import java.time.LocalDateTime;
 
 @Schema(description = "管理后台 - 数据源配置 Response VO")
 @Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class DataSourceConfigRespVO extends DataSourceConfigBaseVO {
+public class DataSourceConfigRespVO {
 
     @Schema(description = "主键编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
     private Integer id;
 
+    @Schema(description = "数据源名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "test")
+    private String name;
+
+    @Schema(description = "数据源连接", requiredMode = Schema.RequiredMode.REQUIRED, example = "jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro")
+    private String url;
+
+    @Schema(description = "用户名", requiredMode = Schema.RequiredMode.REQUIRED, example = "root")
+    private String username;
+
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     private LocalDateTime createTime;
 

+ 10 - 5
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/db/vo/DataSourceConfigBaseVO.java → yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/db/vo/DataSourceConfigSaveReqVO.java

@@ -1,14 +1,15 @@
 package cn.iocoder.yudao.module.infra.controller.admin.db.vo;
+
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import javax.validation.constraints.*;
 
-/**
-* 数据源配置 Base VO,提供给添加、修改、详细的子 VO 使用
-* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
-*/
+@Schema(description = "管理后台 - 数据源配置创建/修改 Request VO")
 @Data
-public class DataSourceConfigBaseVO {
+public class DataSourceConfigSaveReqVO {
+
+    @Schema(description = "主键编号", example = "1024")
+    private Long id;
 
     @Schema(description = "数据源名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "test")
     @NotNull(message = "数据源名称不能为空")
@@ -22,4 +23,8 @@ public class DataSourceConfigBaseVO {
     @NotNull(message = "用户名不能为空")
     private String username;
 
+    @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")
+    @NotNull(message = "密码不能为空")
+    private String password;
+
 }

+ 0 - 21
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/db/vo/DataSourceConfigUpdateReqVO.java

@@ -1,21 +0,0 @@
-package cn.iocoder.yudao.module.infra.controller.admin.db.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import javax.validation.constraints.*;
-
-@Schema(description = "管理后台 - 数据源配置更新 Request VO")
-@Data
-@EqualsAndHashCode(callSuper = true)
-@ToString(callSuper = true)
-public class DataSourceConfigUpdateReqVO extends DataSourceConfigBaseVO {
-
-    @Schema(description = "主键编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-    @NotNull(message = "主键编号不能为空")
-    private Long id;
-
-    @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")
-    @NotNull(message = "密码不能为空")
-    private String password;
-
-}

+ 0 - 30
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/convert/db/DataSourceConfigConvert.java

@@ -1,30 +0,0 @@
-package cn.iocoder.yudao.module.infra.convert.db;
-
-import java.util.*;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-
-import org.mapstruct.Mapper;
-import org.mapstruct.factory.Mappers;
-import cn.iocoder.yudao.module.infra.controller.admin.db.vo.*;
-import cn.iocoder.yudao.module.infra.dal.dataobject.db.DataSourceConfigDO;
-
-/**
- * 数据源配置 Convert
- *
- * @author 芋道源码
- */
-@Mapper
-public interface DataSourceConfigConvert {
-
-    DataSourceConfigConvert INSTANCE = Mappers.getMapper(DataSourceConfigConvert.class);
-
-    DataSourceConfigDO convert(DataSourceConfigCreateReqVO bean);
-
-    DataSourceConfigDO convert(DataSourceConfigUpdateReqVO bean);
-
-    DataSourceConfigRespVO convert(DataSourceConfigDO bean);
-
-    List<DataSourceConfigRespVO> convertList(List<DataSourceConfigDO> list);
-
-}

+ 3 - 4
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/db/DataSourceConfigService.java

@@ -1,7 +1,6 @@
 package cn.iocoder.yudao.module.infra.service.db;
 
-import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigCreateReqVO;
-import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigUpdateReqVO;
+import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigSaveReqVO;
 import cn.iocoder.yudao.module.infra.dal.dataobject.db.DataSourceConfigDO;
 
 import javax.validation.Valid;
@@ -20,14 +19,14 @@ public interface DataSourceConfigService {
      * @param createReqVO 创建信息
      * @return 编号
      */
-    Long createDataSourceConfig(@Valid DataSourceConfigCreateReqVO createReqVO);
+    Long createDataSourceConfig(@Valid DataSourceConfigSaveReqVO createReqVO);
 
     /**
      * 更新数据源配置
      *
      * @param updateReqVO 更新信息
      */
-    void updateDataSourceConfig(@Valid DataSourceConfigUpdateReqVO updateReqVO);
+    void updateDataSourceConfig(@Valid DataSourceConfigSaveReqVO updateReqVO);
 
     /**
      * 删除数据源配置

+ 9 - 10
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/db/DataSourceConfigServiceImpl.java

@@ -1,9 +1,8 @@
 package cn.iocoder.yudao.module.infra.service.db;
 
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.mybatis.core.util.JdbcUtils;
-import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigCreateReqVO;
-import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigUpdateReqVO;
-import cn.iocoder.yudao.module.infra.convert.db.DataSourceConfigConvert;
+import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigSaveReqVO;
 import cn.iocoder.yudao.module.infra.dal.dataobject.db.DataSourceConfigDO;
 import cn.iocoder.yudao.module.infra.dal.mysql.db.DataSourceConfigMapper;
 import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
@@ -35,21 +34,21 @@ public class DataSourceConfigServiceImpl implements DataSourceConfigService {
     private DynamicDataSourceProperties dynamicDataSourceProperties;
 
     @Override
-    public Long createDataSourceConfig(DataSourceConfigCreateReqVO createReqVO) {
-        DataSourceConfigDO dataSourceConfig = DataSourceConfigConvert.INSTANCE.convert(createReqVO);
-        validateConnectionOK(dataSourceConfig);
+    public Long createDataSourceConfig(DataSourceConfigSaveReqVO createReqVO) {
+        DataSourceConfigDO config = BeanUtils.toBean(createReqVO, DataSourceConfigDO.class);
+        validateConnectionOK(config);
 
         // 插入
-        dataSourceConfigMapper.insert(dataSourceConfig);
+        dataSourceConfigMapper.insert(config);
         // 返回
-        return dataSourceConfig.getId();
+        return config.getId();
     }
 
     @Override
-    public void updateDataSourceConfig(DataSourceConfigUpdateReqVO updateReqVO) {
+    public void updateDataSourceConfig(DataSourceConfigSaveReqVO updateReqVO) {
         // 校验存在
         validateDataSourceConfigExists(updateReqVO.getId());
-        DataSourceConfigDO updateObj = DataSourceConfigConvert.INSTANCE.convert(updateReqVO);
+        DataSourceConfigDO updateObj = BeanUtils.toBean(updateReqVO, DataSourceConfigDO.class);
         validateConnectionOK(updateObj);
 
         // 更新

+ 6 - 6
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;
 import cn.iocoder.yudao.framework.mybatis.core.type.EncryptTypeHandler;
 import cn.iocoder.yudao.framework.mybatis.core.util.JdbcUtils;
 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigCreateReqVO;
-import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigUpdateReqVO;
+import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigSaveReqVO;
 import cn.iocoder.yudao.module.infra.dal.dataobject.db.DataSourceConfigDO;
 import cn.iocoder.yudao.module.infra.dal.mysql.db.DataSourceConfigMapper;
 import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
@@ -70,7 +69,8 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest {
     public void testCreateDataSourceConfig_success() {
         try (MockedStatic<JdbcUtils> databaseUtilsMock = mockStatic(JdbcUtils.class)) {
             // 准备参数
-            DataSourceConfigCreateReqVO reqVO = randomPojo(DataSourceConfigCreateReqVO.class);
+            DataSourceConfigSaveReqVO reqVO = randomPojo(DataSourceConfigSaveReqVO.class)
+                    .setId(null); // 避免 id 被设置
             // mock 方法
             databaseUtilsMock.when(() -> JdbcUtils.isConnectionOK(eq(reqVO.getUrl()),
                     eq(reqVO.getUsername()), eq(reqVO.getPassword()))).thenReturn(true);
@@ -81,7 +81,7 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest {
             assertNotNull(dataSourceConfigId);
             // 校验记录的属性是否正确
             DataSourceConfigDO dataSourceConfig = dataSourceConfigMapper.selectById(dataSourceConfigId);
-            assertPojoEquals(reqVO, dataSourceConfig);
+            assertPojoEquals(reqVO, dataSourceConfig, "id");
         }
     }
 
@@ -92,7 +92,7 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest {
             DataSourceConfigDO dbDataSourceConfig = randomPojo(DataSourceConfigDO.class);
             dataSourceConfigMapper.insert(dbDataSourceConfig);// @Sql: 先插入出一条存在的数据
             // 准备参数
-            DataSourceConfigUpdateReqVO reqVO = randomPojo(DataSourceConfigUpdateReqVO.class, o -> {
+            DataSourceConfigSaveReqVO reqVO = randomPojo(DataSourceConfigSaveReqVO.class, o -> {
                 o.setId(dbDataSourceConfig.getId()); // 设置更新的 ID
             });
             // mock 方法
@@ -110,7 +110,7 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest {
     @Test
     public void testUpdateDataSourceConfig_notExists() {
         // 准备参数
-        DataSourceConfigUpdateReqVO reqVO = randomPojo(DataSourceConfigUpdateReqVO.class);
+        DataSourceConfigSaveReqVO reqVO = randomPojo(DataSourceConfigSaveReqVO.class);
 
         // 调用, 并断言异常
         assertServiceException(() -> dataSourceConfigService.updateDataSourceConfig(reqVO), DATA_SOURCE_CONFIG_NOT_EXISTS);