12 KiB
12 KiB
FileController 交互流程图
接口总览
| 接口 | 方法 | 路径 | 功能 |
|---|---|---|---|
| pageFiles | GET | /file/page | 分页查询文件 |
| getFileById | GET | /file/{id} | 查询文件详情 |
| uploadFile | POST | /file/upload | 上传文件 |
| ragStream | POST | /file/rag/stream | RAG流式问答 |
| downloadFile | GET | /file/download/{id} | 下载文件(已禁用) |
| getFileContent | GET | /file/content/{id} | 获取文件内容(已禁用) |
| getFileInfo | GET | /file/info/{id} | 获取文件详细信息 |
| deleteFile | DELETE | /file/{id} | 删除文件 |
| approveFile | POST | /file/audit/approve/{id} | 审核通过 |
| rejectFile | POST | /file/audit/reject/{id} | 审核拒绝 |
| getPendingFiles | GET | /file/audit/pending | 查询待审核文件列表 |
| updateFileInfo | PUT | /file/{id} | 更新文件信息 |
1. 分页查询文件 (/file/page)
1.1 流程图
flowchart TD
A[开始: 分页查询文件] --> B{用户已登录?}
B -->|否| C[返回: 用户未登录]
B -->|是| D{用户信息获取成功?}
D -->|否| E[返回: 用户信息获取失败]
D -->|是| F[调用fileService.pageFiles]
F --> G[返回分页结果]
C --> H[结束]
E --> H
G --> H
1.2 时序图
sequenceDiagram
autonumber
participant Client as 用户
participant FC as FileController
participant Auth as AuthService
participant FS as FileService
Client->>+FC: GET /file/page
FC->>+Auth: validateToken(token)
Auth-->>-FC: User对象
FC->>+FS: pageFiles(pageNum, pageSize, fileName, user)
FS-->>-FC: PageResult<FileVO>
FC-->>-Client: 返回分页结果
2. 查询文件详情 (/file/{id})
2.1 流程图
flowchart TD
A[开始: 查询文件详情] --> B{用户已登录?}
B -->|否| C[返回: 用户未登录]
B -->|是| D{用户信息获取成功?}
D -->|否| E[返回: 用户信息获取失败]
D -->|是| F[调用fileService.getFileById]
F --> G[返回文件详情]
C --> H[结束]
E --> H
G --> H
2.2 时序图
sequenceDiagram
autonumber
participant Client as 用户
participant FC as FileController
participant Auth as AuthService
participant FS as FileService
Client->>+FC: GET /file/{id}
FC->>+Auth: validateToken(token)
Auth-->>-FC: User对象
FC->>+FS: getFileById(id, user)
FS-->>-FC: FileVO
FC-->>-Client: 返回文件详情
3. 上传文件 (/file/upload)
3.1 流程图
flowchart TD
A[开始: 上传文件] --> B[校验文件]
B --> C{文件校验通过?}
C -->|否| D[返回错误信息]
C -->|是| E{用户已登录?}
E -->|否| F[返回: 用户未登录]
E -->|是| G{用户信息获取成功?}
G -->|否| H[返回: 用户信息获取失败]
G -->|是| I[调用fileService.uploadFile]
I --> J{有文件描述?}
J -->|是| K[更新文件描述]
K --> L[返回FileVO]
J -->|否| L[返回FileVO]
D --> M[结束]
F --> M
H --> M
L --> M
3.2 时序图
sequenceDiagram
autonumber
participant Client as 用户
participant FC as FileController
participant FU as FileUtil
participant Auth as AuthService
participant FS as FileService
Client->>+FC: POST /file/upload
FC->>+FU: validateFile(file)
alt 文件校验失败
FU-->>-FC: 抛出异常
FC-->>Client: 返回错误信息
end
FC->>+Auth: validateToken(token)
Auth-->>-FC: User对象
FC->>+FS: uploadFile(file, userId, deptId, userType, targetDeptId, isPublic)
FS-->>-FC: FileVO
alt 有描述信息
FC->>+FS: updateFileDescription(fileId, description)
FS-->>-FC: void
end
FC-->>-Client: 返回FileVO
4. RAG流式问答 (/file/rag/stream)
4.1 流程图
flowchart TD
A[开始: RAG流式问答] --> B{用户已登录?}
B -->|否| C[返回错误: 用户未登录]
B -->|是| D{用户信息获取成功?}
D -->|否| E[返回错误: 用户信息获取失败]
D -->|是| F[设置collections为public_kb]
F --> G[生成session_id]
G --> H[调用aiChatService.streamFromRagService]
H --> I[返回SseEmitter流式响应]
C --> J[结束]
E --> J
I --> J
4.2 时序图
sequenceDiagram
autonumber
participant Client as 用户
participant FC as FileController
participant Auth as AuthService
participant AI as AiChatService
Client->>+FC: POST /file/rag/stream
FC->>+Auth: validateToken(token)
Auth-->>-FC: User对象
Note over FC: 设置collections<br/>collections.add("public_kb")<br/>生成session_id
FC->>+AI: streamFromRagService(request, userId, deptId)
loop 流式响应
AI-->>Client: SSE事件流
end
AI-->>-FC: SseEmitter
FC-->>-Client: SseEmitter流式响应
5. 删除文件 (/file/{id})
5.1 流程图
flowchart TD
A[开始: 删除文件] --> B[调用fileService.deleteFile]
B --> C[返回成功]
5.2 时序图
sequenceDiagram
autonumber
participant Client as 用户
participant FC as FileController
participant FS as FileService
Client->>+FC: DELETE /file/{id}
FC->>+FS: deleteFile(id)
FS-->>-FC: void
FC-->>-Client: 返回成功
6. 审核通过文件 (/file/audit/approve/{id})
6.1 流程图
flowchart TD
A[开始: 审核通过] --> B{用户已登录?}
B -->|否| C[返回: 用户未登录]
B -->|是| D{用户信息获取成功?}
D -->|否| E[返回: 用户信息获取失败]
D -->|是| F{有管理员权限?}
F -->|否| G[返回: 无权限]
F -->|是| H[调用fileService.approveFile]
H --> I[返回成功]
C --> J[结束]
E --> J
G --> J
I --> J
6.2 时序图
sequenceDiagram
autonumber
participant Client as 管理员
participant FC as FileController
participant Auth as AuthService
participant FS as FileService
Client->>+FC: POST /file/audit/approve/{id}
FC->>+Auth: validateToken(token)
Auth-->>-FC: User对象
Note over FC: 检查userType==1或userType==2
alt 无管理员权限
FC-->>Client: 返回: 无权限执行此操作
else 有管理员权限
FC->>+FS: approveFile(id, userId)
FS-->>-FC: void
FC-->>Client: 返回成功
end
7. 审核拒绝文件 (/file/audit/reject/{id})
7.1 流程图
flowchart TD
A[开始: 审核拒绝] --> B{用户已登录?}
B -->|否| C[返回: 用户未登录]
B -->|是| D{用户信息获取成功?}
D -->|否| E[返回: 用户信息获取失败]
D -->|是| F{有管理员权限?}
F -->|否| G[返回: 无权限]
F -->|是| H[调用fileService.rejectFile]
H --> I[返回成功]
C --> J[结束]
E --> J
G --> J
I --> J
7.2 时序图
sequenceDiagram
autonumber
participant Client as 管理员
participant FC as FileController
participant Auth as AuthService
participant FS as FileService
Client->>+FC: POST /file/audit/reject/{id}
FC->>+Auth: validateToken(token)
Auth-->>-FC: User对象
Note over FC: 检查userType==1或userType==2
alt 无管理员权限
FC-->>Client: 返回: 无权限执行此操作
else 有管理员权限
FC->>+FS: rejectFile(id, userId)
FS-->>-FC: void
FC-->>Client: 返回成功
end
8. 查询待审核文件列表 (/file/audit/pending)
8.1 流程图
flowchart TD
A[开始: 查询待审核列表] --> B{用户已登录?}
B -->|否| C[返回: 用户未登录]
B -->|是| D{用户信息获取成功?}
D -->|否| E[返回: 用户信息获取失败]
D -->|是| F{有管理员权限?}
F -->|否| G[返回: 无权限]
F -->|是| H[调用fileService.getPendingFiles]
H --> I[返回分页结果]
C --> J[结束]
E --> J
G --> J
I --> J
8.2 时序图
sequenceDiagram
autonumber
participant Client as 管理员
participant FC as FileController
participant Auth as AuthService
participant FS as FileService
Client->>+FC: GET /file/audit/pending
FC->>+Auth: validateToken(token)
Auth-->>-FC: User对象
Note over FC: 检查userType==1或userType==2
alt 无管理员权限
FC-->>Client: 返回: 无权限执行此操作
else 有管理员权限
FC->>+FS: getPendingFiles(pageNum, pageSize)
FS-->>-FC: PageResult<FileVO>
FC-->>Client: 返回分页结果
end
9. 更新文件信息 (/file/{id})
9.1 流程图
flowchart TD
A[开始: 更新文件信息] --> B{用户已登录?}
B -->|否| C[返回: 用户未登录]
B -->|是| D{用户信息获取成功?}
D -->|否| E[返回: 用户信息获取失败]
D -->|是| F[获取原文件信息]
F --> G{文件存在?}
G -->|否| H[返回: 文件不存在]
G -->|是| I{isPublic变更?}
I -->|是| J[重建文件路径]
J --> K[移动文件到新路径]
K --> L[更新文件信息]
I -->|否| L[直接更新文件信息]
L --> M[返回更新后的文件]
C --> N[结束]
E --> N
H --> N
M --> N
9.2 时序图
sequenceDiagram
autonumber
participant Client as 用户
participant FC as FileController
participant Auth as AuthService
participant FS as FileService
participant Dept as DepartmentService
participant UM as UserMapper
Client->>+FC: PUT /file/{id}
FC->>+Auth: validateToken(token)
Auth-->>-FC: User对象
FC->>+FS: getFileEntityById(id)
FS-->>-FC: File对象
alt 文件不存在
FC-->>Client: 返回: 文件不存在
end
alt isPublic变更
FC->>+Dept: getDepartmentFullPath(deptId)
Dept-->>-FC: fullPath
Note over FC: rebuildFilePath<br/>创建新路径
FC->>FC: Files.move移动文件
FC->>+FS: updateFileEntity(file)
FS-->>-FC: void
else 仅更新描述
FC->>+FS: updateFileEntity(file)
FS-->>-FC: void
end
FC->>UM: selectById(uploadUserId)
UM-->>FC: User
FC->>FC: convertToVO(file)
FC-->>-Client: 返回FileVO
10. 已禁用的接口
10.1 下载文件 (/file/download/{id})
flowchart TD
A[开始: 下载文件] --> B[直接返回403 Forbidden]
10.2 获取文件内容 (/file/content/{id})
flowchart TD
A[开始: 获取文件内容] --> B[直接返回错误: 文件内容获取功能已禁用]
核心服务调用关系
flowchart LR
subgraph Controller
FC[FileController]
end
subgraph Service
FS[FileService]
AI[AiChatService]
DS[DepartmentService]
end
subgraph Util
FU[FileUtil]
end
subgraph Mapper
UM[UserMapper]
end
subgraph Entity
F[File]
U[User]
D[Department]
FV[FileVO]
end
FC --> FS
FC --> AI
FC --> DS
FC --> FU
FC --> UM
FS --> F
FS --> FV
DS --> D
UM --> U
权限说明
| 接口 | 普通用户 | 部门管理员 | 系统管理员 |
|---|---|---|---|
| 分页查询文件 | ✅ | ✅ | ✅ |
| 查询文件详情 | ✅ | ✅ | ✅ |
| 上传文件 | ✅ | ✅ | ✅ |
| RAG流式问答 | ✅ | ✅ | ✅ |
| 下载文件 | ❌ 已禁用 | ❌ 已禁用 | ❌ 已禁用 |
| 获取文件内容 | ❌ 已禁用 | ❌ 已禁用 | ❌ 已禁用 |
| 获取文件信息 | ✅ | ✅ | ✅ |
| 删除文件 | - | - | - |
| 审核通过 | ❌ | ✅ | ✅ |
| 审核拒绝 | ❌ | ✅ | ✅ |
| 查询待审核列表 | ❌ | ✅ | ✅ |
| 更新文件信息 | ✅ | ✅ | ✅ |