feat: add file upload workflow

This commit is contained in:
yml
2026-05-22 18:50:32 +08:00
parent 6f915b37d3
commit 236518ade4
22 changed files with 819 additions and 117 deletions
+6 -1
View File
@@ -44,6 +44,8 @@ API 规划以 [项目计划](project-plan.md) 第 10 章为准。
- `GET /api/disputes/{id}`
- `GET /api/wallet/balance`
- `GET /api/wallet/ledger`
- `POST /api/files/upload`
- `GET /api/files/object`
- `GET /api/notifications`
- `POST /api/notifications/{id}/read`
- `GET /api/admin/auth/captcha`
@@ -72,7 +74,10 @@ API 规划以 [项目计划](project-plan.md) 第 10 章为准。
- `GET /api/admin/system-configs`
- `PUT /api/admin/system-configs/{key}`
- `GET /api/admin/audit-logs`
- `GET /api/admin/files/object`
说明:`GET /api/admin/listings` 支持按 `owner_id``status``review_status``limit` 查询商品。`GET /api/admin/wallet/ledger` 支持按 `user_id``order_id``biz_type``limit` 查询最近资金流水。`GET /api/admin/audit-logs` 支持按 `actor_id``action``biz_type``limit` 查询最近审计日志。`/api/admin/*` 当前已使用独立后台登录,后续接入 RBAC 和 Casbin 权限后再按角色收紧访问控制。
说明:`POST /api/listings``PUT /api/listings/{id}` 支持 `screenshot_urls` 数组,用于保存号主上传的账号资产截图地址。`GET /api/admin/listings` 支持按 `owner_id``status``review_status``limit` 查询商品。`GET /api/admin/wallet/ledger` 支持按 `user_id``order_id``biz_type``limit` 查询最近资金流水。`GET /api/admin/audit-logs` 支持按 `actor_id``action``biz_type``limit` 查询最近审计日志。`/api/admin/*` 当前已使用独立后台登录,后续接入 RBAC 和 Casbin 权限后再按角色收紧访问控制。
文件上传说明:`POST /api/files/upload` 使用 `multipart/form-data`,文件字段名为 `file`,可选 `scene``listing``handoff``dispute``realname``avatar`;当前允许 10MB 内的 JPG、PNG、WebP 和 PDF。返回的 `url` 为后端代理访问地址。后台查看私有文件使用 `GET /api/admin/files/object?key=...`
订单超时扫描任务为后端内部任务,不暴露公开 API;超时阈值通过 `/api/admin/system-configs` 调整。
+12 -1
View File
@@ -24,6 +24,7 @@
- 发布租号前必须登录并完成实名认证。
- 一期创建发布时同时创建 `game_accounts``rental_listings`
- 哈夫币数量是号主手动填报值,不代表实时值。
- 号主可上传账号资产截图,地址保存在 `game_accounts.screenshot_urls`,最多保留 12 个。
- 当前提交审核会进入 `review_status = pending`,由后台商品审核通过后才上架。
- 后台审核通过后,发布状态变为 `published`,审核状态变为 `approved`,账号状态变为 `published`
- 后台审核拒绝后,发布保留为草稿,审核状态变为 `rejected`,拒绝原因写入 `review_reason`
@@ -69,6 +70,16 @@
- 每个超时动作只推进一次状态,避免重复通知。
- 超时动作会给相关用户写入站内信,并以 `system` 身份写入 `audit_logs`
## 开发态文件上传
- 文件上传接口为 `/api/files/upload`,文件访问接口为 `/api/files/object`
- 开发环境使用 MinIO,配置项包括 `STORAGE_ENDPOINT``STORAGE_BUCKET``STORAGE_ACCESS_KEY_ID``STORAGE_SECRET_ACCESS_KEY`
- 当前支持上传 10MB 内的 JPG、PNG、WebP 和 PDF。
- 上传场景包括账号截图、交接附件、申诉证据、实名回执引用和头像等。
- 账号资产截图已接入发布页面,商品审核和商品详情后台可通过后台文件代理查看。
- 申诉证据已在订单详情页接入上传,上传成功后会把文件访问地址追加到证据列表。
- 文件访问通过后端代理读取私有对象,后续接 OSS/COS 时保持业务接口不变。
## 开发态钱包账务
- 钱包账务当前为模拟流水,不代表真实支付、充值或提现。
@@ -151,7 +162,7 @@
- 商品管理接口为 `/api/admin/listings`,前端页面为 `/admin/listings`
- 后台可查看全量商品、号主、账号 ID、区服、平台、段位、哈夫币、时租、押金、商品状态和审核状态。
- 当前支持按号主 ID、商品状态、审核状态和查询条数筛选。
- 商品详情页为 `/admin/listings/:id`,支持查看完整账号、价格、租期审核信息。
- 商品详情页为 `/admin/listings/:id`,支持查看完整账号、价格、租期审核信息和账号资产截图
- 后台可对非租赁中的商品执行强制下架和标记异常。
- 强制下架会将商品和账号状态改为 `offline`,标记异常会将商品和账号状态改为 `abnormal`
- 强制下架和标记异常必须填写原因,写入 `audit_logs`,并通知号主。