hecheng пре 3 година
родитељ
комит
17d44f7ab9

+ 5 - 0
zd-common/zd-common-security/pom.xml

@@ -22,6 +22,11 @@
             <artifactId>zd-api-system</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.zd</groupId>
+            <artifactId>zd-common-datasource</artifactId>
+        </dependency>
+
         <!-- zd Common Redis-->
         <dependency>
             <groupId>com.zd</groupId>

+ 44 - 0
zd-common/zd-common-security/src/main/java/com/zd/common/security/aspect/ServiceAspect.java

@@ -0,0 +1,44 @@
+package com.zd.common.security.aspect;
+
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.annotation.After;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * @author hanson
+ */
+@Aspect
+@Component
+@Slf4j
+public class ServiceAspect {
+
+    @Pointcut("execution(* com.zd.*.service.impl..*.*(..))")
+    public void pointcut() {}
+
+    @Before("pointcut()")
+    public void before(){
+        // 请求开始时间
+        ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+        if (sra != null) {
+            HttpServletRequest request = sra.getRequest();
+            String db = request.getHeader("db");
+            if (StringUtils.hasLength(db)) {
+                DynamicDataSourceContextHolder.push(db);
+            }
+        }
+    }
+
+    @After("pointcut()")
+    public void after() {
+        DynamicDataSourceContextHolder.poll();
+    }
+}