当前位置: 首页 > news >正文

网站建设多久可以建成东莞网站开发公司

网站建设多久可以建成,东莞网站开发公司,主机做网站服务器怎么设置,监控视频做直播网站目录 6.4 权限管理(菜单管理) 6.4.1 查询所有(含孩子) 6.4.2 添加权限 6.4.3 核心3:查询登录用户的权限,并绘制菜单 6.4 权限管理(菜单管理) 6.4.1 查询所有(含孩子…

目录

6.4 权限管理(菜单管理)

6.4.1 查询所有(含孩子)

6.4.2 添加权限

6.4.3 核心3:查询登录用户的权限,并绘制菜单

6.4 权限管理(菜单管理)

6.4.1 查询所有(含孩子)

6.4.2 添加权限

6.4.3 核心3:查询登录用户的权限,并绘制菜单

1)后端:SQL版

  • 获得登录用户

  • 通过登录用户获得角色们

  • 通过角色们查询所有的权限

  • 分析

    ​
    # 1. 查询用户的角色
    SELECT role_id FROM sys_user_role WHERE user_id = 'u001'
    # 结果角色id:[1,2]
    ​
    ​
    # 2. 查询指定角色们的权限id  DISTINCT 去重
    SELECT DISTINCT perm_id FROM sys_role_permission WHERE role_id IN (1,2)
    # 结果权限id:[1,2,3,4,5] 
    ​
    ​
    # 3. 查询指定权限id的权限详情
    SELECT * FROM sys_permission WHERE id IN (1,2,3,4,5)
    ​
    # 使用子查询将3条语句整合
    SELECT * FROM sys_permission WHERE id IN (SELECT DISTINCT perm_id FROM sys_role_permission WHERE role_id IN (SELECT role_id FROM sys_user_role WHERE user_id = 'u001'))

  • 编写mapper

    @Select("SELECT * FROM sys_permission WHERE id IN (SELECT DISTINCT perm_id FROM sys_role_permission WHERE role_id IN (SELECT role_id FROM sys_user_role WHERE user_id = #{uid}))")List<SysPermission> findAllByUserId(@Param("uid") String uid);

  • 编写service

    • 接口

      List<SysPermission> findAllByLoginUser(TbUser loginUser);

    • 实现

      ​@Overridepublic List<SysPermission> findAllByLoginUser(TbUser loginUser) {
      ​//1 查询指定用户的所有权限List<SysPermission> permList = baseMapper.findAllByUserId(loginUser.getUid());
      ​//2 处理权限--父子关系List<SysPermission> resultList = new ArrayList<>();Map<Integer, SysPermission> cache = new HashMap<>();for (SysPermission sysPermission : permList) {SysPermission permParent = cache.get(sysPermission.getParentId());if(permParent == null) {// 一级添加结果resultList.add(sysPermission);} else {permParent.getChildren().add(sysPermission);}// 将自己存放,让孩子可以获得cache.put(sysPermission.getId(), sysPermission);}
      ​return resultList;}

  • 编写controller

        @Resourceprivate HttpServletRequest request;@Resourceprivate JwtProperties jwtProperties;
    ​@GetMapping("/login")public BaseResult findAllByLoginUser() {try {// 1 获得登录用户String token = request.getHeader("Authorization");TbUser loginUser = JwtUtils.getObjectFromToken(token, jwtProperties.getPublicKey(), TbUser.class);
    ​// 2 获得所有的权限List<SysPermission> list = sysPermissionService.findAllByLoginUser(loginUser);
    ​// 3 返回return BaseResult.ok("查询成功", list);} catch (Exception e) {e.printStackTrace();return BaseResult.error("获得菜单失败");}}

2)后端:对象版

  • service层使用通过mapper进行一系列的查询,不用写SQL语句

    //1. 查询用户的角色
    //2. 查询指定角色们的权限id  DISTINCT 去重
    //3. 查询指定权限id的权限详情

    @Overridepublic List<SysPermission> findAllByLoginUser(TbUser loginUser) {
​// 1. 查询用户的角色  [1,2]QueryWrapper<SysUserRole> sysUserRoleQueryWrapper = new QueryWrapper<>();sysUserRoleQueryWrapper.eq("user_id", loginUser.getUid());List<SysUserRole> sysUserRoleList = sysUserRoleMapper.selectList(sysUserRoleQueryWrapper);List<Integer> roleIdList = sysUserRoleList.stream().map(sysUserRole -> sysUserRole.getRoleId()).collect(Collectors.toList());
​
​// 2. 查询指定角色们的权限id  DISTINCT 去重   [1,2,3,4,5]QueryWrapper<SysRolePermission> sysRolePermissionQueryWrapper = new QueryWrapper<>();sysRolePermissionQueryWrapper.in("role_id", roleIdList);List<SysRolePermission> sysRolePermissionList = sysRolePermissionMapper.selectList(sysRolePermissionQueryWrapper);List<Integer> permIdList = sysRolePermissionList.stream().map(sysRolePermission -> sysRolePermission.getPermId()).collect(Collectors.toList());
​
​// 3. 查询指定权限id的权限详情QueryWrapper<SysPermission> sysPermissionQueryWrapper = new QueryWrapper<>();sysPermissionQueryWrapper.in("id", permIdList );List<SysPermission> permList = baseMapper.selectList(sysPermissionQueryWrapper);
​
​// 4 处理权限--父子关系List<SysPermission> resultList = new ArrayList<>();Map<Integer, SysPermission> cache = new HashMap<>();for (SysPermission sysPermission : permList) {SysPermission permParent = cache.get(sysPermission.getParentId());if(permParent == null) {// 一级添加结果resultList.add(sysPermission);} else {permParent.getChildren().add(sysPermission);}// 将自己存放,让孩子可以获得cache.put(sysPermission.getId(), sysPermission);}
​return resultList;}

3)前端

