当前位置: 首页 > 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.jsqmd.com/news/906165/

相关文章:

  • 别再混用网络了!用华为VRF给生产网和办公网做个“物理隔离”(附CE交换机配置命令)
  • 2026 指南:台州市椒江区彩金回收 白银回收 黄金回收 铂金回收店铺推荐及联系方式 - 资讯快报
  • 赤峰车衣门店排行|首选赤峰美车堡 XPEL 超级旗舰店(推荐指数 4.9 分) - 资讯快报
  • 2026年 矿用局部通风机厂家/厂家推荐榜:运城局扇风机/防爆型/对旋/FBCD抽出式/FBD轴流/六边形可拆卸通风机实力工厂与技术口碑深度解析 - 品牌企业推荐师(官方)
  • 2026年多场景LED显示屏源头厂商综合评估报告 - 品牌企业推荐师(官方)
  • 2026 年青岛 UPS 不间断电源供应商怎么选?主流品牌授权服务商盘点 - 小艾信息发布
  • LeetCode 207:课程表 | 拓扑排序
  • GitNexus 图文使用教程:为你的代码库构建知识图谱
  • HarmonyOS 全局缓存不乱:GlobalContext Key 管理与泛型安全取值模式
  • 向量空间JBoltAI :让Agent推理从黑盒走向透明
  • 笔试训练48天:
  • 2026年游乐设备厂家推荐排行榜:学校/社区/公园/幼儿园/商场/室内/无动力游乐设备品牌精选! - 品牌企业推荐师(官方)
  • 2026平民寄件避坑指南:低价平台优缺点全解,德邦及主流快递最便宜下单渠道 - 时讯资讯
  • 2026 赤峰车膜门店推荐排行:首选这家,口碑与实力双第一 - 资讯快报
  • 南京专业中央空调风口清洗维修公司推荐:南京杰达家居科技有限公司服务详解 - 速递信息
  • LeetCode 210:课程表 II | 拓扑排序
  • 干掉繁琐搬运!企业级AI Agent免费社区版深度评测:中小企业数字化转型的“破局”利器
  • 从《半日》到‘半生’:用Python爬虫+数据分析,可视化一个男孩‘半天’里的世界变迁
  • 股票分析提示词
  • 2026年栀子花香水推荐深度测评:如何为不同需求匹配最佳方案? - 资讯快报
  • DeepSeek云服务部署终极手册(含Terraform模板+安全加固策略+压测报告PDF)——仅开放72小时
  • 2026年青少年同性好感困惑咨询机构选择指南:专业适配与长沙本地服务解析 - 资讯快报
  • 仅限本周开放!Gemini新功能Early Access通道关闭倒计时:企业级Prompt工程模板免费领
  • 最小 SOFA XML 场景结构 0-base.scn
  • 2026德邦大件寄件省钱指南!4个无套路靠谱平台,告别寄快递高价坑 - 时讯资讯
  • 告别重复数据!Jmeter压力测试中如何用随机参数绕过接口唯一约束(附函数助手详解)
  • 小鹿管家·小红书助手|多账户批量管理神器,让广告投放效率提升10倍!
  • 智能体时代:Elastic 在 Google Cloud Next 2026
  • PCA 数值计算
  • OpenClaw与Taotoken无缝对接实现自动化AI任务编排与执行