From 5563f9d2c54277297eda3db7924997392d9ce887 Mon Sep 17 00:00:00 2001 From: zhaowenxuan <chacca165@163.com> Date: 星期五, 07 二月 2025 10:55:17 +0800 Subject: [PATCH] 20250207 --- ltkj-common/src/main/java/com/ltkj/common/db/DynamicDataSource.java | 2 ltkj-common/src/main/java/com/ltkj/common/db/anno/DataSource.java | 17 ++++++++ ltkj-framework/src/main/java/com/ltkj/framework/config/TokenInterceptor.java | 2 + ltkj-common/pom.xml | 6 +++ ltkj-framework/src/main/java/com/ltkj/framework/config/DBChangeInterceptor.java | 33 ++++++++++++++++ ltkj-common/src/main/java/com/ltkj/common/db/DataSourceContextHolder.java | 2 ltkj-common/src/main/java/com/ltkj/common/db/DataSourceConfig.java | 15 ++++++- 7 files changed, 73 insertions(+), 4 deletions(-) diff --git a/ltkj-common/pom.xml b/ltkj-common/pom.xml index fd5f706..6f01919 100644 --- a/ltkj-common/pom.xml +++ b/ltkj-common/pom.xml @@ -298,6 +298,12 @@ <artifactId>redisson-spring-boot-starter</artifactId> <version>3.23.5</version> </dependency> + + <!-- 闃块噷鏁版嵁搴撹繛鎺ユ睜 --> + <dependency> + <groupId>com.alibaba</groupId> + <artifactId>druid-spring-boot-starter</artifactId> + </dependency> </dependencies> </project> diff --git a/ltkj-admin/src/main/java/com/ltkj/web/db/DataSourceConfig.java b/ltkj-common/src/main/java/com/ltkj/common/db/DataSourceConfig.java similarity index 79% rename from ltkj-admin/src/main/java/com/ltkj/web/db/DataSourceConfig.java rename to ltkj-common/src/main/java/com/ltkj/common/db/DataSourceConfig.java index 8204871..d38d6a3 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/db/DataSourceConfig.java +++ b/ltkj-common/src/main/java/com/ltkj/common/db/DataSourceConfig.java @@ -1,9 +1,8 @@ -package com.ltkj.web.db; +package com.ltkj.common.db; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; import javax.sql.DataSource; import java.util.HashMap; @@ -12,6 +11,18 @@ //@Configuration public class DataSourceConfig { + // 浣跨敤浠g爜 +// try { +// long id = Long.parseLong(request.getAttribute("id").toString()); +// DataSourceContextHolder.setDataSourceKey(String.valueOf(id)); +// dataSourceConfig.addDataSource(String.valueOf(id)); // 纭繚鏁版嵁婧愬凡娉ㄥ唽 +// if (log.getSize()>50) log.setSize(50); +// if (log.getLang().equals("zh-cn")) log.setLang("zh"); +// return serverLogService.getLog(log,id); +// }finally { +// DataSourceContextHolder.setDataSourceKey("default"); // 鍒囨崲鍥炰富搴� +// } + private static final String DEFAULT_DATA_SOURCE_KEY = "default"; // 涓诲簱鐨勬爣璇� private final Map<String, DataSource> dataSourceCache = new HashMap<>(); // 鏁版嵁婧愮紦瀛� diff --git a/ltkj-admin/src/main/java/com/ltkj/web/db/DataSourceContextHolder.java b/ltkj-common/src/main/java/com/ltkj/common/db/DataSourceContextHolder.java similarity index 92% rename from ltkj-admin/src/main/java/com/ltkj/web/db/DataSourceContextHolder.java rename to ltkj-common/src/main/java/com/ltkj/common/db/DataSourceContextHolder.java index 961274f..b98f180 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/db/DataSourceContextHolder.java +++ b/ltkj-common/src/main/java/com/ltkj/common/db/DataSourceContextHolder.java @@ -1,4 +1,4 @@ -package com.ltkj.web.db; +package com.ltkj.common.db; public class DataSourceContextHolder { private static final ThreadLocal<String> contextHolder = new ThreadLocal<>(); diff --git a/ltkj-admin/src/main/java/com/ltkj/web/db/DynamicDataSource.java b/ltkj-common/src/main/java/com/ltkj/common/db/DynamicDataSource.java similarity index 97% rename from ltkj-admin/src/main/java/com/ltkj/web/db/DynamicDataSource.java rename to ltkj-common/src/main/java/com/ltkj/common/db/DynamicDataSource.java index 782cf9d..40a2252 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/db/DynamicDataSource.java +++ b/ltkj-common/src/main/java/com/ltkj/common/db/DynamicDataSource.java @@ -1,4 +1,4 @@ -package com.ltkj.web.db; +package com.ltkj.common.db; import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; diff --git a/ltkj-common/src/main/java/com/ltkj/common/db/anno/DataSource.java b/ltkj-common/src/main/java/com/ltkj/common/db/anno/DataSource.java new file mode 100644 index 0000000..91d2efa --- /dev/null +++ b/ltkj-common/src/main/java/com/ltkj/common/db/anno/DataSource.java @@ -0,0 +1,17 @@ +package com.ltkj.common.db.anno; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * control绫绘垨鎺ュ彛鏂规硶鏍囨敞鍒欒繘琛屽姩鎬佸垏搴� + * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃 + * @Author: zhaowenxuan + * @Date: 2025/02/07 10:30 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE, ElementType.METHOD}) +public @interface DataSource { +} diff --git a/ltkj-framework/src/main/java/com/ltkj/framework/config/DBChangeInterceptor.java b/ltkj-framework/src/main/java/com/ltkj/framework/config/DBChangeInterceptor.java new file mode 100644 index 0000000..5d9258e --- /dev/null +++ b/ltkj-framework/src/main/java/com/ltkj/framework/config/DBChangeInterceptor.java @@ -0,0 +1,33 @@ +package com.ltkj.framework.config; + +import com.alibaba.fastjson.JSON; +import com.google.gson.Gson; +import com.ltkj.common.db.DataSourceContextHolder; +import com.ltkj.hosp.domain.Wxuser; +import org.springframework.core.annotation.Order; +import org.springframework.web.servlet.HandlerInterceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@Order(1) +public class DBChangeInterceptor implements HandlerInterceptor { + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { + String token = request.getHeader("token"); + boolean verifyToken = JwtUtils.verifyToken(token); + if (!verifyToken) { + response.setStatus(401); + return false; + } + Wxuser wxuser = new Gson().fromJson(JSON.toJSONString(JwtUtils.getClaims(token).get("wxuser")),Wxuser.class); + UserHoder.set(wxuser); + return true; + } + + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + DataSourceContextHolder.setDataSourceKey("default"); + HandlerInterceptor.super.afterCompletion(request, response, handler, ex); + } +} diff --git a/ltkj-framework/src/main/java/com/ltkj/framework/config/TokenInterceptor.java b/ltkj-framework/src/main/java/com/ltkj/framework/config/TokenInterceptor.java index da3e37a..5f6631b 100644 --- a/ltkj-framework/src/main/java/com/ltkj/framework/config/TokenInterceptor.java +++ b/ltkj-framework/src/main/java/com/ltkj/framework/config/TokenInterceptor.java @@ -4,6 +4,7 @@ import com.google.gson.Gson; import com.ltkj.hosp.domain.Wxuser; import io.jsonwebtoken.Claims; +import org.springframework.core.annotation.Order; import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; @@ -14,6 +15,7 @@ * @Author: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃/璧典匠璞� * @Date: 2022/11/17 10:11 */ +@Order(-1) //鎷︽埅鍣�(鏍¢獙token) public class TokenInterceptor implements HandlerInterceptor { @Override -- Gitblit v1.8.0