Files
MyBlog/src/work/project-summary/录像回放权限配置说明.md
liumangmang 83dc5bf7c6 docs(project-summary): 新增项目总结文档及内容
- 添加了“项目总结”侧边栏项,支持目录折叠,方便访问汇总内容
- 新增Cursor进阶指南文档,详解Agent模式、Composer与快捷键等高级功能
- 编写权限管理系统文档,包含系统设计、权限架构及详细使用说明
- 新添服务总线学习文档,解析@BusService注解与CGLIB动态代理机制
- 录制回放权限配置说明,新增录像回放权限位及权限隔离策略
- 提供数据库配置脚本及实施步骤,确保权限配置准确高效
2026-03-05 11:54:52 +08:00

7.7 KiB
Raw Blame History

icon, date, category, tag, title
icon date category tag title
mdi:video-outline 2026-03-05
工作
项目总结
权限配置
录像回放
录像回放权限配置说明

录像回放权限配置说明

录像回放权限配置说明

概述

根据系统权限说明文档中的权限隔离原则为录像回放相关功能设置了单独的权限位权限位21RECORD_PLAYBACK实现与实时监控权限的独立控制。

修改内容

1. 权限常量定义

文件: platapp/04_sunri-web-patrol/sunri-web-center-utils/src/main/java/com/sunri/constant/RightConstant.java

修改内容: 添加录像回放权限常量

// 录像回放: 操作员,对应实时监控->录像回放相关界面的浏览、查询权限
public static final int RECORD_PLAYBACK = 21;

同时更新了操作员权限注释,增加 RECORD_PLAYBACK 权限位。

2. Controller API权限注解更新

2.1 HighDefinitionVideoEquipmentController.java

文件: platapp/04_sunri-web-patrol/sunri-web-center-cygbusiness/cygbusiness-model/src/main/java/com/sunri/model/controller/account/HighDefinitionVideoEquipmentController.java

修改的API方法:

  • getVideoFileList - 录像-获取文件列表
  • getVideoFileUrl - 录像-获取回放地址
  • stopVideoFileUrl - 录像-停止回放/推流
  • videoPlayBackControl - 录像-回放控制
  • videoProgress - 录像-进度获取
  • getAfterCalibrationStartTime - 录像-获取校准后开始时间

权限变更: 从 @ApiRight(value = {REAL_TIME_MONITORING}) 改为 @ApiRight(value = {RECORD_PLAYBACK})

2.2 ResourceController.java

文件: platapp/04_sunri-web-patrol/sunri-web-center-standalone/standalone-patrol/src/main/java/com/sunri/controller/ResourceController.java

修改的API方法:

  • downloadVideoChunk - 下载文件到浏览器(分片)
  • getDownloadChunkSize - 获取下载文件分片数

权限变更: 从 @ApiRight(value = {REAL_TIME_MONITORING, ALGORITHM_VERIFICATION}) 改为 @ApiRight(value = {REAL_TIME_MONITORING, RECORD_PLAYBACK, ALGORITHM_VERIFICATION})

2.3 HighDefinitionVideoMonitorController.java

文件: platapp/04_sunri-web-patrol/sunri-web-center-cygbusiness/cygbusiness-model/src/main/java/com/sunri/model/controller/monitor/HighDefinitionVideoMonitorController.java

修改的API方法:

  • videoDownload - 录像-开始下载/手动录像

权限变更: 从 @ApiRight(value = {DEVICE_CONTROL}) 改为 @ApiRight(value = {RECORD_PLAYBACK})

3. 数据库配置脚本

-- 录像回放权限配置脚本
-- 功能为录像回放相关功能添加权限位21RECORD_PLAYBACK的单独控制

-- 1. 添加录像回放权限常量到 cfg_auth_const 表
INSERT INTO cfg_auth_const (right, description, create_time, update_time)
VALUES (21, '录像回放', NOW(), NOW())
ON DUPLICATE KEY UPDATE description = '录像回放', update_time = NOW();

-- 2. 查找录像回放相关的菜单ID
-- SELECT id, name, nodeid, url FROM cfg_menu WHERE name LIKE '%录像%' OR name LIKE '%回放%';

-- 3. 为录像回放菜单绑定权限位21按实际菜单修改
-- INSERT INTO cfg_resource_right (resource_id, right)
-- VALUES (7, 21)
-- ON DUPLICATE KEY UPDATE right = 21;

-- INSERT INTO cfg_resource_right (resource_id, right)
-- SELECT id, 21 FROM cfg_menu WHERE nodeid = 'LXHF'
-- ON DUPLICATE KEY UPDATE right = 21;

