今日指数项目day8实战权限管理功能(下)

news2024/12/28 3:13:51

3.4 权限添加按钮

1)原型效果

在这里插入图片描述

2)接口说明
功能描述: 权限添加按钮
服务路径: /api/permission
服务方法:Post

请求参数格式:

{
    "type":"1",		//菜单等级 0 顶级目录 1.目录 2 菜单 3 按钮
    "title":"更新角色权限",
    
     /**
     * 对应资源路径
     *  1.如果类型是目录,则url为空
     *  2.如果类型是菜单,则url对应路由地址
     *  3.如果类型是按钮,则url对应是访问接口的地址
     */
    "pid":1236916745927790560,
 
    "url":"api/permissions/tree",//只有菜单类型有名称,默认是路由的名称
    "name":"org",
    "icon":"el-icon-menu",
    "perms":"sys:role:update",//基于springSecrutiry约定的权限过滤便是
    "method":"DELETE",//请求方式:get put delete post等
    "code":"btn-role-update",//vue按钮回显控制辨识
    "orderNum":100//排序
}

​ 接口提示:请求参数:@RequestBody PermissionAddVo vo

响应数据格式:

{
    "code": 0,
    "msg": "添加成功"
}

代码实现

1. 表现层
    @ApiOperation(value = "权限添加按钮")
    @PostMapping("/permissions/tree")
    public R<String> addPermissions(@RequestBody PostPermissionDomain permissionDomain){
        return service.addPermissions(permissionDomain);
    }
2. 服务层
R<String> addPermissions(PostPermissionDomain permissionDomain);
    @Override
    public R<String> addPermissions(PostPermissionDomain permissionDomain) {
        long nextId = idWorkerl.nextId();
        SysPermission sysPermission = new SysPermission();
        BeanUtils.copyProperties(permissionDomain,sysPermission);
        sysPermission.setId(nextId);
        sysPermissionMapper.insert(sysPermission);
        return R.ok("操作成功");

    }
3. Dao层
int insert(SysPermission record);
    <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.jixu.stock.pojo.entity.SysPermission" useGeneratedKeys="true">
        insert into sys_permission
        ( id,code,title
        ,icon,perms,url
        ,method,name,pid
        ,order_num,type,status
        ,create_time,update_time,deleted
        )
        values (#{id,jdbcType=BIGINT},#{code,jdbcType=VARCHAR},#{title,jdbcType=VARCHAR}
        ,#{icon,jdbcType=VARCHAR},#{perms,jdbcType=VARCHAR},#{url,jdbcType=VARCHAR}
        ,#{method,jdbcType=VARCHAR},#{name,jdbcType=VARCHAR},#{pid,jdbcType=BIGINT}
        ,#{orderNum,jdbcType=INTEGER},#{type,jdbcType=TINYINT},#{status,jdbcType=TINYINT}
        ,#{createTime,jdbcType=TIMESTAMP},#{updateTime,jdbcType=TIMESTAMP},#{deleted,jdbcType=TINYINT}
        )
    </insert>
4. 实体类
package com.jixu.stock.pojo.domain;

import lombok.Data;

/**
 * @program: stock_parent
 * @description:
 * @author: jixu
 * @create: 2024-10-13 14:43
 **/

@Data
public class PostPermissionDomain {

        private String type;
        private String title;
        private Long pid;
        private String url;
        private String name;
        private String icon;
        private String perms;
        private String method;
        private String code;
        private String orderNum;
}

3.5更新权限

1)原型效果

在这里插入图片描述

2)接口说明
功能描述: 更新权限
服务路径: /api/permission
服务方法:Put

请求参数格式:

{
    "id": 1236916745927790556   //权限id
    "type":"1",		//菜单等级 0 顶级目录 1.目录 2 菜单 3 按钮
    "title":"更新角色权限",
    
     /**
     * 对应资源路径
     *  1.如果类型是目录,则url为空
     *  2.如果类型是菜单,则url对应路由地址
     *  3.如果类型是按钮,则url对应是访问接口的地址
     */
    "pid":1236916745927790560,
 
    "url":"api/permissions/tree",//只有菜单类型有名称,默认是路由的名称
    "name":"org",
    "icon":"el-icon-menu",
    "perms":"sys:role:update",//基于springSecrutiry约定的权限过滤便是
    "method":"DELETE",//请求方式:get put delete post等
    "code":"btn-role-update",//vue按钮回显控制辨识
    "orderNum":100//排序
}

​ 接口提示:请求参数:@RequestBody PermissionUpdateVo vo

响应数据格式:

{
    "code": 0,
    "msg": "添加成功"
}

代码实现

1. 表现层
    @ApiOperation(value = "更新权限")
    @PutMapping("/permissions/tree")
    public R<String> updataPermissions(@RequestBody PutPermissionVo putPermissionVo){
        return service.updataPermissions(putPermissionVo);
    }
