From 6efa4693cb921bf4c582d48d504e02c73f7f336b Mon Sep 17 00:00:00 2001
From: zjh <1084500556@qq.com>
Date: 星期一, 04 八月 2025 17:35:11 +0800
Subject: [PATCH] zjh202500804
---
ltkj-framework/src/main/java/com/ltkj/framework/web/service/SysLoginService.java | 67 +++++++++++++++++++++++++--------
1 files changed, 51 insertions(+), 16 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 db229d3..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,8 +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;
@@ -102,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();
}
}
@@ -127,19 +141,27 @@
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();
- recordLoginInfo(Long.valueOf(loginUser.getUserId()));
+ loginUser.setHospDB(hosp.getDbname());
+ loginUser.setHospId(hospId);
+ tokenService.setLoginUser(loginUser);
+ recordLoginInfo(Long.valueOf(loginUser.getUserId()));
//鏍¢獙鍟嗗杩囨湡鍚�
if (secretKeyLogin)
{
@@ -216,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")){
@@ -225,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 "鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒";
}
@@ -258,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