feat: 接齐 SimpCore 开放 API 全量接口并新增 API 数据浏览弹层
以前只用了「邦国领土」这一类接口,控制台也只能看到一行「已启用/未启用」, 大量服务端公开信息拿得到却看不到。现在按官方文档 https://open.bgjq.top/api-docs.html 补齐。 新增 - SimpApiClient 从 7 个接口补到 16 个:/info/players、/info/unions/{key}/members、 /tech、/contributions、/info/buffs、/info/diplomacy、/info/bans、/info/logs、 /info/announcements - SimpApiV2Client(新):/players、/players/{name}/equipment、/time、/dragon。 文档明确 API 与 API-V2 是两套独立、互不通用的密钥体系,因此单独实例与配置 (apiV2Enabled / apiV2Key,或环境变量 SIMP_API_V2_KEY);V2 配额很小 (末影龙 1 次/分钟),一律按需查询、不做轮询 - 控制台「查看 API 数据」弹层,五个页签: 概览(两套密钥状态/请求数/缓存/健康检查)· 邦国(27 个,点开看成员/科技/捐献/领土统计) · 玩家(1600+ 可搜索,点开看详情与所属邦国)· 全服(加成/外交/封禁/日志/公告) · 实时 V2(在线玩家/游戏时间/末影龙/装备) - /api/simp/* 一整套只读代理接口,统一处理「未配 Key / 上游错误」并给出可读提示 修复(解析字段名以实测响应为准) - 捐献:响应只有 player_uuid 没有玩家名 -> 先用成员表补全、查不到再退到全服玩家表; 时间字段是 contributed_at;补充 reason(用途)列;amount 可为负(邦国支出) - 公告:message 是 Minecraft 聊天组件 JSON 字符串 -> 新增 componentToText() 压平为纯文本 - 封禁:实际字段 banned_player_name / banned_by_player_name / banned_at / unbanned - 日志:实际字段 username / action / timestamp - 玩家表:上下线时间是 last_join_time / last_quit_time - 王城坐标:服务端可能返回 null,原来 Number(null) 会算成 0, 伪装成「王城在世界原点 (0,0)」;现在显式判空返回 null 变更 - 快捷发送去掉 /spawn 与 /list,只留 /u return、/u claimmode、/u restore confirm 测试 326 -> 336,全部通过。
这个提交包含在:
+23
-2
@@ -150,6 +150,7 @@
|
||||
<div class="row row-compact">
|
||||
<button id="btnRefreshMap" class="btn btn-sm">刷新地图</button>
|
||||
<button id="btnFetchAll" class="btn btn-sm">拉取全服领土</button>
|
||||
<button id="btnOpenSimp" class="btn btn-sm btn-primary">查看 API 数据</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -280,8 +281,6 @@
|
||||
<button class="btn btn-sm" data-cmd="/u return">/u return</button>
|
||||
<button class="btn btn-sm" data-cmd="/u claimmode">/u claimmode</button>
|
||||
<button class="btn btn-sm" data-cmd="/u restore confirm">/u restore confirm</button>
|
||||
<button class="btn btn-sm" data-cmd="/spawn">/spawn</button>
|
||||
<button class="btn btn-sm" data-cmd="/list">/list</button>
|
||||
</div>
|
||||
<div class="row row-compact">
|
||||
<span class="field-label">移动测试</span>
|
||||
@@ -320,6 +319,28 @@
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<!-- SimpCore 开放 API 数据浏览:数据量大且限流严格,做成按需打开的弹层而不是常驻面板 -->
|
||||
<div id="simpOverlay" class="overlay hidden">
|
||||
<div class="overlay-box overlay-box-lg">
|
||||
<div class="card-head">
|
||||
<h2>SimpCore 开放 API</h2>
|
||||
<div class="row row-compact">
|
||||
<span id="simpStatus" class="mono small"></span>
|
||||
<button id="btnCloseSimp" class="btn btn-sm">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tabs" id="simpTabs">
|
||||
<button class="tab active" data-simp="overview">概览</button>
|
||||
<button class="tab" data-simp="unions">邦国</button>
|
||||
<button class="tab" data-simp="players">玩家</button>
|
||||
<button class="tab" data-simp="global">全服</button>
|
||||
<button class="tab" data-simp="v2">实时 V2</button>
|
||||
</div>
|
||||
<div id="simpBody" class="simp-body"></div>
|
||||
<div id="simpV2Result" class="simp-detail hidden"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 登录遮罩:控制台配置了 WEB_TOKEN / WEB_PASSWORD 时显示 -->
|
||||
<div id="loginOverlay" class="overlay hidden">
|
||||
<div class="overlay-box">
|
||||
|
||||
在新工单中引用
屏蔽一个用户