从零开始,手打一个权限管理系统(第九章 关联业务逻辑)

第九章 关联业务逻辑


前言

这章的主要内容就是关联各个模块之间的业务逻辑


一、用户管理关联组织机构和角色

之前的代码都只是做单表查询,现在要将他们之间的逻辑关联起来,这样就需要有连表查询;连表查询有两种方式,一种是写sql语句做连表查询,一种是通过mybatis做关联查询;本项目主要采用mybatis的方式来实现,主要用到association和collection这两个标签,不懂的看这里结果映射(resultmap)
具体可以参考SysUserMapper.xml

<resultMap id="sysUserMap" type="com.ailot.cloud.upms.common.entity.SysUser">
        <id column="id" property="id"/>
        <result column="username" property="username"/>
        <result column="password" property="password"/>
        <result column="phone" property="phone"/>
        <result column="avatar" property="avatar"/>
        <result column="create_time" property="createTime"/>
        <result column="update_time" property="updateTime"/>
        <result column="status" property="status"/>
        <result column="del_flag" property="delFlag"/>
        <result column="org_id" property="orgId"/>
        <association property="orgName" column="org_id" select="com.ailot.cloud.upms.api.mapper.SysOrgMapper.getOrgNameById">
        </association>
        <collection property="roleIds" ofType="java.lang.String"
                    select="com.ailot.cloud.upms.api.mapper.SysRoleMapper.getRoleIdsByUserId" column="id">
        </collection>
    </resultMap>

这样查出来的结果集就是包含了组织机构和角色了
在这里插入图片描述


二、新增菜单同时赋权

之前的新增菜单只是单独的增加一条记录,并没有将其关联的具体的角色上去,现在我们就需要完善这个功能,代码很简单就是在新增菜单成功之后,将新增的菜单id和关联的角色id同步添加到sys_role_menu这个表中,代码如下:

@Override
@Transactional(rollbackFor = Exception.class)
public void addMenu(SysMenu sysMenu) {
    String roleId = sysMenu.getRoleId();
    this.save(sysMenu);
    if (StrUtil.isNotBlank(roleId)){
        sysRoleMenuMapper.insert(new SysRoleMenu(roleId, sysMenu.getId()));
    }
}

三、角色管理新增权限分配功能

在这里插入图片描述
这个树形带复选框的组件Arco Design已经给我们提供了,代码如下:

<a-modal
        :visible="permModalVisible"
        title="分配权限"
        width="400px"
        @ok="handleOk"
        @cancel="handleCancel"
      >
        <a-tree
          ref="treeRef"
          v-model:checked-keys="checkedKeys"
          :data="treeData"
          :checkable="true"
          :check-strictly="true"
          :virtual-list-props="{
            height: 500,
          }"
        />
</a-modal>

通过给a-tree里面的属性赋值就可以实现,当然后端还需要返回一个树形结构的菜单列表,具体实现可以去看代码,在TreeUtil.java这个类。


四、其他功能

如标签页、面包屑、菜单缓存等

当前版本tag:1.0.8
代码仓库


五、 体验地址

后台数据库只给了部分权限,报错属于正常!
想学的老铁给点点关注吧!!!

我是阿咕噜,一个从互联网慢慢上岸的程序员,如果喜欢我的文章,记得帮忙点个赞哟,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值