@Override
    public Object getUserChild(Integer id) {
        List<User> list = new ArrayList<>();
        //获取当前用户    select * from `user` where id =#{id}
        User user = userMapper.getById(id);
        //查询该用户的一级子用户    select * from `user` where pid =#{id}
        List<User> firstList = userMapper.getByPid(user.getId());
        //将子用户添加至当前用户的子列表里
        user.setChild(firstList);
        //将用户添加至返回列表
        list.add(user);
        //递归查询一级子用户下的子用户
        list = digui(list);
        return list;
    }

    private List<User> digui(List<User> users) {
        List<User> childList = new ArrayList<>();
            for (User user:users
            ) {
                //查询该用户的一级子用户
                List<User> child = userMapper.getByPid(user.getId());
                if(child.size() > 0){//证明还有下级
                    //将子用户添加至当前用户的子列表里
                    user.setChild(child);
                    //将用户添加至返回列表
                    childList.add(user);
                    digui(child);//继续递归
                }
            }
            return childList;
    }

上一篇 下一篇