今日指数项目day8实战补充 - 角色处理器功能实现(上)

角色处理器

2.1 分页查询当前角色信息

1)原型效果

在这里插入图片描述

2)接口说明
功能描述: 分页查询当前角色信息
服务路径: /api/roles
服务方法:Post

请求参数格式:

{"pageNum":1,"pageSize":10
}

响应数据格式:

{"code": 1,"data": {"totalRows": 10,"totalPages": 1,"pageNum": 1,"pageSize": 10,"size": 10,"rows": [{"id": 1237258113002901512,"name": "超级管理员","description": "我是超级管理员","status": 1,"createTime": "2020-01-06T15:37:45.000+00:00","updateTime": "2021-12-09T23:08:02.000+00:00","deleted": 1},{"id": 1237258113002901513,"name": "标记用户角色测试","description": "标记用户角色测试","status": 1,"createTime": "2020-01-08T02:53:35.000+00:00","updateTime": "2021-12-28T10:16:21.000+00:00","deleted": 1},//.........]}
}

代码实现

1. 表现层
    /*** 分页查询角色信息*/@ApiOperation(value = "分页查询角色信息")@PostMapping("/roles")public R<RoleDataRespVo> getRolesData(@RequestBody HashMap<String,Object> pageMsg){return UserService.getRolesData(pageMsg);
2. 服务层
R<RoleDataRespVo> getRolesData(HashMap<String, Object> pageMsg);
@Overridepublic R<RoleDataRespVo> getRolesData(HashMap<String, Object> pageMsg) {// 设置分页参数Integer pageNum = (Integer) pageMsg.get("pageNum");Integer pageSize = (Integer) pageMsg.get("pageSize");PageHelper.startPage(pageNum, pageSize);// 获取数据ArrayList<SysRole> allRole = sysRoleMapper.getAllRole();PageInfo<SysRole> sysRolePageInfo = new PageInfo<>(allRole);RoleDataRespVo roleDataRespVo = new RoleDataRespVo(sysRolePageInfo);return R.ok(roleDataRespVo);}
3. Dao层
ArrayList<SysRole> getAllRole();
    <select id="getAllRole" resultType="com.jixu.stock.pojo.entity.SysRole">select id,name,description,status,create_time,update_time,deletedfrom sys_role</select>

2.2 添加角色回显权限选项功能-1

1)原型效果

在这里插入图片描述

2)接口说明
功能描述: 树状结构回显权限集合,底层通过递归获取权限数据集合
服务路径: /api/permissions/tree/all
服务方法:GET
请求参数:无

响应格式:

{"code": 1,"data": [{"id": "1236916745927790564","title": "组织管理","icon": "el-icon-menu","path": "/org","name": "org","children": [{"id": "1236916745927790560","title": "菜单权限管理","icon": "el-icon-menu","path": "/menus","name": "menus","children": [{"id": "1236916745927790563","title": "删除菜单权限","icon": "","path": "/api/permission","name": "","children": []},{"id": "1236916745927790565","title": "查询菜单权限列表权限","icon": "","path": "/api/permissions","name": "","children": []},{"id": "1236916745927790577","title": "更新菜单权限","icon": "","path": "/api/permission","name": "","children": []},{"id": "1236916745927790582","title": "新增菜单权限","icon": "","path": "/api/permission","name": "","children": []}]},{"id": "1236916745927790575","title": "用户管理","icon": "el-icon-user-solid","path": "/user","name": "user","children": [{"id": "1236916745927790556","title": "删除用户权限","icon": "","path": "/api/user","name": "","children": []},{"id": "1236916745927790561","title": "新增用户权限","icon": "","path": "/api/user","name": "","children": []},{"id": "1236916745927790568","title": "查询用户信息列表权限","icon": "","path": "/api/users","name": "","children": []},{"id": "1236916745927790579","title": "赋予用户角色权限","icon": "","path": "/api/user/roles","name": "","children": []},{"id": "1236916745927790580","title": "更新用户信息权限","icon": "","path": "/api/user","name": "","children": []}]},{"id": "1236916745927790578","title": "角色管理","icon": "el-icon-user","path": "/roles","name": "roles","children": [{"id": "1236916745927790562","title": "更新角色权限","icon": "","path": "/api/role","name": "","children": []},{"id": "1236916745927790570","title": "删除角色权限","icon": "","path": "/api/role/*","name": "","children": []},{"id": "1236916745927790572","title": "新增角色权限","icon": "","path": "/api/role","name": "","children": []},{"id": "1236916745927790574","title": "角色详情权限","icon": "","path": "/api/role/*","name": "","children": []},{"id": "1236916745927790583","title": "查询角色列表权限","icon": "","path": "/api/roles","name": "","children": []}]}]},{//......}]}       

代码实现

1. 表现层
    @ApiOperation(value = "添加角色回显权限选项")@GetMapping("/permissions/tree/all")public R<ArrayList<PermissionDomain>> getRolesPermission(){return UserService.getRolesPermission();}
2. 服务层
R<ArrayList<PermissionDomain>> getRolesPermission();
    @Overridepublic R<ArrayList<PermissionDomain>> getRolesPermission() {// 获取所有的权限信息List<HashMap<String ,Object>> allPermission =  sysPermissionMapper.getAllPermission();// 制作映射集合HashMap<Long, PermissionDomain> permissionMap = new HashMap<>();// 获取树的父节点ArrayList<PermissionDomain> permissionParentList = new ArrayList<>();for (HashMap<String, Object> map : allPermission) {PermissionDomain permissionDomain = new PermissionDomain();permissionDomain.setId((Long) map.get("id"));permissionDomain.setPid((Long) map.get("pid"));permissionDomain.setIcon((String) map.get("icon"));permissionDomain.setPath((String) map.get("url"));permissionDomain.setName((String) map.get("name"));permissionDomain.setTitle((String) map.get("title"));permissionDomain.setChildren(new ArrayList<>());permissionDomain.setChildren(new ArrayList<>());Long id = (Long) map.get("id");Long pid = (Long) map.get("pid");permissionMap.put(id,permissionDomain);if (pid.equals(Long.valueOf(0))){permissionParentList.add(permissionDomain);}}List<PermissionDomain> treeData = buildTree(permissionMap, Long.valueOf(0));/*** 迭代方式*///        // 用于快速查找子菜单的映射
//        HashMap<Long, ArrayList<PermissionDomain>> mapList = new HashMap<>();
//        /**
//         * 在这里循环所有对象 , 将每个对象的pid( pid 指向于 id )也就是说一个id对应多个pid
//         * 将所有pid 指向的对象 , 封装到一个列表 , 则该列表就是它的父id所对应的列表
//         */
//        for (HashMap<String, Object> map : allPermission) {
//            Long pid = (Long) map.get("pid");
//            Long id = (Long) map.get("id");
//
//            // 获取主键对象
//            PermissionDomain permissionObject = permissionMap.get(id);
//
//            if (permissionObject != null){
//                mapList.computeIfAbsent(pid , k -> new ArrayList<>()).add(permissionObject);
//            }
//        }
//
//        for (PermissionDomain parentPermission : permissionParentList) {
//            Long parentId = Long.valueOf(parentPermission.getId());
//            ArrayList<PermissionDomain> childrenList = new ArrayList<>();
//            // 如果父菜单包含在内
//            if (mapList.containsKey(parentId)){
//                // 获取父菜单所对应的子菜单
//                ArrayList<PermissionDomain> permissinSonList = mapList.get(parentId);
//                // 循环所有子菜单
//                for (PermissionDomain permissionSon : permissinSonList) {
//                    Long id = permissionSon.getId();
//                    // 判断子菜单是否还含有下一级菜单
//                    ArrayList<PermissionDomain> orDefault = mapList.getOrDefault(id, new ArrayList<>());
//                    permissionSon.setChildren(orDefault);
//
//                }
//                childrenList.addAll(permissinSonList);
//            }
//            parentPermission.setChildren(childrenList);
//        }
//return R.ok(new ArrayList<>(treeData));}
3. Dao层
List<HashMap<String, Object>> getAllPermission();
    <select id="getAllPermission" resultType="java.util.HashMap">select id,code,title,icon,url,name,pidfrom sys_permission;</select>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/442360.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue 项目文件大小优化

优化逻辑 任何优化需求&#xff0c;都有一个前提&#xff0c;即可衡量。 那 Vue 加载速度的优化需求&#xff0c;本质上是要降低加载静态资源的大小。 所以&#xff0c;优化前&#xff0c;需要有一个了解项目现状的资源加载大小情况。 主要分 3 步走&#xff1a; 找到方法测…

Ubuntu24.04远程开机

近来在几台机器上鼓捣linux桌面&#xff0c;顺便研究一下远程唤醒主机。 本篇介绍Ubuntu系统的远程唤醒&#xff0c;Windows系统的唤醒可搜索相关资料。 依赖 有远程唤醒功能的路由器&#xff08;当前一般都带这个功能&#xff09;有线连接主机&#xff08;无线连接有兴趣朋友…

jmeter学习(4)提取器

同线程组https://blog.csdn.net/vikeyyyy/article/details/80437530 不同线程组 在JMeter中&#xff0c;正则表达式提取的参数可以跨线程组使用。 通过使用Beanshell后置处理器和属性设置函数&#xff0c;可以将提取的参数设置为全局变量&#xff0c;从而在多个线程组之间共享…

电子摄像头分割系统源码&数据集分享

电子摄像头分割系统源码&#xff06;数据集分享 [yolov8-seg-C2f-DWR&#xff06;yolov8-seg-C2f-ContextGuided等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Glob…

大多数人不知道的:线程池CallerRunsPolicy()拒绝策略

总所周知&#xff0c;java里面线程池的四个拒绝策略 AbortPolicy 丢弃并抛出RejectedExecutionException异常 DiscardPolicy 直接丢弃 DiscardOldestPolicy 直接丢弃最前面的任务&#xff0c;尝试执行新任务 CallerRunsPolicy 由调用线程池的线程处理任务&a…

Ascend C 自定义算子开发:高效的算子实现

Ascend C 自定义算子开发&#xff1a;高效的算子实现 在 Ascend C 平台上&#xff0c;开发自定义算子能够充分发挥硬件的性能优势&#xff0c;帮助开发者针对不同的应用场景进行优化。本文将以 AddCustom 算子为例&#xff0c;介绍 Ascend C 中自定义算子的开发流程及关键技术…

乌班图基础设施安装之Mysql8.0+Redis6.X安装

简介&#xff1a;云服务器基础设施安装之 Mysql8.0Redis6.X 安装 Docker安装 # 按照依赖 yum install -y yum-utils device-mapper-persistent data lvm2 Docker Mirror 从去年开始. hub.docker.com[1] 在国内的访问速度极慢. 当时大家主要还是依赖国内的一些镜像源: 如中科…

CSS圆角

在制作网页的过程中&#xff0c;有时我们可能需要实现圆角的效果&#xff0c;以前的做法是通过切图&#xff08;将设计稿切成便于制作成页面的图片&#xff09;&#xff0c;使用多个背景图像来实现圆角。在 CSS3 出现之后就不需要这么麻烦了&#xff0c;CSS3 中提供了一系列属性…

Python 卸载所有的包

Python 卸载所有的包 引言正文 引言 可能很少有小伙伴会遇到这个问题&#xff0c;当我们错误安装了一些包后&#xff0c;由于包之间有相互关联&#xff0c;导致一些已经安装的包无法使用&#xff0c;而由于我们已经安装了很多包&#xff0c;它们的名字我们并不完全知道&#x…

婚宴桌号查询指南

婚宴时如何查询桌号&#xff1f; 在婚宴这样的大型活动中&#xff0c;确保每位宾客都能迅速找到自己的座位是一项重要的任务。为了让宾客们能够轻松地找到自己的桌号&#xff0c;享受宴会的每一刻&#xff0c;我们特别准备了一份详细的婚宴桌号查询教程。本教程将指导您如何通过…

SQl注入文件上传及sqli-labs第七关less-7

Sql注入文件上传 1、sql知识基础 secure_file_priv 参数 secure_file_priv 为 NULL 时&#xff0c;表示限制mysqld不允许导入或导出。 secure_file_priv 为 /tmp 时&#xff0c;表示限制mysqld只能在/tmp目录中执行导入导出&#xff0c;其他目录不能导出导入。 secure_fil…

深度学习:CycleGAN图像风格迁移转换

目录 基础概念 模型工作流程 循环一致性 几个基本概念 假图像&#xff08;Fake Image&#xff09; 重建图像&#xff08;Reconstructed Image&#xff09; 身份映射图像&#xff08;Identity Mapping Image&#xff09; CyclyGAN损失函数 对抗损失 身份鉴别损失 Cyc…

《Python 安装指南:开启编程之旅》

《Python 安装指南&#xff1a;开启编程之旅》 在当今数字化的时代&#xff0c;编程已经成为一项越来越重要的技能。而 Python 作为一种简洁、高效且功能强大的编程语言&#xff0c;受到了众多开发者的青睐。无论是数据科学、人工智能、Web 开发还是自动化脚本编写&#xff0c…

绕过中间商,不用 input 标签也能搞定文件选择

&#x1f4b0; 点进来就是赚到知识点&#xff01;本文带你用 JS 实现文件选择功能&#xff0c;点赞、收藏、评论更能促进消化吸收&#xff01; &#x1f680; 想解锁更多 Web 文件系统技能吗&#xff1f;快来订阅专栏「Web 玩转文件操作」! &#x1f4e3; 我是 Jax&#xff0c;…

Axure中文版:原型设计新手必备工具,轻松上手!

原型设计是每位产品经理必备的核心技能。通过原型设计&#xff0c;可以提前测试产品与用户之间的交互&#xff0c;发现潜在问题&#xff0c;提升设计效率&#xff0c;节省开发成本。对于移动应用来说&#xff0c;原型相当于产品的说明书&#xff0c;有助于设计师和工程师之间进…

广联达 Linkworks办公OA Service.asmx接口存在信息泄露漏洞

漏洞描述 广联达科技股份有限公司以建设工程领域专业应用为核心基础支撑&#xff0c;提供一百余款基于“端云大数据”产品/服务&#xff0c;提供产业大数据、产业新金融等增值服务的数字建筑平台服务商。广联达OA存在信息泄露漏洞&#xff0c;由于某些接口没有鉴权&#xff0c…

计算机网络:物理层 —— 信道复用技术

文章目录 信道信道复用技术信道复用技术的作用基本原理常用的信道复用技术频分复用 FDM时分复用 TDM波分复用 WDM码分复用 CDM码片向量基本原理 信道 信道是指信息传输的通道或介质。在通信中&#xff0c;信道扮演着传输信息的媒介的角色&#xff0c;将发送方发送的信号传递给…

LSTM变种模型

一、GRU 1.概念 GRU&#xff08;门控循环单元&#xff0c;Gated Recurrent Unit&#xff09;是一种循环神经网络&#xff08;RNN&#xff09;的变体&#xff0c;旨在解决标准 RNN 在处理长期依赖关系时遇到的梯度消失问题。GRU 通过引入门控机制简化了 LSTM&#xff08;长短期…

APP测试中ios和androis的区别,有哪些注意点

一、运行机制不同 IOS采用的是沙盒运行机制&#xff0c;安卓采用的是虚拟机运行机制。 1、沙盒机制&#xff1a; 概念&#xff1a;沙盒是一种安全机制&#xff0c;用于防止不同应用之间互相访问 作用&#xff1a;就是存储数据&#xff0c;每个沙盒就相当于每个每个应用的系…

1688商品详情关键词数据-API

要利用 Python 爬虫采集 1688 商品详情数据&#xff0c;需要先了解 1688 网站的页面结构和数据请求方式。一般使用 requests 库请求网站的数据&#xff0c;使用 BeautifulSoup 库解析网页中的数据。 以下是一个简单的 Python 爬虫采集 1688 商品详情数据的示例代码&#xff1a…