From d5393909a140c863a40cabb9bee43d8a324969e0 Mon Sep 17 00:00:00 2001
From: zjh <zjh@888>
Date: 星期二, 05 三月 2024 14:33:04 +0800
Subject: [PATCH] zjh 本地 2024/03/5 -1
---
ltkj-framework/src/main/java/com/ltkj/framework/web/service/SysLoginService.java | 125 +++++++++++++++++++++++++++++++----------
1 files changed, 95 insertions(+), 30 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 3ff7c18..a1c5506 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
@@ -2,18 +2,24 @@
import javax.annotation.Resource;
+import cn.hutool.core.date.DateUnit;
+import cn.hutool.core.date.DateUtil;
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.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.framework.config.JwtUtils;
import com.ltkj.framework.config.UserHoder;
+import com.ltkj.hosp.domain.DictHosp;
import com.ltkj.hosp.domain.TjCustomer;
+import com.ltkj.hosp.service.IDictHospService;
import com.ltkj.hosp.service.ITjCustomerService;
-import com.ltkj.system.service.ISysMenuService;
-import com.ltkj.system.service.SysParametersDisposeService;
+import com.ltkj.system.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.authentication.AuthenticationManager;
@@ -31,8 +37,8 @@
import com.ltkj.framework.manager.AsyncManager;
import com.ltkj.framework.manager.factory.AsyncFactory;
import com.ltkj.framework.security.context.AuthenticationContextHolder;
-import com.ltkj.system.service.ISysUserService;
+import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -60,13 +66,24 @@
@Resource
private ISysMenuService menuService;
-
+ @Resource
+ private IDictHospService hospService;
+ @Autowired
+ private ISysDeptService deptService;
@Autowired
private SysParametersDisposeService parametersDisposeService;
+ @Autowired
+ private ISysConfigService configService;
// 鏄惁鍏佽璐︽埛澶氱粓绔悓鏃剁櫥褰曪紙true鍏佽 false涓嶅厑璁革級
@Value("${token.soloLogin}")
private boolean soloLogin;
+
+ @Value("${token.secret_key}")
+ private String secret;
+
+ @Value("${token.secret_key_login}")
+ private boolean secretKeyLogin;
/**
@@ -78,26 +95,33 @@
*/
public String login(String username, String password, Boolean type,String code,String uuid) {
- String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
- String captcha = redisCache.getCacheObject(verifyKey);
- redisCache.deleteObject(verifyKey);
- if (captcha == null)
- {
- AsyncManager.me().execute(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")));
- throw new CaptchaException();
+ String aSwitch = configService.selectConfigByKey("captcha_switch");
+ if(null !=aSwitch && aSwitch.equals("Y")){
+ String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
+ String captcha = redisCache.getCacheObject(verifyKey);
+ redisCache.deleteObject(verifyKey);
+ if (captcha == null)
+ {
+ AsyncManager.me().execute(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")));
+ throw new CaptchaException();
+ }
}
// 鐢ㄦ埛楠岃瘉
Authentication authentication = null;
try {
//鐧诲綍瀵嗙爜瑙e瘑
- UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, RsaUtils.decryptByPrivateKey(password));
- //UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password);
+ String s = RsaUtils.decryptByPrivateKey(password);
+// String s = password;
+ if(username.equals("10001")){
+ s=username+s;
+ }
+ UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username,s);
AuthenticationContextHolder.setContext(authenticationToken);
// 璇ユ柟娉曚細鍘昏皟鐢║serDetailsServiceImpl.loadUserByUsername
authentication = authenticationManager.authenticate(authenticationToken);
@@ -115,6 +139,42 @@
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
LoginUser loginUser = (LoginUser) authentication.getPrincipal();
recordLoginInfo(Long.valueOf(loginUser.getUserId()));
+
+ //鏍¢獙鍟嗗杩囨湡鍚�
+ if (secretKeyLogin)
+ {
+ Long userId =loginUser.getUser().getUserId();
+ SysUser user = userService.getById(userId);
+ if(null !=user && null !=user.getDeptId()){
+ SysDept sysDept = deptService.getById(user.getDeptId());
+ if (null != sysDept) {
+ DictHosp dictHosp = hospService.getById(sysDept.getHospId());
+ if(null !=dictHosp){
+ loginUser.setHospName(dictHosp.getHospAreaName());
+ if(!SecurityUtils.isAdmin(user.getUserId())){
+ if(dictHosp.getSecretKey() != null && dictHosp.getExpirationTime() != null){
+ if (!SecurityUtils.matchesMallMerchantSecretKey(secret,dictHosp.getHospAreaId(),dictHosp.getHospAreaName(),
+ dictHosp.getExpirationTime(),dictHosp.getSecretKey()) || new Date().after(DateUtil.endOfDay(dictHosp.getExpirationTime()))) {
+ throw new SecretKeyException("鍟嗗宸茶繃鏈熻缁垂浣跨敤");
+ }
+ long between = DateUtil.between(new Date(), DateUtil.endOfDay(dictHosp.getExpirationTime()), DateUnit.DAY);
+ if(between<=30){
+ loginUser.setMessage("杩樻湁 "+between+" 澶╁埌鏈� 璇锋敞鎰忕画璐�! 浠ュ厤褰卞搷姝e父浣跨敤!");
+ }else {
+ loginUser.setMessage(null);
+ }
+ }else {
+ throw new SecretKeyException("璇风即璐逛娇鐢�");
+ }
+ }
+ }
+ }
+
+ }else {
+ throw new CustomException("璇风粦瀹氬晢瀹�");
+ }
+
+ }
// 闄愬埗璐︽埛涓嶅厑璁稿缁堢鐧诲綍
if (!soloLogin) {
@@ -158,19 +218,24 @@
*/
public String Cuslogin(String username, String password, Boolean type,String code,String uuid) {
- String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
- String captcha = redisCache.getCacheObject(verifyKey);
- redisCache.deleteObject(verifyKey);
- if (captcha == null)
- {
- AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")));
- throw new CaptchaExpireException();
+ String aSwitch = configService.selectConfigByKey("captcha_switch");
+ if(null !=aSwitch && aSwitch.equals("Y")){
+ String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
+ String captcha = redisCache.getCacheObject(verifyKey);
+ redisCache.deleteObject(verifyKey);
+ if (captcha == null)
+ {
+ AsyncManager.me().execute(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")));
+ throw new CaptchaException();
+ }
}
- if (!code.equalsIgnoreCase(captcha))
- {
- AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")));
- throw new CaptchaException();
- }
+
+
LoginUser loginUser = loadCusByCusname(username, password);
if (loginUser == null) {
return "鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒";
--
Gitblit v1.8.0