liujie
2 天以前 ee060884a27b901e24e5b532278d040265d5579c
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemUserController.java
@@ -1,7 +1,7 @@
package com.panzhihua.sangeshenbian.api;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.interfaces.OperLog;
@@ -9,35 +9,24 @@
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.sangeshenbian.SystemUserVo;
import com.panzhihua.common.service.auth.TokenService;
import com.panzhihua.common.utlis.HttpClientUtil;
import com.panzhihua.common.utlis.ServletUtils;
import com.panzhihua.sangeshenbian.model.entity.SystemMenu;
import com.panzhihua.sangeshenbian.model.entity.SystemRoleMenu;
import com.panzhihua.sangeshenbian.model.entity.SystemUser;
import com.panzhihua.sangeshenbian.annotation.SysLog;
import com.panzhihua.sangeshenbian.model.entity.*;
import com.panzhihua.sangeshenbian.model.vo.RegionVO;
import com.panzhihua.sangeshenbian.service.ISystemMenuService;
import com.panzhihua.sangeshenbian.service.ISystemRoleMenuService;
import com.panzhihua.sangeshenbian.service.ISystemUserService;
import com.panzhihua.sangeshenbian.warpper.LoginVo;
import com.panzhihua.sangeshenbian.warpper.SystemUserList;
import com.panzhihua.sangeshenbian.warpper.SystemUserListVo;
import com.panzhihua.sangeshenbian.warpper.TokenVo;
import com.panzhihua.sangeshenbian.service.*;
import com.panzhihua.sangeshenbian.utils.SignatureUtil;
import com.panzhihua.sangeshenbian.warpper.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.TimeUnit;
@@ -52,31 +41,44 @@
@RestController
@RequestMapping("/systemUser")
public class SystemUserController extends BaseController {
   @Resource
   private ISystemUserService systemUserService;
   @Resource
   private RedisTemplate redisTemplate;
   @Resource
   private TokenService tokenService;
   private final Integer max_err = 5;
   @Resource
   private ISystemRoleMenuService systemRoleMenuService;
   @Resource
   private ISystemMenuService systemMenuService;
   @Resource
   private IBcRegionService bcRegionService;
   @Resource
   private IComStreetService comStreetService;
   @Resource
   private IComActService comActService;
   @Resource
   private ISystemLogService systemLogService;
   @Resource
   private ISystemUserLevelService systemUserLevelService;
   @PostMapping("/login")
   @ApiOperation(value = "登录", tags = {"三个身边后台-登录"})
   @OperLog(operModul = "三个身边后台",operType = 0,businessType = "登录")
   @SysLog(operatorCategory = "登录",operId = 1)
   public R<TokenVo> login(@RequestBody LoginVo vo){
      String key = "login:" + vo.getPhone();
      Integer size = (Integer) redisTemplate.opsForValue().get(key);
@@ -107,7 +109,8 @@
      LoginReturnVO loginReturnVO = reult.getData();
      TokenVo tokenVo = new TokenVo();
      BeanUtils.copyProperties(loginReturnVO, tokenVo);
      tokenVo.setUserId(Long.valueOf(systemUser.getId()));
      List<SystemRoleMenu> list = systemRoleMenuService.list(new LambdaQueryWrapper<SystemRoleMenu>().eq(SystemRoleMenu::getSystemRoleId, systemUser.getSystemRoleId()));
      List<Integer> collect = list.stream().map(SystemRoleMenu::getSystemMenuId).collect(Collectors.toList());
      Set<String> collect1 = new HashSet<>();
@@ -178,8 +181,8 @@
      }
      return R.ok(tokenVo);
   }
   @PostMapping("logout")
   @ApiOperation(value = "退出登录", tags = {"三个身边后台-登录"})
   @OperLog(operModul = "三个身边后台",operType = 0,businessType = "退出登录")
@@ -190,8 +193,8 @@
      }
      return tokenService.logout(token);
   }
   @GetMapping("/list")
   @ApiOperation(value = "获取列表数据", tags = {"三个身边管理后台-人员管理"})
   @OperLog(operModul = "三个身边后台",operType = 0,businessType = "获取人员管理列表数据")
