地点(机厅)
大约 6 分钟
根 URL:
/place/{cityName}/{placeName}
GET 查询地点详情
查询地点详情
子 URI:
根据地点名(或别名)(可模糊查找)获取地点信息,查询参数 queryType 有四种值可选,对应四种查询结果:
common: 地点基本信息、公告、总卡数、分游戏卡数forLogs: 地点基本信息、卡数修改日志、公告forAliases: 地点全称,该地点的全部别名forGames: 地点全称,该地点已配置的游戏及游戏别名,不返回卡数
Parameters
| 参数类型 | 字段名 | 数据类型 | 是否必须 | 说明 |
|---|---|---|---|---|
| Path | cityName | String | 是 | 准确省市全称 |
| Path | placeName | String | 是 | 模糊地点名/别名 |
| Query | queryType | String | 是 | 查询类型:common、forLogs、forAliases 或 forGames |
| Query | gameName | Array of String | 否 | 仅 common 与 forLogs 支持。按游戏名或游戏别名过滤 |
gameName 支持多值;当传入时:
cardCount表示被选中游戏的总卡数placeGames只返回被选中的游戏项- 匹配逻辑支持游戏名和游戏别名,如
mai、chu - 对
forLogs:- 仅保留命中所选游戏的日志
- 每条日志的
operateCount与afterCount会按命中的gameLogs明细重新计算
Responses
queryType=common
| 字段名 | 数据类型 | 说明 |
|---|---|---|
| id | Integer | 地点 ID |
| name | String | 地点全称 |
| updateTime | Datetime | 更新时间 |
| cardCount | Integer | 当前总排卡数或过滤后的总卡数 |
| isUpdated | Boolean | 经每天初始化后是否再次更新过 |
| announcements | Array | 公告 |
| > id | Long | 公告 ID |
| > uploaderId | Long | 发布者 QQ 号 |
| > uploaderGroupId | Long | 发布者 QQ 群号 |
| > content | String | 公告内容 |
| > createTime | Datetime | 公告发布时间 |
| > expireTime | Datetime | 公告过期时间 |
| placeGames | Array | 分游戏卡数 |
| > id | Long | 地点-游戏关联 ID |
| > game | Object | 游戏信息 |
| >> id | Long | 游戏 ID |
| >> name | String | 游戏名称 |
| >> order | Integer | 游戏顺序,值越小优先级越高 |
| > cardCount | Integer | 该游戏的排卡数 |
queryType=forLogs
| 字段名 | 数据类型 | 说明 |
|---|---|---|
| id | Integer | 地点 ID |
| name | String | 地点全称 |
| logs | Array | 卡数修改日志 |
| > id | Long | 日志 ID |
| > createTime | Datetime | 日志创建时间 |
| > uploaderId | Long | 修改者 QQ 号 |
| > uploaderGroupId | Long | 修改者 QQ 群号 |
| > operateCount | Integer | 修改数量 |
| > afterCount | Integer | 修改后总卡数;过滤时表示命中游戏的修改后总卡数 |
| > gameLogs | Array | 分游戏日志明细 |
| >> id | Long | 分游戏日志明细 ID |
| >> game | Object | 游戏信息 |
| >>> id | Long | 游戏 ID |
| >>> name | String | 游戏名称 |
| >>> order | Integer | 游戏顺序 |
| >> operateCount | Integer | 该游戏本次修改数量 |
| >> afterCount | Integer | 该游戏修改后的卡数 |
| announcements | Array | 公告 |
| > id | Long | 公告 ID |
| > uploaderId | Long | 发布者 QQ 号 |
| > uploaderGroupId | Long | 发布者 QQ 群号 |
| > content | String | 公告内容 |
| > createTime | Datetime | 公告发布时间 |
| > expireTime | Datetime | 公告过期时间 |
queryType=forAliases
| 字段名 | 数据类型 | 说明 |
|---|---|---|
| id | Integer | 地点 ID |
| name | String | 地点全称 |
| aliases | Array | 别名 |
| > id | Long | 别名 ID |
| > name | String | 别名名称 |
queryType=forGames
| 字段名 | 数据类型 | 说明 |
|---|---|---|
| id | Integer | 地点 ID |
| name | String | 地点全称 |
| placeGames | Array | 该地点已配置的游戏 |
| > id | Long | 地点-游戏关联 ID |
| > game | Object | 游戏信息 |
| >> id | Long | 游戏 ID |
| >> name | String | 游戏名称 |
| >> order | Integer | 游戏顺序 |
| >> aliases | Array | 游戏别名 |
| >>> id | Long | 游戏别名 ID |
| >>> name | String | 游戏别名 |
Examples
200 OK: GET: /place/安徽省合肥市/泛时空?queryType=common
{
"id": 114,
"name": "泛时空合肥庐阳店",
"updateTime": "2026-03-28T13:44:52",
"cardCount": 4,
"isUpdated": true,
"announcements": [
{
"id": 114514,
"uploaderId": 12345678,
"uploaderGroupId": 87654321,
"content": "1p坏了,只能单刷",
"createTime": "2026-03-21T15:00:26",
"expireTime": "2026-03-28T04:00:00"
}
],
"placeGames": [
{
"id": 1,
"game": {
"id": 1,
"name": "舞萌",
"order": 0
},
"cardCount": 1
},
{
"id": 3,
"game": {
"id": 2,
"name": "中二节奏",
"order": 1
},
"cardCount": 3
}
]
}
200 OK: GET: /place/安徽省合肥市/泛时空?queryType=common&gameName=mai
{
"id": 114,
"name": "泛时空合肥庐阳店",
"updateTime": "2026-03-28T13:44:52",
"cardCount": 1,
"isUpdated": true,
"announcements": [
{
"id": 114514,
"uploaderId": 12345678,
"uploaderGroupId": 87654321,
"content": "1p坏了,只能单刷",
"createTime": "2026-03-21T15:00:26",
"expireTime": "2026-03-28T04:00:00"
}
],
"placeGames": [
{
"id": 1,
"game": {
"id": 1,
"name": "舞萌",
"order": 0
},
"cardCount": 1
}
]
}
200 OK: GET: /place/安徽省合肥市/泛时空?queryType=forLogs
{
"id": 114,
"name": "泛时空合肥庐阳店",
"updateTime": "2026-03-29T18:00:06",
"isUpdated": true,
"logs": [
{
"id": 281,
"createTime": "2026-03-29T18:00:05",
"uploaderId": 12345678,
"uploaderGroupId": 87654321,
"operateCount": 3,
"afterCount": 3,
"gameLogs": [
{
"id": 277,
"game": {
"id": 1,
"name": "舞萌",
"order": 0
},
"operateCount": 1,
"afterCount": 1
},
{
"id": 278,
"game": {
"id": 2,
"name": "中二节奏",
"order": 1
},
"operateCount": 2,
"afterCount": 2
}
]
},
{
"id": 282,
"createTime": "2026-03-29T18:00:06",
"uploaderId": 12345678,
"uploaderGroupId": 87654321,
"operateCount": -1,
"afterCount": 2,
"gameLogs": [
{
"id": 277,
"game": {
"id": 1,
"name": "舞萌",
"order": 0
},
"operateCount": 1,
"afterCount": 2
},
{
"id": 278,
"game": {
"id": 2,
"name": "中二节奏",
"order": 1
},
"operateCount": -2,
"afterCount": 0
}
]
}
],
"announcements": [
{
"id": 114515,
"uploaderId": 12345678,
"uploaderGroupId": 87654321,
"content": "今天 20:00 后可能断电",
"createTime": "2026-03-28T12:00:00",
"expireTime": "2026-04-04T04:00:00"
}
]
}
200 OK: GET: /place/安徽省合肥市/泛时空?queryType=forLogs&gameName=mai
{
"id": 114,
"name": "泛时空合肥庐阳店",
"updateTime": "2026-03-29T18:00:06",
"isUpdated": true,
"logs": [
{
"id": 281,
"createTime": "2026-03-29T18:00:05",
"uploaderId": 12345678,
"uploaderGroupId": 87654321,
"operateCount": 1,
"afterCount": 1,
"gameLogs": [
{
"id": 277,
"game": {
"id": 1,
"name": "舞萌",
"order": 0
},
"operateCount": 1,
"afterCount": 1
}
]
},
{
"id": 282,
"createTime": "2026-03-29T18:00:06",
"uploaderId": 12345678,
"uploaderGroupId": 87654321,
"operateCount": 1,
"afterCount": 2,
"gameLogs": [
{
"id": 277,
"game": {
"id": 1,
"name": "舞萌",
"order": 0
},
"operateCount": 1,
"afterCount": 2
}
]
}
],
"announcements": [
{
"id": 114515,
"uploaderId": 12345678,
"uploaderGroupId": 87654321,
"content": "今天 20:00 后可能断电",
"createTime": "2026-03-28T12:00:00",
"expireTime": "2026-04-04T04:00:00"
}
]
}
200 OK: GET: /place/安徽省合肥市/泛时空?queryType=forAliases
{
"id": 114,
"name": "泛时空合肥庐阳店",
"aliases": [
{
"id": 92,
"name": "宜家"
},
{
"id": 317,
"name": "泛"
}
]
}
200 OK: GET: /place/安徽省合肥市/泛时空?queryType=forGames
{
"id": 114,
"name": "泛时空合肥庐阳店",
"updateTime": "2026-03-28T13:44:52",
"isUpdated": true,
"placeGames": [
{
"id": 1,
"game": {
"id": 1,
"name": "舞萌",
"order": 0,
"aliases": [
{
"id": 11,
"name": "mai"
},
{
"id": 12,
"name": "m"
}
]
}
},
{
"id": 3,
"game": {
"id": 2,
"name": "中二节奏",
"order": 1,
"aliases": [
{
"id": 21,
"name": "中二"
},
{
"id": 22,
"name": "chu"
}
]
}
}
]
}
PUT 更新地点卡数
更新地点卡数
子 URI:
根据地点名(或别名)(可模糊查找)更新卡数并登记在日志中。
Parameters
| 参数类型 | 字段名 | 数据类型 | 是否必须 | 说明 |
|---|---|---|---|---|
| Path | cityName | String | 是 | 准确省市全称 |
| Path | placeName | String | 是 | 模糊地点名/别名 |
| Body | uploaderId | Integer | 是 | 更新者 QQ 号 |
| Body | uploaderGroupId | Integer | 是 | 更新者 QQ 群号 |
| Body | updateExpression | String | 否 | 总卡数更新表达式,形如 +1、-2、=8 |
| Body | gameUpdateMap | Map<String, Object> | 否 | 按游戏更新卡数的映射,和 updateExpression 二选一 |
| Body | > {gameName} | String(key) | 是 | key 为游戏名或游戏别名,例如 mai、chu |
| Body | >> updateExpression | String | 是 | 该游戏的更新表达式,形如 +1、-2、=8 |
规则说明:
updateExpression与gameUpdateMap必须二选一,不能都传入也不能都不传入。- 默认不传游戏时,写接口只写默认游戏“舞萌”
- 当使用总
updateExpression时:+n:优先增加默认游戏-n:优先减少默认游戏,再按游戏order从小到大继续减少=n:按当前总数与目标值的差额自动在各游戏间调整
- 当使用
gameUpdateMap时,只会更新被指定的游戏
Responses
响应为 Place 对象。
| 字段名 | 数据类型 | 说明 |
|---|---|---|
| id | Integer | 地点 ID |
| name | String | 地点全称 |
| updateTime | Datetime | 更新时间 |
| cardCount | Integer | 当前总排卡数 |
| isUpdated | Boolean | 经每天初始化后是否再次更新过 |
| announcements | Array | 公告 |
| > id | Long | 公告 ID |
| > uploaderId | Long | 发布者 QQ 号 |
| > uploaderGroupId | Long | 发布者 QQ 群号 |
| > content | String | 公告内容 |
| > createTime | Datetime | 公告发布时间 |
| > expireTime | Datetime | 公告过期时间 |
| placeGames | Array | 分游戏卡数 |
| > id | Long | 地点-游戏关联 ID |
| > game | Object | 游戏信息 |
| >> id | Long | 游戏 ID |
| >> name | String | 游戏名称 |
| >> order | Integer | 游戏顺序,值越小优先级越高 |
| > cardCount | Integer | 该游戏的排卡数 |
Examples
200 OK: PUT: /place/安徽省合肥市/泛时空
{
"id": 114,
"name": "泛时空合肥庐阳店",
"updateTime": "2026-03-28T13:44:12",
"cardCount": 5,
"isUpdated": true,
"announcements": [
{
"id": 114514,
"uploaderId": 12345678,
"uploaderGroupId": 87654321,
"content": "1p坏了,只能单刷",
"createTime": "2026-03-21T15:00:26",
"expireTime": "2026-03-28T04:00:00"
}
],
"placeGames": [
{
"id": 1,
"game": {
"id": 1,
"name": "舞萌",
"order": 0
},
"cardCount": 2
},
{
"id": 3,
"game": {
"id": 2,
"name": "中二节奏",
"order": 1
},
"cardCount": 3
}
]
}
请求体示例:按总数更新
{
"uploaderId": 12345678,
"uploaderGroupId": 87654321,
"updateExpression": "=4"
}
请求体示例:按游戏更新
{
"uploaderId": 12345678,
"uploaderGroupId": 87654321,
"gameUpdateMap": {
"mai": {
"updateExpression": "=2"
},
"chu": {
"updateExpression": "=3"
}
}
}