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..11bb283 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-core/src/main/java/com/muyu/common/core/utils/SpringUtils.java b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/SpringUtils.java index c37a65c..4275ee0 100644 --- a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/SpringUtils.java +++ b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/SpringUtils.java @@ -5,6 +5,9 @@ import org.springframework.beans.BeansException; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +import org.springframework.beans.factory.support.DefaultListableBeanFactory; +import org.springframework.beans.factory.support.GenericBeanDefinition; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.stereotype.Component; /** @@ -111,4 +114,18 @@ public final class SpringUtils implements BeanFactoryPostProcessor { public void postProcessBeanFactory (ConfigurableListableBeanFactory beanFactory) throws BeansException { SpringUtils.beanFactory = beanFactory; } + + public static void registerBean(String beanName, Object bean) { + if (beanFactory instanceof AnnotationConfigApplicationContext) { + AnnotationConfigApplicationContext annotationContext = (AnnotationConfigApplicationContext) beanFactory; + DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) annotationContext.getBeanFactory(); + + GenericBeanDefinition definition = new GenericBeanDefinition(); + definition.setBeanClass(bean.getClass()); + beanFactory.registerBeanDefinition(beanName, definition); + beanFactory.registerSingleton(beanName, bean); + } else { + throw new IllegalStateException("注入失败"); + } + } } diff --git a/muyu-common/muyu-common-saas/pom.xml b/muyu-common/muyu-common-saas/pom.xml new file mode 100644 index 0000000..aa6ebab --- /dev/null +++ b/muyu-common/muyu-common-saas/pom.xml @@ -0,0 +1,38 @@ + + + 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-core + + + org.springframework + spring-webmvc + + + diff --git a/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/ManyDataSource.java b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/ManyDataSource.java new file mode 100644 index 0000000..1f91ef6 --- /dev/null +++ b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/ManyDataSource.java @@ -0,0 +1,55 @@ +package com.muyu.clw.common.many.datasource; + +import com.alibaba.druid.pool.DruidDataSource; +import com.muyu.clw.common.many.datasource.domain.model.DataSourceInfo; +import com.muyu.clw.common.saas.domain.model.EntInfo; +import com.muyu.clw.common.many.datasource.factory.DruidDataSourceFactory; +import com.muyu.clw.common.many.datasource.role.DynamicDataSource; +import com.muyu.common.core.utils.SpringUtils; +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; + +/** + * 多数据源 + * + * @ClassName ManyDataSource + * @Author AnNan.Wang + * @Date 2024/6/4 14:10 + */ + +@Log4j2 +@Component +public class ManyDataSource { + public static List dataSourceInfoList(EntInfo entInfo) { + List list = new ArrayList<>(); + list.add(entInfo); + return list; + } + @Bean + @Primary + public static DynamicDataSource dynamicDataSource(DruidDataSourceFactory druidDataSourceFactory,EntInfo entInfoList) { + + Map dataSourceMap = new HashMap<>(); + dataSourceInfoList(entInfoList) + .stream() + .map(entInfo -> DataSourceInfo.hostAndPortBuild(entInfo.getEntCode(),entInfo.getIp(),entInfo.getPort())) + .forEach(dataSourceInfo -> { + dataSourceMap.put(dataSourceInfo.getKey(), druidDataSourceFactory.create(dataSourceInfo)); + }); + //设置动态数据源 + DynamicDataSource dynamicDataSource = new DynamicDataSource(); +// dynamicDataSource.setDefaultTargetDataSource(masterDataSource()); + dynamicDataSource.setTargetDataSources(dataSourceMap); + //将数据源信息备份在defineTargetDataSources中 + dynamicDataSource.setDefineTargetDataSources(dataSourceMap); + return dynamicDataSource; + } +} diff --git a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/contents/DatasourceContent.java b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/constents/DatasourceContent.java similarity index 88% rename from muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/contents/DatasourceContent.java rename to muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/constents/DatasourceContent.java index d3d69c8..176ebf0 100644 --- a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/contents/DatasourceContent.java +++ b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/constents/DatasourceContent.java @@ -1,4 +1,4 @@ -package com.muyu.many.config.contents; +package com.muyu.clw.common.many.datasource.constents; /** * @author DongZl diff --git a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/domai/model/DataSourceInfo.java b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/domain/model/DataSourceInfo.java similarity index 86% rename from muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/domai/model/DataSourceInfo.java rename to muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/domain/model/DataSourceInfo.java index 262c4af..df00297 100644 --- a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/domai/model/DataSourceInfo.java +++ b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/domain/model/DataSourceInfo.java @@ -1,4 +1,4 @@ -package com.muyu.many.config.domai.model; +package com.muyu.clw.common.many.datasource.domain.model; import com.muyu.common.core.utils.StringUtils; import lombok.AllArgsConstructor; @@ -6,7 +6,8 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; -import static com.muyu.many.config.contents.DatasourceContent.*; +import static com.muyu.clw.common.many.datasource.constents.DatasourceContent.*; + /** * @ClassName DataSourceInfo diff --git a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/factory/DruidDataSourceFactory.java b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/factory/DruidDataSourceFactory.java similarity index 91% rename from muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/factory/DruidDataSourceFactory.java rename to muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/factory/DruidDataSourceFactory.java index c0abb7b..35966fa 100644 --- a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/factory/DruidDataSourceFactory.java +++ b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/factory/DruidDataSourceFactory.java @@ -1,7 +1,7 @@ -package com.muyu.many.config.factory; +package com.muyu.clw.common.many.datasource.factory; import com.alibaba.druid.pool.DruidDataSource; -import com.muyu.many.config.domai.model.DataSourceInfo; +import com.muyu.clw.common.many.datasource.domain.model.DataSourceInfo; import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Component; diff --git a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/holder/DynamicDataSourceHolder.java b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/holder/DynamicDataSourceHolder.java similarity index 95% rename from muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/holder/DynamicDataSourceHolder.java rename to muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/holder/DynamicDataSourceHolder.java index 46e2475..3845cf1 100644 --- a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/holder/DynamicDataSourceHolder.java +++ b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/holder/DynamicDataSourceHolder.java @@ -1,4 +1,4 @@ -package com.muyu.many.config.holder; +package com.muyu.clw.common.many.datasource.holder; import lombok.extern.slf4j.Slf4j; import org.springframework.util.Assert; diff --git a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/role/DynamicDataSource.java b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/role/DynamicDataSource.java similarity index 78% rename from muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/role/DynamicDataSource.java rename to muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/role/DynamicDataSource.java index 6bdbcfe..a37663d 100644 --- a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/role/DynamicDataSource.java +++ b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/role/DynamicDataSource.java @@ -1,8 +1,7 @@ -package com.muyu.many.config.role; +package com.muyu.clw.common.many.datasource.role; import com.alibaba.druid.pool.DruidDataSource; -import com.muyu.many.config.domai.model.DataSourceInfo; -import com.muyu.many.config.holder.DynamicDataSourceHolder; +import com.muyu.clw.common.many.datasource.holder.DynamicDataSourceHolder; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -26,6 +25,14 @@ public class DynamicDataSource extends AbstractRoutingDataSource { private Map defineTargetDataSources; + /** + * 判断键是否存在 + * @param key 键 + * @return 存在结果 true 存在 false不存在 + */ + public boolean hashKey(String key) { + return defineTargetDataSources.containsKey(key); + } /** * 添加数据源 * @param key diff --git a/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/saas/contents/SaaSConstant.java b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/saas/contents/SaaSConstant.java new file mode 100644 index 0000000..60ae597 --- /dev/null +++ b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/saas/contents/SaaSConstant.java @@ -0,0 +1,14 @@ +package com.muyu.clw.common.saas.contents; + +/** + * SAAS常量 + * + * @ClassName SaaSConstant + * @Author AnNan.Wang + * @Date 2024/6/5 11:24 + */ + + +public class SaaSConstant { + public final static String SAAS_KEY = "ent_code"; +} diff --git a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/domai/model/EntInfo.java b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/saas/domain/model/EntInfo.java similarity index 89% rename from muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/domai/model/EntInfo.java rename to muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/saas/domain/model/EntInfo.java index cf3f5a1..dfe0aee 100644 --- a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/domai/model/EntInfo.java +++ b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/saas/domain/model/EntInfo.java @@ -1,4 +1,4 @@ -package com.muyu.many.config.domai.model; +package com.muyu.clw.common.saas.domain.model; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/saas/exception/SaaSException.java b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/saas/exception/SaaSException.java new file mode 100644 index 0000000..0a991c2 --- /dev/null +++ b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/saas/exception/SaaSException.java @@ -0,0 +1,24 @@ +package com.muyu.clw.common.saas.exception; + +import com.muyu.common.core.exception.ServiceException; + +/** + * @ClassName SaaSException + * @Author AnNan.Wang + * @Date 2024/6/5 11:29 + */ + + +public class SaaSException extends ServiceException { + public SaaSException() { + super(); + } + + public SaaSException(String message) { + super(message); + } + + public SaaSException(String message, Integer code) { + super(message, code); + } +} diff --git a/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/saas/interceptor/SaaSInterceptor.java b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/saas/interceptor/SaaSInterceptor.java new file mode 100644 index 0000000..42c5667 --- /dev/null +++ b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/saas/interceptor/SaaSInterceptor.java @@ -0,0 +1,53 @@ +package com.muyu.clw.common.saas.interceptor; + +import com.muyu.clw.common.saas.contents.SaaSConstant; +import com.muyu.clw.common.saas.exception.SaaSException; +import com.muyu.clw.common.many.datasource.holder.DynamicDataSourceHolder; +import com.muyu.clw.common.many.datasource.role.DynamicDataSource; +import com.muyu.common.core.utils.ServletUtils; +import com.muyu.common.core.utils.SpringUtils; +import org.springframework.web.method.HandlerMethod; +import org.springframework.web.servlet.AsyncHandlerInterceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * saas数据拦截 + * + * @ClassName SaaSInterceptor + * @Author AnNan.Wang + * @Date 2024/6/5 10:04 + */ + + +public class SaaSInterceptor implements AsyncHandlerInterceptor { + /** + * 之前 + */ + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + if (!(handler instanceof HandlerMethod)) { + return true; + } + String SaaSKey = ServletUtils.getHeader(request, SaaSConstant.SAAS_KEY); + if (SaaSKey == null) { + throw new SaaSException("SaaS非法访问"); + }else { + DynamicDataSource dynamicDataSource = SpringUtils.getBean(DynamicDataSource.class); + if (!dynamicDataSource.hashKey(SaaSKey)){ + throw new SaaSException("SaaS非法访问"); + } + } + DynamicDataSourceHolder.setDynamicDataSourceKey(SaaSKey); + return true; + } + + /** + * 之后 + */ + @Override + public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + DynamicDataSourceHolder.removeDynamicDataSourceKey(); + } +} diff --git a/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/saas/interceptor/WebMvcSaaSConfig.java b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/saas/interceptor/WebMvcSaaSConfig.java new file mode 100644 index 0000000..91bd32f --- /dev/null +++ b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/saas/interceptor/WebMvcSaaSConfig.java @@ -0,0 +1,31 @@ +package com.muyu.clw.common.saas.interceptor; + +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * 拦截器配置 + * + * @author muyu + */ +public class WebMvcSaaSConfig implements WebMvcConfigurer { + /** + * 不需要拦截地址 + */ + public static final String[] excludeUrls = {"/login", "/logout", "/refresh"}; + + @Override + public void addInterceptors (InterceptorRegistry registry) { + registry.addInterceptor(getHeaderInterceptor()) + .addPathPatterns("/**") + .excludePathPatterns(excludeUrls) + .order(-10); + } + + /** + * 自定义请求头拦截器 + */ + public SaaSInterceptor getHeaderInterceptor () { + return new SaaSInterceptor(); + } +} diff --git a/muyu-common/muyu-common-saas/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/muyu-common/muyu-common-saas/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..8200bf7 --- /dev/null +++ b/muyu-common/muyu-common-saas/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,2 @@ +com.muyu.clw.common.saas.interceptor.WebMvcSaaSConfig +com.muyu.clw.common.many.datasource.factory.DruidDataSourceFactory diff --git a/muyu-common/pom.xml b/muyu-common/pom.xml index 72b9039..8e6c71c 100644 --- a/muyu-common/pom.xml +++ b/muyu-common/pom.xml @@ -18,6 +18,7 @@ muyu-common-datascope muyu-common-datasource muyu-common-system + muyu-common-saas muyu-common diff --git a/muyu-modules/muyu-common-many-dataSourceMany/pom.xml b/muyu-modules/muyu-common-many-dataSourceMany/pom.xml deleted file mode 100644 index 27f31e2..0000000 --- a/muyu-modules/muyu-common-many-dataSourceMany/pom.xml +++ /dev/null @@ -1,110 +0,0 @@ - - - 4.0.0 - - com.muyu - muyu-common - 3.6.3 - - - muyu-common-many-dataSourceMany - - 动态多数据源 - - 17 - 17 - UTF-8 - - - - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-discovery - - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-config - - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-sentinel - - - - - org.springframework.boot - spring-boot-starter-actuator - - - - - io.springfox - springfox-swagger-ui - ${swagger.fox.version} - - - - - com.mysql - mysql-connector-j - - - - - com.muyu - muyu-common-datasource - - - - - com.muyu - muyu-common-datascope - - - - - com.muyu - muyu-common-log - - - - - com.muyu - muyu-common-swagger - - - - - - ${project.artifactId} - - - org.springframework.boot - spring-boot-maven-plugin - - - - repackage - - - - - - - org.apache.maven.plugins - maven-deploy-plugin - - true - - - - - diff --git a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/DataSourcemanyApplication.java b/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/DataSourcemanyApplication.java deleted file mode 100644 index 8f0b674..0000000 --- a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/DataSourcemanyApplication.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.muyu.many; - -import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration; -import com.muyu.common.security.annotation.EnableCustomConfig; -import com.muyu.common.security.annotation.EnableMyFeignClients; -import com.muyu.common.swagger.annotation.EnableCustomSwagger2; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; - -/** - * 多数据源启动类 - * - * @ClassName DataSourcemanyApplication - * @Author AnNan.Wang - * @Date 2024/6/3 18:40 - */ - -@EnableCustomConfig -@EnableCustomSwagger2 -@EnableMyFeignClients -@SpringBootApplication(exclude = { - DynamicDataSourceAutoConfiguration.class, - DataSourceAutoConfiguration.class -}) -public class DataSourcemanyApplication { - public static void main(String[] args) { - SpringApplication.run(DataSourcemanyApplication.class,args); - } -} diff --git a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/ManyDataSource.java b/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/ManyDataSource.java deleted file mode 100644 index a430425..0000000 --- a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/config/ManyDataSource.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.muyu.many.config; - -import com.alibaba.druid.pool.DruidDataSource; -import com.muyu.common.core.utils.SpringUtils; -import com.muyu.many.config.domai.model.DataSourceInfo; -import com.muyu.many.config.domai.model.EntInfo; -import com.muyu.many.config.factory.DruidDataSourceFactory; -import com.muyu.many.config.role.DynamicDataSource; -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; - -/** - * 多数据源 - * - * @ClassName ManyDataSource - * @Author AnNan.Wang - * @Date 2024/6/4 14:10 - */ - -@Log4j2 -@Component -public class ManyDataSource { - - - @PostConstruct - public void init() { - new Thread(() ->{ - try { - Thread.sleep(5000); - } catch (InterruptedException ignored) {} - DruidDataSourceFactory druidDataSourceFactory = SpringUtils.getBean(DruidDataSourceFactory.class); - DynamicDataSource dynamicDataSource = SpringUtils.getBean(DynamicDataSource.class);; - EntInfo entInfo = EntInfo.builder() - .entCode("ent_4588") - .ip("123.56.102.11") - .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() { - List list = new ArrayList<>(); - list.add( - EntInfo.builder() - .entCode("ent_4587") - .ip("123.56.102.11") - .port(3310) - .build() - ); - return list; - } - @Bean - @Primary - public DynamicDataSource dynamicDataSource(DruidDataSourceFactory druidDataSourceFactory) { - - Map dataSourceMap = new HashMap<>(); - dataSourceInfoList() - .stream() - .map(entInfo -> DataSourceInfo.hostAndPortBuild(entInfo.getEntCode(),entInfo.getIp(),entInfo.getPort())) - .forEach(dataSourceInfo -> { - dataSourceMap.put(dataSourceInfo.getKey(), druidDataSourceFactory.create(dataSourceInfo)); - }); - //设置动态数据源 - DynamicDataSource dynamicDataSource = new DynamicDataSource(); -// dynamicDataSource.setDefaultTargetDataSource(masterDataSource()); - dynamicDataSource.setTargetDataSources(dataSourceMap); - //将数据源信息备份在defineTargetDataSources中 - dynamicDataSource.setDefineTargetDataSources(dataSourceMap); - return dynamicDataSource; - } -} diff --git a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/server/controller/EnterpriseController.java b/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/server/controller/EnterpriseController.java deleted file mode 100644 index 4c18e42..0000000 --- a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/server/controller/EnterpriseController.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.muyu.many.server.controller; - -import com.muyu.common.core.domain.Result; -import com.muyu.many.config.holder.DynamicDataSourceHolder; -import com.muyu.many.server.domain.Enterprise; -import com.muyu.many.server.service.EnterpriseService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; - -/** - * 企业表 Controller层 - * - * @ClassName EnterpriseController - * @Author AnNan.Wang - * @Date 2024/6/4 20:53 - */ - - -@RestController -@RequestMapping("/enterprise") -public class EnterpriseController { - @Autowired - private EnterpriseService enterpriseService; - - @GetMapping("/all/{code}") - public Result> all(@PathVariable("code") String code){ - DynamicDataSourceHolder.setDynamicDataSourceKey(code); - return enterpriseService.enterpriseList(code); - } -} diff --git a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/server/domain/Enterprise.java b/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/server/domain/Enterprise.java deleted file mode 100644 index c87a284..0000000 --- a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/server/domain/Enterprise.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.muyu.many.server.domain; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.muyu.common.core.web.domain.BaseEntity; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import java.util.Date; - -/** - * 企业表 - * - * @ClassName Enterprise - * @Author AnNan.Wang - * @Date 2024/6/4 20:47 - */ - - -@EqualsAndHashCode(callSuper = true) -@Data -@SuperBuilder -@NoArgsConstructor -@AllArgsConstructor -@TableName(value = "enterprise") -public class Enterprise extends BaseEntity { - /** - * 主键 - */ - @TableId(value = "id",type = IdType.AUTO) - private Long id; - /** - * 企业名称 - */ - private String enterpriseName; - /** - * 法定代表人 - */ - private String legalPerson; - /** - * 经营执照凭证号码 - */ - private String businessLicenseNumber; - /** - * 企业成立时间 - */ - private Date establishmentDate; - /** - * 经营范围 - */ - private String businessScope; - /** - * 注册地址 - */ - private String address; - /** - * 企业联系方式 - */ - private String contactPhone; - /** - * 公司邮箱 - */ - private String email; - /** - * 企业当前状态 - */ - private Integer status; - /** - * 企业入驻平台时期 - */ - private Date registrationDate; - /** - * 企业认证id - */ - private Long certificationId; - /** - * 认证时间 - */ - private Date authenticationDate; - /** - * 服务级别 - */ - private Integer serviceLevel; - /** - * 开通服务id - */ - private Long open_serverId; - /** - * 增值服务id - */ - private Long add_serverId; -} diff --git a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/server/mapper/EnterpriseMapper.java b/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/server/mapper/EnterpriseMapper.java deleted file mode 100644 index f8d2683..0000000 --- a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/server/mapper/EnterpriseMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.muyu.many.server.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.muyu.many.server.domain.Enterprise; - -/** - * Enterprise 企业表的Mapper接口层 - * - * @author AnNan.Wang - * @ClassName: EnterpriseMapper - * @createTime: 2024/6/4 20:58 - */ -public interface EnterpriseMapper extends BaseMapper { -} diff --git a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/server/service/EnterpriseService.java b/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/server/service/EnterpriseService.java deleted file mode 100644 index e5fc20e..0000000 --- a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/server/service/EnterpriseService.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.muyu.many.server.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.muyu.common.core.domain.Result; -import com.muyu.many.server.domain.Enterprise; - -import java.util.List; - -/** - * Enterprise 企业表Service层接口 - * - * @author AnNan.Wang - * @ClassName: EnterpriseService - * @createTime: 2024/6/4 20:54 - */ -public interface EnterpriseService extends IService { - Result> enterpriseList(String code); -} diff --git a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/server/service/impl/EnterpriseServiceImpl.java b/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/server/service/impl/EnterpriseServiceImpl.java deleted file mode 100644 index eec6c3a..0000000 --- a/muyu-modules/muyu-common-many-dataSourceMany/src/main/java/com/muyu/many/server/service/impl/EnterpriseServiceImpl.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.muyu.many.server.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.muyu.common.core.domain.Result; -import com.muyu.many.server.domain.Enterprise; -import com.muyu.many.server.mapper.EnterpriseMapper; -import com.muyu.many.server.service.EnterpriseService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * Enterprise 企业表的EnterpriseService业务实现层 - * - * @ClassName EnterpriseServiceImpl - * @Author AnNan.Wang - * @Date 2024/6/4 20:57 - */ - -@Service -public class EnterpriseServiceImpl extends ServiceImpl - implements EnterpriseService{ - @Autowired - private EnterpriseMapper enterpriseMapper; - - - @Override - public Result> enterpriseList(String code) { - return Result.success( - enterpriseMapper.selectList(null) - ); - } -} diff --git a/muyu-modules/muyu-common-many-dataSourceMany/src/main/resources/banner.txt b/muyu-modules/muyu-common-many-dataSourceMany/src/main/resources/banner.txt deleted file mode 100644 index 0dd5eee..0000000 --- a/muyu-modules/muyu-common-many-dataSourceMany/src/main/resources/banner.txt +++ /dev/null @@ -1,2 +0,0 @@ -Spring Boot Version: ${spring-boot.version} -Spring Application Name: ${spring.application.name} diff --git a/muyu-modules/muyu-common-many-dataSourceMany/src/main/resources/bootstrap.yml b/muyu-modules/muyu-common-many-dataSourceMany/src/main/resources/bootstrap.yml deleted file mode 100644 index f3fced2..0000000 --- a/muyu-modules/muyu-common-many-dataSourceMany/src/main/resources/bootstrap.yml +++ /dev/null @@ -1,28 +0,0 @@ -# Tomcat -server: - port: 9204 - -# Spring -spring: - application: - # 应用名称 - name: ruoyi-many - profiles: - # 环境配置 - active: dev - cloud: - nacos: - discovery: - # 服务注册地址 - server-addr: 101.34.243.166:8848 - config: - # 配置中心地址 - server-addr: 101.34.243.166:8848 - # 配置文件格式 - file-extension: yml - # 共享配置 - shared-configs: - - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} -logging: - level: - com.muyu.system.mapper: DEBUG diff --git a/muyu-modules/muyu-common-many-dataSourceMany/src/main/resources/logback.xml b/muyu-modules/muyu-common-many-dataSourceMany/src/main/resources/logback.xml deleted file mode 100644 index 8b11901..0000000 --- a/muyu-modules/muyu-common-many-dataSourceMany/src/main/resources/logback.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - ${log.pattern} - - - - - - ${log.path}/info.log - - - - ${log.path}/info.%d{yyyy-MM-dd}.log - - 60 - - - ${log.pattern} - - - - INFO - - ACCEPT - - DENY - - - - - ${log.path}/error.log - - - - ${log.path}/error.%d{yyyy-MM-dd}.log - - 60 - - - ${log.pattern} - - - - ERROR - - ACCEPT - - DENY - - - - - - - - - - - - - - - - - - diff --git a/muyu-modules/muyu-company/muyu-company-server/pom.xml b/muyu-modules/muyu-company/muyu-company-server/pom.xml index 06d277c..a152d4b 100644 --- a/muyu-modules/muyu-company/muyu-company-server/pom.xml +++ b/muyu-modules/muyu-company/muyu-company-server/pom.xml @@ -113,5 +113,9 @@ 3.6.3 + + com.muyu + muyu-common-saas + diff --git a/muyu-modules/muyu-company/muyu-company-server/src/main/java/com/muyu/authentication/controller/EnterpriseController.java b/muyu-modules/muyu-company/muyu-company-server/src/main/java/com/muyu/authentication/controller/EnterpriseController.java index 644067a..edb9801 100644 --- a/muyu-modules/muyu-company/muyu-company-server/src/main/java/com/muyu/authentication/controller/EnterpriseController.java +++ b/muyu-modules/muyu-company/muyu-company-server/src/main/java/com/muyu/authentication/controller/EnterpriseController.java @@ -5,14 +5,7 @@ import javax.servlet.http.HttpServletResponse; import com.muyu.authentication.service.IEnterpriseService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import com.muyu.common.log.annotation.Log; import com.muyu.common.log.enums.BusinessType; import com.muyu.common.security.annotation.RequiresPermissions; @@ -102,4 +95,11 @@ public class EnterpriseController extends BaseController { return toAjax(enterpriseService.deleteEnterpriseByIds(ids)); } + + @PostMapping("/AllList") + public Result> AllList(@RequestParam Long id){ + return Result.success( + enterpriseService.AllList(id) + ); + } } diff --git a/muyu-modules/muyu-company/muyu-company-server/src/main/java/com/muyu/authentication/service/IEnterpriseService.java b/muyu-modules/muyu-company/muyu-company-server/src/main/java/com/muyu/authentication/service/IEnterpriseService.java index 39af742..5f44be7 100644 --- a/muyu-modules/muyu-company/muyu-company-server/src/main/java/com/muyu/authentication/service/IEnterpriseService.java +++ b/muyu-modules/muyu-company/muyu-company-server/src/main/java/com/muyu/authentication/service/IEnterpriseService.java @@ -60,4 +60,6 @@ public interface IEnterpriseService extends IService * @return 结果 */ public int deleteEnterpriseById(Long id); + + List AllList(Long id); } diff --git a/muyu-modules/muyu-company/muyu-company-server/src/main/java/com/muyu/authentication/service/impl/EnterpriseServiceImpl.java b/muyu-modules/muyu-company/muyu-company-server/src/main/java/com/muyu/authentication/service/impl/EnterpriseServiceImpl.java index f2be3f3..55e50cb 100644 --- a/muyu-modules/muyu-company/muyu-company-server/src/main/java/com/muyu/authentication/service/impl/EnterpriseServiceImpl.java +++ b/muyu-modules/muyu-company/muyu-company-server/src/main/java/com/muyu/authentication/service/impl/EnterpriseServiceImpl.java @@ -1,10 +1,15 @@ package com.muyu.authentication.service.impl; +import java.util.ArrayList; import java.util.List; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.muyu.authentication.mapper.EnterpriseMapper; +import com.muyu.clw.common.many.datasource.ManyDataSource; +import com.muyu.clw.common.many.datasource.domain.model.DataSourceInfo; +import com.muyu.clw.common.many.datasource.factory.DruidDataSourceFactory; +import com.muyu.clw.common.saas.domain.model.EntInfo; import com.muyu.common.core.utils.DateUtils; import com.muyu.common.system.domain.SysUser; import com.muyu.common.system.remote.RemoteUserService; @@ -122,4 +127,26 @@ public class EnterpriseServiceImpl extends ServiceImpl AllList(Long id) { + Enterprise enterprise = enterpriseMapper.selectOne( + new LambdaQueryWrapper<>() {{ + eq(Enterprise::getId, id); + }} + ); + String substring = enterprise.getContactPhone().substring(enterprise.getContactPhone().length() - 4); + Integer enterpriseId = Math.toIntExact(enterprise.getId()); + + EntInfo build = EntInfo.builder() + .entCode("ent_" + substring) + .ip("123.56.102.11") + .port(3306 + enterpriseId) + .build(); + ManyDataSource.dynamicDataSource(druidDataSourceFactory,build); + return null; + } } diff --git a/muyu-modules/pom.xml b/muyu-modules/pom.xml index 347ab9b..4bb2ddb 100644 --- a/muyu-modules/pom.xml +++ b/muyu-modules/pom.xml @@ -15,7 +15,6 @@ muyu-modules-file muyu-company muyu-businessPlatform - muyu-common-many-dataSourceMany muyu-modules