-- 4. 更新角色权限配置(示例)
-- UPDATE user_role_info SET role_authority = role_authority | 2097152 WHERE role_name = '操作员';
-- UPDATE user_role_info SET role_authority = role_authority | 2097216 WHERE role_name = '监控操作员';
-- UPDATE user_role_info SET role_authority = role_authority | 2097152 WHERE role_name = '录像查询员';

-- 5. 验证配置
-- SELECT * FROM cfg_auth_const WHERE right = 21;
-- SELECT mr.*, m.name, m.nodeid FROM cfg_resource_right mr JOIN cfg_menu m ON mr.resource_id = m.id WHERE mr.right = 21;
-- SELECT role_id, role_name, role_authority, (role_authority & 2097152) > 0 AS has_record_playback_permission FROM user_role_info;

-- 回滚SQL
-- DELETE FROM cfg_auth_const WHERE right = 21;
-- DELETE FROM cfg_resource_right WHERE right = 21;
-- UPDATE user_role_info SET role_authority = role_authority & ~2097152 WHERE role_authority & 2097152 > 0;

权限隔离优势

通过将录像回放权限从实时监控权限中独立出来,实现了以下优势:

场景 实时监控权限(6) 录像回放权限(21) 说明
实时监控员 只能查看实时监控画面
录像查询员 只能查看历史录像回放
监控操作员 既能看实时监控也能看录像回放
数据分析员 只能进行录像数据分析

实施步骤

代码修改(已完成)

  1. RightConstant.java 中添加 RECORD_PLAYBACK = 21 常量
  2. 更新录像回放相关API的权限注解
  3. 创建数据库配置脚本

数据库配置(需要手动执行)

  1. 备份数据库
  2. 执行上文中的 SQL 配置脚本
  3. 根据实际菜单数据确认录像回放菜单的ID或nodeid
  4. 更新角色权限配置
  5. 验证配置是否正确

系统部署

  1. 编译代码
  2. 部署应用
  3. 执行数据库配置脚本
  4. 相关用户重新登录以获取新权限

权限位计算

  • 权限位21的值: 2^21 = 2,097,152
  • 实时监控权限位6的值: 2^6 = 64
  • 同时拥有实时监控和录像回放权限: 64 + 2,097,152 = 2,097,216

角色权限配置示例

-- 操作员:增加录像回放权限
UPDATE user_role_info SET role_authority = role_authority | 2097152 WHERE role_name = '操作员';

-- 监控操作员:拥有实时监控和录像回放权限
UPDATE user_role_info SET role_authority = role_authority | 2097216 WHERE role_name = '监控操作员';

-- 录像查询员:只拥有录像回放权限
UPDATE user_role_info SET role_authority = role_authority | 2097152 WHERE role_name = '录像查询员';

注意事项

  1. 数据库备份: 执行数据库脚本前,请务必备份数据库
  2. 菜单确认: 脚本中的菜单ID需要根据实际情况进行确认和修改
  3. 角色权限: 角色权限配置需要根据实际业务需求进行调整
  4. 用户登录: 修改角色权限后,相关用户需要重新登录才能生效
  5. 权限测试: 部署后请进行全面的权限测试,确保权限控制正确

回滚方案

如需回滚,请执行以下操作:

  1. 恢复代码版本
  2. 执行上文中的回滚 SQL 脚本
  3. 重新部署应用
  4. 相关用户重新登录

验证方法

代码验证

# 搜索所有使用RECORD_PLAYBACK权限的API
grep -r "RECORD_PLAYBACK" --include="*.java" platapp/

数据库验证

-- 查看权限常量
SELECT * FROM cfg_auth_const WHERE right = 21;

-- 查看菜单权限绑定
SELECT mr.*, m.name, m.nodeid
FROM cfg_resource_right mr
JOIN cfg_menu m ON mr.resource_id = m.id
WHERE mr.right = 21;

-- 查看角色权限
SELECT role_id, role_name, role_authority,
       (role_authority & 2097152) > 0 AS has_record_playback_permission
FROM user_role_info;

功能验证

  1. 创建只拥有录像回放权限的用户角色
  2. 使用该角色登录系统
  3. 验证只能访问录像回放功能,不能访问实时监控功能
  4. 创建只拥有实时监控权限的用户角色
  5. 使用该角色登录系统
  6. 验证只能访问实时监控功能,不能访问录像回放功能

相关文档

  • 权限管理系统文档.md: 完整的权限管理说明文档

版本信息

  • 修改日期: 2026-03-05
  • 修改人员: 系统管理员
  • 版本: 1.0.0
  • 状态: 已完成代码修改和数据库配置