From b9f5935ee3a906a6c8c47833ff543603a8476e75 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Tue, 23 Aug 2022 14:35:47 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.2.4=E3=80=91=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E8=8E=B7=E5=8F=96=E6=95=B0=E6=8D=AE=E6=BA=90?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E7=9A=84api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../roses/kernel/rule/enums/DbTypeEnum.java | 23 ++++++++++++- .../roses/kernel/dsctn/api/DataSourceApi.java | 11 ++++++ .../dsctn/api/pojo/DataBaseInfoDto.java | 34 +++++++++++++++++++ .../service/impl/DatabaseInfoServiceImpl.java | 18 ++++++++++ 4 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/pojo/DataBaseInfoDto.java diff --git a/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/DbTypeEnum.java b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/DbTypeEnum.java index aed892cc5..da21f276b 100644 --- a/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/DbTypeEnum.java +++ b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/DbTypeEnum.java @@ -1,4 +1,3 @@ - package cn.stylefeng.roses.kernel.rule.enums; import lombok.Getter; @@ -60,4 +59,26 @@ public enum DbTypeEnum { this.validateQuery = validateQuery; } + /** + * 通过url判断是哪种数据库 + * + * @author fengshuonan + * @date 2022/8/23 14:22 + */ + public static String getTypeByUrl(String url) { + if (url == null) { + return MYSQL.getUrlWords(); + } + if (url.contains(DbTypeEnum.ORACLE.getUrlWords())) { + return ORACLE.getUrlWords(); + } else if (url.contains(DbTypeEnum.DM.getUrlWords())) { + return DM.getUrlWords(); + } else if (url.contains(DbTypeEnum.MS_SQL.getUrlWords())) { + return MS_SQL.getUrlWords(); + } else if (url.contains(DbTypeEnum.PG_SQL.getUrlWords())) { + return PG_SQL.getUrlWords(); + } + return MYSQL.getUrlWords(); + } + } diff --git a/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/DataSourceApi.java b/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/DataSourceApi.java index f20c4752a..e5672272d 100644 --- a/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/DataSourceApi.java +++ b/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/DataSourceApi.java @@ -1,9 +1,12 @@ package cn.stylefeng.roses.kernel.dsctn.api; import cn.stylefeng.roses.kernel.dsctn.api.exception.DatasourceContainerException; +import cn.stylefeng.roses.kernel.dsctn.api.pojo.DataBaseInfoDto; import cn.stylefeng.roses.kernel.dsctn.api.pojo.DataSourceDto; import cn.stylefeng.roses.kernel.dsctn.api.pojo.request.DatabaseInfoRequest; +import java.util.List; + /** * 数据库连接的api * @@ -41,4 +44,12 @@ public interface DataSourceApi { */ void deleteByDatasourceCode(String datasourceCode); + /** + * 获取所有数据源连接信息 + * + * @author fengshuonan + * @date 2022/8/23 14:03 + */ + List getDatasourceList(); + } diff --git a/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/pojo/DataBaseInfoDto.java b/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/pojo/DataBaseInfoDto.java new file mode 100644 index 000000000..dd8b0792a --- /dev/null +++ b/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/pojo/DataBaseInfoDto.java @@ -0,0 +1,34 @@ +package cn.stylefeng.roses.kernel.dsctn.api.pojo; + +import lombok.Data; + +/** + * 数据库连接信息的DTO + * + * @author fengshuonan + * @date 2022/8/23 14:06 + */ +@Data +public class DataBaseInfoDto { + + /** + * 数据库连接的id + */ + private Long dbId; + + /** + * 数据库类型 + */ + private String dbType; + + /** + * 数据库连接的名称 + */ + private String dbName; + + /** + * 数据库连接的备注 + */ + private String remarks; + +} diff --git a/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/service/impl/DatabaseInfoServiceImpl.java b/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/service/impl/DatabaseInfoServiceImpl.java index 3d53397b8..7c1e91393 100644 --- a/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/service/impl/DatabaseInfoServiceImpl.java +++ b/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/service/impl/DatabaseInfoServiceImpl.java @@ -33,6 +33,7 @@ import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; import cn.stylefeng.roses.kernel.db.api.pojo.druid.DruidProperties; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.dsctn.api.exception.DatasourceContainerException; +import cn.stylefeng.roses.kernel.dsctn.api.pojo.DataBaseInfoDto; import cn.stylefeng.roses.kernel.dsctn.api.pojo.DataSourceDto; import cn.stylefeng.roses.kernel.dsctn.api.pojo.request.DatabaseInfoRequest; import cn.stylefeng.roses.kernel.dsctn.context.DataSourceContext; @@ -45,6 +46,7 @@ import cn.stylefeng.roses.kernel.group.api.constants.GroupConstants; import cn.stylefeng.roses.kernel.group.api.pojo.SysGroupDTO; import cn.stylefeng.roses.kernel.group.api.pojo.SysGroupRequest; import cn.stylefeng.roses.kernel.rule.constants.RuleConstants; +import cn.stylefeng.roses.kernel.rule.enums.DbTypeEnum; import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum; import com.alibaba.druid.pool.DruidDataSource; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -60,6 +62,7 @@ import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.List; +import java.util.stream.Collectors; import static cn.stylefeng.roses.kernel.dsctn.api.constants.DatasourceContainerConstants.DATASOURCE_GROUP_CODE; import static cn.stylefeng.roses.kernel.dsctn.api.constants.DatasourceContainerConstants.MASTER_DATASOURCE_NAME; @@ -108,6 +111,21 @@ public class DatabaseInfoServiceImpl extends ServiceImpl getDatasourceList() { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.select(DatabaseInfo::getDbId, DatabaseInfo::getDbName, DatabaseInfo::getRemarks, DatabaseInfo::getJdbcUrl); + List list = this.list(wrapper); + + return list.stream().map(item -> { + DataBaseInfoDto dataBaseInfoDto = new DataBaseInfoDto(); + BeanUtil.copyProperties(item, dataBaseInfoDto); + String type = DbTypeEnum.getTypeByUrl(item.getJdbcUrl()); + dataBaseInfoDto.setDbType(type); + return dataBaseInfoDto; + }).collect(Collectors.toList()); + } + @Override @Transactional(rollbackFor = Exception.class) public void del(DatabaseInfoRequest databaseInfoRequest) {