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

若依框架数据权限发分析

一、需求

一个车间(部门)的负责人只能查看自己车间的设备数据

案例设定

用户所属部门数据权限看到的设备
admin全部数据权限所有设备
ry测试部门(105)本部门数据权限测试部门的设备
zhy财务部门(106)本部门数据权限

财务部门的设备

二、数据库建表

2.1 建表SQL

-- 设备表 DROP TABLE IF EXISTS `sys_equipment`; CREATE TABLE `sys_equipment` ( `equipment_id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '设备ID', `equipment_code` VARCHAR(64) NOT NULL COMMENT '设备编号', `equipment_name` VARCHAR(100) NOT NULL COMMENT '设备名称', `dept_id` INT(11) DEFAULT NULL COMMENT '所属部门ID', `status` CHAR(1) DEFAULT '0' COMMENT '状态', `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注', `create_by` VARCHAR(64) DEFAULT '' COMMENT '创建者', `create_time` DATETIME DEFAULT NULL COMMENT '创建时间', `update_by` VARCHAR(64) DEFAULT '' COMMENT '更新者', `update_time` DATETIME DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`equipment_id`) ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='设备表'; -- 插入测试数据 INSERT INTO `sys_equipment` VALUES (1, 'zhy_001', '测试服务器', 105, '0', '测试部门设备', 'admin', NOW(), NULL, NULL), (2, 'zhy_002', '测试客户端', 105, '0', '测试部门设备', 'admin', NOW(), NULL, NULL), (3, 'zhy_003', '财务服务器', 106, '0', '财务部门设备', 'admin', NOW(), NULL, NULL), (4, 'zhy_004', '财务客户端', 106, '0', '财务部门设备', 'admin', NOW(), NULL, NULL);

2.2截图

三、使用若依代码生成器

四、复制代码到项目

4.1 后端代码放置位置

文件放置路径
SysEquipment.javaruoyi-system/src/main/java/com/ruoyi/system/domain/
SysEquipmentMapper.javaruoyi-system/src/main/java/com/ruoyi/system/mapper/
ISysEquipmentService.javaruoyi-system/src/main/java/com/ruoyi/system/service/
SysEquipmentServiceImpl.javaruoyi-system/src/main/java/com/ruoyi/system/service/impl/
SysEquipmentController.javaruoyi-admin/src/main/java/com/ruoyi/web/controller/system/
SysEquipmentMapper.xmlruoyi-system/src/main/resources/mapper/system/

4.2 前端代码放置位置

文件放置路径
equipment/index.vueruoyi-ui/src/views/
api/equipment.jsruoyi-ui/src/api/

4.3 执行菜单SQL

在Navicat中执行生成的menu.sql文件,添加设备管理菜单。

五、手动添加数据权限

若依代码生成器生成的代码默认不带数据权限,需要手动添加两处。

5.1 Service层添加 @DataScope 注解

文件路径:SysEquipmentServiceImpl.java

java

@Override @DataScope(deptAlias = "e") // ← 添加这一行,e是部门表别名 public List<SysEquipment> selectEquipmentList(SysEquipment equipment) { return equipmentMapper.selectEquipmentList(equipment); }

5.2 Mapper.xml 添加 ${params.dataScope}



六、效果验证

6.1 admin用户(全部数据权限)

6.2 ry用户(测试部门)

ry登录,设备管理页面只显示zhy_001、zhy_002

6.3 zhy用户(财务部门)

zhy登录,设备管理页面只显示zhy_003、zhy_004

6.4 后端SQL日志验证


七、核心原理总结

text

用户请求 → Controller → Service(@DataScope) → AOP拦截 → 生成SQL片段 → 存入params.dataScope → Mapper.xml使用${params.dataScope}拼接 → 执行过滤后的SQL
http://www.rkmt.cn/news/1417464.html

相关文章:

  • 2026年多场景LED显示屏源头厂商综合评估报告 - 品牌企业推荐师(官方)
  • 南京专业中央空调风口清洗维修公司推荐:南京杰达家居科技有限公司服务详解 - 速递信息
  • 干掉繁琐搬运!企业级AI Agent免费社区版深度评测:中小企业数字化转型的“破局”利器
  • 从《半日》到‘半生’:用Python爬虫+数据分析,可视化一个男孩‘半天’里的世界变迁
  • 股票分析提示词
  • DeepSeek云服务部署终极手册(含Terraform模板+安全加固策略+压测报告PDF)——仅开放72小时
  • 仅限本周开放!Gemini新功能Early Access通道关闭倒计时:企业级Prompt工程模板免费领
  • 告别重复数据!Jmeter压力测试中如何用随机参数绕过接口唯一约束(附函数助手详解)
  • 法兰厂家选型参考:资质、交期、起订量三问排除法与决策路径 - 资讯快报
  • OpenClaw与Taotoken无缝对接实现自动化AI任务编排与执行
  • 2026大连代理记账,认准大连盛仕达税务师事务所有限公司! - 小柏云
  • 技术原理篇:GEO(生成式引擎优化)核心技术架构与 AI 收录机制解析
  • 使用nodejs快速构建接入taotoken大模型api的聊天机器人
  • ESP01S使用笔记01--ESP01s固件下载 - 少年
  • 2026 年石家庄 UPS 不间断电源供应商哪家好?主流品牌授权服务商推荐 - 小艾信息发布
  • Linux wget 命令详解:从基础到高级下载技巧
  • 200 SMART G2无线通讯,用一次就回不去了
  • 2026年企业若想在激烈的市场竞争中脱颖而出推荐上海广告公司 - 资讯快报
  • 【车载 AOSP 16 蓝牙(bluedroid)服务】【qcom 平台双蓝牙】【10.UI点击播放,耳机如何出声 2】
  • 2026年全自动装箱机厂家推荐榜单:装箱一体机/机器人装箱机/装箱码垛一体机,全自动装箱生产线与开装封一体机源头实力品牌精选 - 品牌企业推荐师(官方)
  • 从0到1:APP广告变现的“极速启动”指南
  • 【独家首发】Gemini留存率提升黄金公式:R = f(首次价值感知×行为触发密度×负反馈拦截率)
  • 雅思小白择校避坑干货|拒绝无效报课,选对机构3个月高效出分 - 资讯快报
  • 阿姆智创ARM-3576A工控核心板,协作机械臂智慧中枢
  • 为什么50A是电流检测方案的重要分界点?
  • 学习c语言第24天 循环语句的应用
  • 2026西安卫生间免砸砖防水、外墙、地下室、楼顶渗漏+彩钢瓦、阳光房渗漏 本地专业防水公司TOP5权威推荐(2026年6月本地最新深度调研) - 防水百科
  • 基于Arduino与加速度计的手势控制机器人设计与实现
  • 告别 N+1 地狱:深度理解Django中 select_related 与 prefetch_related
  • 2026国产电磁冷热量计十大品牌深度评测:国产替代加速下的综合实力较量 - 水质仪表品牌排行榜