From b2fef519c89360cf7eeba2c781f1043caca75fc6 Mon Sep 17 00:00:00 2001 From: zhaowenxuan <chacca165@163.com> Date: 星期四, 13 二月 2025 20:36:56 +0800 Subject: [PATCH] 积木报表拦截切库 --- ltkj-common/src/main/java/com/ltkj/common/core/domain/model/LoginUser.java | 4 ++ ltkj-admin/src/main/java/com/ltkj/web/jmreport/JimuReportTokenService.java | 3 + ltkj-framework/src/main/java/com/ltkj/framework/web/service/SysLoginService.java | 15 +++++++ ltkj-framework/src/main/java/com/ltkj/framework/interceptor/JimuInterceptor.java | 72 ++++++++++++++++++++++++++++++++++++ ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysLoginController.java | 7 ++- ltkj-framework/src/main/java/com/ltkj/framework/config/WebConfig.java | 9 ++++ 6 files changed, 105 insertions(+), 5 deletions(-) diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysLoginController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysLoginController.java index 5a7e354..6418c0b 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysLoginController.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysLoginController.java @@ -38,6 +38,7 @@ import com.ltkj.framework.web.service.SysPermissionService; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import static com.ltkj.common.core.domain.AjaxResult.success; @@ -84,13 +85,13 @@ @PostMapping("/login") @ApiOperation("鐧诲綍鎺ュ彛") @RepeatSubmit - public AjaxResult login(@RequestBody @ApiParam(value = "鐧诲綍瀵硅薄") LoginBody loginBody) { - + public AjaxResult login(@RequestBody @ApiParam(value = "鐧诲綍瀵硅薄") LoginBody loginBody, HttpServletRequest request) { + String hospId = request.getHeader("hospId"); AjaxResult ajax = success(); // 鐢熸垚浠ょ墝 String token; if (loginBody.getMobile()) { - token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getType(), loginBody.getCode(), loginBody.getUuid()); + token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getType(), loginBody.getCode(), loginBody.getUuid(),hospId); } else { token = loginService.Cuslogin(loginBody.getUsername(), loginBody.getPassword(), loginBody.getType(), loginBody.getCode(), loginBody.getUuid()); } diff --git a/ltkj-admin/src/main/java/com/ltkj/web/jmreport/JimuReportTokenService.java b/ltkj-admin/src/main/java/com/ltkj/web/jmreport/JimuReportTokenService.java index 7420f9a..c167c4a 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/jmreport/JimuReportTokenService.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/jmreport/JimuReportTokenService.java @@ -98,6 +98,9 @@ header.add("token", getToken()); header.add("X-Access-Token", getToken()); + LoginUser loginUser = tokenService.getLoginUser(getToken()); + header.add("hospId",loginUser.getHospId()); + header.add("QospId","123"); return header; } } diff --git a/ltkj-common/src/main/java/com/ltkj/common/core/domain/model/LoginUser.java b/ltkj-common/src/main/java/com/ltkj/common/core/domain/model/LoginUser.java index b681c16..435cb5c 100644 --- a/ltkj-common/src/main/java/com/ltkj/common/core/domain/model/LoginUser.java +++ b/ltkj-common/src/main/java/com/ltkj/common/core/domain/model/LoginUser.java @@ -83,6 +83,10 @@ private String hospName; + private String hospId; + + private String hospDB; + /* */ /** diff --git a/ltkj-framework/src/main/java/com/ltkj/framework/config/WebConfig.java b/ltkj-framework/src/main/java/com/ltkj/framework/config/WebConfig.java index 4ab71c6..fa7ab2b 100644 --- a/ltkj-framework/src/main/java/com/ltkj/framework/config/WebConfig.java +++ b/ltkj-framework/src/main/java/com/ltkj/framework/config/WebConfig.java @@ -2,6 +2,7 @@ //import com.ltkj.framework.interceptor.DBChangeInterceptor; import com.ltkj.framework.interceptor.DBChangeInterceptor; +import com.ltkj.framework.interceptor.JimuInterceptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpMethod; @@ -18,6 +19,8 @@ @Autowired private DBChangeInterceptor dbChangeInterceptor; + @Autowired + private JimuInterceptor jimuInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { @@ -39,7 +42,8 @@ "/system/dict/data/**", "/system/dict/type/**", "/captchaImage","/getCaptchaConfigKey/**", - "/system/role/execUpdateSql" + "/system/role/execUpdateSql", + "/jmreport/**" // , // "/login", "/register", "/captchaImage","/cus/**","/getCaptchaConfigKey","/report/jmreport/**", // "/sqlserver/getdata/**","/api/His/**","/system/config/zx","/system/config/gxxmpym","/system/report/savePdf", @@ -48,5 +52,8 @@ // String.valueOf(HttpMethod.GET), "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**", // "/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**","/jmreport/**","/lis/**","/pacs/**","/callBack/**" }); + + registry.addInterceptor(jimuInterceptor) + .addPathPatterns("/jmreport/**"); } } diff --git a/ltkj-framework/src/main/java/com/ltkj/framework/interceptor/JimuInterceptor.java b/ltkj-framework/src/main/java/com/ltkj/framework/interceptor/JimuInterceptor.java new file mode 100644 index 0000000..7753fbe --- /dev/null +++ b/ltkj-framework/src/main/java/com/ltkj/framework/interceptor/JimuInterceptor.java @@ -0,0 +1,72 @@ +package com.ltkj.framework.interceptor; + +import cn.hutool.json.JSONUtil; +import com.ltkj.common.core.domain.model.LoginUser; +import com.ltkj.db.DataSourceConfig; +import com.ltkj.db.DataSourceContextHolder; +import com.ltkj.framework.config.UserHoder; +import com.ltkj.framework.web.service.TokenService; +import com.ltkj.hosp.service.IDictHospService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Map; + +/** + * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃 + * @Author: zhaowenxuan + * @Date: 2025/2/13 18:44 + */ +@Order(2) +@Component +public class JimuInterceptor implements HandlerInterceptor { + + @Autowired + private IDictHospService dictHospService; + @Autowired + private DataSourceConfig dataSourceConfig; + @Autowired + private TokenService tokenService; + private String db; + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + Map<String, String[]> parameterMap = request.getParameterMap(); + String[] tokens = parameterMap.get("token"); + if (tokens != null && tokens.length > 0){ + String token = tokens[0]; + LoginUser loginUser = tokenService.getLoginUser(token); + System.out.println("loginUser.getHospDB() ->"+loginUser.getHospDB()); + dataSourceConfig.addDataSource(loginUser.getHospDB()); + DataSourceContextHolder.setDataSourceKey(loginUser.getHospDB()); +// UserHoder.setLoginUser(loginUser); + db = loginUser.getHospDB(); + }else { + LoginUser loginUser = UserHoder.getLoginUser(); +// System.out.println(JSONUtil.toJsonStr(user)); + dataSourceConfig.addDataSource(db); + DataSourceContextHolder.setDataSourceKey(db); +// dataSourceConfig.addDataSource("ltkjpeis10_chkwyy"); +// DataSourceContextHolder.setDataSourceKey("ltkjpeis10_chkwyy"); + } + return true; + } + + @Override + public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { + HandlerInterceptor.super.postHandle(request, response, handler, modelAndView); + } + + @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); + } +} diff --git a/ltkj-framework/src/main/java/com/ltkj/framework/web/service/SysLoginService.java b/ltkj-framework/src/main/java/com/ltkj/framework/web/service/SysLoginService.java index c5d788c..0fe6028 100644 --- a/ltkj-framework/src/main/java/com/ltkj/framework/web/service/SysLoginService.java +++ b/ltkj-framework/src/main/java/com/ltkj/framework/web/service/SysLoginService.java @@ -7,12 +7,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ltkj.common.constant.CacheConstants; import com.ltkj.common.core.domain.entity.SysDept; +import com.ltkj.common.enums.DataSourceType; import com.ltkj.common.exception.CustomException; import com.ltkj.common.exception.user.CaptchaException; import com.ltkj.common.exception.user.CaptchaExpireException; import com.ltkj.common.exception.user.SecretKeyException; import com.ltkj.common.utils.*; import com.ltkj.common.utils.sign.RsaUtils; +import com.ltkj.db.DataSourceConfig; +import com.ltkj.db.DataSourceContextHolder; import com.ltkj.framework.config.JwtUtils; import com.ltkj.framework.config.UserHoder; import com.ltkj.hosp.domain.DictHosp; @@ -84,6 +87,8 @@ @Value("${token.secret_key_login}") private boolean secretKeyLogin; + @Autowired + private DataSourceConfig dataSourceConfig; /** @@ -93,9 +98,14 @@ * @param password 瀵嗙爜 * @return 缁撴灉 */ - public String login(String username, String password, Boolean type,String code,String uuid) { + public String login(String username, String password, Boolean type,String code,String uuid,String hospId) { + DataSourceContextHolder.setDataSourceKey(DataSourceType.MASTER.name()); + LambdaQueryWrapper<DictHosp> wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(DictHosp::getCode,hospId); + DictHosp hosp = hospService.getOne(wrapper); + DataSourceContextHolder.setDataSourceKey(hosp.getDbname()); String aSwitch = configService.selectConfigByKey("captcha_switch"); if(null !=aSwitch && aSwitch.equalsIgnoreCase("Y")){ String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid; @@ -139,6 +149,9 @@ } AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); LoginUser loginUser = (LoginUser) authentication.getPrincipal(); + loginUser.setHospDB(hosp.getDbname()); + loginUser.setHospId(hospId); + tokenService.setLoginUser(loginUser); recordLoginInfo(Long.valueOf(loginUser.getUserId())); //鏍¢獙鍟嗗杩囨湡鍚� -- Gitblit v1.8.0