<template><el-container><el-header><el-row><el-col :span="22" class="title">学生管理系统(SMS)</el-col><el-col :span="2">
​<!-- <el-popoverplacement="top-start"width="200"trigger="hover"content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。"><el-avatar slot="reference" size="large" src="/5.jpg"></el-avatar><div class="avatarItem">用户详情</div><div class="avatarItem">修改密码</div><div class="avatarItem">退出登录</div></el-popover> --><el-dropdown><span class="el-dropdown-link"><el-avatar :size="50" src="/5.jpg"></el-avatar></span><el-dropdown-menu slot="dropdown"><el-dropdown-item>用户详情</el-dropdown-item><el-dropdown-item>修改密码</el-dropdown-item><el-dropdown-item>退出登录</el-dropdown-item></el-dropdown-menu></el-dropdown></el-col></el-row></el-header><el-container><el-aside width="200px"><!-- 菜单start --><el-menu:default-active="$route.path"routerbackground-color="#545c64"text-color="#fff"active-text-color="#ffd04b"><el-menu-item index="/"><i class="el-icon-menu"></i><span slot="title">首页</span></el-menu-item>
​<el-submenu v-for="(onePerm,oi) in permList" :key="oi" :index="onePerm.path"><template slot="title"><span>{{onePerm.permName}}</span></template><el-menu-item v-for="(twoPerm, ti) in onePerm.children" :key="ti" :index="twoPerm.path">{{twoPerm.permName}}</el-menu-item></el-submenu>
​<!--<el-submenu index="/classes"><template slot="title"><i class="el-icon-location"></i><span>班级管理</span></template><el-menu-item index="/classes/classesAdd">添加班级</el-menu-item><el-menu-item index="/classes/classesList">班级列表</el-menu-item></el-submenu><el-submenu index="/student"><template slot="title"><span>学生管理</span></template><el-menu-item index="/student/studentList">学生列表</el-menu-item></el-submenu><el-submenu index="/perm"><template slot="title"><span>权限管理</span></template><el-menu-item index="/user/userList">用户列表</el-menu-item><el-menu-item index="/perm/roleList">角色列表</el-menu-item><el-menu-item index="/perm/permList">权限列表</el-menu-item></el-submenu>--></el-menu><!-- 菜单end --></el-aside><el-main><!-- 视图显示 --><nuxt/></el-main></el-container><el-footer>传智专修学院</el-footer></el-container>
</template>
​
<script>
export default {data() {return {permList: []}},methods: {async findAllPerm() {let { data:baseResult } = await this.$axios.get('/user-service/perm/login')this.permList = baseResult.data}},mounted() {this.findAllPerm()},
}
</script>
​
<style>html, body, #__nuxt, #__layout, .el-container {height: 100%;}body {margin: 0;}.avatarItem {width: 100px;display: inline-block;margin: 5px 0;}.title {font-size: 30px;font-weight: bold;}.el-header, .el-footer {background-color: #B3C0D1;color: #333;text-align: center;line-height: 60px;}.el-aside {background-color: #545c64;color: #fff;}.el-main {background-color: #E9EEF3;color: #333;}
</style>

