Sfoglia il codice sorgente

新增初始化租户选择数据源类型得到当前数据源下所有库名称接口

韩帛霖 1 anno fa
parent
commit
873da9eb16

+ 11 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/DataSourceController.java

@@ -8,6 +8,7 @@ import com.zkqy.datamodeling.service.IDataSourceService;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+
 @Anonymous
 @RestController
 @RequestMapping("/dataSource")
@@ -23,7 +24,16 @@ public class DataSourceController {
         return AjaxResult.success();
     }
 
-
+    /**
+     * 根据数据源类型得到当前数据源下所有数据库
+     *
+     * @param type 数据源类型
+     * @return
+     */
+    @GetMapping("/querySelectDataSource")
+    public AjaxResult querySelectDataSource(String type) {
+        return AjaxResult.success(dataSourceService.querySelectDatasource(type));
+    }
 
 
 }

+ 13 - 0
zkqy-datamodeling/src/main/java/com/zkqy/datamodeling/mapper/DataSourceMapper.java

@@ -0,0 +1,13 @@
+package com.zkqy.datamodeling.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author hanzihang
+ * @date 2023/8/17 1:52 PM
+ */
+public interface DataSourceMapper {
+
+    List<String> querySelectDatasource(String SQL);
+}

+ 11 - 0
zkqy-datamodeling/src/main/java/com/zkqy/datamodeling/service/IDataSourceService.java

@@ -2,6 +2,9 @@ package com.zkqy.datamodeling.service;
 
 import com.ruoyi.common.core.domain.entity.DataSource;
 
+import java.util.List;
+import java.util.Map;
+
 public interface IDataSourceService {
 
     /**
@@ -10,4 +13,12 @@ public interface IDataSourceService {
     void changeDataSource(DataSource dataSource) throws Exception;
 
 
+    /**
+     * 得到当前数据源下的所有库信息
+     *
+     * @param type 数据源类型
+     * @return
+     */
+    List<String> querySelectDatasource(String type);
+
 }

+ 30 - 1
zkqy-datamodeling/src/main/java/com/zkqy/datamodeling/service/impl/DataSourceServiceImpl.java

@@ -3,10 +3,14 @@ package com.zkqy.datamodeling.service.impl;
 import com.ruoyi.common.config.datamodeling.DynamicDataSource;
 import com.ruoyi.common.core.domain.entity.DataSource;
 import com.ruoyi.common.utils.datamodeling.DataSourceUtils;
+import com.zkqy.datamodeling.mapper.DataSourceMapper;
 import com.zkqy.datamodeling.service.IDataSourceService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
 
 @Service
 public class DataSourceServiceImpl implements IDataSourceService {
@@ -14,6 +18,9 @@ public class DataSourceServiceImpl implements IDataSourceService {
     @Resource
     private DynamicDataSource dynamicDataSource;
 
+    @Resource
+    private DataSourceMapper dataSourceMapper;
+
     @Override
     public void changeDataSource(DataSource dataSource) throws Exception {
 
@@ -21,8 +28,30 @@ public class DataSourceServiceImpl implements IDataSourceService {
         DynamicDataSource.clearDataSource();
         //切换数据源
         dynamicDataSource.changeDataSource(DataSourceUtils.changeDataSource(dataSource));
-//        redisTemplate.opsForValue().set("DataSource", JSON.toJSONString(dataSource));
+        // redisTemplate.opsForValue().set("DataSource", JSON.toJSONString(dataSource));
         System.err.println("当前数据源:" + dataSource.toString());
     }
 
+    @Override
+    public List<String> querySelectDatasource(String type) {
+        List<String> retList = new ArrayList<>();
+        // 得到当前数据源中的所有库信息
+        switch (type) {
+            case "mysql":
+                retList = dataSourceMapper.querySelectDatasource("SHOW DATABASES;");
+                break;
+            case "sqlserver":
+                retList = dataSourceMapper.querySelectDatasource("select name from sys.databases;");
+                break;
+            case "dm":
+                retList = dataSourceMapper.querySelectDatasource("SELECT * FROM all_users;");
+                break;
+            case "oracle":
+                retList = dataSourceMapper.querySelectDatasource("SELECT DISTINCT object_name FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'SCH';");
+                break;
+        }
+        System.out.println(retList);
+        return retList;
+    }
+
 }

+ 9 - 0
zkqy-datamodeling/src/main/resources/mapper/datamodeling/DataSourceMapper.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zkqy.datamodeling.mapper.DataSourceMapper">
+
+    <select id="querySelectDatasource" parameterType="string" resultType="java.lang.String">
+        ${SQL}
+    </select>
+
+</mapper>