Browse Source

feat: 文档更新

BaiLuoYan 4 days ago
parent
commit
e4341a2697
1 changed files with 46 additions and 0 deletions
  1. 46 0
      README.md

+ 46 - 0
README.md

@@ -1069,6 +1069,26 @@ Content-Type: application/json
 | ------ | ------ | ------ | ------ |
 | id | int64 | 是 | 产品 ID |
 
+#### POST /api/product/fetchInitialCredentials — 获取产品初始凭证
+
+安全地获取产品创建时生成的初始凭证(appKey、appSecret、初始管理员账号密码)。采用一次性 ticket 机制,凭证仅可获取一次。
+
+**调用场景:**
+
+- **产品创建后获取凭证**:管理后台创建产品成功后,前端使用返回的 ticket 调用此接口获取完整凭证并展示给超管。ticket 使用后立即销毁,无法重复获取
+
+**安全约束:**
+
+- 仅超级管理员可调用
+- ticket 存储在 Redis 中,TTL 为 5 分钟,过期后无法获取
+- ticket 采用原子性 GetDel 操作,确保一次性消费,防止重放攻击
+
+| 字段 | 类型 | 必填 | 说明 |
+| ------ | ------ | ------ | ------ |
+| ticket | string | 是 | 创建产品时返回的一次性凭证票据 |
+
+**响应 data:** `{"appKey": "...", "appSecret": "...", "adminUser": "...", "adminPassword": "..."}`
+
 ### 部门管理(仅超级管理员)
 
 #### POST /api/dept/create — 创建部门
@@ -1530,6 +1550,32 @@ Content-Type: application/json
 
 **响应 data:** `{"total": N, "list": [MemberItem...]}`(含 userId、username、nickname、memberType、status 等)
 
+### 文件上传(需鉴权)
+
+#### POST /api/minio/upload — 上传文件
+
+将文件上传到 MinIO 对象存储,返回访问 URL 和文件路径。支持按 `fileType` 分类存储到不同目录,自动去重(基于 MD5)。
+
+**调用场景:**
+
+- **用户头像上传**:用户在个人设置页面上传头像图片,`fileType` 传 `avatar`
+- **其他业务文件**:根据配置的 `fileType` 上传不同类型的文件到对应目录
+
+**请求格式:** `multipart/form-data`(非 JSON),最大 32MB
+
+| 字段 | 类型 | 必填 | 说明 |
+| ------ | ------ | ------ | ------ |
+| file | file | 是 | 上传的文件 |
+| fileType | string | 是 | 文件类型标识(需在服务端 Minio 配置中预定义,如 `avatar`) |
+
+**安全约束:**
+
+- `fileType` 必须在服务端配置的允许列表中,未配置的类型拒绝上传
+- 可按 `fileType` 配置允许的 Content-Type 白名单(如头像仅允许 `image/jpeg`、`image/png`)
+- 基于 MD5 去重:相同文件不会重复存储,直接返回已有文件的信息
+
+**响应 data:** `{"url": "https://...", "path": "avatar/2026/05/13/xxx.png", "md5": "...", "size": 102400}`
+
 ---
 
 ## gRPC 接口文档