diff --git a/ruoyi-common/muyu-common-security/src/main/java/com/ruoyi/common/security/aspect/PreAuthorizeAspect.java b/ruoyi-common/muyu-common-security/src/main/java/com/ruoyi/common/security/aspect/PreAuthorizeAspect.java index f0ecb04..51e6890 100644 --- a/ruoyi-common/muyu-common-security/src/main/java/com/ruoyi/common/security/aspect/PreAuthorizeAspect.java +++ b/ruoyi-common/muyu-common-security/src/main/java/com/ruoyi/common/security/aspect/PreAuthorizeAspect.java @@ -10,7 +10,6 @@ import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.springframework.stereotype.Component; - import java.lang.reflect.Method; /** diff --git a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/pom.xml b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/pom.xml index 5427789..6e527a8 100644 --- a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/pom.xml +++ b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/pom.xml @@ -18,6 +18,11 @@ UTF-8 + + com.muyu + ruoyi-data_asset-common + 3.6.3 + com.muyu ruoyi-data_asset-remote diff --git a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/java/com/ruoyi/dataAsset/config/DataAssetApplicationRunner.java b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/java/com/ruoyi/dataAsset/config/DataAssetApplicationRunner.java index 817b301..1e2c845 100644 --- a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/java/com/ruoyi/dataAsset/config/DataAssetApplicationRunner.java +++ b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/java/com/ruoyi/dataAsset/config/DataAssetApplicationRunner.java @@ -1,6 +1,9 @@ package com.ruoyi.dataAsset.config; +import com.alibaba.druid.pool.DruidDataSource; import com.ruoyi.common.core.domain.Result; +import com.ruoyi.common.core.text.Convert; +import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.page.TableDataInfo; import com.ruoyi.dataAsset.domain.DataSource; import com.ruoyi.dataAsset.domain.req.DataSourceQueryReq; @@ -9,6 +12,7 @@ import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; +import java.util.List; /** * 数据资产应用程序运行程序 @@ -22,13 +26,94 @@ public class DataAssetApplicationRunner implements ApplicationRunner { @Autowired private RemoteDataAssetService remoteDataAssetService; + @Autowired + private DruidDataSourceFactory druidDataSourceFactory; + @Override public void run(ApplicationArguments args) throws Exception { Result> result = remoteDataAssetService.list(new DataSourceQueryReq()); if(Result.isSuccess(result)){ - log.info(result.getData()); - }else { - log.error(result.getMsg()); + this.druidDataSourceMap(result.getData().getRows()); } } + + + public void druidDataSourceMap(List dataSourceList){ + for (DataSource dataSource : dataSourceList) { + if(dataSource.getStatus().equals("N")){ + continue; + } + try { + druidDataSourceFactory.put(dataSource.getId(),this.createDataSource(dataSource)); + } catch (Exception e) { + throw new RuntimeException(e.getMessage()); + } + } + }; + + /** + * 获取Druid连接池数据源 + * @param dataSource 数据源 + * @return Druid数据源 + */ + public DruidDataSource createDataSource(DataSource dataSource) { + DruidDataSource druidDataSource = null; + String driverType=null; + String url="jdbc:"+dataSource.getDatabaseType()+dataSource.getIp()+":"+dataSource.getPort(); + if(dataSource.getDatabaseType().contains("mysql")){ + driverType="com.mysql.cj.jdbc.Driver"; + url+="/"+dataSource.getDatabases(); + }else if(dataSource.getDatabaseType().contains("sqlserver")){ + driverType="com.microsoft.sqlserver.jdbc.SQLServerDriver"; + url+=";DatabaseName="+dataSource.getDatabases()+";"; + } + if(StringUtils.isNotEmpty(dataSource.getConnectionParameter())){ + if(dataSource.getDatabaseType().contains("mysql")){ + url+="?"+dataSource.getConnectionParameter(); + }else { + url+=dataSource.getConnectionParameter()+";"; + } + } + try { + //手动创建数据源 + druidDataSource = new DruidDataSource(); + druidDataSource.setName(dataSource.getId().toString()); + druidDataSource.setDriverClassName(driverType); + druidDataSource.setUrl(url); + druidDataSource.setUsername(dataSource.getUsername()); + druidDataSource.setPassword(dataSource.getPassword()); + //设置连接配置 + if(StringUtils.isNotEmpty(dataSource.getConnectionConfig())){ + String[] configs = dataSource.getConnectionConfig().split(","); + for (String config : configs) { + String[] split = config.split("="); + if(config.contains("initNum")){ + //初始化连接池大小 + druidDataSource.setInitialSize(split.length>1&&!split[1].equals("null")&&StringUtils.isNotEmpty(split[1])? Convert.toInt(split[1]):5); + }else if(config.contains("maxNum")){ + //最大连接数 + druidDataSource.setMaxActive(split.length>1&&!split[1].equals("null")&&StringUtils.isNotEmpty(split[1])?Convert.toInt(split[1]):20); + }else if(config.contains("minIdle")){ + //最小空闲数 + druidDataSource.setMinIdle(split.length>1&&!split[1].equals("null")&&StringUtils.isNotEmpty(split[1])?Convert.toInt(split[1]):5); + }else { + //获取连接最大等待时间,单位毫秒 + druidDataSource.setMaxWait(split.length>1&&!split[1].equals("null")&&StringUtils.isNotEmpty(split[1])?Convert.toInt(split[1]):4000); + } + } + } + String validationQuery = "select 1"; + //申请连接时执行validationQuery检测连接是否有效,防止取到的连接不可用 + druidDataSource.setTestOnBorrow(true); + druidDataSource.setValidationQuery(validationQuery); + //防止DruidDataSource一直尝试获取连接,导致服务卡死 + druidDataSource.setConnectionErrorRetryAttempts(0); + druidDataSource.setBreakAfterAcquireFailure(true); + druidDataSource.setConnectTimeout(2000); + druidDataSource.init(); + } catch (Exception e) { + throw new RuntimeException(e); + } + return druidDataSource; + } } diff --git a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/java/com/ruoyi/dataAsset/config/DataAssetClientConfig.java b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/java/com/ruoyi/dataAsset/config/DataAssetClientConfig.java deleted file mode 100644 index 0f5ac75..0000000 --- a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/java/com/ruoyi/dataAsset/config/DataAssetClientConfig.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.ruoyi.dataAsset.config; - -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Import; - -/** - * 数据资产客户端配置 - * @ClassName DataAssetClientConfig - * @Author 森静若林 - * @Date 2024/5/8 20:30 - */ -@ComponentScan -@Import(DataAssetApplicationRunner.class) -public class DataAssetClientConfig { -} diff --git a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/java/com/ruoyi/dataAsset/config/DruidDataSourceFactory.java b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/java/com/ruoyi/dataAsset/config/DruidDataSourceFactory.java new file mode 100644 index 0000000..99096e4 --- /dev/null +++ b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/java/com/ruoyi/dataAsset/config/DruidDataSourceFactory.java @@ -0,0 +1,29 @@ +package com.ruoyi.dataAsset.config; + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Import; + +import java.util.HashMap; +import java.util.Map; + +/** + * 数据资产客户端配置 + * @ClassName DataAssetClientConfig + * @Author 森静若林 + * @Date 2024/5/8 20:30 + */ +@ComponentScan +@Import(DataAssetApplicationRunner.class) +public class DruidDataSourceFactory { + + private final Map druidDataSourceMap=new HashMap<>(); + + public Map getMap(){ + return this.druidDataSourceMap; + } + + public void put(Long id,DruidDataSource druidDataSource){ + this.druidDataSourceMap.put(id,druidDataSource); + } +} diff --git a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 44754d7..75f0026 100644 --- a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1 +1 @@ -com.ruoyi.dataAsset.config.DataAssetClientConfig +com.ruoyi.dataAsset.config.DruidDataSourceFactory diff --git a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-remote/src/main/java/com/ruoyi/dataAsset/remote/RemoteDataAssetService.java b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-remote/src/main/java/com/ruoyi/dataAsset/remote/RemoteDataAssetService.java index 06667ae..43b6a59 100644 --- a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-remote/src/main/java/com/ruoyi/dataAsset/remote/RemoteDataAssetService.java +++ b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-remote/src/main/java/com/ruoyi/dataAsset/remote/RemoteDataAssetService.java @@ -3,7 +3,6 @@ package com.ruoyi.dataAsset.remote; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.Result; import com.ruoyi.common.core.web.page.TableDataInfo; -import com.ruoyi.common.security.annotation.InnerAuth; import com.ruoyi.dataAsset.domain.DataSource; import com.ruoyi.dataAsset.domain.req.DataSourceQueryReq; import com.ruoyi.dataAsset.remote.factory.RemoteDataAssetFactory; diff --git a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-server/src/main/java/com/ruoyi/dataAsset/controller/DataSourceController.java b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-server/src/main/java/com/ruoyi/dataAsset/controller/DataSourceController.java index ab86dcb..57ce29b 100644 --- a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-server/src/main/java/com/ruoyi/dataAsset/controller/DataSourceController.java +++ b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-server/src/main/java/com/ruoyi/dataAsset/controller/DataSourceController.java @@ -44,7 +44,7 @@ public class DataSourceController extends BaseController { * 查询数据接入列表 */ @ApiOperation("获取数据接入列表") - @RequiresPermissions("dataAsset:source:list") + //@RequiresPermissions("dataAsset:source:list") @GetMapping("/list") public Result> list(DataSourceQueryReq dataSourceQueryReq) { startPage(); diff --git a/ruoyi-modules/ruoyi-data_transform/src/main/java/com/ruoyi/dataTransform/controller/DataSourceTestController.java b/ruoyi-modules/ruoyi-data_transform/src/main/java/com/ruoyi/dataTransform/controller/DataSourceTestController.java new file mode 100644 index 0000000..85ca996 --- /dev/null +++ b/ruoyi-modules/ruoyi-data_transform/src/main/java/com/ruoyi/dataTransform/controller/DataSourceTestController.java @@ -0,0 +1,29 @@ +package com.ruoyi.dataTransform.controller; + +import com.alibaba.druid.pool.DruidDataSource; +import com.ruoyi.common.core.domain.Result; +import com.ruoyi.dataAsset.config.DruidDataSourceFactory; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Map; + +/** + * 数据源测试 + * @ClassName DataSourceTestController + * @Author 森静若林 + * @Date 2024/5/9 10:56 + */ +@RestController +public class DataSourceTestController { + + @Resource + private DruidDataSourceFactory druidDataSourceFactory; + + @GetMapping("/test") + public Result test(){ + Map map = druidDataSourceFactory.getMap(); + System.out.println(map); + return Result.success(); + } +} diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/dataAsset/controller/EngineVersionController.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/dataAsset/controller/EngineVersionController.java index 431613a..72b41d9 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/dataAsset/controller/EngineVersionController.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/dataAsset/controller/EngineVersionController.java @@ -39,7 +39,7 @@ public class EngineVersionController extends BaseController { * 查询引擎规则版本列表 */ @ApiOperation("查询引擎规则版本列表") - @RequiresPermissions("ruleEngine:version:list") + //@RequiresPermissions("ruleEngine:version:list") @GetMapping("/list") public Result> list(EngineVersionQueryReq engineConfigQueryReq) { return Result.success(engineVersionService.list(EngineVersion.queryBuild(engineConfigQueryReq)));