ltkj-common/pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ltkj-common/src/main/java/com/ltkj/common/db/DataSourceConfig.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ltkj-common/src/main/java/com/ltkj/common/db/DataSourceContextHolder.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ltkj-common/src/main/java/com/ltkj/common/db/DynamicDataSource.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ltkj-common/src/main/java/com/ltkj/common/db/anno/DataSource.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ltkj-framework/src/main/java/com/ltkj/framework/config/DBChangeInterceptor.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ltkj-framework/src/main/java/com/ltkj/framework/config/TokenInterceptor.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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> ltkj-common/src/main/java/com/ltkj/common/db/DataSourceConfig.java
File was renamed from ltkj-admin/src/main/java/com/ltkj/web/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 { // 使用代码 // 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<>(); // 数据源缓存 ltkj-common/src/main/java/com/ltkj/common/db/DataSourceContextHolder.java
File was renamed from ltkj-admin/src/main/java/com/ltkj/web/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<>(); ltkj-common/src/main/java/com/ltkj/common/db/DynamicDataSource.java
File was renamed from ltkj-admin/src/main/java/com/ltkj/web/db/DynamicDataSource.java @@ -1,4 +1,4 @@ package com.ltkj.web.db; package com.ltkj.common.db; import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; ltkj-common/src/main/java/com/ltkj/common/db/anno/DataSource.java
New file @@ -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 { } ltkj-framework/src/main/java/com/ltkj/framework/config/DBChangeInterceptor.java
New file @@ -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); } } 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