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 | 27 ++++++++++++++++++++++++--- 1 files changed, 24 insertions(+), 3 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 f7b0eb7..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); @@ -283,8 +298,14 @@ 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(); @@ -309,7 +330,7 @@ systemUser.setCreateTime(LocalDateTime.now()); // 获取最高层级的用于原来的判断 - systemUserLevels.sort(Comparator.comparing(SystemUserLevel::getLevel)); + Integer level = systemUserLevels.get(0).getLevel(); systemUser.setAccountLevel(level); -- Gitblit v1.7.1