Pārlūkot izejas kodu

多数据源兼容修改

hecheng 3 gadi atpakaļ
vecāks
revīzija
d94615d681

+ 4 - 0
zd-common/zd-common-core/src/main/java/com/zd/common/core/constant/SecurityConstants.java

@@ -35,6 +35,10 @@ public class SecurityConstants {
      * 请求来源
      */
     public static final String FROM_SOURCE = "from-source";
+    /**
+     * 指定数据源
+     */
+    public static final String DB = "db";
 
     /**
      * 内部请求

+ 3 - 1
zd-common/zd-common-security/src/main/java/com/zd/common/security/aspect/ServiceAspect.java

@@ -13,6 +13,8 @@ import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.servlet.http.HttpServletRequest;
 
+import static com.zd.common.core.constant.SecurityConstants.DB;
+
 /**
  * @author hanson
  */
@@ -30,7 +32,7 @@ public class ServiceAspect {
         ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
         if (sra != null) {
             HttpServletRequest request = sra.getRequest();
-            String db = request.getHeader("db");
+            String db = request.getHeader(DB);
             if (StringUtils.hasLength(db)) {
                 DynamicDataSourceContextHolder.push(db);
             }

+ 8 - 0
zd-common/zd-common-security/src/main/java/com/zd/common/security/feign/FeignRequestInterceptor.java

@@ -11,6 +11,8 @@ import com.zd.common.core.utils.ip.IpUtils;
 import feign.RequestInterceptor;
 import feign.RequestTemplate;
 
+import static com.zd.common.core.constant.SecurityConstants.DB;
+
 /**
  * feign 请求拦截器
  *
@@ -28,6 +30,12 @@ public class FeignRequestInterceptor implements RequestInterceptor {
             if (StringUtils.isNotEmpty(userId)) {
                 requestTemplate.header(SecurityConstants.DETAILS_USER_ID, userId);
             }
+            //配置多数据源情况下对feign请求的兼容
+            String dbName = headers.get(DB);
+            if (StringUtils.isNotEmpty(dbName)) {
+                requestTemplate.header(SecurityConstants.DB, dbName);
+            }
+
             String userName = headers.get(SecurityConstants.DETAILS_USERNAME);
             if (StringUtils.isNotEmpty(userName)) {
                 requestTemplate.header(SecurityConstants.DETAILS_USERNAME, userName);