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 | 36 ++++++++++++++++++++++++++++++++++-- 1 files changed, 34 insertions(+), 2 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 c448c25..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); @@ -428,7 +460,7 @@ ArrayList<RegionVO> regionVOS = new ArrayList<>(); regionVOS.add(new RegionVO("1","市",new ArrayList<>(),1)); - List<BcRegion> list = bcRegionService.list(new LambdaQueryWrapper<BcRegion>().eq(BcRegion::getDeleteFlag, 0)); + List<BcRegion> list = bcRegionService.list(new LambdaQueryWrapper<BcRegion>().eq(BcRegion::getDeleteFlag, 0).eq(BcRegion::getParentId, 510400)); ArrayList<RegionVO> regionList = new ArrayList<>(); list.forEach(e->{ RegionVO regionVO = new RegionVO(); -- Gitblit v1.7.1