From 2a9583fd376451ca77a0400af7f3a02d1b80e7f5 Mon Sep 17 00:00:00 2001
From: zhaowenxuan <chacca165@163.com>
Date: 星期二, 24 六月 2025 18:04:34 +0800
Subject: [PATCH] 2025-06-24

---
 ltkj-framework/src/main/java/com/ltkj/framework/web/service/SysLoginService.java |   64 ++++++++++++++++++++++++-------
 1 files changed, 49 insertions(+), 15 deletions(-)

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..eba1b92 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;
@@ -37,6 +40,7 @@
 import com.ltkj.framework.manager.AsyncManager;
 import com.ltkj.framework.manager.factory.AsyncFactory;
 import com.ltkj.framework.security.context.AuthenticationContextHolder;
+import org.springframework.util.DigestUtils;
 
 import java.util.Date;
 import java.util.HashMap;
@@ -84,6 +88,8 @@
 
     @Value("${token.secret_key_login}")
     private boolean secretKeyLogin;
+    @Autowired
+    private DataSourceConfig dataSourceConfig;
 
 
     /**
@@ -93,9 +99,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;
@@ -103,12 +114,14 @@
             redisCache.deleteObject(verifyKey);
             if (captcha == null)
             {
-                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")));
+                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"),hosp.getDbname()));
+//                AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"));
                 throw new CaptchaExpireException();
             }
             if (!code.equalsIgnoreCase(captcha))
             {
-                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")));
+                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error"),hosp.getDbname()));
+//                AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error"));
                 throw new CaptchaException();
             }
         }
@@ -128,17 +141,25 @@
             authentication = authenticationManager.authenticate(authenticationToken);
         } catch (Exception e) {
             if (e instanceof BadCredentialsException) {
-                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
+                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"),hosp.getDbname()));
+//                AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"));
                 throw new UserPasswordNotMatchException();
             } else {
-                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));
+                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage(),hosp.getDbname()));
+//                AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage());
                 throw new ServiceException(e.getMessage());
             }
         } finally {
             AuthenticationContextHolder.clearContext();
         }
-        AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
+//        AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
+//       AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"),hosp.getDbname());
+//       AsyncFactory.recordLogininforord(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"),hosp.getDbname());
+        AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"),hosp.getDbname()));
         LoginUser loginUser = (LoginUser) authentication.getPrincipal();
+        loginUser.setHospDB(hosp.getDbname());
+        loginUser.setHospId(hospId);
+        tokenService.setLoginUser(loginUser);
 
         recordLoginInfo(Long.valueOf(loginUser.getUserId()));
         //鏍¢獙鍟嗗杩囨湡鍚�
@@ -217,7 +238,14 @@
      * @param password 瀵嗙爜
      * @return 缁撴灉
      */
-    public String Cuslogin(String username, String password, Boolean type,String code,String uuid) {
+    public String Cuslogin(String username,String sfzh, 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")){
@@ -226,18 +254,19 @@
             redisCache.deleteObject(verifyKey);
             if (captcha == null)
             {
-                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")));
+                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"),hosp.getDbname()));
+//                AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"));
                 throw new CaptchaExpireException();
             }
             if (!code.equalsIgnoreCase(captcha))
             {
-                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")));
+                AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error"),hosp.getDbname());
                 throw new CaptchaException();
             }
         }
 
 
-        LoginUser loginUser = loadCusByCusname(username, password);
+        LoginUser loginUser = loadCusByCusname(username,sfzh, password);
         if (loginUser == null) {
             return "鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒";
         }
@@ -259,19 +288,24 @@
         return tokenService.createToken(loginUser);
     }
 
-    public LoginUser loadCusByCusname(String username, String password) {
+    public LoginUser loadCusByCusname(String username,String sfzh, String password) {
         LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper<>();
         wq.eq(TjCustomer::getCusPhone, username);
+        wq.eq(TjCustomer::getCusIdcard, sfzh);
         List<TjCustomer> customerList = customerService.list(wq);
-        if (null == customerList || customerList.size() == 0) {
+        if (null == customerList || customerList.isEmpty()) {
             //throw new ServiceException("鐧诲綍鐢ㄦ埛锛�" + username + " 涓嶅瓨鍦�");
             throw new ServiceException("璐﹀彿鎴栧瘑鐮侀敊璇紝璇锋鏌ワ紒");
         }
         for (TjCustomer tjCustomer : customerList) {
             try {
-                password = RsaUtils.decryptByPrivateKey(password);
-                boolean b = SecurityUtils.matchesPassword(password, tjCustomer.getCusPassword());
-                if (b) {
+//                password = RsaUtils.decryptByPrivateKey(password);
+//                boolean b = SecurityUtils.matchesPassword(password, tjCustomer.getCusPassword());
+//                if (b) {
+//                    return createLoginCus(tjCustomer);
+//                }
+                password = DigestUtils.md5DigestAsHex(password.getBytes());
+                if (password.equals(tjCustomer.getCusPassword())){
                     return createLoginCus(tjCustomer);
                 }
             } catch (Exception e) {

--
Gitblit v1.8.0