若依框架学习(前后端分离)——(用户管理学习篇(1))

文章详细描述了在若依框架下进行前后端分离开发的过程,包括用户信息的分页查询、数据获取、登录验证以及部门树的获取方法。重点展示了如何使用Vue和API进行数据交互,涉及权限控制和分页功能的实现。
摘要由CSDN通过智能技术生成

系列文章目录

若依框架学习(前后端分离)——(win11部署docker redis)
若依框架学习(前后端分离)——(redis 浅学)
若依框架学习(前后端分离)——(启动)
若依框架学习(前后端分离)——(登录代码学习篇)



前言

前面已经学习了关于登录的几个方法,具体有验证码的实现,登录验证,用户权限角色信息,用户路由建立等等。下面来学习具体用户管理涉及到的代码部分。


一、流程

加载vue页面——>请求后台数据处理

在这里插入图片描述
在这里插入图片描述

created() {
    this.getList();//获取上图中用户信息表
    this.getDeptTree();//获取上图中公司架构组织
    this.getConfigKey("sys.user.initPassword").then(response => {
      this.initPassword = response.msg;
    });
  },

二、getlist方法获取用户信息

1.用户分页

methods: {
    /** 查询用户列表 */
    getList() {
      this.loading = true;//加载效果
      listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
          this.userList = response.rows;
          this.total = response.total;
          this.loading = false;
        }
      );
    },

// 查询用户列表
export function listUser(query) {
  return request({
    url: '/system/user/list',
    method: 'get',
    params: query
  })
}
/**
     * 获取用户列表
     */
    @PreAuthorize("@ss.hasPermi('system:user:list')")//这里注解是用来做权限判断的
    @GetMapping("/list")
    public TableDataInfo list(SysUser user)
    {
        startPage();//设置分页
        List<SysUser> list = userService.selectUserList(user);
        return getDataTable(list);
    }

使用继承于PageHelper的PageUtils实现分页
在这里插入图片描述
PageHelper 中的 reasonable 对参数进行逻辑处理,保证参数的正确性,
pageNum = 0/-1,会自动pageNum = 1

2.用户数据查询

  /**
     * 根据条件分页查询用户列表
     * 
     * @param user 用户信息
     * @return 用户信息集合信息
     */
    @Override
    @DataScope(deptAlias = "d", userAlias = "u")//给表设置别名的
    public List<SysUser> selectUserList(SysUser user)
    {
        return userMapper.selectUserList(user);
    }

三、selectDeptTreeList方法获取部门树

(1)查出所有的部门数据
(2)组装成树状结构

/**
     * 获取部门树列表
     */
    @PreAuthorize("@ss.hasPermi('system:user:list')")
    @GetMapping("/deptTree")
    public AjaxResult deptTree(SysDept dept)
    {
        return success(deptService.selectDeptTreeList(dept));
    }

 /**
     * 查询部门树结构信息
     * 
     * @param dept 部门信息
     * @return 部门树信息集合
     */
    @Override
    public List<TreeSelect> selectDeptTreeList(SysDept dept)
    {
        List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept);
        return buildDeptTreeSelect(depts);
    }
 /**
     * 构建前端所需要树结构
     * 
     * @param depts 部门列表
     * @return 树结构列表
     */
    @Override
    public List<SysDept> buildDeptTree(List<SysDept> depts)
    {
        List<SysDept> returnList = new ArrayList<SysDept>();
        List<Long> tempList = depts.stream().map(SysDept::getDeptId).collect(Collectors.toList());
        for (SysDept dept : depts)
        {
            // 如果是顶级节点, 遍历该父节点的所有子节点
            if (!tempList.contains(dept.getParentId()))
            {
                recursionFn(depts, dept);
                returnList.add(dept);
            }
        }
        if (returnList.isEmpty())
        {
            returnList = depts;
        }
        return returnList;
    }
/**
     * 构建前端所需要下拉树结构
     * 
     * @param depts 部门列表
     * @return 下拉树结构列表
     */
    @Override
    public List<TreeSelect> buildDeptTreeSelect(List<SysDept> depts)
    {
        List<SysDept> deptTrees = buildDeptTree(depts);
        return deptTrees.stream().map(TreeSelect::new).collect(Collectors.toList());//更改泛型 前端不需要的信息不要 构造函数映射赋值
    }
1、先找到顶级节点,找到它的子节点
2、遍历顶级节点的子节点,再找到它的子节点
/**
     * 递归列表
     */
    private void recursionFn(List<SysDept> list, SysDept t)
    {
        // 得到子节点列表
        List<SysDept> childList = getChildList(list, t);
        t.setChildren(childList);
        for (SysDept tChild : childList)
        {
            if (hasChild(list, tChild))
            {
                recursionFn(list, tChild);
            }
        }
    }

总结

本文简单介绍了用户数据加载,分页,查询,部门树建立功能。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值