diff --git a/cloud-auth/src/main/resources/bootstrap.yml b/cloud-auth/src/main/resources/bootstrap.yml
index a2a37e1..8581ac4 100644
--- a/cloud-auth/src/main/resources/bootstrap.yml
+++ b/cloud-auth/src/main/resources/bootstrap.yml
@@ -4,10 +4,10 @@ server:
# nacos线上地址
nacos:
- addr: 47.116.173.119:8848
+ addr: 106.15.136.7:8848
user-name: nacos
password: nacos
- namespace: six
+ namespace: xzr
# Spring
spring:
application:
diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/ServiceException.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/ServiceException.java
index 5039bc0..11bb283 100644
--- a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/ServiceException.java
+++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/exception/ServiceException.java
@@ -5,7 +5,7 @@ package com.muyu.common.core.exception;
*
* @author muyu
*/
-public final class ServiceException extends RuntimeException {
+public class ServiceException extends RuntimeException {
private static final long serialVersionUID = 1L;
/**
diff --git a/cloud-common/cloud-common-saas/pom.xml b/cloud-common/cloud-common-saas/pom.xml
new file mode 100644
index 0000000..dc6beec
--- /dev/null
+++ b/cloud-common/cloud-common-saas/pom.xml
@@ -0,0 +1,34 @@
+
+
+ 4.0.0
+
+ com.muyu
+ cloud-common
+ 3.6.3
+
+
+ cloud-common-saas
+ SaaS公共依赖
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+
+ com.muyu
+ cloud-common-datasource
+
+
+
+
+ com.muyu
+ cloud-common-security
+
+
+
\ No newline at end of file
diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/common/many/datasource/ManyDataSource.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/common/many/datasource/ManyDataSource.java
new file mode 100644
index 0000000..1c72866
--- /dev/null
+++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/common/many/datasource/ManyDataSource.java
@@ -0,0 +1,129 @@
+package com.muyu.common.many.datasource;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import com.alibaba.fastjson2.JSON;
+import com.muyu.common.core.domain.Result;
+import com.muyu.common.core.utils.SpringUtils;
+import com.muyu.common.many.datasource.constents.DatasourceContent;
+import com.muyu.common.many.datasource.domain.model.DataSourceInfo;
+import com.muyu.common.many.datasource.factory.DruidDataSourceFactory;
+import com.muyu.common.many.datasource.role.DynamicDataSource;
+import com.muyu.common.saas.domain.model.EntInfo;
+import com.muyu.common.saas.exception.SaaSException;
+import com.muyu.common.system.domain.SysUser;
+import com.muyu.common.system.remote.RemoteUserService;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Primary;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author: zi run
+ * @Date 2024/9/18 22:08
+ * @Description 多数据源
+ */
+@Log4j2
+@Component
+public class ManyDataSource implements ApplicationRunner {
+
+ @PostConstruct
+ public void init(){
+ new Thread(() -> {
+ try {
+ Thread.sleep(10000);
+ } catch (InterruptedException ignored) {}
+ DruidDataSourceFactory druidDataSourceFactory = SpringUtils.getBean(DruidDataSourceFactory.class);
+ DynamicDataSource dynamicDataSource = SpringUtils.getBean(DynamicDataSource.class);
+ EntInfo entInfo = EntInfo.builder()
+ .entCode("ent_4588")
+ .ip("192.168.40.132")
+ .port(3308)
+ .build();
+ DataSourceInfo dataSourceInfo = DataSourceInfo.hostAndPortBuild(entInfo.getEntCode(), entInfo.getIp(), entInfo.getPort());
+ DruidDataSource druidDataSource = druidDataSourceFactory.create(dataSourceInfo);
+ dynamicDataSource.put(dataSourceInfo.getKey(), druidDataSource);
+ }).start();
+ }
+
+
+ private List dataSourceInfoList(){
+ RemoteUserService remoteUserService = SpringUtils.getBean(RemoteUserService.class);
+ Result> tableDataInfoResult = remoteUserService.companyList();
+ if (tableDataInfoResult==null){
+ throw new SaaSException("saas远调数据源错误");
+ }
+ List data = tableDataInfoResult.getData();
+ if (tableDataInfoResult.getCode() ==Result.SUCCESS && data !=null){
+ List list = new ArrayList<>();
+ for (SysUser row : data) {
+ list.add(
+ EntInfo.builder()
+ .entCode(row.getDatabaseName())
+ .ip(DatasourceContent.IP)
+ .port(DatasourceContent.PORT)
+ .build()
+ );
+ }
+ return list;
+ }else {
+ log.error("远调数据源错误,远调数据为:{}", JSON.toJSONString(data));
+ return null;
+ }
+ }
+
+ // private List dataPrimarySourceInfoList(){
+// List list = new ArrayList<>();
+// list.add(
+// EntInfo.builder()
+// .entCode()
+// .ip(DatasourceContent.IP)
+// .port(DatasourceContent.PORT)
+// .build()
+// );
+// return list;
+// }
+
+ @Bean
+ @Primary
+ public DynamicDataSource dynamicDataSource(DruidDataSourceFactory druidDataSourceFactory) {
+
+ // 企业列表 企业CODE,端口,IP
+
+ Map