253 lines
11 KiB
Markdown
253 lines
11 KiB
Markdown
|
|
# 权限标识映射表
|
|||
|
|
|
|||
|
|
## 概述
|
|||
|
|
本文档定义了从 urbanLifelineServ 权限标识到 pigx 权限标识的映射规则。
|
|||
|
|
|
|||
|
|
## 映射规则
|
|||
|
|
|
|||
|
|
### 格式转换规则
|
|||
|
|
- **源格式**: `module:resource:action` (使用冒号分隔)
|
|||
|
|
- **目标格式**: `module_resource_action` (使用下划线分隔)
|
|||
|
|
- **动作映射**:
|
|||
|
|
- `create` → `add`
|
|||
|
|
- `update` → `edit`
|
|||
|
|
- `delete` → `del`
|
|||
|
|
- `view` → `view`
|
|||
|
|
- 其他保持不变
|
|||
|
|
|
|||
|
|
### 权限注解转换
|
|||
|
|
- **源注解**: `@PreAuthorize("hasAuthority('module:resource:action')")`
|
|||
|
|
- **目标注解**: `@PreAuthorize("@pms.hasPermission('module_resource_action')")`
|
|||
|
|
|
|||
|
|
## 权限映射表
|
|||
|
|
|
|||
|
|
### 工单模块 (workcase)
|
|||
|
|
|
|||
|
|
| 源权限标识 | 目标权限标识 | 说明 | 菜单类型 |
|
|||
|
|
|-----------|-------------|------|----------|
|
|||
|
|
| workcase:ticket:create | workcase_ticket_add | 创建工单 | 按钮 |
|
|||
|
|
| workcase:ticket:update | workcase_ticket_edit | 更新工单 | 按钮 |
|
|||
|
|
| workcase:ticket:view | workcase_ticket_view | 查看工单 | 菜单 |
|
|||
|
|
| workcase:ticket:delete | workcase_ticket_del | 删除工单 | 按钮 |
|
|||
|
|
| workcase:ticket:process | workcase_ticket_process | 处理工单 | 按钮 |
|
|||
|
|
| workcase:ticket:device | workcase_ticket_device | 工单设备管理 | 按钮 |
|
|||
|
|
| workcase:room:create | workcase_room_add | 创建聊天室 | 按钮 |
|
|||
|
|
| workcase:room:update | workcase_room_edit | 更新聊天室 | 按钮 |
|
|||
|
|
| workcase:room:close | workcase_room_close | 关闭聊天室 | 按钮 |
|
|||
|
|
| workcase:room:view | workcase_room_view | 查看聊天室 | 菜单 |
|
|||
|
|
|
|||
|
|
### AI模块 (dify)
|
|||
|
|
|
|||
|
|
| 源权限标识 | 目标权限标识 | 说明 | 菜单类型 |
|
|||
|
|
|-----------|-------------|------|----------|
|
|||
|
|
| ai:agent:create | dify_agent_add | 创建智能体 | 按钮 |
|
|||
|
|
| ai:agent:update | dify_agent_edit | 更新智能体 | 按钮 |
|
|||
|
|
| ai:agent:delete | dify_agent_del | 删除智能体 | 按钮 |
|
|||
|
|
| ai:agent:view | dify_agent_view | 查看智能体 | 菜单 |
|
|||
|
|
| ai:knowledge:create | dify_knowledge_add | 创建知识库 | 按钮 |
|
|||
|
|
| ai:knowledge:update | dify_knowledge_edit | 更新知识库 | 按钮 |
|
|||
|
|
| ai:knowledge:delete | dify_knowledge_del | 删除知识库 | 按钮 |
|
|||
|
|
| ai:knowledge:view | dify_knowledge_view | 查看知识库 | 菜单 |
|
|||
|
|
| ai:knowledge:file:view | dify_knowledge_file_view | 查看知识库文件 | 按钮 |
|
|||
|
|
| ai:knowledge:file:upload | dify_knowledge_file_upload | 上传知识库文件 | 按钮 |
|
|||
|
|
| ai:knowledge:file:update | dify_knowledge_file_edit | 更新知识库文件 | 按钮 |
|
|||
|
|
| ai:knowledge:file:delete | dify_knowledge_file_del | 删除知识库文件 | 按钮 |
|
|||
|
|
| ai:dify:segment:view | dify_segment_view | 查看文档片段 | 按钮 |
|
|||
|
|
| ai:dify:segment:create | dify_segment_add | 创建文档片段 | 按钮 |
|
|||
|
|
| ai:dify:segment:update | dify_segment_edit | 更新文档片段 | 按钮 |
|
|||
|
|
| ai:dify:segment:delete | dify_segment_del | 删除文档片段 | 按钮 |
|
|||
|
|
| ai:dify:document:status | dify_document_status | 查看文档状态 | 按钮 |
|
|||
|
|
| ai:chat:create | dify_chat_add | 创建对话 | 按钮 |
|
|||
|
|
| ai:chat:view | dify_chat_view | 查看对话 | 菜单 |
|
|||
|
|
| ai:chat:message | dify_chat_message | 发送消息 | 按钮 |
|
|||
|
|
|
|||
|
|
### 招标模块 (bidding)
|
|||
|
|
|
|||
|
|
| 源权限标识 | 目标权限标识 | 说明 | 菜单类型 |
|
|||
|
|
|-----------|-------------|------|----------|
|
|||
|
|
| bidding:project:create | bidding_project_add | 创建招标项目 | 按钮 |
|
|||
|
|
| bidding:project:update | bidding_project_edit | 更新招标项目 | 按钮 |
|
|||
|
|
| bidding:project:delete | bidding_project_del | 删除招标项目 | 按钮 |
|
|||
|
|
| bidding:project:view | bidding_project_view | 查看招标项目 | 菜单 |
|
|||
|
|
| bidding:bid:create | bidding_bid_add | 创建投标 | 按钮 |
|
|||
|
|
| bidding:bid:update | bidding_bid_edit | 更新投标 | 按钮 |
|
|||
|
|
| bidding:bid:view | bidding_bid_view | 查看投标 | 菜单 |
|
|||
|
|
| bidding:document:view | bidding_document_view | 查看招标文件 | 按钮 |
|
|||
|
|
| bidding:document:upload | bidding_document_upload | 上传招标文件 | 按钮 |
|
|||
|
|
|
|||
|
|
### 平台管理模块 (platform)
|
|||
|
|
|
|||
|
|
| 源权限标识 | 目标权限标识 | 说明 | 菜单类型 |
|
|||
|
|
|-----------|-------------|------|----------|
|
|||
|
|
| platform:config:view | platform_config_view | 查看配置 | 菜单 |
|
|||
|
|
| platform:config:update | platform_config_edit | 更新配置 | 按钮 |
|
|||
|
|
| platform:log:view | platform_log_view | 查看日志 | 菜单 |
|
|||
|
|
| platform:monitor:view | platform_monitor_view | 查看监控 | 菜单 |
|
|||
|
|
| platform:stat:view | platform_stat_view | 查看统计 | 菜单 |
|
|||
|
|
|
|||
|
|
### 消息模块 (message)
|
|||
|
|
|
|||
|
|
| 源权限标识 | 目标权限标识 | 说明 | 菜单类型 |
|
|||
|
|
|-----------|-------------|------|----------|
|
|||
|
|
| message:notification:create | message_notification_add | 创建通知 | 按钮 |
|
|||
|
|
| message:notification:view | message_notification_view | 查看通知 | 菜单 |
|
|||
|
|
| message:notification:send | message_notification_send | 发送通知 | 按钮 |
|
|||
|
|
| message:template:create | message_template_add | 创建消息模板 | 按钮 |
|
|||
|
|
| message:template:update | message_template_edit | 更新消息模板 | 按钮 |
|
|||
|
|
| message:template:delete | message_template_del | 删除消息模板 | 按钮 |
|
|||
|
|
| message:template:view | message_template_view | 查看消息模板 | 菜单 |
|
|||
|
|
|
|||
|
|
## 菜单配置SQL示例
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
-- 工单管理菜单
|
|||
|
|
INSERT INTO sys_menu (menu_id, name, permission, path, parent_id, icon, sort, type, tenant_id) VALUES
|
|||
|
|
(10000, '工单管理', NULL, '/workcase', 0, 'el-icon-tickets', 1, '0', 1),
|
|||
|
|
(10001, '工单列表', 'workcase_ticket_view', '/workcase/list', 10000, '', 1, '1', 1),
|
|||
|
|
(10002, '创建工单', 'workcase_ticket_add', NULL, 10001, '', 1, '2', 1),
|
|||
|
|
(10003, '编辑工单', 'workcase_ticket_edit', NULL, 10001, '', 2, '2', 1),
|
|||
|
|
(10004, '删除工单', 'workcase_ticket_del', NULL, 10001, '', 3, '2', 1),
|
|||
|
|
(10005, '处理工单', 'workcase_ticket_process', NULL, 10001, '', 4, '2', 1),
|
|||
|
|
(10006, '设备管理', 'workcase_ticket_device', NULL, 10001, '', 5, '2', 1),
|
|||
|
|
(10010, '聊天室', 'workcase_room_view', '/workcase/room', 10000, '', 2, '1', 1),
|
|||
|
|
(10011, '创建聊天室', 'workcase_room_add', NULL, 10010, '', 1, '2', 1),
|
|||
|
|
(10012, '编辑聊天室', 'workcase_room_edit', NULL, 10010, '', 2, '2', 1),
|
|||
|
|
(10013, '关闭聊天室', 'workcase_room_close', NULL, 10010, '', 3, '2', 1);
|
|||
|
|
|
|||
|
|
-- AI管理菜单(Dify)
|
|||
|
|
INSERT INTO sys_menu (menu_id, name, permission, path, parent_id, icon, sort, type, tenant_id) VALUES
|
|||
|
|
(11000, 'AI管理', NULL, '/dify', 0, 'el-icon-cpu', 2, '0', 1),
|
|||
|
|
(11001, '智能体管理', 'dify_agent_view', '/dify/agent', 11000, '', 1, '1', 1),
|
|||
|
|
(11002, '创建智能体', 'dify_agent_add', NULL, 11001, '', 1, '2', 1),
|
|||
|
|
(11003, '编辑智能体', 'dify_agent_edit', NULL, 11001, '', 2, '2', 1),
|
|||
|
|
(11004, '删除智能体', 'dify_agent_del', NULL, 11001, '', 3, '2', 1),
|
|||
|
|
(11010, '知识库管理', 'dify_knowledge_view', '/dify/knowledge', 11000, '', 2, '1', 1),
|
|||
|
|
(11011, '创建知识库', 'dify_knowledge_add', NULL, 11010, '', 1, '2', 1),
|
|||
|
|
(11012, '编辑知识库', 'dify_knowledge_edit', NULL, 11010, '', 2, '2', 1),
|
|||
|
|
(11013, '删除知识库', 'dify_knowledge_del', NULL, 11010, '', 3, '2', 1),
|
|||
|
|
(11014, '上传文件', 'dify_knowledge_file_upload', NULL, 11010, '', 4, '2', 1),
|
|||
|
|
(11020, 'AI对话', 'dify_chat_view', '/dify/chat', 11000, '', 3, '1', 1),
|
|||
|
|
(11021, '创建对话', 'dify_chat_add', NULL, 11020, '', 1, '2', 1);
|
|||
|
|
|
|||
|
|
-- 招标管理菜单
|
|||
|
|
INSERT INTO sys_menu (menu_id, name, permission, path, parent_id, icon, sort, type, tenant_id) VALUES
|
|||
|
|
(12000, '招标管理', NULL, '/bidding', 0, 'el-icon-document', 3, '0', 1),
|
|||
|
|
(12001, '招标项目', 'bidding_project_view', '/bidding/project', 12000, '', 1, '1', 1),
|
|||
|
|
(12002, '创建项目', 'bidding_project_add', NULL, 12001, '', 1, '2', 1),
|
|||
|
|
(12003, '编辑项目', 'bidding_project_edit', NULL, 12001, '', 2, '2', 1),
|
|||
|
|
(12004, '删除项目', 'bidding_project_del', NULL, 12001, '', 3, '2', 1),
|
|||
|
|
(12010, '投标管理', 'bidding_bid_view', '/bidding/bid', 12000, '', 2, '1', 1),
|
|||
|
|
(12011, '创建投标', 'bidding_bid_add', NULL, 12010, '', 1, '2', 1),
|
|||
|
|
(12012, '编辑投标', 'bidding_bid_edit', NULL, 12010, '', 2, '2', 1);
|
|||
|
|
|
|||
|
|
-- 平台管理菜单
|
|||
|
|
INSERT INTO sys_menu (menu_id, name, permission, path, parent_id, icon, sort, type, tenant_id) VALUES
|
|||
|
|
(13000, '平台管理', NULL, '/platform', 0, 'el-icon-setting', 4, '0', 1),
|
|||
|
|
(13001, '系统配置', 'platform_config_view', '/platform/config', 13000, '', 1, '1', 1),
|
|||
|
|
(13002, '编辑配置', 'platform_config_edit', NULL, 13001, '', 1, '2', 1),
|
|||
|
|
(13010, '操作日志', 'platform_log_view', '/platform/log', 13000, '', 2, '1', 1),
|
|||
|
|
(13020, '系统监控', 'platform_monitor_view', '/platform/monitor', 13000, '', 3, '1', 1),
|
|||
|
|
(13030, '统计报表', 'platform_stat_view', '/platform/stat', 13000, '', 4, '1', 1);
|
|||
|
|
|
|||
|
|
-- 消息管理菜单
|
|||
|
|
INSERT INTO sys_menu (menu_id, name, permission, path, parent_id, icon, sort, type, tenant_id) VALUES
|
|||
|
|
(14000, '消息管理', NULL, '/message', 0, 'el-icon-message', 5, '0', 1),
|
|||
|
|
(14001, '通知管理', 'message_notification_view', '/message/notification', 14000, '', 1, '1', 1),
|
|||
|
|
(14002, '创建通知', 'message_notification_add', NULL, 14001, '', 1, '2', 1),
|
|||
|
|
(14003, '发送通知', 'message_notification_send', NULL, 14001, '', 2, '2', 1),
|
|||
|
|
(14010, '消息模板', 'message_template_view', '/message/template', 14000, '', 2, '1', 1),
|
|||
|
|
(14011, '创建模板', 'message_template_add', NULL, 14010, '', 1, '2', 1),
|
|||
|
|
(14012, '编辑模板', 'message_template_edit', NULL, 14010, '', 2, '2', 1),
|
|||
|
|
(14013, '删除模板', 'message_template_del', NULL, 14010, '', 3, '2', 1);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 角色权限分配示例
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
-- 为管理员角色分配所有业务权限
|
|||
|
|
INSERT INTO sys_role_menu (role_id, menu_id)
|
|||
|
|
SELECT 1, menu_id FROM sys_menu WHERE menu_id >= 10000 AND menu_id < 15000;
|
|||
|
|
|
|||
|
|
-- 为普通用户角色分配查看权限
|
|||
|
|
INSERT INTO sys_role_menu (role_id, menu_id)
|
|||
|
|
SELECT 2, menu_id FROM sys_menu
|
|||
|
|
WHERE menu_id >= 10000 AND menu_id < 15000
|
|||
|
|
AND (type = '0' OR type = '1' OR permission LIKE '%_view');
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 代码转换示例
|
|||
|
|
|
|||
|
|
### Java Controller 转换
|
|||
|
|
|
|||
|
|
```java
|
|||
|
|
// 转换前 (urbanLifelineServ)
|
|||
|
|
@RestController
|
|||
|
|
@RequestMapping("/api/workcase")
|
|||
|
|
public class WorkcaseController {
|
|||
|
|
|
|||
|
|
@PostMapping("/create")
|
|||
|
|
@PreAuthorize("hasAuthority('workcase:ticket:create')")
|
|||
|
|
public ResultDomain<TbWorkcaseDTO> createWorkcase(@RequestBody TbWorkcaseDTO workcase) {
|
|||
|
|
return ResultDomain.success(workcaseService.save(workcase));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 转换后 (pigx-app-server)
|
|||
|
|
@RestController
|
|||
|
|
@RequestMapping("/workcase")
|
|||
|
|
public class WorkcaseController {
|
|||
|
|
|
|||
|
|
@PostMapping
|
|||
|
|
@PreAuthorize("@pms.hasPermission('workcase_ticket_add')")
|
|||
|
|
public R<TbWorkcaseDTO> createWorkcase(@RequestBody TbWorkcaseDTO workcase) {
|
|||
|
|
return R.ok(workcaseService.save(workcase));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 前端权限判断转换
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
// 转换前 (urbanLifelineWeb)
|
|||
|
|
if (hasPermission('workcase:ticket:create')) {
|
|||
|
|
// 显示创建按钮
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 转换后 (pigx-ai-ui)
|
|||
|
|
if (checkPermission(['workcase_ticket_add'])) {
|
|||
|
|
// 显示创建按钮
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **权限格式严格**: 必须使用下划线 `_` 而不是冒号 `:`
|
|||
|
|
2. **注解格式**: 必须包含 `@pms.` 前缀
|
|||
|
|
3. **动作映射**: `create` 统一改为 `add`,`update` 改为 `edit`,`delete` 改为 `del`
|
|||
|
|
4. **菜单类型**:
|
|||
|
|
- type='0': 目录
|
|||
|
|
- type='1': 菜单
|
|||
|
|
- type='2': 按钮
|
|||
|
|
5. **menu_id分配**:
|
|||
|
|
- 10000-10999: 工单模块
|
|||
|
|
- 11000-11999: AI模块(Dify)
|
|||
|
|
- 12000-12999: 招标模块
|
|||
|
|
- 13000-13999: 平台管理
|
|||
|
|
- 14000-14999: 消息模块
|
|||
|
|
|
|||
|
|
## 批量转换脚本
|
|||
|
|
|
|||
|
|
可以使用以下正则表达式进行批量替换:
|
|||
|
|
|
|||
|
|
```regex
|
|||
|
|
# 查找
|
|||
|
|
@PreAuthorize\("hasAuthority\('([^:]+):([^:]+):([^']+)'\)"\)
|
|||
|
|
|
|||
|
|
# 替换为
|
|||
|
|
@PreAuthorize("@pms.hasPermission('$1_$2_$3')")
|
|||
|
|
|
|||
|
|
# 特殊处理 create -> add
|
|||
|
|
将 _create 替换为 _add
|
|||
|
|
将 _update 替换为 _edit
|
|||
|
|
将 _delete 替换为 _del
|
|||
|
|
```
|