hl-api-changelog/hl-file-service.md
2026-03-17 09:27:35 +08:00

332 行
12 KiB
Markdown

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

# 文件服务 API 文档
**服务**: `hl-file-service`
**接口总数**: 11
## 目录
- **C端文件上传** (3 个接口)
- **文件管理** (8 个接口)
---
## C端文件上传
### `GET` /mp/file/preview-by-url
**文件在线预览**
返回HTML预览页面,小程序通过web-view打开。支持PDF、图片、Office文档
**查询参数**
| 参数 | 类型 | 必填 | 说明 | 示例 |
| --- | --- | --- | --- | --- |
| `url` | `string` | | 文件完整URL | |
---
### `POST` /mp/file/upload
**上传文件C端用户**
小程序端直接上传文件,支持头像、评价图片等场景。groupKey决定存储路径和文件策略,默认为avatar
**查询参数**
| 参数 | 类型 | 必填 | 说明 | 示例 |
| --- | --- | --- | --- | --- |
| `groupKey` | `string` | | 文件分组标识 | |
**响应** `统一响应结果«文件信息»`
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `code` | `int` | | 状态码 |
| `data` | `文件信息` | | 响应数据 |
|   `createdAt` | `string` | | 创建时间 |
|   `fileHash` | `string` | | 文件MD5哈希 |
|   `fileId` | `string` | | 文件ID |
|   `fileName` | `string` | | 文件名 |
|   `fileSize` | `long` | | 文件大小(字节) |
|   `fileType` | `string` | | 文件类型 |
|   `groupKey` | `string` | | 业务分组 |
|   `mimeType` | `string` | | MIME类型 |
|   `ossUrl` | `string` | | OSS地址 |
|   `previewUrl` | `string` | | 预览地址 |
|   `refCount` | `int` | | 引用次数 |
|   `status` | `string` | | 文件状态 |
|   `thumbnailUrl` | `string` | | 缩略图地址 |
| `message` | `string` | | 响应消息 |
---
### `GET` /mp/file/{fileId}/preview
**文件内容流式预览**
流式输出文件内容,设置正确的Content-Type头。用于小程序端通过web-view直接预览图片和PDF等文件。
**路径参数**
| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `fileId` | `integer` | | 文件ID |
---
## 文件管理
### `GET` /admin/file/list
**文件列表(分页)**
支持按文件类型、分组、上传者等条件筛选,按上传时间倒序分页返回
**关联字典**
- file_type文件类型列表筛选+显示)
- file_status文件状态显示
**查询参数**
| 参数 | 类型 | 必填 | 说明 | 示例 |
| --- | --- | --- | --- | --- |
| `endDate` | `string` | | 结束日期 | 2026-12-31 |
| `fileType` | `string` | | 文件类型 | image |
| `groupKey` | `string` | | 业务分组 | scenic |
| `keyword` | `string` | | 搜索关键词 | 风景 |
| `page` | `integer(int32)` | | 页码 | 1 |
| `pageSize` | `integer(int32)` | | 每页条数 | 20 |
| `startDate` | `string` | | 开始日期 | 2026-01-01 |
**响应** `统一响应结果«IPage«文件信息»»`
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `code` | `int` | | 状态码 |
| `data` | `IPage«文件信息»` | | 响应数据 |
|   `current` | `long` | | |
|   `pages` | `long` | | |
|   `records` | `文件信息[]` | | |
|     `createdAt` | `string` | | 创建时间 |
|     `fileHash` | `string` | | 文件MD5哈希 |
|     `fileId` | `string` | | 文件ID |
|     `fileName` | `string` | | 文件名 |
|     `fileSize` | `long` | | 文件大小(字节) |
|     `fileType` | `string` | | 文件类型 |
|     `groupKey` | `string` | | 业务分组 |
|     `mimeType` | `string` | | MIME类型 |
|     `ossUrl` | `string` | | OSS地址 |
|     `previewUrl` | `string` | | 预览地址 |
|     `refCount` | `int` | | 引用次数 |
|     `status` | `string` | | 文件状态 |
|     `thumbnailUrl` | `string` | | 缩略图地址 |
|   `size` | `long` | | |
|   `total` | `long` | | |
| `message` | `string` | | 响应消息 |
---
### `GET` /admin/file/stats
**存储统计**
返回文件总数、总存储空间、各类型文件占比等统计信息
**响应** `统一响应结果«文件统计信息»`
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `code` | `int` | | 状态码 |
| `data` | `文件统计信息` | | 响应数据 |
|   `countByGroup` | `object` | | 按分组统计文件数量 |
|   `countByType` | `object` | | 按类型统计文件数量 |
|   `sizeByType` | `object` | | 按类型统计文件大小 |
|   `totalCount` | `long` | | 文件总数 |
|   `totalSize` | `long` | | 文件总大小(字节) |
| `message` | `string` | | 响应消息 |
---
### `POST` /admin/file/upload/confirm
**确认上传完成**
上传流程第二步前端直传OSS完成后调用此接口,系统验证文件存在性并创建文件记录。支持MD5去重,相同文件不会重复存储
**请求体** `上传确认请求`
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `fileId` | `string` | 是 | 文件ID |
**响应** `统一响应结果«文件信息»`
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `code` | `int` | | 状态码 |
| `data` | `文件信息` | | 响应数据 |
|   `createdAt` | `string` | | 创建时间 |
|   `fileHash` | `string` | | 文件MD5哈希 |
|   `fileId` | `string` | | 文件ID |
|   `fileName` | `string` | | 文件名 |
|   `fileSize` | `long` | | 文件大小(字节) |
|   `fileType` | `string` | | 文件类型 |
|   `groupKey` | `string` | | 业务分组 |
|   `mimeType` | `string` | | MIME类型 |
|   `ossUrl` | `string` | | OSS地址 |
|   `previewUrl` | `string` | | 预览地址 |
|   `refCount` | `int` | | 引用次数 |
|   `status` | `string` | | 文件状态 |
|   `thumbnailUrl` | `string` | | 缩略图地址 |
| `message` | `string` | | 响应消息 |
---
### `POST` /admin/file/upload/token
**请求上传凭证**
上传流程第一步:前端请求上传凭证 → 获取OSS预签名URL和临时凭证 → 前端直传OSS → 调用确认上传接口。凭证有效期有限,过期需重新请求
**请求体** `上传令牌请求`
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `fileHash` | `string` | 是 | 文件MD5哈希 |
| `fileName` | `string` | 是 | 文件名 |
| `fileSize` | `long` | 是 | 文件大小(字节) |
| `forcePresigned` | `boolean` | | 强制使用预签名URL跳过STS分片模式 |
| `groupKey` | `string` | | 业务分组 |
**响应** `统一响应结果«上传令牌信息»`
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `code` | `int` | | 状态码 |
| `data` | `上传令牌信息` | | 响应数据 |
|   `bucket` | `string` | | OSS Bucket名称 |
|   `contentType` | `string` | | 上传时必须使用的Content-Type与预签名URL签名一致 |
|   `expireAt` | `string` | | 过期时间 |
|   `file` | `文件信息` | | 秒传文件信息 |
|     `createdAt` | `string` | | 创建时间 |
|     `fileHash` | `string` | | 文件MD5哈希 |
|     `fileId` | `string` | | 文件ID |
|     `fileName` | `string` | | 文件名 |
|     `fileSize` | `long` | | 文件大小(字节) |
|     `fileType` | `string` | | 文件类型 |
|     `groupKey` | `string` | | 业务分组 |
|     `mimeType` | `string` | | MIME类型 |
|     `ossUrl` | `string` | | OSS地址 |
|     `previewUrl` | `string` | | 预览地址 |
|     `refCount` | `int` | | 引用次数 |
|     `status` | `string` | | 文件状态 |
|     `thumbnailUrl` | `string` | | 缩略图地址 |
|   `fileId` | `string` | | 文件ID |
|   `ossKey` | `string` | | OSS对象Key |
|   `presignedUrl` | `string` | | 预签名上传URL |
|   `region` | `string` | | OSS Region |
|   `stsToken` | `STS临时凭证信息` | | STS临时凭证 |
|     `accessKeyId` | `string` | | AccessKey ID |
|     `accessKeySecret` | `string` | | AccessKey Secret |
|     `expiration` | `string` | | 过期时间 |
|     `securityToken` | `string` | | 安全令牌 |
|   `uploadMode` | `string` | | 上传模式: PRESIGNED_URL/STS_MULTIPART/INSTANT |
| `message` | `string` | | 响应消息 |
---
### `GET` /admin/file/{fileId}
**文件详情**
**关联字典**
- file_type文件类型显示
- file_status文件状态显示
**路径参数**
| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `fileId` | `integer` | | 文件ID |
**响应** `统一响应结果«文件信息»`
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `code` | `int` | | 状态码 |
| `data` | `文件信息` | | 响应数据 |
|   `createdAt` | `string` | | 创建时间 |
|   `fileHash` | `string` | | 文件MD5哈希 |
|   `fileId` | `string` | | 文件ID |
|   `fileName` | `string` | | 文件名 |
|   `fileSize` | `long` | | 文件大小(字节) |
|   `fileType` | `string` | | 文件类型 |
|   `groupKey` | `string` | | 业务分组 |
|   `mimeType` | `string` | | MIME类型 |
|   `ossUrl` | `string` | | OSS地址 |
|   `previewUrl` | `string` | | 预览地址 |
|   `refCount` | `int` | | 引用次数 |
|   `status` | `string` | | 文件状态 |
|   `thumbnailUrl` | `string` | | 缩略图地址 |
| `message` | `string` | | 响应消息 |
---
### `DELETE` /admin/file/{fileId}
**删除文件**
软删除文件记录,如果文件存在引用关系则不允许删除。OSS上的物理文件由定时任务清理
**路径参数**
| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `fileId` | `integer` | | 文件ID |
**响应** `统一响应结果«Void»`
---
### `GET` /admin/file/{fileId}/preview
**文件内容流式预览**
流式输出文件内容,设置正确的Content-Type头,支持浏览器直接预览图片和PDF等文件
**路径参数**
| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `fileId` | `integer` | | 文件ID |
---
### `GET` /admin/file/{fileId}/refs
**文件引用列表**
查看文件被哪些业务实体引用(如景区封面、酒店图片等),用于判断文件是否可安全删除
**路径参数**
| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `fileId` | `integer` | | 文件ID |
**响应** `统一响应结果«List«文件引用信息»»`
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `code` | `int` | | 状态码 |
| `data` | `文件引用信息[]` | | 响应数据 |
|   `bizId` | `string` | | 业务ID |
|   `bizType` | `string` | | 业务类型 |
|   `createdAt` | `string` | | 创建时间 |
|   `fileId` | `string` | | 文件ID |
|   `refId` | `string` | | 引用ID |
| `message` | `string` | | 响应消息 |
---