@@ -201,15 +204,25 @@
      IPage<SystemUserListVo> list = systemUserService.list(user, query);
      return R.ok(list);
   }
   @PostMapping("/add")
   @ApiOperation(value = "添加人员", tags = {"三个身边管理后台-人员管理"})
   @OperLog(operModul = "三个身边后台",operType = 1,businessType = "添加人员")
   @SysLog(operatorCategory = "添加账号",operId = 4)
   public R add(@RequestBody SystemUser systemUser){
      Integer id = this.getLoginUserInfoSanGeShenBian().getId();
      SystemUser user = systemUserService.getById(id);
      List<SystemUserLevel> systemUserLevels = systemUser.getSystemUserLevels();
      if(systemUserLevels==null || systemUserLevels.isEmpty()){
         return R.fail("请选择账号层级");
      }
      // 获取最高层级的用于原来的判断
      systemUserLevels.sort(Comparator.comparing(SystemUserLevel::getLevel));
      Integer level = systemUserLevels.get(0).getLevel();
      user.setAccountLevel(level);
      if(2 == user.getAccountLevel() && 1 == systemUser.getAccountLevel()){
         return R.fail("不能添加市级账号");
      }
@@ -223,49 +236,112 @@
      if(0 < count){
         return R.fail("手机号重复。");
      }
      String districtsCode = systemUser.getDistrictsCode();
      if (!StringUtils.isEmpty(districtsCode)){
         BcRegion bcRegion = bcRegionService.getOne(new LambdaQueryWrapper<BcRegion>().eq(BcRegion::getRegionCode, districtsCode));
         systemUser.setDistricts(bcRegion.getRegionName());
      }
      String streetId = systemUser.getStreetId();
      if (!StringUtils.isEmpty(streetId)){
         ComStreet comStreet = comStreetService.getById(streetId);
         systemUser.setStreet(comStreet.getName());
      }
      Long communityId = systemUser.getCommunityId();
      if (communityId != null){
         ComAct act = comActService.getById(communityId);
         systemUser.setCommunity(act.getName());
      }
      systemUser.setStatus(1);
      systemUser.setCreateTime(LocalDateTime.now());
      // 2.0.1 默认管理员
      systemUser.setIsAdmin(1);
      systemUserService.save(systemUser);
      // 2.0.1添加账号层级
      systemUserLevels.forEach(e->{
         e.setSystemUserId(systemUser.getId());
         e.setStatus(1);
      });
      systemUserLevelService.saveBatch(systemUserLevels);
      return R.ok();
   }
   @PostMapping("/edit")
   @ApiOperation(value = "编辑人员", tags = {"三个身边后台-人员管理"})
   @OperLog(operModul = "三个身边后台",operType = 2,businessType = "编辑人员")
   @SysLog(operatorCategory = "编辑账号",operId = 4)
   public R edit(@RequestBody SystemUser systemUser){
      List<SystemUserLevel> systemUserLevels = systemUser.getSystemUserLevels();
      if(systemUserLevels==null || systemUserLevels.isEmpty()){
         return R.fail("请选择账号层级");
      }
      long count = systemUserService.count(new LambdaQueryWrapper<SystemUser>().eq(SystemUser::getPhone, systemUser.getPhone())
            .ne(SystemUser::getStatus, 3).ne(SystemUser::getId, systemUser.getId()));
      if(0 < count){
         return R.fail("手机号重复。");
      }
      String districtsCode = systemUser.getDistrictsCode();
      if (!StringUtils.isEmpty(districtsCode)){
         BcRegion bcRegion = bcRegionService.getOne(new LambdaQueryWrapper<BcRegion>().eq(BcRegion::getRegionCode, districtsCode));
         systemUser.setDistricts(bcRegion.getRegionName());
      }
      String streetId = systemUser.getStreetId();
      if (!StringUtils.isEmpty(streetId)){
         ComStreet comStreet = comStreetService.getById(streetId);
         systemUser.setStreet(comStreet.getName());
      }
      Long communityId = systemUser.getCommunityId();
      if (communityId != null){
         ComAct act = comActService.getById(communityId);
         systemUser.setCommunity(act.getName());
      }
      systemUser.setStatus(1);
      systemUser.setCreateTime(LocalDateTime.now());
      systemUserService.updateById(systemUser);
      // 移除原来层级 在添加新层级
      systemUserLevelService.remove(new LambdaQueryWrapper<SystemUserLevel>().eq(SystemUserLevel::getSystemUserId, systemUser.getId()));
      systemUserLevels.forEach(e->{
         e.setSystemUserId(systemUser.getId());
         e.setStatus(1);
      });
      systemUserLevelService.saveBatch(systemUserLevels);
      return R.ok();
   }
   @DeleteMapping("/delete/{id}")
   @ApiOperation(value = "删除人员", tags = {"三个身边后台-人员管理"})
   @OperLog(operModul = "三个身边后台",operType = 3,businessType = "删除人员")
   @SysLog(operatorCategory = "删除账号",operId = 4)
   public R delete(@PathVariable("id") Integer id){
      SystemUser systemUser = systemUserService.getById(id);
      systemUser.setStatus(3);
      systemUserService.updateById(systemUser);
      return R.ok();
      systemUserLevelService.update(new LambdaUpdateWrapper<SystemUserLevel>().eq(SystemUserLevel::getSystemUserId, id).set(SystemUserLevel::getStatus,3));
      return R.ok(systemUser.getName());
   }
   @GetMapping("/getSystemUserInfo/{id}")
   @ApiOperation(value = "查询人员详情", tags = {"三个身边后台-人员管理"})
   @OperLog(operModul = "三个身边后台",operType = 0,businessType = "查询人员详情")
   public R<SystemUser> getSystemUserInfo(@PathVariable("id") Integer id){
      SystemUser systemUser = systemUserService.getById(id);
      List<SystemUserLevel> listBySystemUserId = systemUserLevelService.getListBySystemUserId(id);
      listBySystemUserId.sort(Comparator.comparing(SystemUserLevel::getLevel));
      systemUser.setSystemUserLevels(listBySystemUserId);
      return R.ok(systemUser);
   }
   @PutMapping("/freeze/{id}")
   @ApiOperation(value = "冻结账号", tags = {"三个身边后台-人员管理"})
   @OperLog(operModul = "三个身边后台",operType = 2,businessType = "冻结账号")
