From 791b8c88d67767c9847c7c052faca3e65ec36016 Mon Sep 17 00:00:00 2001 From: zhaowenxuan <chacca165@163.com> Date: 星期五, 07 二月 2025 13:59:27 +0800 Subject: [PATCH] 配置动态切库类以及拦截器切库 --- ltkj-framework/src/main/java/com/ltkj/framework/interceptor/DBChangeInterceptor.java | 38 ++++++++++++++++++++++++++++++++++++-- 1 files changed, 36 insertions(+), 2 deletions(-) diff --git a/ltkj-framework/src/main/java/com/ltkj/framework/interceptor/DBChangeInterceptor.java b/ltkj-framework/src/main/java/com/ltkj/framework/interceptor/DBChangeInterceptor.java index 0a04013..006b157 100644 --- a/ltkj-framework/src/main/java/com/ltkj/framework/interceptor/DBChangeInterceptor.java +++ b/ltkj-framework/src/main/java/com/ltkj/framework/interceptor/DBChangeInterceptor.java @@ -1,30 +1,64 @@ package com.ltkj.framework.interceptor; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.google.gson.Gson; +import com.ltkj.db.DataSourceConfig; import com.ltkj.db.DataSourceContextHolder; +import com.ltkj.hosp.domain.DictHosp; +import com.ltkj.hosp.service.IDictHospService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; /** * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃 * @Author: zhaowenxuan * @Date: 2025/2/7 11:07 */ +@Component @Order(2) public class DBChangeInterceptor implements HandlerInterceptor { - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { + @Autowired + private IDictHospService dictHospService; + @Autowired + private DataSourceConfig dataSourceConfig; + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException { + String hospId = request.getHeader("hospId"); + if (StrUtil.isBlank(hospId)){ + response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + response.setContentType("application/json;charset=UTF-8"); + response.getWriter().write("{\"message\":\"401锛氭壘涓嶅埌闄㈠尯缂栧彿\"}"); + return false; + } + DataSourceContextHolder.setDataSourceKey("default"); + LambdaQueryWrapper<DictHosp> wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(DictHosp::getCode,hospId); + DictHosp hosp = dictHospService.getOne(wrapper); + if (hosp == null || hosp.getDatabase() == null || hosp.getDatabase().trim().isEmpty()) { + response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + response.setContentType("application/json;charset=UTF-8"); + response.getWriter().write("{\"message\":\"401锛氭壘涓嶅埌闄㈠尯鏁版嵁\"}"); + return false; + } + dataSourceConfig.addDataSource(hosp.getDatabase()); + DataSourceContextHolder.setDataSourceKey(hosp.getDatabase()); return true; } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { DataSourceContextHolder.setDataSourceKey("default"); + DataSourceContextHolder.clear(); HandlerInterceptor.super.afterCompletion(request, response, handler, ex); } } -- Gitblit v1.8.0