2. 服务层
R<String> updataPermissions(PutPermissionVo putPermissionVo);
    @Override
    public R<String> updataPermissions(PutPermissionVo putPermissionVo) {
        SysPermission sysPermission = new SysPermission();
        BeanUtils.copyProperties(putPermissionVo,sysPermission);
        sysPermissionMapper.updateByPrimaryKey(sysPermission);
        return R.ok("操作成功");

    }
3. Dao层
int updateByPrimaryKey(SysPermission record);
    <update id="updateByPrimaryKey" parameterType="com.jixu.stock.pojo.entity.SysPermission">
        update sys_permission
        set 
            code =  #{code,jdbcType=VARCHAR},
            title =  #{title,jdbcType=VARCHAR},
            icon =  #{icon,jdbcType=VARCHAR},
            perms =  #{perms,jdbcType=VARCHAR},
            url =  #{url,jdbcType=VARCHAR},
            method =  #{method,jdbcType=VARCHAR},
            name =  #{name,jdbcType=VARCHAR},
            pid =  #{pid,jdbcType=BIGINT},
            order_num =  #{orderNum,jdbcType=INTEGER},
            type =  #{type,jdbcType=TINYINT},
            status =  #{status,jdbcType=TINYINT},
            create_time =  #{createTime,jdbcType=TIMESTAMP},
            update_time =  #{updateTime,jdbcType=TIMESTAMP},
            deleted =  #{deleted,jdbcType=TINYINT}
        where   id = #{id,jdbcType=BIGINT} 
    </update>

3.6 删除权限

1)原型效果

在这里插入图片描述

2)接口说明
功能描述: 删除权限
服务路径: /api/permission/{permissionId}
服务方法:Delete

响应数据格式:

{
    "code": 0,
    "msg": "删除成功"
}

代码实现

1. 表现层
    @ApiOperation(value = "删除权限")
    @DeleteMapping("/permission/{permissionId}")
    public R<String> delPermissions(@PathVariable Long permissionId){
        return service.delPermissions(permissionId);
    }
2. 服务层
 R<String> delPermissions(Long permissionId);
    @Override
    public R<String> delPermissions(Long permissionId) {

        sysPermissionMapper.deleteByPrimaryKey(permissionId);
        return R.ok("操作成功");
    }
3. Dao层
int deleteByPrimaryKey(Long id);
 <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
        delete from sys_permission
        where  id = #{id,jdbcType=BIGINT} 
    </delete>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

牛筋面,一口就爱上的神仙美食

宝子们&#x1f44b;&#xff0c;今天我一定要给大家种草一款超级好吃的美食 —— 食家巷牛筋面&#x1f60b;。&#x1f380;牛筋面真的是一种神奇的存在✨。它的口感 Q 弹有嚼劲&#xff0c;就像在你的嘴巴里跳舞一样&#x1f483;。每一根面条都裹满了浓郁的酱汁&#xff0c…

原生mybatis框架引入mybatisplus,调用接口时找不到原生Mapper自带的默认方法

1.yaml配置文件和Mapper注解基本上可以不用关注&#xff0c;因为mybatis能用就证明这俩多半是没有问题的 2.再看看是不是映射出了问题&#xff0c;像Namespace的空间包名和Mapper没有对上之类的 这个框架的问题是出在配置mybatis的config文件当中&#xff0c;原本的config文件用…

Unity 从零开始搭建一套简单易用的UGUI小框架 扩展与优化篇(完结)

一个通用的UGUI小框架就算是写完了&#xff0c;下面是一步步的思考与优化过程 Unity 从零开始搭建一套简单易用的UGUI小框架 基础分析篇-CSDN博客 Unity 从零开始搭建一套简单易用的UGUI小框架 功能撰写与优化篇-CSDN博客 从使用者的角度来整理一下可能会发出的疑问 0. Panel…

【微服务】springboot远程docker进行debug调试使用详解

目录 一、前言 二、线上问题常用解决方案 2.1 微服务线上运行中常见的问题 2.2 微服务线上问题解决方案 2.3 远程debug概述 2.3.1 远程debug原理 2.3.2 远程debug优势 三、实验环境准备 3.1 搭建springboot工程 3.1.1 工程结构 3.1.2 引入基础依赖 3.1.3 添加配置文…

YOLO11改进 | 注意力机制| 对小目标友好的BiFormer【CVPR2023】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 本文介绍了一种新颖的动态稀疏注意力机制…

C++,STL 029(24.10.13)

内容 一道练习题。 &#xff08;涉及string&#xff0c;vector&#xff0c;deque&#xff0c;sort&#xff09; 题目&#xff08;大致&#xff09; 有五名选手ABCDE&#xff0c;10个评委分别对每一个选手打分&#xff0c;去除最高分和最低分&#xff0c;取平均分。 思路&…

bat脚本banenr

飞出个未来班得 echo off echo .-. echo ( ) echo - echo J L echo ^| ^| echo J L echo ^| ^| echo J L echo …

Node.js概述

1. Node.js简介 Node.js是一个基于Chrome V8引擎的JavaScript运行环境。 地址&#xff1a;Node.js 中文网 1.1 Node.js中的JavaScript运行环境 &#xff08;1&#xff09;浏览器是JavaScript的前端运行环境 &#xff08;2&#xff09;Node.js是JavaScript的后端运行环境 …

