liujie
2025-06-09 70d2a5d0f9c6951b2d4cac954041ed73582ff7eb
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);
@@ -417,6 +449,65 @@
      log.info("获取行政区划层级联动数据:{}", list);
      return R.ok(list);
   }
   @GetMapping("/getAdministrativeDivisionTwo")
   @ApiOperation(value = "获取行政区划层级联动数据--2.0.1", tags = {"三个身边后台-人员管理"})
   @ApiImplicitParams({
   })
   @OperLog(operModul = "三个身边后台",operType = 0,businessType = "获取行政区划层级联动数据--2.0.1")
   public R<ArrayList<RegionVO>> getAdministrativeDivisionTwo(){
      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).eq(BcRegion::getParentId,  510400));
      ArrayList<RegionVO> regionList = new ArrayList<>();
      list.forEach(e->{
         RegionVO regionVO = new RegionVO();
         regionVO.setId(e.getRegionCode());
         regionVO.setName(e.getRegionName());
         regionVO.setTier(2);
         regionList.add(regionVO);
      });
      regionVOS.add(new RegionVO("2","区县",regionList,2));
      List<ComStreet> list1 = comStreetService.list(new LambdaQueryWrapper<ComStreet>().in(ComStreet::getAreaCode, regionList.stream().map(RegionVO::getId).collect(Collectors.toList())));
      for (RegionVO regionVO : regionList) {
         ArrayList<RegionVO> list2 = new ArrayList<>();
         List<ComStreet> collect = list1.stream().filter(e -> e.getAreaCode().toString().equals(regionVO.getId())).collect(Collectors.toList());
         collect.forEach(e->{
            RegionVO regionVO1 = new RegionVO();
            regionVO1.setId(e.getStreetId());
            regionVO1.setName(e.getName());
            regionVO1.setTier(3);
            list2.add(regionVO1);
         });
         regionVO.setChildren(list2);
      }
      regionVOS.add(new RegionVO("3","街道",regionList,3));
      List<ComAct> list2 = comActService.list();
      for (RegionVO regionVO : regionList) {
         List<RegionVO> children = regionVO.getChildren();
         for (RegionVO child : children) {
            List<ComAct> collect = list2.stream().filter(e -> e.getStreetId().toString().equals(child.getId())).collect(Collectors.toList());
            ArrayList<RegionVO> list3 = new ArrayList<>();
            collect.forEach(e->{
               RegionVO regionVO2 = new RegionVO();
               regionVO2.setId(e.getCommunityId().toString());
               regionVO2.setName(e.getName());
               regionVO2.setTier(4);
               list3.add(regionVO2);
            });
            child.setChildren(list3);
         }
      }
      regionVOS.add(new RegionVO("4","社区",regionList,4));
      return R.ok(regionVOS);
   }
   @GetMapping("/regionTree")
   @ApiOperation(value = "获取区县-街道-社区树",tags = {"三个身边后台-人员管理"})
   public R<List<RegionVO>> regionTree(){
@@ -435,7 +526,8 @@
        String jsapiTicket = SignatureUtil.getJsApiTicket(accessToken);
        String nonceStr = UUID.randomUUID().toString().replace("-", "");
        String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
        String url = "https://huacheng.psciio.com/web/sangeshenbian/"; // 当前页面的URL,不包含#及其后面部分
//        String url = "https://huacheng.psciio.com/web/sangeshenbian/"; // 当前页面的URL,不包含#及其后面部分
        String url = "http://192.168.110.91:8080/#/pages/Appeal/Appeal/"; // 当前页面的URL,不包含#及其后面部分
        String signature = SignatureUtil.getSignature(jsapiTicket, nonceStr, timestamp, url);