docs(project-summary): 新增项目总结文档及内容
- 添加了“项目总结”侧边栏项,支持目录折叠,方便访问汇总内容 - 新增Cursor进阶指南文档,详解Agent模式、Composer与快捷键等高级功能 - 编写权限管理系统文档,包含系统设计、权限架构及详细使用说明 - 新添服务总线学习文档,解析@BusService注解与CGLIB动态代理机制 - 录制回放权限配置说明,新增录像回放权限位及权限隔离策略 - 提供数据库配置脚本及实施步骤,确保权限配置准确高效
This commit is contained in:
225
src/work/project-summary/录像回放权限配置说明.md
Normal file
225
src/work/project-summary/录像回放权限配置说明.md
Normal file
@@ -0,0 +1,225 @@
|
||||
---
|
||||
icon: mdi:video-outline
|
||||
date: 2026-03-05
|
||||
category:
|
||||
- 工作
|
||||
- 项目总结
|
||||
tag:
|
||||
- 权限配置
|
||||
- 录像回放
|
||||
title: 录像回放权限配置说明
|
||||
---
|
||||
|
||||
录像回放权限配置说明
|
||||
<!-- more -->
|
||||
|
||||
# 录像回放权限配置说明
|
||||
|
||||
## 概述
|
||||
|
||||
根据系统权限说明文档中的权限隔离原则,为录像回放相关功能设置了单独的权限位(权限位21:RECORD_PLAYBACK),实现与实时监控权限的独立控制。
|
||||
|
||||
## 修改内容
|
||||
|
||||
### 1. 权限常量定义
|
||||
|
||||
**文件**: `platapp/04_sunri-web-patrol/sunri-web-center-utils/src/main/java/com/sunri/constant/RightConstant.java`
|
||||
|
||||
**修改内容**: 添加录像回放权限常量
|
||||
```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. 数据库配置脚本
|
||||
|
||||
```sql
|
||||
-- 录像回放权限配置脚本
|
||||
-- 功能:为录像回放相关功能添加权限位21(RECORD_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
|
||||
|
||||
### 角色权限配置示例
|
||||
|
||||
```sql
|
||||
-- 操作员:增加录像回放权限
|
||||
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. 相关用户重新登录
|
||||
|
||||
## 验证方法
|
||||
|
||||
### 代码验证
|
||||
|
||||
```bash
|
||||
# 搜索所有使用RECORD_PLAYBACK权限的API
|
||||
grep -r "RECORD_PLAYBACK" --include="*.java" platapp/
|
||||
```
|
||||
|
||||
### 数据库验证
|
||||
|
||||
```sql
|
||||
-- 查看权限常量
|
||||
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
|
||||
- **状态**: 已完成代码修改和数据库配置
|
||||
Reference in New Issue
Block a user