vue3之插件

插件plugins是一种能为vue添加全局功能的代码,官网连接&#xff1a;https://cn.vuejs.org/guide/reusability/plugins.html 项目的src文件夹下新建plugins文件夹 新建i18n.js文件 插件是一个拥有install方法的对象 export default {install: (app, options)>{app.config.…

Linux中用java命令运行class文件提示“错误:找不到或无法加载主类”

1.问题&#xff1a; 很多时候&#xff0c;我们需要在Linux终端编译并运行普通Java程序&#xff0c;但是会遇到以下问题&#xff1a; 错误&#xff1a;找不到或无法加载主类” 2.问题原因及解决办法 其实原因很简单&#xff0c;可能由两方面造成。 原因一 java在运行.class文…

进制的介绍

一、进制介绍 对于整数&#xff0c;有四种表示方式&#xff1a;二进制&#xff1a;0,1 &#xff0c;满 2 进 1.以 0b 或 0B 开头。十进制&#xff1a;0-9 &#xff0c;满 10 进 1。八进制&#xff1a;0-7 &#xff0c;满 8 进 1. 以数字 0 开头表示。十六进制&#xff1a;0-9 …

损失函数篇 | YOLOv8更换损失函数之SlideLoss | 解决简单样本和困难样本之间的不平衡问题

前言:Hello大家好,我是小哥谈。SlideLoss是一种新颖的损失函数,可以有效地解决YOLO算法在处理小目标和密集目标时的问题。本文所做出的改进是在YOLOv8算法中引入SlideLoss损失函数。🌈 目录 🚀1.基础概念 🚀2.更换方法 🍀🍀步骤1:loss.py文件修改 🍀�…

C#源码安装ZedGraph曲线显示组件

在软件开发里,数据的显示,已经是软件开发的大头。 如果让数据更加漂亮地、智能地显示,就是软件的核心价值了。 因为不管数据千万条,关键在于用户看到图。因为一个图表,就可以表示整个数据的趋势, 或者整个数据的走向,数据频度和密码。所以图表显示是软件的核心功能,比如…

25.1 降低采集资源消耗的收益和无用监控指标的判定依据

本节重点介绍 : 降低采集资源消耗的收益哪些是无用指标&#xff0c;什么判定依据 通过 grafana的 mysql 表获取所有的 查询表达式expr通过 获取所有的prometheus rule文件获取所有的 告警表达式expr通过 获取所有的prometheus 采集器接口 获取所有的采集metrics计算可得到现在…

SpringBoot——静态资源访问的四种方式

1.默认的静态资源目录 /static /public /resources /META-INF/resources 动态资源目录&#xff1a;/templates 2.resources静态资源目录图片存放 3. 静态资源访问 3.1.通过路径访问静态资源 http://localhost:8080/a.jpg http://localhost:8080/b.jpg …

《深度学习》OpenCV 物体跟踪 原理及案例解析

目录 一、物体跟踪 1、什么是物体跟踪 2、步骤 1&#xff09;选择跟踪算法 2&#xff09;初始化跟踪器 3&#xff09;在每个视频帧上执行跟踪 4&#xff09;可选的重新初始化 3、原理 二、案例实现 1、完整代码 1&#xff09;使用方式 2&#xff09;运行结果 2、关…

用python做一个简单的画板

一&#xff0c;画板的介绍 画板&#xff08;Paint Board&#xff09;是一个提供用户绘图、涂鸦和创作的平台。现代数字画板通常是由软件程序实现的&#xff0c;具有多种功能。以下是画板的一些主要特征和功能&#xff1a; 1. 基本绘图工具 画笔和铅笔&#xff1a;用户可以选…

Java——数组的定义与使用

各位看官&#xff1a;如果您觉得这篇文章对您有帮助的话 欢迎您分享给更多人哦 感谢大家的点赞收藏评论&#xff0c;感谢您的支持&#xff01;&#xff01;&#xff01; 一&#xff1a;数组的概念以及定义,初始化 1.1&#xff1a;数组概念以及定义 数组概念&#xff1a;可以看成…

红黑树:c++实现

1. 红⿊树的概念 红⿊树是⼀棵⼆叉搜索树&#xff0c;他的每个结点增加⼀个存储位来表⽰结点的颜⾊&#xff0c;可以是红⾊或者⿊⾊。 通过对任何⼀条从根到叶⼦的路径上各个结点的颜⾊进⾏约束&#xff0c;红⿊树确保没有⼀条路径会⽐其他路 径⻓出2倍&#xff0c;因⽽是接近平…

用LaTeX写一篇帅帅的算法学习题解

前言 先来看看用 LaTeX \text{LaTeX} LaTeX 写出来的题解是啥样&#xff0c;内容是瞎写的。 前提知识与环境 默认已经掌握了 LaTeX \text{LaTeX} LaTeX 的一些用法&#xff0c;特别是公式如何写&#xff0c;如果你对这块还是很了解&#xff0c;可以先学着使用 Typora \…