From c0838ab20dc582e273d4032c77085c979b17322c Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Tue, 15 Aug 2023 14:57:24 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=908.0=E3=80=91=E3=80=90ds=E3=80=91?= =?UTF-8?q?=E6=9B=B4=E6=96=B0ds=E4=B8=80=E4=B8=AA=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E8=8E=B7=E5=8F=96=E5=BD=93=E5=89=8D=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E6=8D=AE=E6=BA=90=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../roses/kernel/dsctn/api/DataSourceApi.java | 9 ++++ .../service/impl/DatabaseInfoServiceImpl.java | 42 +++++++++++++++++-- 2 files changed, 47 insertions(+), 4 deletions(-) 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 074f11592..3a0724840 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 @@ -4,6 +4,7 @@ import cn.stylefeng.roses.kernel.dsctn.api.exception.DatasourceContainerExceptio 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.rule.enums.DbTypeEnum; import java.util.List; @@ -52,4 +53,12 @@ public interface DataSourceApi { */ List getDatasourceList(); + /** + * 获取当前运行环境下的数据库类型 + * + * @author fengshuonan + * @since 2023/8/15 14:43 + */ + DbTypeEnum getCurrentDbType(); + } 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 4ca50219e..bd0e7ef6f 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 @@ -32,6 +32,7 @@ import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; 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.context.CurrentDataSourceContext; import cn.stylefeng.roses.kernel.dsctn.api.exception.DatasourceContainerException; import cn.stylefeng.roses.kernel.dsctn.api.exception.enums.DatasourceContainerExceptionEnum; import cn.stylefeng.roses.kernel.dsctn.api.pojo.DataBaseInfoDto; @@ -50,6 +51,7 @@ import cn.stylefeng.roses.kernel.rule.constants.RuleConstants; import cn.stylefeng.roses.kernel.rule.enums.DbTypeEnum; import cn.stylefeng.roses.kernel.rule.enums.StatusEnum; import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum; +import cn.stylefeng.roses.kernel.rule.util.DatabaseTypeUtil; import com.alibaba.druid.pool.DruidDataSource; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -64,6 +66,7 @@ import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; import static cn.stylefeng.roses.kernel.dsctn.api.constants.DatasourceContainerConstants.DATASOURCE_GROUP_CODE; @@ -131,6 +134,33 @@ public class DatabaseInfoServiceImpl extends ServiceImpl dataSourcesProps = DataSourceContext.getDataSourcesConfs(); + DruidProperties druidProperties = dataSourcesProps.get(dataSourceName); + + // 如果查询不到当前环境的数据源信息,则返回空 + if (druidProperties == null) { + return null; + } + + String url = druidProperties.getUrl(); + if (ObjectUtil.isNotEmpty(url)) { + return null; + } + + // 根据url信息获取数据源的类型 + return DatabaseTypeUtil.getDbType(url); + } + @Override @Transactional(rollbackFor = Exception.class) public void del(DatabaseInfoRequest databaseInfoRequest) { @@ -236,7 +266,8 @@ public class DatabaseInfoServiceImpl extends ServiceImpl