From 8193600838d307b72009022cec652b10fb61e342 Mon Sep 17 00:00:00 2001
From: Liu Wu <2780205363@qq.com>
Date: Fri, 20 Sep 2024 15:21:40 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E4=BB=93=E5=BA=93?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
cloud-auth/src/main/resources/bootstrap.yml | 4 +-
.../core/constant/SecurityConstants.java | 5 +
.../core/constant/ServiceNameConstants.java | 5 +
.../core/exception/ServiceException.java | 4 +-
.../com/muyu/common/core/utils/JwtUtils.java | 11 ++
cloud-common/cloud-common-saas/pom.xml | 34 +++++
.../many/datasource/ManyDataSource.java | 118 ++++++++++++++++++
.../constents/DatasourceContent.java | 19 +++
.../domain/model/DataSourceInfo.java | 50 ++++++++
.../factory/DruidDataSourceFactory.java | 40 ++++++
.../holder/DynamicDataSourceHolder.java | 42 +++++++
.../datasource/role/DynamicDataSource.java | 55 ++++++++
.../common/saas/contents/SaaSConstant.java | 12 ++
.../common/saas/domain/model/EntInfo.java | 25 ++++
.../common/saas/exception/SaaSException.java | 28 +++++
.../saas/interceptor/SaaSInterceptor.java | 53 ++++++++
.../saas/interceptor/WebMvcSaaSConfig.java | 31 +++++
...ot.autoconfigure.AutoConfiguration.imports | 3 +
.../common/security/service/TokenService.java | 2 +-
.../common/system/domain/SysFirmUser.java | 25 ++++
.../muyu/common/system/domain/SysUser.java | 5 +
.../system/remote/RemoteUserService.java | 7 ++
.../factory/RemoteUserFallbackFactory.java | 10 ++
cloud-common/pom.xml | 1 +
cloud-gateway/pom.xml | 1 -
.../com/muyu/gateway/filter/AuthFilter.java | 2 +
.../muyu/gateway/utils/WebFrameworkUtils.java | 8 --
.../src/main/resources/bootstrap.yml | 4 +-
cloud-modules/cloud-car/pom.xml | 99 +++++++++++++++
.../com/muyu/cloud/car/CarApplication.java | 25 ++++
.../cloud/car/controller/CarController.java | 30 +++++
.../java/com/muyu/cloud/car/domain/User.java | 28 +++++
.../com/muyu/cloud/car/mapper/CarMapper.java | 20 +++
.../muyu/cloud/car/service/CarService.java | 19 +++
.../car/service/impl/CarServiceImpl.java | 28 +++++
.../cloud-car/src/main/resources/banner.txt | 2 +
.../src/main/resources/bootstrap.yml | 58 +++++++++
.../src/main/resources/logback/dev.xml | 74 +++++++++++
.../src/main/resources/logback/prod.xml | 81 ++++++++++++
.../src/main/resources/logback/test.xml | 81 ++++++++++++
.../main/resources/mapper/car/CarMapper.xml | 10 ++
cloud-modules/cloud-modules-fence/pom.xml | 104 +++++++++++++++
.../java/com/muyu/fence/FenceApplication.java | 19 +++
.../fence/controller/TbFenceController.java | 112 +++++++++++++++++
.../java/com/muyu/fence/domain/TbFence.java | 72 +++++++++++
.../com/muyu/fence/mapper/TbFenceMapper.java | 17 +++
.../muyu/fence/service/ITbFenceService.java | 37 ++++++
.../service/impl/TbFenceServiceImpl.java | 80 ++++++++++++
.../src/main/resources/banner.txt | 2 +
.../src/main/resources/bootstrap.yml | 60 +++++++++
.../src/main/resources/logback/dev.xml | 74 +++++++++++
.../src/main/resources/logback/prod.xml | 88 +++++++++++++
.../src/main/resources/logback/test.xml | 88 +++++++++++++
.../src/main/resources/bootstrap.yml | 6 +-
.../src/main/resources/bootstrap.yml | 4 +-
cloud-modules/cloud-modules-system/pom.xml | 4 -
.../muyu/system/CloudSystemApplication.java | 2 +
.../system/controller/SysUserController.java | 6 +
.../com/muyu/system/mapper/SysUserMapper.java | 3 +
.../com/muyu/system/rabbit/RabbitTest.java | 106 ++++++++--------
.../muyu/system/service/SysUserService.java | 3 +
.../service/impl/SysUserServiceImpl.java | 6 +
.../src/main/resources/bootstrap.yml | 7 +-
.../resources/mapper/system/SysUserMapper.xml | 8 +-
cloud-modules/pom.xml | 3 +
.../src/main/resources/bootstrap.yml | 4 +-
pom.xml | 12 ++
67 files changed, 2001 insertions(+), 85 deletions(-)
create mode 100644 cloud-common/cloud-common-saas/pom.xml
create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java
create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/constents/DatasourceContent.java
create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/domain/model/DataSourceInfo.java
create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/factory/DruidDataSourceFactory.java
create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/holder/DynamicDataSourceHolder.java
create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/role/DynamicDataSource.java
create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/contents/SaaSConstant.java
create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/domain/model/EntInfo.java
create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/exception/SaaSException.java
create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/interceptor/SaaSInterceptor.java
create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/interceptor/WebMvcSaaSConfig.java
create mode 100644 cloud-common/cloud-common-saas/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/domain/SysFirmUser.java
create mode 100644 cloud-modules/cloud-car/pom.xml
create mode 100644 cloud-modules/cloud-car/src/main/java/com/muyu/cloud/car/CarApplication.java
create mode 100644 cloud-modules/cloud-car/src/main/java/com/muyu/cloud/car/controller/CarController.java
create mode 100644 cloud-modules/cloud-car/src/main/java/com/muyu/cloud/car/domain/User.java
create mode 100644 cloud-modules/cloud-car/src/main/java/com/muyu/cloud/car/mapper/CarMapper.java
create mode 100644 cloud-modules/cloud-car/src/main/java/com/muyu/cloud/car/service/CarService.java
create mode 100644 cloud-modules/cloud-car/src/main/java/com/muyu/cloud/car/service/impl/CarServiceImpl.java
create mode 100644 cloud-modules/cloud-car/src/main/resources/banner.txt
create mode 100644 cloud-modules/cloud-car/src/main/resources/bootstrap.yml
create mode 100644 cloud-modules/cloud-car/src/main/resources/logback/dev.xml
create mode 100644 cloud-modules/cloud-car/src/main/resources/logback/prod.xml
create mode 100644 cloud-modules/cloud-car/src/main/resources/logback/test.xml
create mode 100644 cloud-modules/cloud-car/src/main/resources/mapper/car/CarMapper.xml
create mode 100644 cloud-modules/cloud-modules-fence/pom.xml
create mode 100644 cloud-modules/cloud-modules-fence/src/main/java/com/muyu/fence/FenceApplication.java
create mode 100644 cloud-modules/cloud-modules-fence/src/main/java/com/muyu/fence/controller/TbFenceController.java
create mode 100644 cloud-modules/cloud-modules-fence/src/main/java/com/muyu/fence/domain/TbFence.java
create mode 100644 cloud-modules/cloud-modules-fence/src/main/java/com/muyu/fence/mapper/TbFenceMapper.java
create mode 100644 cloud-modules/cloud-modules-fence/src/main/java/com/muyu/fence/service/ITbFenceService.java
create mode 100644 cloud-modules/cloud-modules-fence/src/main/java/com/muyu/fence/service/impl/TbFenceServiceImpl.java
create mode 100644 cloud-modules/cloud-modules-fence/src/main/resources/banner.txt
create mode 100644 cloud-modules/cloud-modules-fence/src/main/resources/bootstrap.yml
create mode 100644 cloud-modules/cloud-modules-fence/src/main/resources/logback/dev.xml
create mode 100644 cloud-modules/cloud-modules-fence/src/main/resources/logback/prod.xml
create mode 100644 cloud-modules/cloud-modules-fence/src/main/resources/logback/test.xml
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