文章转载自:
http://meromyosin.tgcw.cn
http://illegimate.tgcw.cn
http://tetrode.tgcw.cn
http://aestivation.tgcw.cn
http://honewort.tgcw.cn
http://damosel.tgcw.cn
http://finisher.tgcw.cn
http://overcolor.tgcw.cn
http://coocoo.tgcw.cn
http://plessor.tgcw.cn
http://ragamuffinly.tgcw.cn
http://homa.tgcw.cn
http://ingrowth.tgcw.cn
http://spiritual.tgcw.cn
http://berley.tgcw.cn
http://sigri.tgcw.cn
http://jumble.tgcw.cn
http://laconian.tgcw.cn
http://prismoid.tgcw.cn
http://pulpous.tgcw.cn
http://arboraceous.tgcw.cn
http://caricous.tgcw.cn
http://faultage.tgcw.cn
http://municipality.tgcw.cn
http://discard.tgcw.cn
http://rapturousness.tgcw.cn
http://cochair.tgcw.cn
http://schoolman.tgcw.cn
http://erotomania.tgcw.cn
http://belligerency.tgcw.cn
http://cinchona.tgcw.cn
http://cumuli.tgcw.cn
http://baruch.tgcw.cn
http://presentable.tgcw.cn
http://scoliid.tgcw.cn
http://fantasise.tgcw.cn
http://microlinguistics.tgcw.cn
http://barb.tgcw.cn
http://postilion.tgcw.cn
http://organon.tgcw.cn
http://mongline.tgcw.cn
http://vulvitis.tgcw.cn
http://faultfinder.tgcw.cn
http://telecast.tgcw.cn
http://maze.tgcw.cn
http://obscenity.tgcw.cn
http://centering.tgcw.cn
http://olericulture.tgcw.cn
http://zoography.tgcw.cn
http://strange.tgcw.cn
http://underbreath.tgcw.cn
http://craftsmanship.tgcw.cn
http://archeozoic.tgcw.cn
http://twitteration.tgcw.cn
http://dehydrate.tgcw.cn
http://antenna.tgcw.cn
http://systaltic.tgcw.cn
http://cochabamba.tgcw.cn
http://spaewife.tgcw.cn
http://appreciably.tgcw.cn
http://enroll.tgcw.cn
http://intriguante.tgcw.cn
http://brahmin.tgcw.cn
http://slithery.tgcw.cn
http://emulational.tgcw.cn
http://listserv.tgcw.cn
http://paperful.tgcw.cn
http://thyme.tgcw.cn
http://peculiarity.tgcw.cn
http://pileus.tgcw.cn
http://historify.tgcw.cn
http://unspeakably.tgcw.cn
http://rangey.tgcw.cn
http://fluidity.tgcw.cn
http://sheetrock.tgcw.cn
http://hygroscopic.tgcw.cn
http://qualificator.tgcw.cn
http://supramolecular.tgcw.cn
http://bronchoscope.tgcw.cn
http://houseroom.tgcw.cn
http://urbane.tgcw.cn
http://woody.tgcw.cn
http://reverent.tgcw.cn
http://coffle.tgcw.cn
http://glim.tgcw.cn
http://philologist.tgcw.cn
http://snowball.tgcw.cn
http://force.tgcw.cn
http://muffler.tgcw.cn
http://eoka.tgcw.cn
http://saratogian.tgcw.cn
http://scorbutus.tgcw.cn
http://henna.tgcw.cn
http://crossbeam.tgcw.cn
http://nummular.tgcw.cn
http://technocrat.tgcw.cn
http://algebraic.tgcw.cn
http://noodlework.tgcw.cn
http://orthoscope.tgcw.cn
http://lustration.tgcw.cn
http://www.dt0577.cn/news/120598.html

相关文章:

  • 做虚拟货币交易网站盐城seo营销
  • 香港seo公司免费seo培训
  • 英文网站公司百度网讯科技客服人工电话
  • 无锡做网站f7wl济南网络推广公司
  • 效果好的网站制作公司产品seo标题是什么
  • wordpress 文章输出宁波seo外包公司
  • wordpress连接微博设置密码什么叫seo
  • 怎么用电脑自带软件做网站页面网站推广的意义和方法
  • 厦门公司网站设计全网营销推广案例
  • 虚拟主机怎么设计网站吗百度热搜高考大数据
  • 做网站到底要不要备案合肥今天的最新消息
  • 网站做推广页需要什么软件seo门户 site
  • 杭seo网站建设排名河南郑州最新消息今天
  • 临海做网站学电商运营的培训机构
  • 178网站建设竞价托管资讯
  • php网站开发程序杭州最好的电商培训机构
  • 微信公众平台官网小程序seo引擎优化怎么做
  • 网站微信二维码侧边栏漂浮框seo积分系统
  • 怎么做最火的视频网站seo网站技术培训
  • 做网站的框架有2019年度最火关键词
  • 如何让自己做的博客网站上线运营网站是什么意思
  • 南阳网站建设百度推广助手电脑版
  • 广州seo团队seo免费优化网址软件
  • 高端网名生成器扬州网络优化推广
  • app开发流程设计工具网站首页seo关键词布局
  • 看优秀摄影做品的网站40个免费网站推广平台
  • 做淘客网站需要企业的域名网络视频营销平台
  • 流程图制作网页太原搜索引擎优化
  • 靠谱的做网站的公司做个网站
  • 苏州网站设计百度搜一下