diff --git a/cloud-auth/src/main/resources/bootstrap.yml b/cloud-auth/src/main/resources/bootstrap.yml
index 527153a..38c7f2a 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: 47.101.53.251:8848
user-name: nacos
password: nacos
- namespace: five
+ namespace: four
# Spring
spring:
application:
diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/SecurityConstants.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/SecurityConstants.java
index c862929..0e9b22d 100644
--- a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/SecurityConstants.java
+++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/SecurityConstants.java
@@ -45,4 +45,9 @@ public class SecurityConstants {
* 角色权限
*/
public static final String ROLE_PERMISSION = "role_permission";
+
+ /**
+ * SAAS请求头的key
+ */
+ public static final String SAAS_KEY = "ent-code";
}
diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java
index bb59b70..c529d7e 100644
--- a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java
+++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/constant/ServiceNameConstants.java
@@ -20,4 +20,9 @@ public class ServiceNameConstants {
* 文件服务的serviceid
*/
public static final String FILE_SERVICE = "cloud-file";
+
+ /**
+ * 智能车联服务
+ */
+ public static final String SMART_SERVICE = "cloud-smart-car";
}
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..9c86969 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;
/**
@@ -21,7 +21,7 @@ public final class ServiceException extends RuntimeException {
/**
* 错误明细,内部调试错误
*
- * 和 {@link CommonResult#getDetailMessage()} 一致的设计
+ * 和 {CommonResult#getDetailMessage()} 一致的设计
*/
private String detailMessage;
diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java
index 62816cb..c94e051 100644
--- a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java
+++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/JwtUtils.java
@@ -162,4 +162,15 @@ public class JwtUtils {
public static String getValue (Claims claims, String key) {
return Convert.toStr(claims.get(key), "");
}
+
+ /**
+ * 根据身份信息获取SAASKey
+ *
+ * @param claims 身份信息
+ *
+ * @return saas_key
+ */
+ public static String getSaasKey(Claims claims) {
+ return getValue(claims, SecurityConstants.SAAS_KEY);
+ }
}
diff --git a/cloud-common/cloud-common-saas/pom.xml b/cloud-common/cloud-common-saas/pom.xml
new file mode 100644
index 0000000..60b4041
--- /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
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+
+ com.muyu
+ cloud-common-datasource
+
+
+
+
+ com.muyu
+ cloud-common-security
+
+
+
+
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
new file mode 100644
index 0000000..39f7683
--- /dev/null
+++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java
@@ -0,0 +1,118 @@
+package com.muyu.cloud.common.many.datasource;
+
+import cn.hutool.json.JSONObject;
+import com.alibaba.druid.pool.DruidDataSource;
+import com.alibaba.fastjson2.JSON;
+import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
+import com.muyu.cloud.common.many.datasource.constents.DatasourceContent;
+import com.muyu.cloud.common.saas.domain.model.EntInfo;
+import com.muyu.cloud.common.many.datasource.factory.DruidDataSourceFactory;
+import com.muyu.cloud.common.many.datasource.domain.model.DataSourceInfo;
+import com.muyu.cloud.common.many.datasource.role.DynamicDataSource;
+import com.muyu.cloud.common.saas.exception.SaaSException;
+import com.muyu.common.core.domain.Result;
+import com.muyu.common.core.utils.SpringUtils;
+import com.muyu.common.core.web.page.TableDataInfo;
+import com.muyu.common.system.domain.SysFirmUser;
+import com.muyu.common.system.domain.SysUser;
+import com.muyu.common.system.remote.RemoteUserService;
+import lombok.extern.log4j.Log4j2;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.boot.autoconfigure.AutoConfiguration;
+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: DongZeLiang
+ * @date: 2024/6/3
+ * @Description: 多数据源
+ * @Version: 1.0
+ */
+@Log4j2
+@Component
+@AutoConfiguration(before = MybatisPlusAutoConfiguration.class)
+public class ManyDataSource implements ApplicationRunner{
+
+
+ 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
+ public DynamicDataSource dynamicDataSource(DruidDataSourceFactory druidDataSourceFactory) {
+ // 企业列表 企业CODE,端口,IP
+ Map