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 |   34 +++++++++++++++++++++++++++++++++-
 1 files changed, 33 insertions(+), 1 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 3ccb34b..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);
@@ -220,7 +235,7 @@
 		// 获取最高层级的用于原来的判断
 		systemUserLevels.sort(Comparator.comparing(SystemUserLevel::getLevel));
 		Integer level = systemUserLevels.get(0).getLevel();
-		user.setAccountLevel(level);
+		systemUser.setAccountLevel(level);
 
 
 		if(2 == user.getAccountLevel() && 1 == systemUser.getAccountLevel()){
@@ -283,6 +298,15 @@
 		if(0 < count){
 			return R.fail("手机号重复。");
 		}
+		systemUserLevels.sort(Comparator.comparing(SystemUserLevel::getLevel));
+		SystemUserLevel systemUserLevel = systemUserLevels.get(0);
+		systemUser.setDistrictsCode(systemUserLevel.getDistrictsCode());
+		systemUser.setDistricts(systemUserLevel.getDistricts());
+		systemUser.setStreetId(systemUserLevel.getStreetId());
+		systemUser.setStreet(systemUserLevel.getStreet());
+		systemUser.setCommunityId(systemUserLevel.getCommunityId());
+		systemUser.setCommunity(systemUserLevel.getCommunity());
+
 
 		String districtsCode = systemUser.getDistrictsCode();
 		if (!StringUtils.isEmpty(districtsCode)){
@@ -304,6 +328,12 @@
 
 		systemUser.setStatus(1);
 		systemUser.setCreateTime(LocalDateTime.now());
+
+		// 获取最高层级的用于原来的判断
+
+		Integer level = systemUserLevels.get(0).getLevel();
+		systemUser.setAccountLevel(level);
+
 		systemUserService.updateById(systemUser);
 		// 移除原来层级 在添加新层级
 		systemUserLevelService.remove(new LambdaQueryWrapper<SystemUserLevel>().eq(SystemUserLevel::getSystemUserId, systemUser.getId()));
@@ -311,6 +341,8 @@
 			e.setSystemUserId(systemUser.getId());
 			e.setStatus(1);
 		});
+
+
 		systemUserLevelService.saveBatch(systemUserLevels);
 
 

--
Gitblit v1.7.1