初始化项目代码
This commit is contained in:
522
文件/FileController_流程图.md
Normal file
522
文件/FileController_流程图.md
Normal file
@@ -0,0 +1,522 @@
|
||||
# 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 流程图
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[开始: 分页查询文件] --> B{用户已登录?}
|
||||
B -->|否| C[返回: 用户未登录]
|
||||
B -->|是| D{用户信息获取成功?}
|
||||
D -->|否| E[返回: 用户信息获取失败]
|
||||
D -->|是| F[调用fileService.pageFiles]
|
||||
F --> G[返回分页结果]
|
||||
C --> H[结束]
|
||||
E --> H
|
||||
G --> H
|
||||
```
|
||||
|
||||
### 1.2 时序图
|
||||
|
||||
```mermaid
|
||||
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 流程图
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[开始: 查询文件详情] --> B{用户已登录?}
|
||||
B -->|否| C[返回: 用户未登录]
|
||||
B -->|是| D{用户信息获取成功?}
|
||||
D -->|否| E[返回: 用户信息获取失败]
|
||||
D -->|是| F[调用fileService.getFileById]
|
||||
F --> G[返回文件详情]
|
||||
C --> H[结束]
|
||||
E --> H
|
||||
G --> H
|
||||
```
|
||||
|
||||
### 2.2 时序图
|
||||
|
||||
```mermaid
|
||||
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 流程图
|
||||
|
||||
```mermaid
|
||||
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 时序图
|
||||
|
||||
```mermaid
|
||||
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 流程图
|
||||
|
||||
```mermaid
|
||||
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 时序图
|
||||
|
||||
```mermaid
|
||||
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 流程图
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[开始: 删除文件] --> B[调用fileService.deleteFile]
|
||||
B --> C[返回成功]
|
||||
```
|
||||
|
||||
### 5.2 时序图
|
||||
|
||||
```mermaid
|
||||
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 流程图
|
||||
|
||||
```mermaid
|
||||
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 时序图
|
||||
|
||||
```mermaid
|
||||
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 流程图
|
||||
|
||||
```mermaid
|
||||
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 时序图
|
||||
|
||||
```mermaid
|
||||
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 流程图
|
||||
|
||||
```mermaid
|
||||
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 时序图
|
||||
|
||||
```mermaid
|
||||
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 流程图
|
||||
|
||||
```mermaid
|
||||
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 时序图
|
||||
|
||||
```mermaid
|
||||
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})
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[开始: 下载文件] --> B[直接返回403 Forbidden]
|
||||
```
|
||||
|
||||
### 10.2 获取文件内容 (/file/content/{id})
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[开始: 获取文件内容] --> B[直接返回错误: 文件内容获取功能已禁用]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 核心服务调用关系
|
||||
|
||||
```mermaid
|
||||
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流式问答 | ✅ | ✅ | ✅ |
|
||||
| 下载文件 | ❌ 已禁用 | ❌ 已禁用 | ❌ 已禁用 |
|
||||
| 获取文件内容 | ❌ 已禁用 | ❌ 已禁用 | ❌ 已禁用 |
|
||||
| 获取文件信息 | ✅ | ✅ | ✅ |
|
||||
| 删除文件 | - | - | - |
|
||||
| 审核通过 | ❌ | ✅ | ✅ |
|
||||
| 审核拒绝 | ❌ | ✅ | ✅ |
|
||||
| 查询待审核列表 | ❌ | ✅ | ✅ |
|
||||
| 更新文件信息 | ✅ | ✅ | ✅ |
|
||||
Reference in New Issue
Block a user