feat(integration): 新增 site_code 支持并增强玩家与注单管理界面

在后台玩家与注单相关 API 中新增 site_code 参数,支持按站点筛选数据。
更新 PlayersConsole 与 PlayerTicketsConsole UI 组件,新增站点选择筛选功能。
增强国际化支持,在英文与中文语言包中新增站点相关文案。
优化配置中心页面,新增跳转至集成站点管理的入口,提升后台导航体验。
This commit is contained in:
2026-05-27 13:36:44 +08:00
parent e87229c1b7
commit 5eabbcf0ee
17 changed files with 1126 additions and 3 deletions

View File

@@ -29,7 +29,77 @@
"jackpotTitle": "Jackpot",
"jackpotDesc": "Pool parameters and ledger records",
"riskCapTitle": "Risk cap rules",
"riskCapDesc": "Per-number payout caps and occupancy"
"riskCapDesc": "Per-number payout caps and occupancy",
"integrationTitle": "Integration sites",
"integrationDesc": "site_code, JWT secrets, partner wallet URL, iframe allowlist"
},
"integrationSites": {
"title": "Integration sites",
"description": "Maintain partner integration settings in admin. site_code cannot be changed after creation.",
"create": "New site",
"edit": "Edit",
"save": "Save",
"saving": "Saving…",
"cancel": "Cancel",
"copy": "Copy",
"loading": "Loading…",
"empty": "No integration sites",
"loadFailed": "Failed to load integration sites",
"saveFailed": "Save failed",
"createSuccess": "Created site {{code}}",
"updateSuccess": "Updated site {{code}}",
"connectivityTest": "Test connectivity",
"connectivityTitle": "Partner wallet connectivity",
"connectivityDescription": "Call the balance API for site {{code}} using a test player.",
"connectivityPlayerId": "Test site_player_id",
"connectivityRun": "Run test",
"connectivityRunning": "Testing…",
"connectivitySuccess": "Connectivity OK",
"connectivityFailed": "Connectivity failed",
"exportParams": "Export params",
"exportSuccess": "Exported parameter sheet for {{code}}",
"exportFailed": "Export failed",
"rotateSecrets": "Rotate secrets",
"rotateSuccess": "Rotated secrets for {{code}}",
"rotateFailed": "Failed to rotate secrets",
"rotateConfirmTitle": "Rotate secrets?",
"rotateConfirmDescription": "New SSO and wallet keys will be generated for {{code}}. Old keys stop working immediately.",
"rotateConfirm": "Rotate",
"secretsTitle": "Save these secrets now",
"secretsDescription": "Secrets for {{code}} are shown only once.",
"secretsDismiss": "I have saved them",
"copied": "Copied {{field}}",
"copyFailed": "Copy failed",
"noPermission": "No permission to view integration sites",
"codeImmutable": "site_code cannot be changed after creation",
"statusEnabled": "Enabled",
"statusDisabled": "Disabled",
"dialogCreateTitle": "New integration site",
"dialogEditTitle": "Edit integration site",
"dialogDescription": "Default wallet paths are fine unless the partner uses custom URLs.",
"form": {
"required": "Site name is required",
"codeRequired": "site_code is required"
},
"columns": {
"code": "site_code",
"name": "Name",
"status": "Status",
"walletUrl": "Wallet API",
"actions": "Actions"
},
"fields": {
"code": "site_code",
"name": "Site name",
"currency": "Default currency",
"status": "Status",
"walletApiUrl": "Partner wallet base URL",
"lotteryH5BaseUrl": "Lottery H5 base URL (optional)",
"iframeOrigins": "iframe allowlist (one origin per line)",
"notes": "Notes",
"ssoSecret": "SSO secret",
"walletApiKey": "Wallet API key"
}
},
"versionStatus": {
"active": "Active",

View File

@@ -3,6 +3,8 @@
"listTitle": "Player list",
"createPlayer": "Create player",
"searchPlaceholder": "Search by player ID / username / nickname",
"filterSite": "Site",
"filterAllSites": "All sites",
"search": "Search",
"refresh": "Refresh",
"loadFailed": "Failed to load player list",

View File

@@ -1,6 +1,8 @@
{
"title": "Ticket list",
"playerTicketQuery": "Ticket query",
"filterSite": "Site",
"filterAllSites": "All sites",
"playerId": "Player ID / account",
"invalidPlayerId": "Enter a valid player ID or account",
"playerIdPlaceholder": "Leave blank for all tickets; enter player ID or account",

View File

@@ -29,7 +29,77 @@
"jackpotTitle": "奖池",
"jackpotDesc": "奖池参数与进账流水",
"riskCapTitle": "限额版本",
"riskCapDesc": "号码赔付封顶与占用视图"
"riskCapDesc": "号码赔付封顶与占用视图",
"integrationTitle": "主站接入站点",
"integrationDesc": "site_code、JWT 密钥、主站钱包 URL 与 iframe 白名单"
},
"integrationSites": {
"title": "主站接入站点",
"description": "由运营在后台维护各主站对接参数并通过权限控制谁能查看或修改。site_code 创建后不可修改。",
"create": "新建站点",
"edit": "编辑",
"save": "保存",
"saving": "保存中…",
"cancel": "取消",
"copy": "复制",
"loading": "加载中…",
"empty": "暂无接入站点",
"loadFailed": "加载接入站点失败",
"saveFailed": "保存失败",
"createSuccess": "已创建站点 {{code}}",
"updateSuccess": "已更新站点 {{code}}",
"connectivityTest": "联通检测",
"connectivityTitle": "主站钱包联通检测",
"connectivityDescription": "使用测试玩家调用站点 {{code}} 的 balance 接口。",
"connectivityPlayerId": "测试 site_player_id",
"connectivityRun": "开始检测",
"connectivityRunning": "检测中…",
"connectivitySuccess": "联通成功",
"connectivityFailed": "联通失败",
"exportParams": "导出参数表",
"exportSuccess": "已导出 {{code}} 参数表",
"exportFailed": "导出失败",
"rotateSecrets": "重置密钥",
"rotateSuccess": "已重置站点 {{code}} 的密钥",
"rotateFailed": "重置密钥失败",
"rotateConfirmTitle": "确认重置密钥?",
"rotateConfirmDescription": "将重新生成站点 {{code}} 的 SSO 与钱包密钥,旧密钥立即失效。",
"rotateConfirm": "确认重置",
"secretsTitle": "请妥善保存密钥",
"secretsDescription": "站点 {{code}} 的密钥仅显示一次,关闭后无法再次查看完整内容。",
"secretsDismiss": "我已保存",
"copied": "已复制 {{field}}",
"copyFailed": "复制失败",
"noPermission": "当前账号无接入站点查看权限",
"codeImmutable": "site_code 创建后不可修改",
"statusEnabled": "启用",
"statusDisabled": "停用",
"dialogCreateTitle": "新建接入站点",
"dialogEditTitle": "编辑接入站点",
"dialogDescription": "钱包路径使用默认值即可,除非主站 URL 规范不同。",
"form": {
"required": "请填写站点名称",
"codeRequired": "请填写 site_code"
},
"columns": {
"code": "site_code",
"name": "名称",
"status": "状态",
"walletUrl": "钱包 API",
"actions": "操作"
},
"fields": {
"code": "site_code",
"name": "站点名称",
"currency": "默认币种",
"status": "状态",
"walletApiUrl": "主站钱包根 URL",
"lotteryH5BaseUrl": "彩票 H5 基址(可选)",
"iframeOrigins": "iframe 白名单(每行一个 origin",
"notes": "备注",
"ssoSecret": "SSO 密钥",
"walletApiKey": "钱包 API 密钥"
}
},
"versionStatus": {
"active": "生效中",

View File

@@ -3,6 +3,8 @@
"listTitle": "玩家列表",
"createPlayer": "新建玩家",
"searchPlaceholder": "按玩家 ID / 用户名 / 昵称搜索",
"filterSite": "主站站点",
"filterAllSites": "全部站点",
"search": "搜索",
"refresh": "刷新",
"loadFailed": "加载玩家列表失败",

View File

@@ -1,6 +1,8 @@
{
"title": "注单列表",
"playerTicketQuery": "注单查询",
"filterSite": "主站站点",
"filterAllSites": "全部站点",
"playerId": "玩家 ID / 账号",
"invalidPlayerId": "请输入有效玩家 ID 或账号",
"playerIdPlaceholder": "留空显示全部,可输入玩家 ID 或账号",