From b75b28fce183336ee4f53cf68bb120fc2c083ad1 Mon Sep 17 00:00:00 2001
From: baize <3533151373@qq.com>
Date: Tue, 4 Jun 2024 21:32:59 +0800
Subject: [PATCH] =?UTF-8?q?feat():=E5=AE=8C=E5=96=84=E5=A4=9A=E6=95=B0?=
=?UTF-8?q?=E6=8D=AE=E6=BA=90=E7=AE=A1=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../core/exception/ServiceException.java | 2 +-
muyu-common/muyu-common-saas/pom.xml | 32 +++++++
.../many/datasource/ManyDataSource.java | 85 +++++++++++++++++
.../constents}/DatasourceContent.java | 4 +-
.../domain/model/DataSourceInfo.java | 6 +-
.../factory/DruidDataSourceFactory.java | 4 +-
.../holder/DynamicDataSourceHolder.java | 2 +-
.../datasource}/role/DynamicDataSource.java | 25 ++++-
.../common/saas/constents/SaaSConstant.java | 12 +++
.../saas/domain/model/EnterPriseInfo.java | 25 +++++
.../common/saas/exception/SaaSException.java | 26 ++++++
.../saas/interceptor/SaaSInterceptor.java | 54 +++++++++++
.../saas/interceptor/WebMvcSaaSConfig.java | 31 +++++++
...ot.autoconfigure.AutoConfiguration.imports | 1 +
muyu-common/pom.xml | 1 +
.../datasource/config/ManyDataSource.java | 40 --------
.../controller/VehicleController.java | 31 +++++++
.../muyu/many/datasource/domain/Vehicle.java | 93 +++++++++++++++++++
.../many/datasource/mapper/VehicleMapper.java | 14 +++
19 files changed, 437 insertions(+), 51 deletions(-)
create mode 100644 muyu-common/muyu-common-saas/pom.xml
create mode 100644 muyu-common/muyu-common-saas/src/main/java/com/muyu/common/many/datasource/ManyDataSource.java
rename {muyu-modules/muyu-many-datasource/src/main/java/com/muyu/many/datasource/config => muyu-common/muyu-common-saas/src/main/java/com/muyu/common/many/datasource/constents}/DatasourceContent.java (78%)
rename {muyu-modules/muyu-many-datasource/src/main/java/com/muyu/many/datasource/config => muyu-common/muyu-common-saas/src/main/java/com/muyu/common/many/datasource}/domain/model/DataSourceInfo.java (85%)
rename {muyu-modules/muyu-many-datasource/src/main/java/com/muyu/many/datasource/config => muyu-common/muyu-common-saas/src/main/java/com/muyu/common/many/datasource}/factory/DruidDataSourceFactory.java (91%)
rename {muyu-modules/muyu-many-datasource/src/main/java/com/muyu/many/datasource/config => muyu-common/muyu-common-saas/src/main/java/com/muyu/common/many/datasource}/holder/DynamicDataSourceHolder.java (95%)
rename {muyu-modules/muyu-many-datasource/src/main/java/com/muyu/many/datasource/config => muyu-common/muyu-common-saas/src/main/java/com/muyu/common/many/datasource}/role/DynamicDataSource.java (62%)
create mode 100644 muyu-common/muyu-common-saas/src/main/java/com/muyu/common/saas/constents/SaaSConstant.java
create mode 100644 muyu-common/muyu-common-saas/src/main/java/com/muyu/common/saas/domain/model/EnterPriseInfo.java
create mode 100644 muyu-common/muyu-common-saas/src/main/java/com/muyu/common/saas/exception/SaaSException.java
create mode 100644 muyu-common/muyu-common-saas/src/main/java/com/muyu/common/saas/interceptor/SaaSInterceptor.java
create mode 100644 muyu-common/muyu-common-saas/src/main/java/com/muyu/common/saas/interceptor/WebMvcSaaSConfig.java
create mode 100644 muyu-common/muyu-common-saas/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
delete mode 100644 muyu-modules/muyu-many-datasource/src/main/java/com/muyu/many/datasource/config/ManyDataSource.java
create mode 100644 muyu-modules/muyu-many-datasource/src/main/java/com/muyu/many/datasource/controller/VehicleController.java
create mode 100644 muyu-modules/muyu-many-datasource/src/main/java/com/muyu/many/datasource/domain/Vehicle.java
create mode 100644 muyu-modules/muyu-many-datasource/src/main/java/com/muyu/many/datasource/mapper/VehicleMapper.java
diff --git a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/exception/ServiceException.java b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/exception/ServiceException.java
index 5039bc0..6b5941b 100644
--- a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/exception/ServiceException.java
+++ b/muyu-common/muyu-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/muyu-common/muyu-common-saas/pom.xml b/muyu-common/muyu-common-saas/pom.xml
new file mode 100644
index 0000000..0f5f375
--- /dev/null
+++ b/muyu-common/muyu-common-saas/pom.xml
@@ -0,0 +1,32 @@
+
+
+ 4.0.0
+
+ com.muyu
+ muyu-common
+ 3.6.3
+
+
+ muyu-common-saas
+
+ SaaS公共依赖
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+ com.muyu
+ muyu-common-datasource
+
+
+ com.muyu
+ muyu-common-security
+
+
+
diff --git a/muyu-common/muyu-common-saas/src/main/java/com/muyu/common/many/datasource/ManyDataSource.java b/muyu-common/muyu-common-saas/src/main/java/com/muyu/common/many/datasource/ManyDataSource.java
new file mode 100644
index 0000000..00da02d
--- /dev/null
+++ b/muyu-common/muyu-common-saas/src/main/java/com/muyu/common/many/datasource/ManyDataSource.java
@@ -0,0 +1,85 @@
+package com.muyu.common.many.datasource;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import com.muyu.common.core.utils.SpringUtils;
+import com.muyu.common.many.datasource.domain.model.DataSourceInfo;
+import com.muyu.common.many.datasource.factory.DruidDataSourceFactory;
+import com.muyu.common.saas.domain.model.EnterPriseInfo;
+import com.muyu.common.many.datasource.role.DynamicDataSource;
+import lombok.AllArgsConstructor;
+import lombok.extern.log4j.Log4j2;
+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;
+
+/**
+ * 多数据源 ManyDataSource
+ *
+ * @author DeKangLiu
+ * Date 2024/6/3 20:01
+ */
+@Component
+@Log4j2
+@AllArgsConstructor
+public class ManyDataSource {
+
+ @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);
+ EnterPriseInfo enterPriseInfo = EnterPriseInfo.builder()
+ .entCode("liu_0603")
+ .ip("192.168.116.129")
+ .port(3308)
+ .build();
+
+ DataSourceInfo dataSourceInfo = DataSourceInfo.hostAndPortBuild(enterPriseInfo.getEntCode(), enterPriseInfo.getIp(), enterPriseInfo.getPort());
+ DruidDataSource druidDataSource = druidDataSourceFactory.create(dataSourceInfo);
+ dynamicDataSource.put(dataSourceInfo.getKey(), druidDataSource);
+ }).start();
+ }
+
+
+ private List dataSourceInfoList(){
+ List list = new ArrayList<>();
+ list.add(
+ EnterPriseInfo.builder()
+ .entCode("liu_0604")
+ .ip("192.168.116.129")
+ .port(3307)
+ .build()
+ );
+ return list;
+ }
+
+ @Bean
+ @Primary
+ public DynamicDataSource dynamicDataSource(DruidDataSourceFactory druidDataSourceFactory) {
+
+ //企业列表 企业CODE 端口 ip
+ Map