From a8cdd55797d18c69febb5bd8d1d120ae481772b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=81=E5=AD=90=E9=BE=99?= <14096380+qwe963852@user.noreply.gitee.com> Date: Thu, 10 Oct 2024 22:21:06 +0800 Subject: [PATCH] =?UTF-8?q?text:()=E4=BF=AE=E6=94=B9=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E5=85=A5=E5=85=A5=E9=A9=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../muyu/auth/service/SysLoginService.java | 5 ++++ .../many/datasource/ManyDataSource.java | 2 +- cloud-modules/cloud-modules-system/pom.xml | 1 + .../service/impl/EnterpriseServiceImpl.java | 30 ++++++++++++++++++- 4 files changed, 36 insertions(+), 2 deletions(-) diff --git a/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java b/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java index 665a504..25b2462 100644 --- a/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java +++ b/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java @@ -1,6 +1,7 @@ package com.muyu.auth.service; +import com.muyu.cloud.common.many.datasource.ManyDataSource; import com.muyu.common.core.constant.CacheConstants; import com.muyu.common.core.constant.Constants; import com.muyu.common.core.constant.SecurityConstants; @@ -41,6 +42,8 @@ public class SysLoginService { @Autowired private RedisService redisService; + + /** * 登录 */ @@ -92,6 +95,8 @@ public class SysLoginService { } passwordService.validate(user, password); recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功"); + + return userInfo; } diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java index 58d672f..749d119 100644 --- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java @@ -43,7 +43,7 @@ public class ManyDataSource implements ApplicationRunner{ private InitDataSource initDataSource; - private List dataSourceInfoList(){ + public List dataSourceInfoList(){ RemoteSaaSService remoteSaaSService = SpringUtils.getBean(RemoteSaaSService.class); Result> tableDataInfoResult = initDataSource.initDatasource(); if (tableDataInfoResult==null){ diff --git a/cloud-modules/cloud-modules-system/pom.xml b/cloud-modules/cloud-modules-system/pom.xml index 4d83d4d..67c6a32 100644 --- a/cloud-modules/cloud-modules-system/pom.xml +++ b/cloud-modules/cloud-modules-system/pom.xml @@ -78,6 +78,7 @@ cloud-common-xxl + diff --git a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/EnterpriseServiceImpl.java b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/EnterpriseServiceImpl.java index b4e7b4e..ea92448 100644 --- a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/EnterpriseServiceImpl.java +++ b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/EnterpriseServiceImpl.java @@ -1,10 +1,20 @@ package com.muyu.server.service.impl; import cn.hutool.core.map.MapUtil; +import com.alibaba.druid.pool.DruidDataSource; import com.muyu.cache.EnterpriseCacheService; +import com.muyu.cloud.common.many.datasource.ManyDataSource; import com.muyu.cloud.common.many.datasource.constents.DatasourceContent; +import com.muyu.cloud.common.many.datasource.domain.model.DataSourceInfo; +import com.muyu.cloud.common.many.datasource.factory.DruidDataSourceFactory; +import com.muyu.cloud.common.many.datasource.init.InitDataSource; +import com.muyu.cloud.common.many.datasource.role.DynamicDataSource; +import com.muyu.cloud.common.saas.domain.Datasource; +import com.muyu.cloud.common.saas.domain.model.EntInfo; +import com.muyu.cloud.common.saas.exception.SaaSException; import com.muyu.common.core.constant.SecurityConstants; import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.SpringUtils; import com.muyu.common.domain.Enterprise; import com.muyu.common.system.domain.Business; import com.muyu.common.system.domain.SysUser; @@ -14,6 +24,7 @@ import com.muyu.server.mapper.EnterpriseMapper; import com.muyu.server.service.EnterpriseService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.support.EncodedResource; import org.springframework.jdbc.datasource.init.ScriptUtils; @@ -42,6 +53,9 @@ public class EnterpriseServiceImpl implements EnterpriseService { @Autowired private RemoteUserService remoteUserService; + @Autowired + private ManyDataSource manyDataSource; + /** * 分页查询企业运营信息 @@ -111,6 +125,7 @@ public class EnterpriseServiceImpl implements EnterpriseService { ClassPathResource rc = new ClassPathResource("saas.sql"); EncodedResource er = new EncodedResource(rc, "utf-8"); ScriptUtils.executeSqlScript(connection1, er); + } catch (SQLException e) { throw new RuntimeException("无法执行SQL脚本", e); } @@ -118,13 +133,26 @@ public class EnterpriseServiceImpl implements EnterpriseService { throw new RuntimeException("链接不到数据源驱动", e); } - } } catch (SQLException e) { e.printStackTrace(); log.error("连接数据库时发生错误或创建数据库失败", e); } + + + + DruidDataSourceFactory druidDataSourceFactory = SpringUtils.getBean(DruidDataSourceFactory.class); + DynamicDataSource dynamicDataSource = SpringUtils.getBean(DynamicDataSource.class); + for (EntInfo entInfo : manyDataSource.dataSourceInfoList()) { + DataSourceInfo dataSourceInfo = DataSourceInfo.hostAndPortBuild( + entInfo.getEntCode(), entInfo.getIp(), entInfo.getPort() + ); + DruidDataSource druidDataSource = druidDataSourceFactory.create(dataSourceInfo); + dynamicDataSource.put(dataSourceInfo.getKey(), druidDataSource); + log.info("存储数据连接池为:key:{}",dataSourceInfo.getKey()); + } + log.info("企业信息插入成功"); return rows; }