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