From d81b53910e88167ae65e19bb1419ecfa4ff7cd39 Mon Sep 17 00:00:00 2001 From: xinzirun Date: Sat, 21 Sep 2024 12:01:34 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix():=20=E4=BF=AE=E5=A4=8Drun()=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../many/datasource/ManyDataSource.java | 24 +++++-------------- 1 file changed, 6 insertions(+), 18 deletions(-) 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 index 3285ce6..08f2300 100644 --- 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 @@ -91,29 +91,17 @@ public class ManyDataSource implements ApplicationRunner { */ @Bean public DynamicDataSource dynamicDataSource(DruidDataSourceFactory druidDataSourceFactory) { - List sourceInfoList = dataSourceInfoList().stream() + Map dataSourceMap = dataSourceInfoList().stream() .map(entInfo -> DataSourceInfo.hostAndPortBuild( entInfo.getEntCode(), entInfo.getIp(), entInfo.getPort() ) - ).toList(); - - Map dataSourceMap = sourceInfoList.stream().collect(Collectors.toMap( - dataSourceInfo -> dataSourceInfo.getKey(), - dataSourceInfo -> druidDataSourceFactory.create(dataSourceInfo) - )); -// Map dataSourceMap = dataSourceInfoList().stream() -// .map(entInfo -> DataSourceInfo.hostAndPortBuild( -// entInfo.getEntCode(), -// entInfo.getIp(), -// entInfo.getPort() -// ) -// ) -// .collect(Collectors.toMap( -// dataSourceInfo -> dataSourceInfo.getKey(), -// dataSourceInfo -> druidDataSourceFactory.create(dataSourceInfo) -// )); + ) + .collect(Collectors.toMap( + dataSourceInfo -> dataSourceInfo.getKey(), + dataSourceInfo -> druidDataSourceFactory.create(dataSourceInfo) + )); //设置动态数据源 DynamicDataSource dynamicDataSource = new DynamicDataSource(); From 0b97b1e2edb33bc792ae31c774aaf3f65a9ae22e Mon Sep 17 00:00:00 2001 From: xinzirun Date: Sun, 22 Sep 2024 10:06:44 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix():=20=E4=BF=AE=E5=A4=8D=E7=A9=BA?= =?UTF-8?q?=E6=8C=87=E9=92=88=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../many/datasource/ManyDataSource.java | 22 +++++-------------- 1 file changed, 6 insertions(+), 16 deletions(-) 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 index 08f2300..a54d1be 100644 --- 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 @@ -11,6 +11,7 @@ import com.muyu.cloud.common.saas.domain.model.EntInfo; 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.utils.StringUtils; import com.muyu.common.system.domain.SysUser; import com.muyu.common.system.remote.RemoteUserService; import lombok.extern.log4j.Log4j2; @@ -78,7 +79,7 @@ public class ManyDataSource implements ApplicationRunner { ) .toList(); }else { - log.error("远调数据源错误,远调数据为:{}", JSON.toJSONString(data)); + log.error("远调数据源异常,异常信息:{}", JSON.toJSONString(entListResult.getMsg())); return null; } } @@ -91,6 +92,10 @@ public class ManyDataSource implements ApplicationRunner { */ @Bean public DynamicDataSource dynamicDataSource(DruidDataSourceFactory druidDataSourceFactory) { + List entInfoList = dataSourceInfoList(); + if(StringUtils.isEmpty(entInfoList)){ + throw new SaaSException("数据源信息列表为空或为null"); + } Map dataSourceMap = dataSourceInfoList().stream() .map(entInfo -> DataSourceInfo.hostAndPortBuild( entInfo.getEntCode(), @@ -109,19 +114,4 @@ public class ManyDataSource implements ApplicationRunner { dynamicDataSource.setDefineTargetDataSources(dataSourceMap); return dynamicDataSource; } - - /** - * 创建 SqlSessionFactory Bean,用于 MyBatis 数据库操作。 - * 该方法接收动态数据源并配置 SqlSessionFactory,返回 - * 用于与数据库交互的 SqlSessionFactory 实例。 - * @param dataSource 动态数据源 - * @return 配置好的 SqlSessionFactory 实例 - * @throws Exception 可能抛出的异常 - */ - @Bean - public SqlSessionFactory sqlSessionFactory(DynamicDataSource dataSource) throws Exception { - SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); - sessionFactory.setDataSource(dataSource); - return sessionFactory.getObject(); - } } From 7c49fee992a6ed0542a5218037dcee6b089b7d1e Mon Sep 17 00:00:00 2001 From: xinzirun Date: Sun, 22 Sep 2024 10:07:14 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix():=20=E4=BF=AE=E5=A4=8D=E5=91=BD?= =?UTF-8?q?=E5=90=8D=E7=A9=BA=E9=97=B4=E5=86=B2=E7=AA=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cloud-auth/src/main/resources/bootstrap.yml | 2 +- cloud-gateway/src/main/resources/bootstrap.yml | 2 +- .../cloud-modules-fault/src/main/resources/bootstrap.yml | 2 +- .../cloud-modules-file/src/main/resources/bootstrap.yml | 2 +- .../cloud-modules-gen/src/main/resources/bootstrap.yml | 2 +- .../cloud-modules-system/src/main/resources/bootstrap.yml | 2 +- .../cloud-visual-monitor/src/main/resources/bootstrap.yml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cloud-auth/src/main/resources/bootstrap.yml b/cloud-auth/src/main/resources/bootstrap.yml index 1eaec3e..8581ac4 100644 --- a/cloud-auth/src/main/resources/bootstrap.yml +++ b/cloud-auth/src/main/resources/bootstrap.yml @@ -7,7 +7,7 @@ nacos: addr: 106.15.136.7:8848 user-name: nacos password: nacos - namespace: crj + namespace: xzr # Spring spring: application: diff --git a/cloud-gateway/src/main/resources/bootstrap.yml b/cloud-gateway/src/main/resources/bootstrap.yml index 5c23eb1..ae3ee7b 100644 --- a/cloud-gateway/src/main/resources/bootstrap.yml +++ b/cloud-gateway/src/main/resources/bootstrap.yml @@ -7,7 +7,7 @@ nacos: addr: 106.15.136.7:8848 user-name: nacos password: nacos - namespace: crj + namespace: xzr # Spring spring: diff --git a/cloud-modules/cloud-modules-fault/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-fault/src/main/resources/bootstrap.yml index c1a49c1..9c0ad5e 100644 --- a/cloud-modules/cloud-modules-fault/src/main/resources/bootstrap.yml +++ b/cloud-modules/cloud-modules-fault/src/main/resources/bootstrap.yml @@ -7,7 +7,7 @@ nacos: addr: 106.15.136.7:8848 user-name: nacos password: nacos - namespace: crj + namespace: xzr spring: application: diff --git a/cloud-modules/cloud-modules-file/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-file/src/main/resources/bootstrap.yml index ed3a86f..b6ae6e2 100644 --- a/cloud-modules/cloud-modules-file/src/main/resources/bootstrap.yml +++ b/cloud-modules/cloud-modules-file/src/main/resources/bootstrap.yml @@ -7,7 +7,7 @@ nacos: addr: 106.15.136.7:8848 user-name: nacos password: nacos - namespace: crj + namespace: xzr # Spring spring: diff --git a/cloud-modules/cloud-modules-gen/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-gen/src/main/resources/bootstrap.yml index c2cac97..435f3f0 100644 --- a/cloud-modules/cloud-modules-gen/src/main/resources/bootstrap.yml +++ b/cloud-modules/cloud-modules-gen/src/main/resources/bootstrap.yml @@ -7,7 +7,7 @@ nacos: addr: 106.15.136.7:8848 user-name: nacos password: nacos - namespace: crj + namespace: xzr # Spring spring: diff --git a/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml index 369161d..7ad5ee3 100644 --- a/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml +++ b/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml @@ -7,7 +7,7 @@ nacos: addr: 106.15.136.7:8848 user-name: nacos password: nacos - namespace: crj + namespace: xzr spring: amqp: diff --git a/cloud-visual/cloud-visual-monitor/src/main/resources/bootstrap.yml b/cloud-visual/cloud-visual-monitor/src/main/resources/bootstrap.yml index 6a9083d..1b52b6b 100644 --- a/cloud-visual/cloud-visual-monitor/src/main/resources/bootstrap.yml +++ b/cloud-visual/cloud-visual-monitor/src/main/resources/bootstrap.yml @@ -7,7 +7,7 @@ nacos: addr: 106.15.136.7:8848 user-name: nacos password: nacos - namespace: crj + namespace: xzr # Spring spring: From b5757fdeade8dc9bfcaf5c71f9af789f4a2093dd Mon Sep 17 00:00:00 2001 From: xinzirun Date: Sun, 22 Sep 2024 10:08:22 +0800 Subject: [PATCH 4/4] =?UTF-8?q?feat():=20=E6=96=B0=E5=A2=9E=E9=89=B4?= =?UTF-8?q?=E6=9D=83Saas=E6=A0=87=E8=AF=86=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/muyu/common/core/constant/SecurityConstants.java | 5 +++++ .../main/java/com/muyu/common/core/utils/JwtUtils.java | 9 +++++++++ .../com/muyu/common/security/service/TokenService.java | 1 + .../main/java/com/muyu/gateway/filter/AuthFilter.java | 5 ++++- 4 files changed, 19 insertions(+), 1 deletion(-) 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..a1f015a 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标识 + */ + public static final String SAAS_KEY = "ent-code"; } 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..c3b286c 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,13 @@ public class JwtUtils { public static String getValue (Claims claims, String key) { return Convert.toStr(claims.get(key), ""); } + + /** + * 根据身份信息获取SaaS标识 + * @param claims 身份信息 + * @return Saas标识 + */ + public static String getSaaSKey (Claims claims) { + return getValue(claims, SecurityConstants.SAAS_KEY); + } } diff --git a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java index 3955ddc..d6d8bc1 100644 --- a/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java +++ b/cloud-common/cloud-common-security/src/main/java/com/muyu/common/security/service/TokenService.java @@ -55,6 +55,7 @@ public class TokenService { claimsMap.put(SecurityConstants.USER_KEY, token); claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId); claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName); + claimsMap.put(SecurityConstants.SAAS_KEY, loginUser.getSysUser().getDatabaseName()); // 接口返回信息 Map rspMap = new HashMap(); diff --git a/cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java b/cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java index 47e073f..e12595e 100644 --- a/cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java +++ b/cloud-gateway/src/main/java/com/muyu/gateway/filter/AuthFilter.java @@ -63,7 +63,8 @@ public class AuthFilter implements GlobalFilter, Ordered { } String userid = JwtUtils.getUserId(claims); String username = JwtUtils.getUserName(claims); - if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username)) { + String saaSKey = JwtUtils.getSaaSKey(claims); + if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username) || StringUtils.isEmpty(saaSKey)) { return unauthorizedResponse(exchange, "令牌验证失败"); } @@ -71,6 +72,8 @@ public class AuthFilter implements GlobalFilter, Ordered { addHeader(mutate, SecurityConstants.USER_KEY, userkey); addHeader(mutate, SecurityConstants.DETAILS_USER_ID, userid); addHeader(mutate, SecurityConstants.DETAILS_USERNAME, username); + addHeader(mutate, SecurityConstants.SAAS_KEY, saaSKey); + // 内部请求来源参数清除 removeHeader(mutate, SecurityConstants.FROM_SOURCE); return chain.filter(exchange.mutate().request(mutate.build()).build());