286 lines
7.9 KiB
Markdown
286 lines
7.9 KiB
Markdown
# 答题游戏接口说明
|
|
## 一. 说明
|
|
|
|
所有接口均需上传sessionid
|
|
|
|
通用返回JSON结构, 接口Response的数据结构说明只包含data部分
|
|
``` JSON
|
|
{
|
|
"errcode": 0, //0:成功 2: 缺少必要参数(accountid, sessionid) 4: 帐号被封, 5: 帐号未找到 100: 所有未定义的错误
|
|
"errmsg": "", //错误描述
|
|
"data": {}, // 数据
|
|
}
|
|
```
|
|
|
|
|
|
## 二. 客户端接口列表
|
|
|
|
### 1. 获取关卡题目列表
|
|
|
|
1. Method: POST
|
|
2. URI: /api/:accountid/puzzle/list
|
|
|
|
| 字段 | 说明 |
|
|
| -------- | -------------------------------------- |
|
|
| accountid | 帐号id |
|
|
|
|
> POST参数
|
|
|
|
|
|
| 字段 | 说明 |
|
|
| -------- | -------------------------------------- |
|
|
| shop | 店铺id, 比如 607ff59d4a4e16687a3b7079 |
|
|
| level | 关卡id |
|
|
| type | 是否降低难度 0: 普通, 1: 降低难度 |
|
|
|
|
3. Response: JSON
|
|
|
|
```js
|
|
{
|
|
session: "6080f330b9655b5c0467ee5a", // 当前局的id,提交答案时必须上报该字段
|
|
records: [{
|
|
"id": "6080f330b9655b5c0467ee5e", // 题目id
|
|
"title": "“大丈夫为国捐躯,死而无憾!”这话是谁说的?", // 问题
|
|
"answers": [ // 可选答案
|
|
"刘铭传",
|
|
"徐骧",
|
|
"刘步蟾",
|
|
"刘永福"
|
|
],
|
|
"category": "体育-体育", // 类型
|
|
"type": 1, // 题目类型 1: 普通的文字选择题, 2: 图形
|
|
"quality": 1 // 题目难度
|
|
}]
|
|
}
|
|
|
|
```
|
|
|
|
### 2. 上报题目答案
|
|
|
|
1. Method: POST
|
|
2. URI: /api/:accountid/puzzle/answer
|
|
|
|
| 字段 | 说明 |
|
|
| -------- | -------------------------------------- |
|
|
| accountid | 帐号id |
|
|
|
|
> POST参数
|
|
|
|
|
|
| 字段 | 说明 |
|
|
| -------- | -------------------------------------- |
|
|
| id | 题目id |
|
|
| session | 当局的id, 从关卡题目列表中获取 |
|
|
| level | 关卡id |
|
|
| answer | 回答的选项 |
|
|
| type | 回答类型, 0: 正常, 1: 超时 |
|
|
| mode | 游戏类型, 0: 单人, 1: 多人 |
|
|
|
|
3. Response: JSON
|
|
|
|
```js
|
|
{
|
|
result: 1, //答题结果 1: 正确, 0 : 错误
|
|
gameResult: 0, // 当前局游戏结果 0: 未完成, -1: 失败, 1: 胜利
|
|
"stats": { // 当局的状态
|
|
"1111": {
|
|
"answer": [ // 每一题的结果
|
|
1,
|
|
0
|
|
],
|
|
"rightCount": 1, // 答对的数量
|
|
"errorCount": 1, // 答错的数量
|
|
"comboCount": 0, // 当前连续答对的数量
|
|
"maxCombo": 1, // 当局连续答对的最大数量
|
|
"score": 10, // 当局胜利后的得分
|
|
"star": 1, // 当局胜利后获得的星星
|
|
"timeLeft": 1, // 当局剩余时间
|
|
"gameResult": 0 // 当局的游戏结果, 单人的话和上一层gameResult相同
|
|
}
|
|
}
|
|
}
|
|
```
|
|
### 3. 开始匹配
|
|
|
|
1. Method: POST
|
|
2. URI: /api/:accountid/puzzle/match
|
|
|
|
| 字段 | 说明 |
|
|
| -------- | -------------------------------------- |
|
|
| accountid | 帐号id |
|
|
|
|
> POST参数
|
|
|
|
|
|
| 字段 | 说明 |
|
|
| -------- | -------------------------------------- |
|
|
| shop | 店铺id |
|
|
| debug_begin_sec | 游戏于n秒后开始, 最小2秒, 测试用 |
|
|
|
|
3. Response: JSON
|
|
|
|
```js
|
|
{
|
|
"roomId": "mysWNuFnY", //房间id
|
|
"beginTime": 1619689073034, // 游戏的开始时间
|
|
"sessionId": "adfadf" // 当前用户在该房间的sessionId, 如果有该字段, 客户端在joinById的时候须带上该字段
|
|
"session": "608baeea9d0fe70ccd54cf9c" // 当前局的id,提交答案时必须上报该字段
|
|
}
|
|
```
|
|
|
|
### 4. 获取关卡更多题目
|
|
|
|
1. Method: POST
|
|
2. URI: /api/:accountid/puzzle/more
|
|
|
|
| 字段 | 说明 |
|
|
| -------- | -------------------------------------- |
|
|
| accountid | 帐号id |
|
|
|
|
> POST参数
|
|
|
|
|
|
| 字段 | 说明 |
|
|
| -------- | -------------------------------------- |
|
|
| count | 需要获取的数量 |
|
|
| session | 当局的id, 从关卡题目列表中获取 |
|
|
| quality | 难度 |
|
|
|
|
3. Response: JSON
|
|
|
|
```js
|
|
[{
|
|
"id": "6080f330b9655b5c0467ee5e", // 题目id
|
|
"title": "“大丈夫为国捐躯,死而无憾!”这话是谁说的?", // 问题
|
|
"answers": [ // 可选答案
|
|
"刘铭传",
|
|
"徐骧",
|
|
"刘步蟾",
|
|
"刘永福"
|
|
],
|
|
"category": "体育-体育", // 类型
|
|
"type": 1, // 题目类型 1: 普通的文字选择题, 2: 图形
|
|
"quality": 1 // 题目难度
|
|
}]
|
|
```
|
|
|
|
### 5. 获取排行榜
|
|
|
|
1. Method: POST
|
|
2. URI: /api/:accountid/puzzle/rank
|
|
|
|
| 字段 | 说明 |
|
|
| -------- | -------------------------------------- |
|
|
| accountid | 帐号id |
|
|
|
|
> POST参数
|
|
|
|
|
|
| 字段 | 说明 |
|
|
| -------- | -------------------------------------- |
|
|
| shop | 店铺id |
|
|
| level | 关卡id |
|
|
| mode | 游戏类型, 0: 单人, 1: 多人 |
|
|
| skip | 数据开始的偏移值, 从0开始, 默认0 |
|
|
| limit | 每次返回的数量条数, 默认10 |
|
|
|
|
3. Response: JSON
|
|
|
|
```js
|
|
{
|
|
userRank: 1, //当前帐号的排名
|
|
rankList: [
|
|
[
|
|
'account id', 帐号id
|
|
'score', 分数
|
|
'nickname', 昵称(暂无)
|
|
'avatar' 头像
|
|
]
|
|
]
|
|
}
|
|
```
|
|
|
|
### 6. 获取测验题目列表
|
|
|
|
1. Method: POST
|
|
2. URI: /api/:accountid/exam/list
|
|
|
|
| 字段 | 说明 |
|
|
| -------- | -------------------------------------- |
|
|
| accountid | 帐号id |
|
|
|
|
> POST参数
|
|
|
|
|
|
| 字段 | 说明 |
|
|
| -------- | -------------------------------------- |
|
|
| shop | 店铺id, 比如 607ff59d4a4e16687a3b7079 |
|
|
|
|
3. Response: JSON
|
|
|
|
```js
|
|
{
|
|
session: "6080f330b9655b5c0467ee5a", // 当前局的id,提交答案时必须上报该字段
|
|
timeone: 10, // 每题最多回答时间
|
|
records: [{
|
|
"id": "6080f330b9655b5c0467ee5e", // 题目id
|
|
"title": "“大丈夫为国捐躯,死而无憾!”这话是谁说的?", // 问题
|
|
"answers": [ // 可选答案
|
|
"刘铭传",
|
|
"徐骧",
|
|
"刘步蟾",
|
|
"刘永福"
|
|
],
|
|
"category": "体育-体育", // 类型
|
|
"type": 1, // 题目类型 1: 普通的文字选择题, 2: 图形
|
|
"quality": 1 // 题目难度
|
|
}]
|
|
}
|
|
|
|
```
|
|
|
|
### 7. 上报测验题目答案
|
|
|
|
1. Method: POST
|
|
2. URI: /api/:accountid/exam/answer
|
|
|
|
| 字段 | 说明 |
|
|
| -------- | -------------------------------------- |
|
|
| accountid | 帐号id |
|
|
|
|
> POST参数
|
|
|
|
|
|
| 字段 | 说明 |
|
|
| -------- | -------------------------------------- |
|
|
| id | 题目id |
|
|
| session | 当局的id, 从关卡题目列表中获取 |
|
|
| answer | 回答的选项 |
|
|
| type | 回答类型, 0: 正常, 1: 超时 |
|
|
|
|
3. Response: JSON
|
|
|
|
```js
|
|
{
|
|
result: 1, //答题结果 1: 正确, 0 : 错误
|
|
gameResult: 0, // 当前局游戏结果 0: 未完成, -1: 失败, 1: 胜利
|
|
overtime: 0, // 当前回答是否超时 0: 未超时, 1: 超时
|
|
"stats": { // 当局的状态
|
|
"1111": {
|
|
"answer": [ // 每一题的结果
|
|
1,
|
|
0
|
|
],
|
|
"rightCount": 1, // 答对的数量
|
|
"errorCount": 1, // 答错的数量
|
|
"comboCount": 0, // 当前连续答对的数量
|
|
"maxCombo": 1, // 当局连续答对的最大数量
|
|
"score": 10, // 当前得分
|
|
"star": 1, // 当局胜利后获得的星星
|
|
"timeLeft": 1, // 当局剩余时间
|
|
"gameResult": 0, // 当局的游戏结果, 单人的话和上一层gameResult相同
|
|
"timeLast": 1620973155307 //上次回答时间
|
|
}
|
|
}
|
|
}
|
|
``` |