This commit is contained in:
yaoyanwei
2025-08-26 15:01:46 +08:00
parent 8be2bf9dec
commit 43803f024b

211
ladder-api.md Normal file
View File

@@ -0,0 +1,211 @@
# 天梯系统API接口文档
## 概述
天梯系统API提供与玩家天梯等级、排行榜相关的接口。系统支持基于星星数的等级升降机制和王者分数机制。
## 接口列表
### 1. 获取排行榜
#### 接口地址
```
GET /ladder/leaderboard
```
#### 请求参数
#### 响应数据
```json
[
{
"playerId": "string", // 玩家ID
"username": "string", // 玩家用户名
"avatar": "string", // 玩家头像
"rankId": "number", // 天梯等级ID
"rankScore": "number", // 王者分数(如果适用)
"stars": "number", // 星星数(如果适用)
"totalWins": "number", // 总胜利场次
"position": "number" // 排名位置
}
]
```
#### 响应示例
```json
[
{
"playerId": "5f1a2b3c4d5e6f7g8h9i0j1k",
"username": "Player1",
"avatar": "avatar_01",
"rankId": 5,
"rankScore": 1250,
"stars": 0,
"totalWins": 128,
"position": 1
}
]
```
### 2. 获取玩家排名位置
#### 接口地址
```
GET /ladder/position/:playerId
```
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------ | ---- | ------ |
| playerId | string | 是 | 玩家ID |
#### 响应数据
```json
{
"position": "number" // 玩家在排行榜中的位置未上榜为null
}
```
#### 响应示例
```json
{
"position": 5
}
```
### 3. 获取玩家天梯信息
#### 接口地址
```
GET /ladder/rank/:playerId
```
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------ | ---- | ------ |
| playerId | string | 是 | 玩家ID |
#### 响应数据
对于开启王者分数机制的玩家:
```json
{
"rankName": "string", // 天梯阶级名称
"level": "number", // 天梯等级
"score": "number", // 王者分数
"isRankScore": "boolean" // 是否为王者分数机制
}
```
对于普通星星机制的玩家:
```json
{
"rankName": "string", // 天梯阶级名称
"level": "number", // 天梯等级
"stars": "number", // 当前星星数
"maxStars": "number", // 最大星星数
"isRankScore": "boolean" // 是否为王者分数机制
}
```
#### 响应示例
```json
{
"rankName": "Gold",
"level": 5,
"score": 1250,
"isRankScore": true
}
```
### 4. 获取所有天梯配置
#### 接口地址
```
GET /ladder/config
```
#### 请求参数
#### 响应数据
```json
[
{
"Id": "number", // 天梯ID
"Rank": "number", // 天梯阶级
"RankName": "string", // 天梯阶级名称
"Level": "number", // 天梯等级
"BeginStar": "number", // 升级后初始星星数
"RankDownStar": "number", // 降级后初始星星数
"MaxStar": "number", // 当前等级的星星上限
"WinGetStar": "number", // 胜利时增加的星星数
"ExtraGetStar": "number", // 连胜时额外增加的星星数
"LoseLostStar": "number", // 是否失败时减少星星1为是0为否
"LoseRankDown": "number", // 是否失败导致等级下降1为是0为否
"RankScore": "number", // 是否开启天梯分数机制1为开启
"AITimes": "number", // 等待多久后改为对战机器人
"AIDeck": "string", // 机器人卡组的RANK配置
"WaitTime": "number", // 扩大匹配范围的时间间隔
"MaxWaitTime": "number" // 王者等级匹配时,扩大分数范围的间隔
}
]
```
#### 响应示例
```json
[
{
"Id": 1,
"Rank": 1,
"RankName": "Bronze",
"Level": 1,
"BeginStar": 0,
"RankDownStar": 0,
"MaxStar": 5,
"WinGetStar": 1,
"ExtraGetStar": 0,
"LoseLostStar": 1,
"LoseRankDown": 0,
"RankScore": 0,
"AITimes": 30,
"AIDeck": "bronze_ai",
"WaitTime": 10,
"MaxWaitTime": 20
}
]
```
## 错误响应格式
所有接口在出错时都会返回以下格式的错误信息:
```json
{
"error": "string" // 错误描述
}
```
## 天梯系统机制说明
### 星星机制
- 玩家通过胜利获得星星,失败可能失去星星
- 当星星数达到当前等级上限时,玩家升级
- 当星星数为0且再次失败时可能降级
### 王者分数机制
- 当玩家达到特定等级后开启王者分数机制
- 不再使用星星和等级升降,天梯等级固定
- 玩家首次进入该等级时获得1000分的初始天梯分数
- 胜利加分规则:
- 若对手分数 > 玩家分数:加分 = MIN(对手分数 / 玩家分数, 3) * 20
- 若玩家分数 >= 对手分数加20分
- 若对手未开启天梯分数加20分
- 失败减分规则:
- 若失败方已有天梯分数减20分最低为0分
- 若失败方未开启天梯分数根据配置决定是否扣除1颗星星
### 排行榜规则
- 展示天梯等级最高的前100名玩家
- 排名优先级:天梯等级 > 天梯分数 > 当前天梯星星数 > 玩家胜场数
- 每天的00:00、12:00、18:00、22:00四个时间点刷新排行榜