From 983d95bdcbb273b4a78efd0058a2a35141be1b51 Mon Sep 17 00:00:00 2001 From: zjh <1084500556@qq.com> Date: 星期二, 08 四月 2025 18:00:12 +0800 Subject: [PATCH] zjh20250408 --- ltkj-framework/src/main/java/com/ltkj/framework/interceptor/DBChangeInterceptor.java | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 51 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..37f872e 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,23 +1,71 @@ package com.ltkj.framework.interceptor; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; 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.framework.config.DruidConfig; +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 */ -@Order(2) +@Component +@Order(1) public class DBChangeInterceptor implements HandlerInterceptor { + + @Autowired + private IDictHospService dictHospService; + @Autowired + private DataSourceConfig dataSourceConfig; +// @Autowired +// private DruidConfig druidConfig; + @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { + 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"); + JSONObject object = JSONUtil.createObj(); + object.putOpt("code",401); + object.putOpt("msg","鎵句笉鍒伴櫌鍖虹紪鍙�"); + response.getWriter().write(JSONUtil.toJsonStr(object)); + return false; + } +// DictHosp hosp = null; + try { + DataSourceContextHolder.setDataSourceKey("default"); + LambdaQueryWrapper<DictHosp> wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(DictHosp::getCode,hospId); + DictHosp hosp = dictHospService.getOne(wrapper); + if (hosp == null || hosp.getDbname() == null || hosp.getDbname().trim().isEmpty()) { + response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + response.setContentType("application/json;charset=UTF-8"); + response.getWriter().write("{\"message\":\"401锛氭壘涓嶅埌闄㈠尯鏁版嵁\"}"); + return false; + } + dataSourceConfig.addDataSource(hosp.getDbname()); +// druidConfig.addDataSource(hosp.getDbname()); + DataSourceContextHolder.setDataSourceKey(hosp.getDbname()); + } catch (IOException e) { + return false; + } return true; } @@ -25,6 +73,7 @@ @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