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

若依 RuoYi-Vue 自定义车间设备模块 + 数据权限完整实现教程

一、前言

在若依框架中,权限分为菜单接口权限数据权限。菜单权限控制能看到哪些功能、访问哪些接口;数据权限控制同一张数据表,不同角色用户能看到哪些行数据

本次实战搭建车间设备管理模块,实现需求:

  1. 超级管理员:查看全部车间设备数据
  2. 普通角色用户:只能查看本部门 / 本车间设备数据
  3. 核心技术:@DataScope注解 + AOP 切面 + MyBatis 动态 SQL 拼接

二、核心原理

  1. 若依内置DataScopeAspect切面类,拦截@DataScope注解
  2. 自动获取当前登录用户所属部门、角色数据权限
  3. 动态拼接 SQL 过滤条件,存入实体类params参数
  4. Mapper XML 通过${params.dataScope}引入动态条件,实现行级过滤
  5. 内置 5 种数据权限:全部、自定义、本部门、本部门及以下、仅本人

三、数据库准备(CMD 终端操作)

1. CMD 登录 MySQL

bash

运行

mysql -uroot -p

输入密码登录,选择若依数据库

sql

use ry-vue;

2. 创建设备表

sql

CREATE TABLE `sys_equipment` ( `equip_id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '设备ID', `equip_name` VARCHAR(100) NOT NULL COMMENT '设备名称', `equip_no` VARCHAR(50) DEFAULT NULL COMMENT '设备编号', `dept_id` BIGINT NOT NULL COMMENT '所属车间部门ID', `user_id` BIGINT DEFAULT NULL COMMENT '负责人ID', `status` CHAR(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', `create_time` DATETIME DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`equip_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车间设备表';

3. 插入测试设备数据

sql

INSERT INTO sys_equipment (equip_name, equip_no, dept_id, user_id) VALUES ('LatheA', 'Li_001', 103, 2), ('MillingB', 'Li_002', 103, 3), ('DrillC', 'Li_003', 104, 2);

4. 导入菜单 SQL

解压代码生成包,在 CMD 执行菜单脚本:

sql

source D:/edgdownload/w13/equipmentMenu.sql;

四、若依代码生成

  1. 登录若依后台 → 系统工具 → 代码生成
  2. 导入sys_equipment表,配置:
    • 模块名:equipment
    • 功能名:设备管理
    • 上级菜单:系统管理
  3. 生成代码并下载压缩包,解压得到后端、前端、SQL 文件

五、项目代码部署

1. 后端代码复制

  1. controller/domain/mapper/service对应文件复制到项目对应包下
  2. SysEquipmentMapper.xml复制到mapper/system目录

2. 前端代码复制

  1. equipment.js复制到ruoyi-ui/src/api
  2. equipment文件夹复制到ruoyi-ui/src/views

六、数据权限核心改造(三步必做)

1. 实体类继承 BaseEntity

自动生成的SysEquipment已默认继承,无需修改,核心作用:携带params参数存放动态 SQL。

2. Service 层添加 @DataScope 注解

修改SysEquipmentServiceImpl.java,导入注解并添加到查询列表方法:

java

运行

import com.ruoyi.common.annotation.DataScope; @Override @DataScope(deptAlias = "d", userAlias = "s") public List<SysEquipment> selectSysEquipmentList(SysEquipment sysEquipment) { return sysEquipmentMapper.selectSysEquipmentList(sysEquipment); }
  • deptAlias = "d":部门表别名
  • userAlias = "s":设备表别名

3. Mapper XML 改造

关联部门表,末尾加入${params.dataScope}接收动态权限 SQL:

xml

<select id="selectSysEquipmentList" parameterType="SysEquipment" resultMap="SysEquipmentResult"> select s.* from sys_equipment s left join sys_dept d on s.dept_id = d.dept_id <where> <if test="equipName != null and equipName != ''"> and equip_name like concat('%', #{equipName}, '%') </if> <if test="status != null and status != ''"> and status = #{status} </if> ${params.dataScope} </where> </select>

七、角色与数据权限配置

  1. 系统管理 → 角色管理
  2. 超级管理员:设置全部数据权限
  3. 新建普通角色:设置本部门数据权限
  4. 新建测试用户,归属对应部门,绑定普通角色
  5. 给角色分配设备管理菜单权限,刷新菜单

八、功能测试

  1. admin 账号:登录设备管理,查看所有 3 条设备数据
  2. 普通部门用户:登录后仅展示本车间设备,自动过滤其他部门数据
  3. 查看后端日志,可看到框架自动拼接AND d.dept_id = 部门ID权限条件

九、5 种数据权限 SQL 解析

  1. 全部数据权限:不拼接任何 SQL,查询全量数据
  2. 本部门数据权限:拼接AND d.dept_id = 当前用户部门ID
  3. 本部门及以下:拼接部门及子部门 ID 集合查询
  4. 仅本人数据权限:拼接AND s.user_id = 当前用户ID
  5. 自定义数据权限:拼接勾选的部门 ID 集合

十、截图

可以新建,修改设备,没开权限之前普通角色看不到设备管理菜单,开了就可以。 不同角色因为权限不同看到的设备数量信息不同。

http://www.jsqmd.com/news/943545/

相关文章:

  • 遥感影像分割不再靠蒙:eCognition ESP2插件保姆级安装与参数调试指南
  • 3分钟快速上手:Windows原生运行安卓应用的终极解决方案
  • 远恒集团荣登“2026中国品牌500强”,并斩获“品牌强国黑马榜·十大投资价值品牌”
  • 2026年上海市PMP培训机构哪家好?官方授权R.E.P.报考指南 - 众智商学院课程中心
  • 石家庄市地区2026年权威甄选:黄金回收白银铂金回收优质门店 TOP5 含详细电话 - 诚金汇钻回收公司
  • 【Flutter】Flutter 异步方法调用 ( async 和 await 关键字解析 | Dart 单线程 | await 调用方式对比 | Future<void> 返回值作用 )
  • 终极免费甘特图工具:GanttProject 让你轻松管理复杂项目
  • OpenRocket模型火箭设计软件:从零开始掌握火箭仿真与优化
  • 火灾事故动画还原需要注意哪些细节?
  • 保姆级教程:在Ubuntu 20.04上用Docker容器搞定PX4开发环境(附Java报错解决)
  • 微信收藏的图片到底存了几份?我用Python脚本帮你理清了Data、Temp、Thumb三大文件夹的关系
  • 2026年6月全国百达翡丽官方维修服务网点汇总,门店地址及售后电话一览 - 资讯快报
  • 免费开源图片去重神器:3步告别重复照片困扰的终极解决方案
  • CPT Markets:多维度评估平台运营与服务细节
  • 计算机毕业设计之基于flask框架的微博实时热点数据可视化设计与实现
  • 基于LM317的DIY可调稳压电源制作全攻略:从原理到实践
  • 基于ESP32-CAM的3D打印机无线监控方案:从硬件选型到软件集成
  • 2026年 磁铁全品类推荐榜单:钕铁硼/异形/方形/圆形/电机磁铁及锂电磁棒/磁组件源头厂家实力解析! - 品牌企业推荐师(官方)
  • 产品寿命预测实战:手把手用Python+Weibull模型评估5000次循环后的可靠性(附双侧/单侧置信区间代码)
  • 2026年6月昭通贵金属回收权威门店排行 TOP5 黄金 + 铂金 + 白银回收 附电话地址 - 中业金奢再生回收中心
  • C#零基础通关第十五篇:吃透特性Attribute与AOP编程,实现数据校验、权限拦截、架构解耦
  • TestDisk与PhotoRec:免费开源数据恢复双雄的完整使用指南
  • 不止于杀毒:火绒安全这些隐藏功能,才是电脑高手的秘密武器
  • 跨平台无障碍设计实践:从Web、VR到教室的包容性交互框架
  • Java流程控制语句详解
  • 告别手动标注!用SAM(Segment Anything)自动生成COCO格式数据集,实测避坑指南
  • 2026巴中市本地黄金回收铂金白银回收哪家强?TOP5 正规门店榜单 + 联系方式 - 中安检金银铂钻回收
  • 荆门市地区2026年权威甄选:黄金回收白银铂金回收优质门店 TOP5 含详细电话 - 诚金汇钻回收公司
  • 想选国内余热锅炉销售厂家?这几家值得你重点关注!
  • ‘三区三线’永农图斑编号避坑指南:ArcGIS三种方法实测,哪种最快最合规?