From 70d2a5d0f9c6951b2d4cac954041ed73582ff7eb Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期一, 09 六月 2025 11:54:00 +0800
Subject: [PATCH] 6.9新增登录失败冻结逻辑

---
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemUserController.java |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemUserController.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemUserController.java
index 4a2b99d..1d52883 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemUserController.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemUserController.java
@@ -82,6 +82,11 @@
 	public R<TokenVo> login(@RequestBody LoginVo vo){
 		String key = "login:" + vo.getPhone();
 		Integer size = (Integer) redisTemplate.opsForValue().get(key);
+		int errSize = 0;
+		Object errSizeObj = redisTemplate.opsForValue().get("error_"+key);
+		if(errSizeObj!=null){
+			errSize = (Integer) errSizeObj;
+		}
 		if(null != size && max_err.equals(size)){
 			return R.fail("连续登录失败,请稍后重试。");
 		}
@@ -96,8 +101,16 @@
 			return R.fail("登录失败,手机号/密码错误。");
 		}
 		if(!vo.getPassword().equals(systemUser.getPassword())){
+			if(errSize==2){
+				systemUser.setStatus(2);
+				systemUserService.updateById(systemUser);
+			}
 			size++;
 			redisTemplate.opsForValue().set(key, size, 5, TimeUnit.MINUTES);
+			if(size==5){
+				errSize++;
+				redisTemplate.opsForValue().set("error_"+key, errSize, 1, TimeUnit.DAYS);
+			}
 			return R.fail("登录失败,手机号/密码错误。");
 		}
 		if(2 == systemUser.getStatus()){
@@ -106,6 +119,8 @@
 		//创建token
 		R<LoginReturnVO> reult = tokenService.loginThreeAround(systemUser.getId());
 		redisTemplate.delete(key);
+		redisTemplate.delete("error_"+key);
+
 		LoginReturnVO loginReturnVO = reult.getData();
 		TokenVo tokenVo = new TokenVo();
 		BeanUtils.copyProperties(loginReturnVO, tokenVo);

--
Gitblit v1.7.1