1858 lines
35 KiB
Markdown
1858 lines
35 KiB
Markdown
# GameGroup API 文档
|
||
|
||
## 📚 文档说明
|
||
|
||
本文档记录 GameGroup 后端所有 API 接口的详细信息,包括请求方法、参数、响应格式等。
|
||
|
||
**基础信息**:
|
||
- **Base URL**: `http://localhost:3000/api`
|
||
- **认证方式**: Bearer Token (JWT)
|
||
- **内容类型**: `application/json`
|
||
- **Swagger 文档**: `http://localhost:3000/docs`
|
||
|
||
**版本**: v1.0
|
||
**更新时间**: 2025-12-19
|
||
|
||
---
|
||
|
||
## 📋 目录
|
||
|
||
- [1. 认证相关 (Auth)](#1-认证相关-auth)
|
||
- [2. 用户管理 (Users)](#2-用户管理-users)
|
||
- [3. 小组管理 (Groups)](#3-小组管理-groups)
|
||
- [4. 游戏库 (Games)](#4-游戏库-games)
|
||
- [5. 预约管理 (Appointments)](#5-预约管理-appointments)
|
||
- [6. 账目管理 (Ledgers)](#6-账目管理-ledgers)
|
||
- [7. 排班助手 (Schedules)](#7-排班助手-schedules)
|
||
- [8. 系统接口 (System)](#8-系统接口-system)
|
||
- [9. 黑名单管理 (Blacklist)](#9-黑名单管理-blacklist)
|
||
- [10. 荣誉墙 (Honors)](#10-荣誉墙-honors)
|
||
- [11. 资产管理 (Assets)](#11-资产管理-assets)
|
||
- [12. 积分系统 (Points)](#12-积分系统-points)
|
||
- [13. 竞猜系统 (Bets)](#13-竞猜系统-bets)
|
||
|
||
---
|
||
|
||
## 🔐 认证说明
|
||
|
||
### 获取 Token
|
||
|
||
大部分接口需要在请求头中携带 JWT Token:
|
||
|
||
```http
|
||
Authorization: Bearer <your_access_token>
|
||
```
|
||
|
||
### Token 刷新
|
||
|
||
当 access_token 过期时,使用 refresh_token 获取新的 token:
|
||
|
||
```http
|
||
POST /api/auth/refresh
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"refreshToken": "your_refresh_token"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 📦 统一响应格式
|
||
|
||
### 成功响应
|
||
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
// 业务数据
|
||
},
|
||
"timestamp": 1703001234567
|
||
}
|
||
```
|
||
|
||
### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 10001,
|
||
"message": "用户不存在",
|
||
"data": null,
|
||
"timestamp": 1703001234567
|
||
}
|
||
```
|
||
|
||
### 错误码对照表
|
||
|
||
| 错误码 | 说明 |
|
||
|--------|------|
|
||
| 0 | 成功 |
|
||
| 1 | 未知错误 |
|
||
| 2 | 参数错误 |
|
||
| 10001 | 用户不存在 |
|
||
| 10002 | 密码错误 |
|
||
| 10003 | 用户已存在 |
|
||
| 10004 | Token无效 |
|
||
| 10005 | Token已过期 |
|
||
| 10006 | 未授权 |
|
||
| 20001 | 小组不存在 |
|
||
| 20002 | 小组已满员 |
|
||
| 20003 | 无权限操作 |
|
||
| 20004 | 小组数量超限 |
|
||
| 20005 | 加入小组数量超限 |
|
||
| 20006 | 已在该小组中 |
|
||
| 20007 | 不在该小组中 |
|
||
| 30001 | 预约不存在 |
|
||
| 30002 | 预约已满 |
|
||
| 30003 | 预约已关闭 |
|
||
| 30004 | 已加入预约 |
|
||
| 30005 | 未加入预约 |
|
||
| 40001 | 游戏不存在 |
|
||
| 40002 | 游戏已存在 |
|
||
| 90001 | 服务器错误 |
|
||
| 90002 | 数据库错误 |
|
||
|
||
---
|
||
|
||
## 1. 认证相关 (Auth)
|
||
|
||
### 1.1 用户注册
|
||
|
||
**接口**: `POST /api/auth/register`
|
||
**认证**: 无需认证
|
||
**描述**: 新用户注册
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"username": "john_doe",
|
||
"password": "Password123!",
|
||
"email": "john@example.com",
|
||
"phone": "13800138000"
|
||
}
|
||
```
|
||
|
||
**参数说明**:
|
||
| 参数 | 类型 | 必填 | 说明 |
|
||
|------|------|------|------|
|
||
| username | string | 是 | 用户名,至少3个字符 |
|
||
| password | string | 是 | 密码,至少6个字符 |
|
||
| email | string | 否 | 邮箱地址 |
|
||
| phone | string | 否 | 手机号 |
|
||
|
||
**注意**: email 和 phone 至少填写一个
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"user": {
|
||
"id": "uuid",
|
||
"username": "john_doe",
|
||
"email": "john@example.com",
|
||
"phone": "13800138000",
|
||
"avatar": null,
|
||
"isMember": false
|
||
},
|
||
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
||
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 1.2 用户登录
|
||
|
||
**接口**: `POST /api/auth/login`
|
||
**认证**: 无需认证
|
||
**描述**: 用户登录,支持用户名/邮箱/手机号
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"account": "john_doe",
|
||
"password": "Password123!"
|
||
}
|
||
```
|
||
|
||
**参数说明**:
|
||
| 参数 | 类型 | 必填 | 说明 |
|
||
|------|------|------|------|
|
||
| account | string | 是 | 用户名/邮箱/手机号 |
|
||
| password | string | 是 | 密码 |
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"user": {
|
||
"id": "uuid",
|
||
"username": "john_doe",
|
||
"email": "john@example.com",
|
||
"phone": "13800138000",
|
||
"avatar": "https://...",
|
||
"role": "user",
|
||
"isMember": false,
|
||
"memberExpireAt": null
|
||
},
|
||
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
||
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 1.3 刷新令牌
|
||
|
||
**接口**: `POST /api/auth/refresh`
|
||
**认证**: 无需认证
|
||
**描述**: 使用 refresh token 获取新的 access token
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
|
||
}
|
||
```
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
||
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 2. 用户管理 (Users)
|
||
|
||
### 2.1 获取当前用户信息
|
||
|
||
**接口**: `GET /api/users/me`
|
||
**认证**: 需要
|
||
**描述**: 获取当前登录用户的详细信息
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"id": "uuid",
|
||
"username": "john_doe",
|
||
"email": "john@example.com",
|
||
"phone": "13800138000",
|
||
"avatar": "https://...",
|
||
"role": "user",
|
||
"isMember": false,
|
||
"memberExpireAt": null,
|
||
"lastLoginAt": "2025-12-19T10:00:00.000Z",
|
||
"createdAt": "2025-12-01T10:00:00.000Z"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 2.2 获取用户信息
|
||
|
||
**接口**: `GET /api/users/:id`
|
||
**认证**: 需要
|
||
**描述**: 获取指定用户的信息
|
||
|
||
**路径参数**:
|
||
| 参数 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | string | 用户ID |
|
||
|
||
**成功响应**: 同 2.1
|
||
|
||
---
|
||
|
||
### 2.3 更新用户信息
|
||
|
||
**接口**: `PUT /api/users/me`
|
||
**认证**: 需要
|
||
**描述**: 更新当前用户的资料
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"email": "newemail@example.com",
|
||
"phone": "13900139000",
|
||
"avatar": "https://..."
|
||
}
|
||
```
|
||
|
||
**参数说明**:
|
||
| 参数 | 类型 | 必填 | 说明 |
|
||
|------|------|------|------|
|
||
| email | string | 否 | 邮箱地址 |
|
||
| phone | string | 否 | 手机号 |
|
||
| avatar | string | 否 | 头像URL |
|
||
|
||
**成功响应**: 返回更新后的用户信息
|
||
|
||
---
|
||
|
||
### 2.4 修改密码
|
||
|
||
**接口**: `PUT /api/users/me/password`
|
||
**认证**: 需要
|
||
**描述**: 修改当前用户的密码
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"oldPassword": "OldPassword123!",
|
||
"newPassword": "NewPassword123!"
|
||
}
|
||
```
|
||
|
||
**参数说明**:
|
||
| 参数 | 类型 | 必填 | 说明 |
|
||
|------|------|------|------|
|
||
| oldPassword | string | 是 | 原密码 |
|
||
| newPassword | string | 是 | 新密码,至少6个字符 |
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"message": "密码修改成功"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 3. 小组管理 (Groups)
|
||
|
||
### 3.1 创建小组
|
||
|
||
**接口**: `POST /api/groups`
|
||
**认证**: 需要
|
||
**描述**: 创建新小组
|
||
|
||
**权限限制**:
|
||
- 非会员:最多创建 1 个小组
|
||
- 会员:最多创建 10 个小组
|
||
- 子组:仅会员可创建
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"name": "王者荣耀固定队",
|
||
"description": "每晚8点开黑",
|
||
"avatar": "https://...",
|
||
"type": "normal",
|
||
"parentId": null,
|
||
"maxMembers": 50
|
||
}
|
||
```
|
||
|
||
**参数说明**:
|
||
| 参数 | 类型 | 必填 | 说明 |
|
||
|------|------|------|------|
|
||
| name | string | 是 | 小组名称 |
|
||
| description | string | 否 | 小组描述 |
|
||
| avatar | string | 否 | 小组头像 |
|
||
| type | string | 否 | 类型:normal/guild,默认normal |
|
||
| parentId | string | 否 | 父组ID(创建子组时使用) |
|
||
| maxMembers | number | 否 | 最大成员数,默认50,范围2-500 |
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"id": "uuid",
|
||
"name": "王者荣耀固定队",
|
||
"description": "每晚8点开黑",
|
||
"avatar": "https://...",
|
||
"ownerId": "uuid",
|
||
"type": "normal",
|
||
"parentId": null,
|
||
"announcement": null,
|
||
"maxMembers": 50,
|
||
"currentMembers": 1,
|
||
"isActive": true,
|
||
"createdAt": "2025-12-19T10:00:00.000Z",
|
||
"members": [
|
||
{
|
||
"id": "uuid",
|
||
"userId": "uuid",
|
||
"username": "john_doe",
|
||
"avatar": "https://...",
|
||
"nickname": null,
|
||
"role": "owner",
|
||
"joinedAt": "2025-12-19T10:00:00.000Z"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 3.2 加入小组
|
||
|
||
**接口**: `POST /api/groups/join`
|
||
**认证**: 需要
|
||
**描述**: 加入已存在的小组
|
||
|
||
**权限限制**:
|
||
- 非会员:最多加入 3 个小组
|
||
- 会员:无限制
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"groupId": "uuid",
|
||
"nickname": "小明"
|
||
}
|
||
```
|
||
|
||
**参数说明**:
|
||
| 参数 | 类型 | 必填 | 说明 |
|
||
|------|------|------|------|
|
||
| groupId | string | 是 | 小组ID |
|
||
| nickname | string | 否 | 组内昵称 |
|
||
|
||
**成功响应**: 返回小组详情
|
||
|
||
---
|
||
|
||
### 3.3 获取我的小组列表
|
||
|
||
**接口**: `GET /api/groups/my`
|
||
**认证**: 需要
|
||
**描述**: 获取当前用户加入的所有小组
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": [
|
||
{
|
||
"id": "uuid",
|
||
"name": "王者荣耀固定队",
|
||
"description": "每晚8点开黑",
|
||
"avatar": "https://...",
|
||
"ownerId": "uuid",
|
||
"currentMembers": 5,
|
||
"maxMembers": 50,
|
||
"myRole": "admin",
|
||
"myNickname": "小明",
|
||
"createdAt": "2025-12-19T10:00:00.000Z"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 3.4 获取小组详情
|
||
|
||
**接口**: `GET /api/groups/:id`
|
||
**认证**: 需要
|
||
**描述**: 获取指定小组的详细信息
|
||
|
||
**路径参数**:
|
||
| 参数 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | string | 小组ID |
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"id": "uuid",
|
||
"name": "王者荣耀固定队",
|
||
"description": "每晚8点开黑",
|
||
"avatar": "https://...",
|
||
"ownerId": "uuid",
|
||
"announcement": "本周末团建活动!",
|
||
"maxMembers": 50,
|
||
"currentMembers": 5,
|
||
"members": [
|
||
{
|
||
"id": "uuid",
|
||
"userId": "uuid",
|
||
"username": "john_doe",
|
||
"avatar": "https://...",
|
||
"nickname": "队长",
|
||
"role": "owner",
|
||
"joinedAt": "2025-12-19T10:00:00.000Z"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 3.5 更新小组信息
|
||
|
||
**接口**: `PUT /api/groups/:id`
|
||
**认证**: 需要
|
||
**权限**: 组长、管理员
|
||
**描述**: 更新小组的基本信息
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"name": "王者荣耀固定队 Pro",
|
||
"description": "新的描述",
|
||
"announcement": "重要通知",
|
||
"maxMembers": 60
|
||
}
|
||
```
|
||
|
||
**成功响应**: 返回更新后的小组详情
|
||
|
||
---
|
||
|
||
### 3.6 设置成员角色
|
||
|
||
**接口**: `PUT /api/groups/:id/members/role`
|
||
**认证**: 需要
|
||
**权限**: 仅组长
|
||
**描述**: 设置小组成员的角色
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"userId": "uuid",
|
||
"role": "admin"
|
||
}
|
||
```
|
||
|
||
**参数说明**:
|
||
| 参数 | 类型 | 必填 | 说明 |
|
||
|------|------|------|------|
|
||
| userId | string | 是 | 成员用户ID |
|
||
| role | string | 是 | 角色:owner/admin/member |
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"message": "角色设置成功"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 3.7 踢出成员
|
||
|
||
**接口**: `DELETE /api/groups/:id/members`
|
||
**认证**: 需要
|
||
**权限**: 组长、管理员
|
||
**描述**: 将成员移出小组
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"userId": "uuid"
|
||
}
|
||
```
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"message": "成员已移除"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 3.8 退出小组
|
||
|
||
**接口**: `DELETE /api/groups/:id/leave`
|
||
**认证**: 需要
|
||
**描述**: 退出已加入的小组
|
||
|
||
**注意**: 组长不能直接退出,需先转让组长或解散小组
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"message": "退出成功"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 3.9 解散小组
|
||
|
||
**接口**: `DELETE /api/groups/:id`
|
||
**认证**: 需要
|
||
**权限**: 仅组长
|
||
**描述**: 解散小组(小组变为不活跃状态)
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"message": "小组已解散"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 4. 游戏库 (Games)
|
||
|
||
### 4.1 获取游戏列表
|
||
|
||
**接口**: `GET /api/games`
|
||
**认证**: 无需认证
|
||
**描述**: 获取游戏列表,支持搜索和筛选
|
||
|
||
**查询参数**:
|
||
| 参数 | 类型 | 必填 | 说明 |
|
||
|------|------|------|------|
|
||
| keyword | string | 否 | 搜索关键词(匹配游戏名称和描述) |
|
||
| platform | string | 否 | 游戏平台筛选 |
|
||
| tag | string | 否 | 游戏标签筛选 |
|
||
| page | number | 否 | 页码,默认1 |
|
||
| limit | number | 否 | 每页数量,默认10 |
|
||
|
||
**示例请求**:
|
||
```
|
||
GET /api/games?keyword=王者&page=1&limit=10
|
||
```
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"items": [
|
||
{
|
||
"id": "game-uuid-1",
|
||
"name": "王者荣耀",
|
||
"coverUrl": "https://example.com/cover.jpg",
|
||
"description": "5v5公平竞技游戏",
|
||
"maxPlayers": 10,
|
||
"minPlayers": 1,
|
||
"platform": "iOS/Android",
|
||
"tags": ["MOBA", "5v5"],
|
||
"isActive": true,
|
||
"createdAt": "2024-01-01T00:00:00Z",
|
||
"updatedAt": "2024-01-01T00:00:00Z"
|
||
}
|
||
],
|
||
"total": 50,
|
||
"page": 1,
|
||
"limit": 10,
|
||
"totalPages": 5
|
||
}
|
||
}
|
||
```
|
||
|
||
### 4.2 获取游戏详情
|
||
|
||
**接口**: `GET /api/games/:id`
|
||
**认证**: 无需认证
|
||
**描述**: 获取指定游戏的详细信息
|
||
|
||
**路径参数**:
|
||
| 参数 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | string | 游戏ID |
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"id": "game-uuid-1",
|
||
"name": "王者荣耀",
|
||
"coverUrl": "https://example.com/cover.jpg",
|
||
"description": "5v5公平竞技游戏",
|
||
"maxPlayers": 10,
|
||
"minPlayers": 1,
|
||
"platform": "iOS/Android",
|
||
"tags": ["MOBA", "5v5"],
|
||
"isActive": true,
|
||
"createdAt": "2024-01-01T00:00:00Z",
|
||
"updatedAt": "2024-01-01T00:00:00Z"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 4.3 创建游戏
|
||
|
||
**接口**: `POST /api/games`
|
||
**认证**: 需要JWT认证
|
||
**描述**: 创建新游戏(管理员功能)
|
||
|
||
**请求头**:
|
||
```
|
||
Authorization: Bearer <access_token>
|
||
```
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"name": "王者荣耀",
|
||
"coverUrl": "https://example.com/cover.jpg",
|
||
"description": "5v5公平竞技游戏",
|
||
"maxPlayers": 10,
|
||
"minPlayers": 1,
|
||
"platform": "iOS/Android",
|
||
"tags": ["MOBA", "5v5"]
|
||
}
|
||
```
|
||
|
||
**参数说明**:
|
||
| 参数 | 类型 | 必填 | 说明 |
|
||
|------|------|------|------|
|
||
| name | string | 是 | 游戏名称 |
|
||
| coverUrl | string | 否 | 游戏封面URL |
|
||
| description | string | 否 | 游戏描述 |
|
||
| maxPlayers | number | 是 | 最大玩家数,最小为1 |
|
||
| minPlayers | number | 否 | 最小玩家数,默认为1 |
|
||
| platform | string | 否 | 游戏平台 |
|
||
| tags | array | 否 | 游戏标签 |
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"id": "game-uuid-1",
|
||
"name": "王者荣耀",
|
||
"coverUrl": "https://example.com/cover.jpg",
|
||
"description": "5v5公平竞技游戏",
|
||
"maxPlayers": 10,
|
||
"minPlayers": 1,
|
||
"platform": "iOS/Android",
|
||
"tags": ["MOBA", "5v5"],
|
||
"isActive": true,
|
||
"createdAt": "2024-01-01T00:00:00Z",
|
||
"updatedAt": "2024-01-01T00:00:00Z"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 4.4 更新游戏信息
|
||
|
||
**接口**: `PUT /api/games/:id`
|
||
**认证**: 需要JWT认证
|
||
**描述**: 更新游戏信息(管理员功能)
|
||
|
||
**请求头**:
|
||
```
|
||
Authorization: Bearer <access_token>
|
||
```
|
||
|
||
**路径参数**:
|
||
| 参数 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | string | 游戏ID |
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"name": "王者荣耀",
|
||
"description": "更新后的描述",
|
||
"maxPlayers": 12,
|
||
"tags": ["MOBA", "5v5", "竞技"]
|
||
}
|
||
```
|
||
|
||
**参数说明**: 所有参数均为可选,只更新提供的字段
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"id": "game-uuid-1",
|
||
"name": "王者荣耀",
|
||
"coverUrl": "https://example.com/cover.jpg",
|
||
"description": "更新后的描述",
|
||
"maxPlayers": 12,
|
||
"minPlayers": 1,
|
||
"platform": "iOS/Android",
|
||
"tags": ["MOBA", "5v5", "竞技"],
|
||
"isActive": true,
|
||
"createdAt": "2024-01-01T00:00:00Z",
|
||
"updatedAt": "2024-01-02T00:00:00Z"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 4.5 删除游戏
|
||
|
||
**接口**: `DELETE /api/games/:id`
|
||
**认证**: 需要JWT认证
|
||
**描述**: 删除游戏(软删除,管理员功能)
|
||
|
||
**请求头**:
|
||
```
|
||
Authorization: Bearer <access_token>
|
||
```
|
||
|
||
**路径参数**:
|
||
| 参数 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | string | 游戏ID |
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"message": "游戏已删除"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 4.6 获取热门游戏
|
||
|
||
**接口**: `GET /api/games/popular`
|
||
**认证**: 无需认证
|
||
**描述**: 获取热门游戏列表
|
||
|
||
**查询参数**:
|
||
| 参数 | 类型 | 必填 | 说明 |
|
||
|------|------|------|------|
|
||
| limit | number | 否 | 数量限制,默认10 |
|
||
|
||
**示例请求**:
|
||
```
|
||
GET /api/games/popular?limit=5
|
||
```
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": [
|
||
{
|
||
"id": "game-uuid-1",
|
||
"name": "王者荣耀",
|
||
"coverUrl": "https://example.com/cover.jpg",
|
||
"description": "5v5公平竞技游戏",
|
||
"maxPlayers": 10,
|
||
"minPlayers": 1,
|
||
"platform": "iOS/Android",
|
||
"tags": ["MOBA", "5v5"]
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 4.7 获取所有游戏标签
|
||
|
||
**接口**: `GET /api/games/tags`
|
||
**认证**: 无需认证
|
||
**描述**: 获取系统中所有游戏标签
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": ["MOBA", "5v5", "竞技", "FPS", "RPG"]
|
||
}
|
||
```
|
||
|
||
### 4.8 获取所有游戏平台
|
||
|
||
**接口**: `GET /api/games/platforms`
|
||
**认证**: 无需认证
|
||
**描述**: 获取系统中所有游戏平台
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": ["iOS/Android", "PC", "PS5", "Xbox"]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 5. 预约管理 (Appointments)
|
||
|
||
### 5.1 创建预约
|
||
|
||
**接口**: `POST /api/appointments`
|
||
**认证**: 需要JWT认证
|
||
**描述**: 创建新预约
|
||
|
||
**请求头**:
|
||
```
|
||
Authorization: Bearer <access_token>
|
||
```
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"groupId": "group-uuid",
|
||
"gameId": "game-uuid",
|
||
"title": "今晚开黑",
|
||
"description": "一起排位冲分",
|
||
"startTime": "2024-01-20T19:00:00Z",
|
||
"endTime": "2024-01-20T23:00:00Z",
|
||
"maxParticipants": 5
|
||
}
|
||
```
|
||
|
||
**参数说明**:
|
||
| 参数 | 类型 | 必填 | 说明 |
|
||
|------|------|------|------|
|
||
| groupId | string | 是 | 小组ID |
|
||
| gameId | string | 是 | 游戏ID |
|
||
| title | string | 是 | 预约标题 |
|
||
| description | string | 否 | 预约描述 |
|
||
| startTime | string | 是 | 预约开始时间(ISO 8601格式) |
|
||
| endTime | string | 否 | 预约结束时间(ISO 8601格式) |
|
||
| maxParticipants | number | 是 | 最大参与人数 |
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"id": "appointment-uuid",
|
||
"groupId": "group-uuid",
|
||
"gameId": "game-uuid",
|
||
"initiatorId": "user-uuid",
|
||
"title": "今晚开黑",
|
||
"description": "一起排位冲分",
|
||
"startTime": "2024-01-20T19:00:00Z",
|
||
"endTime": "2024-01-20T23:00:00Z",
|
||
"maxParticipants": 5,
|
||
"currentParticipants": 1,
|
||
"status": "open",
|
||
"participantCount": 1,
|
||
"isParticipant": true,
|
||
"isCreator": true,
|
||
"isFull": false,
|
||
"group": {...},
|
||
"game": {...},
|
||
"participants": [...]
|
||
}
|
||
}
|
||
```
|
||
|
||
### 5.2 获取预约列表
|
||
|
||
**接口**: `GET /api/appointments`
|
||
**认证**: 需要JWT认证
|
||
**描述**: 获取预约列表,支持筛选
|
||
|
||
**请求头**:
|
||
```
|
||
Authorization: Bearer <access_token>
|
||
```
|
||
|
||
**查询参数**:
|
||
| 参数 | 类型 | 必填 | 说明 |
|
||
|------|------|------|------|
|
||
| groupId | string | 否 | 小组ID筛选 |
|
||
| gameId | string | 否 | 游戏ID筛选 |
|
||
| status | string | 否 | 状态筛选(open/full/cancelled/finished) |
|
||
| startTime | string | 否 | 开始时间筛选 |
|
||
| endTime | string | 否 | 结束时间筛选 |
|
||
| page | number | 否 | 页码,默认1 |
|
||
| limit | number | 否 | 每页数量,默认10 |
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"items": [...],
|
||
"total": 50,
|
||
"page": 1,
|
||
"limit": 10,
|
||
"totalPages": 5
|
||
}
|
||
}
|
||
```
|
||
|
||
### 5.3 获取我参与的预约
|
||
|
||
**接口**: `GET /api/appointments/my`
|
||
**认证**: 需要JWT认证
|
||
**描述**: 获取当前用户参与的所有预约
|
||
|
||
**请求头**:
|
||
```
|
||
Authorization: Bearer <access_token>
|
||
```
|
||
|
||
**查询参数**:
|
||
| 参数 | 类型 | 必填 | 说明 |
|
||
|------|------|------|------|
|
||
| status | string | 否 | 状态筛选 |
|
||
| page | number | 否 | 页码 |
|
||
| limit | number | 否 | 每页数量 |
|
||
|
||
**成功响应**: 同获取预约列表
|
||
|
||
### 5.4 获取预约详情
|
||
|
||
**接口**: `GET /api/appointments/:id`
|
||
**认证**: 需要JWT认证
|
||
**描述**: 获取指定预约的详细信息
|
||
|
||
**请求头**:
|
||
```
|
||
Authorization: Bearer <access_token>
|
||
```
|
||
|
||
**路径参数**:
|
||
| 参数 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | string | 预约ID |
|
||
|
||
**成功响应**: 同创建预约
|
||
|
||
### 5.5 加入预约
|
||
|
||
**接口**: `POST /api/appointments/join`
|
||
**认证**: 需要JWT认证
|
||
**描述**: 加入指定预约
|
||
|
||
**请求头**:
|
||
```
|
||
Authorization: Bearer <access_token>
|
||
```
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"appointmentId": "appointment-uuid"
|
||
}
|
||
```
|
||
|
||
**成功响应**: 返回更新后的预约详情
|
||
|
||
**错误响应**:
|
||
- 30002: 预约已满
|
||
- 30004: 已加入预约
|
||
- 20007: 不在该小组中
|
||
|
||
### 5.6 退出预约
|
||
|
||
**接口**: `DELETE /api/appointments/:id/leave`
|
||
**认证**: 需要JWT认证
|
||
**描述**: 退出指定预约(创建者不能退出)
|
||
|
||
**请求头**:
|
||
```
|
||
Authorization: Bearer <access_token>
|
||
```
|
||
|
||
**路径参数**:
|
||
| 参数 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | string | 预约ID |
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"message": "已退出预约"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 5.7 更新预约
|
||
|
||
**接口**: `PUT /api/appointments/:id`
|
||
**认证**: 需要JWT认证
|
||
**描述**: 更新预约信息(需要创建者或小组管理员权限)
|
||
|
||
**请求头**:
|
||
```
|
||
Authorization: Bearer <access_token>
|
||
```
|
||
|
||
**路径参数**:
|
||
| 参数 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | string | 预约ID |
|
||
|
||
**请求体**: 所有字段均为可选
|
||
```json
|
||
{
|
||
"title": "更新后的标题",
|
||
"description": "更新后的描述",
|
||
"startTime": "2024-01-20T20:00:00Z",
|
||
"maxParticipants": 6,
|
||
"status": "full"
|
||
}
|
||
```
|
||
|
||
**成功响应**: 返回更新后的预约详情
|
||
|
||
### 5.8 确认预约
|
||
|
||
**接口**: `PUT /api/appointments/:id/confirm`
|
||
**认证**: 需要JWT认证
|
||
**描述**: 确认预约(需要创建者或小组管理员权限)
|
||
|
||
**请求头**:
|
||
```
|
||
Authorization: Bearer <access_token>
|
||
```
|
||
|
||
**路径参数**:
|
||
| 参数 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | string | 预约ID |
|
||
|
||
**成功响应**: 返回更新后的预约详情
|
||
|
||
### 5.9 完成预约
|
||
|
||
**接口**: `PUT /api/appointments/:id/complete`
|
||
**认证**: 需要JWT认证
|
||
**描述**: 标记预约为已完成(需要创建者或小组管理员权限)
|
||
|
||
**请求头**:
|
||
```
|
||
Authorization: Bearer <access_token>
|
||
```
|
||
|
||
**路径参数**:
|
||
| 参数 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | string | 预约ID |
|
||
|
||
**成功响应**: 返回更新后的预约详情
|
||
|
||
### 5.10 取消预约
|
||
|
||
**接口**: `DELETE /api/appointments/:id`
|
||
**认证**: 需要JWT认证
|
||
**描述**: 取消预约(需要创建者或小组管理员权限)
|
||
|
||
**请求头**:
|
||
```
|
||
Authorization: Bearer <access_token>
|
||
```
|
||
|
||
**路径参数**:
|
||
| 参数 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | string | 预约ID |
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"message": "预约已取消"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 6. 账目管理 (Ledgers)
|
||
|
||
### 6.1 创建账目
|
||
|
||
**接口**: `POST /ledgers`
|
||
|
||
**描述**: 为小组创建账目记录
|
||
|
||
**请求参数**:
|
||
```json
|
||
{
|
||
"groupId": "group-uuid",
|
||
"amount": 100.00,
|
||
"type": "income",
|
||
"category": "聚餐AA",
|
||
"description": "周五聚餐",
|
||
"remark": "备注信息"
|
||
}
|
||
```
|
||
|
||
**响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"data": {
|
||
"id": "ledger-uuid",
|
||
"groupId": "group-uuid",
|
||
"creatorId": "user-uuid",
|
||
"amount": "100.00",
|
||
"type": "income",
|
||
"category": "聚餐AA",
|
||
"description": "周五聚餐",
|
||
"remark": "备注信息",
|
||
"createdAt": "2025-12-19T10:00:00.000Z"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 6.2 获取账目列表
|
||
|
||
**接口**: `GET /ledgers`
|
||
|
||
**描述**: 查询小组账目记录,支持筛选和分页
|
||
|
||
**查询参数**:
|
||
- `groupId`: 小组ID(必填)
|
||
- `type`: 账目类型(income/expense)
|
||
- `category`: 类别
|
||
- `startDate`: 开始日期
|
||
- `endDate`: 结束日期
|
||
- `page`: 页码(默认1)
|
||
- `limit`: 每页数量(默认10)
|
||
|
||
**响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"data": {
|
||
"items": [...],
|
||
"total": 50,
|
||
"page": 1,
|
||
"limit": 10
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 6.3 获取账目详情
|
||
|
||
**接口**: `GET /ledgers/:id`
|
||
|
||
**响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"data": {
|
||
"id": "ledger-uuid",
|
||
"group": {...},
|
||
"creator": {...},
|
||
"amount": "100.00",
|
||
"type": "income",
|
||
"category": "聚餐AA"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 6.4 更新账目
|
||
|
||
**接口**: `PUT /ledgers/:id`
|
||
|
||
**权限**: 创建者或管理员
|
||
|
||
**请求参数**:
|
||
```json
|
||
{
|
||
"amount": 150.00,
|
||
"category": "新类别",
|
||
"description": "更新后的描述"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 6.5 删除账目
|
||
|
||
**接口**: `DELETE /ledgers/:id`
|
||
|
||
**权限**: 创建者或管理员
|
||
|
||
---
|
||
|
||
### 6.6 月度统计
|
||
|
||
**接口**: `GET /ledgers/statistics/monthly`
|
||
|
||
**查询参数**:
|
||
- `groupId`: 小组ID(必填)
|
||
- `year`: 年份(默认当前年)
|
||
- `month`: 月份(默认当前月)
|
||
|
||
**响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"data": {
|
||
"totalIncome": "500.00",
|
||
"totalExpense": "300.00",
|
||
"balance": "200.00",
|
||
"incomeByCategory": {
|
||
"聚餐AA": "300.00",
|
||
"场地费": "200.00"
|
||
},
|
||
"expenseByCategory": {
|
||
"桌游购买": "300.00"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 6.7 层级统计
|
||
|
||
**接口**: `GET /ledgers/statistics/hierarchical/:groupId`
|
||
|
||
**描述**: 汇总父小组和所有子小组的账目统计
|
||
|
||
**响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"data": {
|
||
"totalIncome": "1000.00",
|
||
"totalExpense": "600.00",
|
||
"balance": "400.00",
|
||
"groupStatistics": [
|
||
{
|
||
"groupId": "parent-group",
|
||
"groupName": "总小组",
|
||
"income": "500.00",
|
||
"expense": "300.00"
|
||
},
|
||
{
|
||
"groupId": "child-group-1",
|
||
"groupName": "子小组1",
|
||
"income": "500.00",
|
||
"expense": "300.00"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 7. 排班助手 (Schedules)
|
||
|
||
### 7.1 创建排班
|
||
|
||
**接口**: `POST /schedules`
|
||
|
||
**描述**: 为小组提交个人空闲时间
|
||
|
||
**请求参数**:
|
||
```json
|
||
{
|
||
"groupId": "group-uuid",
|
||
"title": "本周空闲时间",
|
||
"description": "可以参加活动的时间段",
|
||
"availableSlots": [
|
||
{
|
||
"startTime": "2024-01-20T19:00:00Z",
|
||
"endTime": "2024-01-20T23:00:00Z",
|
||
"note": "晚上空闲"
|
||
},
|
||
{
|
||
"startTime": "2024-01-21T14:00:00Z",
|
||
"endTime": "2024-01-21T18:00:00Z",
|
||
"note": "周日下午"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
**响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"data": {
|
||
"id": "schedule-uuid",
|
||
"userId": "user-uuid",
|
||
"groupId": "group-uuid",
|
||
"title": "本周空闲时间",
|
||
"availableSlots": [...],
|
||
"createdAt": "2025-12-19T10:00:00.000Z"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 7.2 获取排班列表
|
||
|
||
**接口**: `GET /schedules`
|
||
|
||
**查询参数**:
|
||
- `groupId`: 小组ID(可选,不填则返回用户所在所有小组排班)
|
||
- `userId`: 用户ID(可选,筛选特定用户)
|
||
- `startTime`: 开始时间
|
||
- `endTime`: 结束时间
|
||
- `page`: 页码
|
||
- `limit`: 每页数量
|
||
|
||
**响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"data": {
|
||
"items": [
|
||
{
|
||
"id": "schedule-uuid",
|
||
"user": {...},
|
||
"group": {...},
|
||
"title": "本周空闲时间",
|
||
"availableSlots": [...]
|
||
}
|
||
],
|
||
"total": 10,
|
||
"page": 1,
|
||
"limit": 10
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 7.3 查找共同空闲时间
|
||
|
||
**接口**: `POST /schedules/common-slots`
|
||
|
||
**描述**: 计算小组成员的共同空闲时间段,推荐最佳活动时间
|
||
|
||
**请求参数**:
|
||
```json
|
||
{
|
||
"groupId": "group-uuid",
|
||
"startTime": "2024-01-20T00:00:00Z",
|
||
"endTime": "2024-01-27T23:59:59Z",
|
||
"minParticipants": 3
|
||
}
|
||
```
|
||
|
||
**响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"data": {
|
||
"commonSlots": [
|
||
{
|
||
"startTime": "2024-01-20T19:00:00Z",
|
||
"endTime": "2024-01-20T21:30:00Z",
|
||
"participants": ["user-1", "user-2", "user-3", "user-4"],
|
||
"participantCount": 4
|
||
},
|
||
{
|
||
"startTime": "2024-01-21T14:00:00Z",
|
||
"endTime": "2024-01-21T17:00:00Z",
|
||
"participants": ["user-1", "user-2", "user-3"],
|
||
"participantCount": 3
|
||
}
|
||
],
|
||
"totalParticipants": 5,
|
||
"minParticipants": 3
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 7.4 获取排班详情
|
||
|
||
**接口**: `GET /schedules/:id`
|
||
|
||
**响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"data": {
|
||
"id": "schedule-uuid",
|
||
"user": {...},
|
||
"group": {...},
|
||
"title": "本周空闲时间",
|
||
"description": "可以参加活动的时间段",
|
||
"availableSlots": [...]
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 7.5 更新排班
|
||
|
||
**接口**: `PUT /schedules/:id`
|
||
|
||
**权限**: 仅创建者
|
||
|
||
**请求参数**:
|
||
```json
|
||
{
|
||
"title": "更新后的标题",
|
||
"availableSlots": [...]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 7.6 删除排班
|
||
|
||
**接口**: `DELETE /schedules/:id`
|
||
|
||
**权限**: 仅创建者
|
||
|
||
**响应**:
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"data": {
|
||
"message": "排班已删除"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 8. 系统接口 (System)
|
||
|
||
### 8.1 系统欢迎信息
|
||
|
||
**接口**: `GET /api`
|
||
**认证**: 无需认证
|
||
**描述**: 系统欢迎信息
|
||
|
||
**成功响应**:
|
||
```json
|
||
"Hello World!"
|
||
```
|
||
|
||
---
|
||
|
||
### 8.2 健康检查
|
||
|
||
**接口**: `GET /api/health`
|
||
**认证**: 无需认证
|
||
**描述**: 检查服务健康状态
|
||
|
||
**成功响应**:
|
||
```json
|
||
{
|
||
"status": "ok",
|
||
"timestamp": "2025-12-19T10:00:00.000Z"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 9. 黑名单管理 (Blacklist)
|
||
|
||
### 9.1 提交举报
|
||
|
||
**接口**: `POST /api/blacklist`
|
||
**认证**: 需要
|
||
**描述**: 提交黑名单举报请求
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"type": "USER",
|
||
"targetGameId": "123456",
|
||
"reason": "恶意挂机",
|
||
"evidence": "https://..."
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 9.2 查询黑名单列表
|
||
|
||
**接口**: `GET /api/blacklist`
|
||
**认证**: 需要
|
||
**描述**: 查询黑名单记录
|
||
|
||
**查询参数**:
|
||
| 参数 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| page | number | 页码 |
|
||
| limit | number | 每页数量 |
|
||
| status | string | 状态 (PENDING/APPROVED/REJECTED) |
|
||
| type | string | 类型 (USER/GUILD) |
|
||
|
||
---
|
||
|
||
### 9.3 检查游戏ID
|
||
|
||
**接口**: `GET /api/blacklist/check/:targetGameId`
|
||
**认证**: 需要
|
||
**描述**: 检查指定游戏ID是否在黑名单中
|
||
|
||
---
|
||
|
||
### 9.4 审核黑名单 (管理员)
|
||
|
||
**接口**: `PATCH /api/blacklist/:id/review`
|
||
**认证**: 需要 (管理员)
|
||
**描述**: 审核黑名单举报
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"status": "APPROVED",
|
||
"reviewNote": "证据确凿"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 10. 荣誉墙 (Honors)
|
||
|
||
### 10.1 创建荣誉记录
|
||
|
||
**接口**: `POST /api/honors`
|
||
**认证**: 需要
|
||
**描述**: 创建新的荣誉记录
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"groupId": "uuid",
|
||
"title": "年度最佳新人",
|
||
"description": "表现优异",
|
||
"type": "YEARLY",
|
||
"year": 2025,
|
||
"recipientIds": ["uuid1", "uuid2"]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 10.2 获取荣誉时间轴
|
||
|
||
**接口**: `GET /api/honors/timeline/:groupId`
|
||
**认证**: 需要
|
||
**描述**: 获取小组荣誉时间轴数据
|
||
|
||
---
|
||
|
||
## 11. 资产管理 (Assets)
|
||
|
||
### 11.1 创建资产 (管理员)
|
||
|
||
**接口**: `POST /api/assets`
|
||
**认证**: 需要 (管理员)
|
||
**描述**: 录入新资产
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"groupId": "uuid",
|
||
"name": "公会备用账号",
|
||
"type": "ACCOUNT",
|
||
"identifier": "account_001",
|
||
"value": 500
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 11.2 查询小组资产
|
||
|
||
**接口**: `GET /api/assets/group/:groupId`
|
||
**认证**: 需要
|
||
**描述**: 查询指定小组的所有资产
|
||
|
||
---
|
||
|
||
### 11.3 借用资产
|
||
|
||
**接口**: `POST /api/assets/:id/borrow`
|
||
**认证**: 需要
|
||
**描述**: 登记借用资产
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"expectedReturnDate": "2026-02-01T00:00:00.000Z",
|
||
"note": "临时借用"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 11.4 归还资产
|
||
|
||
**接口**: `POST /api/assets/:id/return`
|
||
**认证**: 需要
|
||
**描述**: 登记归还资产
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"condition": "GOOD",
|
||
"note": "已归还,无损坏"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 11.5 查询流转记录
|
||
|
||
**接口**: `GET /api/assets/:id/logs`
|
||
**认证**: 需要
|
||
**描述**: 查询资产的借还历史记录
|
||
|
||
---
|
||
|
||
## 12. 积分系统 (Points)
|
||
|
||
### 12.1 添加积分记录 (管理员)
|
||
|
||
**接口**: `POST /api/points`
|
||
**认证**: 需要 (管理员)
|
||
**描述**: 手动增加或扣除积分
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"userId": "uuid",
|
||
"groupId": "uuid",
|
||
"amount": 100,
|
||
"type": "ACTIVITY",
|
||
"reason": "参加周赛奖励"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 12.2 查询积分余额
|
||
|
||
**接口**: `GET /api/points/balance/:userId/:groupId`
|
||
**认证**: 需要
|
||
**描述**: 查询用户在指定小组的积分情况
|
||
|
||
---
|
||
|
||
### 12.3 小组积分排行榜
|
||
|
||
**接口**: `GET /api/points/ranking/:groupId`
|
||
**认证**: 需要
|
||
**描述**: 获取小组积分排行
|
||
|
||
---
|
||
|
||
## 13. 竞猜系统 (Bets)
|
||
|
||
### 13.1 创建竞猜
|
||
|
||
**接口**: `POST /api/bets`
|
||
**认证**: 需要
|
||
**描述**: 基于预约创建竞猜活动
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"appointmentId": "uuid",
|
||
"title": "本场比赛谁获得MVP?",
|
||
"options": ["PlayerA", "PlayerB"],
|
||
"minBet": 10,
|
||
"maxBet": 1000,
|
||
"deadline": "2026-01-20T20:00:00.000Z"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 13.2 结算竞猜 (管理员)
|
||
|
||
**接口**: `POST /api/bets/appointment/:appointmentId/settle`
|
||
**认证**: 需要 (管理员)
|
||
**描述**: 结算竞猜结果并分发奖励
|
||
|
||
**请求体**:
|
||
```json
|
||
{
|
||
"winningOption": "PlayerA",
|
||
"note": "结算说明"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 📝 更新日志
|
||
|
||
### 2026-01-11
|
||
- ✅ 补充 Blacklist 模块 API
|
||
- ✅ 补充 Honors 模块 API
|
||
- ✅ 补充 Assets 模块 API
|
||
- ✅ 补充 Points 模块 API
|
||
- ✅ 补充 Bets 模块 API
|
||
- ✅ 修正 System 接口描述
|
||
|
||
### 2025-12-19
|
||
- ✅ 初始版本发布
|
||
- ✅ 认证模块 API(3个接口)
|
||
- ✅ 用户模块 API(4个接口)
|
||
- ✅ 小组模块 API(9个接口)
|
||
- ✅ 游戏库模块 API(8个接口)
|
||
- ✅ 预约模块 API(10个接口)
|
||
- ✅ 账目模块 API(6个接口)
|
||
- ✅ 排班助手模块 API(6个接口)
|
||
|
||
---
|
||
|
||
## 🔗 相关文档
|
||
|
||
- [开发步骤文档](开发步骤文档.md)
|
||
- [修改记录](修改记录.md)
|
||
- [README](README.md)
|
||
- [Swagger 在线文档](http://localhost:3000/docs)
|