5.3 KiB
5.3 KiB
新增平台后,游戏列表在哪里?
直接回答
新增一个平台后,这个平台自己的游戏列表在 g_game_platform_mapping(管理端「映射列表」Tab),不在 g_platform 或 g_game 里。
刚建完平台时,这个列表是空的——g_platform 只存平台元数据(code / name / config),不会自动带出上游游戏。需要后续:
- 手动新增映射(映射列表 → 新增映射 → 选该平台)
- 或 跑平台游戏导入/同步(slot-pwa 有 POP 导入命令,saas6.x 尚未接入)
所以不是缺 g_game_platform 表,而是:平台实体与平台游戏池是两张逻辑表,且 UI 没有把两者串起来。
三张表各自管什么
flowchart LR
subgraph platformMeta [平台主数据]
g_platform["g_platform\n平台代码/配置"]
end
subgraph platformGames [平台游戏池]
mapping["g_game_platform_mapping\n该平台上的上游游戏\n含 game_id=0 待关联"]
end
subgraph lobbyGames [大厅游戏]
g_game["g_game\n大厅展示游戏\nactive_platform_id"]
end
g_platform -->|"platform_id"| mapping
g_game -->|"game_id 绑定后"| mapping
g_platform -->|"active_platform_id"| g_game
| 你想看的 | 存在哪 | 管理端入口 | 新建平台后 |
|---|---|---|---|
| 这个平台有哪些上游游戏(含待绑定) | g_game_platform_mapping where platform_id = X |
游戏库 → 映射列表 → 筛「平台」 | 空,需导入或手建 |
| 大厅里哪些游戏走这个平台 | g_game where active_platform_id = X |
游戏库 → 游戏列表 → 筛「当前生效平台」 | 空,需先有大厅游戏并指定平台 |
| 平台本身配置 | g_platform |
游戏库 → 平台列表 | 只有这一条平台记录 |
game_id = 0 就是「平台游戏池」
g_game_platform_mapping 里 game_id = 0 的记录,表示上游已导入、尚未绑定大厅游戏的条目(POP 导入后的默认状态)。
因此 g_game_platform_mapping 同时承担「平台游戏目录 + 绑定关系」,不需要再建 g_game_platform。
slot-pwa 导入逻辑见 PopGameImportService:
从 pop_provider.php 导入 POP 游戏至 g_game_platform_mapping(不自动新建 g_game)
为什么你会觉得「没地方看」
当前 saas6.x 游戏库是 4 个平级 Tab(gameLibrary/index.vue):
- 游戏列表
- 分类列表
- 映射列表 ← 平台游戏实际在这里
- 平台列表 ← 只有平台配置,无游戏子列表、无跳转
缺口是 UX / 流程,不是表结构:
- 平台 Tab 没有「查看该平台游戏」入口
- 平台 Tab 没有显示映射数量
- saas6.x 没有平台游戏导入/同步能力(老项目靠 slot-pwa 命令写入 mapping)
- 「映射列表」命名不直观,不像「平台游戏池」
推荐改进(若要做)
方案 A:最小改动(只改 UI,不动表)
- 增加列:
映射总数/待关联数/已绑定数(聚合g_game_platform_mapping) - 操作列增加 「查看游戏」:切到映射 Tab 并带上
platform_id筛选(可用usePageTabs跨 Tab 传参或 query)
后端:在 GPlatformController::index 列表响应里批量附加统计字段(一次 GROUP BY platform_id 查询,避免 N+1)。
方案 B:补导入流程(与老项目对齐)
- 移植或封装 slot-pwa 的
PopGameImportService/PopGameCatalogSyncService - 管理端平台行增加 「同步上游游戏」 按钮(或独立命令行入口)
- 同步结果写入
g_game_platform_mapping,game_id先为 0,运营再在映射里绑定g_game
方案 C:不推荐 — 新建 g_game_platform 表
会把「平台游戏目录」与「绑定关系」拆成两张表,与 slot 全链路(admin / pwa / console)不一致,且 g_game_platform_mapping 已覆盖该职责。除非有租户级平台开通实例等新需求,否则不建议。
运营侧标准流程(现有模型下)
sequenceDiagram
participant Op as 运营
participant Platform as g_platform
participant Mapping as g_game_platform_mapping
participant Game as g_game
Op->>Platform: 1. 新增平台 code/config
Note over Mapping: 此时为空
Op->>Mapping: 2a. 手动新增映射 或 2b. 跑导入同步
Note over Mapping: game_id=0 待关联
Op->>Game: 3. 新建/选择大厅游戏
Op->>Mapping: 4. 编辑映射绑定 game_id
Op->>Game: 5. 设置 active_platform_id
Note over Game: 大厅可走该平台启动
结论
| 问题 | 答案 |
|---|---|
| 新平台的游戏列表在哪? | g_game_platform_mapping,管理端 映射列表 按平台筛选 |
| 为什么新建后是空的? | 平台创建 ≠ 游戏导入;需映射或同步 |
需要 g_game_platform 吗? |
不需要;mapping 表就是平台游戏池 |
| 真正缺什么? | 平台页与映射页的串联 + (可选)上游游戏导入 |