@@ -278,8 +354,8 @@
      systemUserService.updateById(systemUser);
      return R.ok();
   }
   @PutMapping("/unfreeze/{id}")
   @ApiOperation(value = "解冻账号", tags = {"三个身边后台-人员管理"})
   @OperLog(operModul = "三个身边后台",operType = 2,businessType = "解冻账号")
@@ -292,8 +368,8 @@
      systemUserService.updateById(systemUser);
      return R.ok();
   }
   /**
    * 根据用户id获取信息
    * @param id
@@ -314,9 +390,9 @@
      BeanUtils.copyProperties(systemUser, systemUserVo);
      return R.ok(systemUserVo);
   }
   @GetMapping("/getAdministrativeDivision/{id}/{tier}")
   @ApiOperation(value = "获取行政区划层级联动数据", tags = {"三个身边后台-人员管理"})
   @ApiImplicitParams({
@@ -341,6 +417,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));
      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(){
@@ -350,38 +485,31 @@
   }
   public static void main(String[] args) {
   @GetMapping("/getSignature")
   @ApiOperation(value = "获取签名",tags = {"三个身边小程序"})
    public R<?> getSignature() throws Exception {
        String APP_ID = "wx118de8a734d269f0";
        String APP_SECRET = "0264342daefde5cd70a6adada09ee5b1";
        String accessToken = SignatureUtil.getAccessToken(APP_ID, APP_SECRET);
        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 = "http://192.168.110.91:8080/#/pages/Appeal/Appeal/"; // 当前页面的URL,不包含#及其后面部分
   }
        String signature = SignatureUtil.getSignature(jsapiTicket, nonceStr, timestamp, url);
//   private String ACCESS_TOKEN_URL = "GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential";
//
//   public String getAppAccessToken(String appId, String appSecret) throws Exception {
//      String accessToken = "0";
//      try {
//         log.info("获取微信token参数:appid=" + appId + ",appSecret=" + appSecret);
//         String accessTokenUrl = ACCESS_TOKEN_URL + "&appid=" + appId + "&secret=" + appSecret;
//         String result = HttpClientUtil.httpGet(accessTokenUrl, null, null);
//         Map<String, Object> resultMap = JSON.parseObject(result, Map.class);
//         StringRedisTemplate redisTemplate = wxXCXTempSend.stringRedisTemplate;
//         if (resultMap.containsKey("access_token")) {
//            accessToken = resultMap.get("access_token").toString();
//            redisTemplate.opsForValue().set("access_token:access_token:" + appId, accessToken);
//         }
//         HttpServletRequest request = ServletUtils.getRequest();
//         String requestURI = request.getRequestURI();
//         //加上时间戳
//         String datetime = new SimpleDateFormat("yyyyMMdd").format(new Date());
//         //这里是 Redis key的前缀,如: sys:tabieId:表名  如果不需要去掉表名也可以
//         String key = MessageFormat.format("{0}:{1}:{2}",  "access_token_request_incr",datetime,requestURI);
//         //查询 key 是否存在, 不存在返回 1 ,存在的话则自增加1
//         redisTemplate.opsForValue().increment(key, 1);
//
//      } catch (IOException ioe) {
//         log.error("小程序http请求异常");
//         ioe.printStackTrace();
//      }
//      return accessToken;
//   }
        System.out.println("appId: " + APP_ID);
        System.out.println("timestamp: " + timestamp);
        System.out.println("nonceStr: " + nonceStr);
        System.out.println("signature: " + signature);
        SignatureVO signatureVO = new SignatureVO();
        signatureVO.setTimestamp(timestamp);
        signatureVO.setNonceStr(nonceStr);
        signatureVO.setSignature(signature);
        return R.ok(signatureVO);
    }
}