目录菜单树的实现及查询

要求: 获取用户能操作的资源集合,这里主要考虑菜单树的获取
框架: springboot + hibernate
场景: 当我们传入一个单独的次级目录时,我们需要查出这个次级目录的根目录以及父目录,同时查出这个次级目录的所有子目录。
思路: 为次级目录补足上层及根目录,再查出该根目录下的次级目录的所有子目录。
补足目录的算法逻辑。
算法逻辑: 传入资源节点NodeList.,以及rootNode.
1. 如果资源为递归树结构 并且查询条件要求按树形结构展示,则返回结果以树形结构展示,补足list中的拥有子节点的根节点。
2. 新建资源节点的ID集合idList和资源节点集合parentList,然后对资源节点NodeList进行遍历,将节点ID存到idList.
3. 遍历资源节点NodeList,并对每一个节点进行判断,条件是:当前节点不是根节点,并且当前节点的父节点不在集合idList中。
4. 结果为True,则添加该节点资源到 parentList。false则不进行添加。
5,对3.4步进行递归。
6. 资源节点添加parentList集合。

功能实现:
1.controller层
UserResourceGetConditionDto 类UserResourceGetResultDto类

        /**
     * 获取用户能操作的资源集合     
     * @return 资源集合
     */
    @ApiOperation(value="获取业务系统用户能操作的资源集合")
    @ResponseBody
    @RequestMapping(value = "/resources/get", method = RequestMethod.POST)
    public ResponseEntity<CommonResponse<List<UserResourceGetResultDto>>> getResourcesByUser(@RequestBody UserResourceGetConditionDto conditionDto) {     
        List<UserResourceGetResultDto> permissionDtos  = privilageCheckService.getResourcesByUser(conditionDto, false);

        return CommonResponse.buildRespose4Success(permissionDtos,"操作成功").toResponseEntity();
    }   
  1. Service层:
 /**
     * 获取用户能操作的资源集合
     * @param conditionDto 查询条件
     * @param isQueryAdminRole  是否为超级管理员做授权
     * @return 资源集合
     */
    @Override
    public List<UserResourceGetResultDto> getResourcesByUser(UserResourceGetConditionDto conditionDto, boolean isQueryAdminRole) {

        ResourceTypeEnum resourceType = ResourceTypeEnum.get(conditionDto.getResourceTyp
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值