admin-egame-api.md 12 KB

第三方游戏后台 API

仓库里原先没有单独的第三方游戏接口文档(docs/ 下只有财务和在线/注册两份)。这份就是正式文档,顶部先写给前端的对照说明。

所有接口需要后台登录令牌:

Authorization: Bearer <token>

POST 使用 Content-Type: application/json。统一响应:code = 0 成功,业务数据在 data;失败 code != 0,原因在 msg

图片先调已有上传接口 POST /admin/upload/uploadFile,把返回的 path 写进 logo / logo_pc / logo_h5


给前端:对照设计稿改了什么

接口路径没变,还是这 5 个:

方法 路径 用途
GET /admin/egame/options 筛选项、大类、平台下拉
GET /admin/egame/items 大类 / 平台 / 游戏列表
POST /admin/egame/update 新增或修改(含排序、图片、名称)
POST /admin/egame/setStatus 启用 / 停用
POST /admin/egame/delete 不支持删除,返回错误

页面怎么对接口

设计稿页面 请求
游戏大类 GET /admin/egame/items?item_type=category
游戏列表(平台,如 JDB / AG) GET /admin/egame/items?item_type=platform&platform_scope=category
平台修改弹窗 用列表行数据回填;保存 POST /admin/egame/update
游戏管理内页(如 JDB 电子) GET /admin/egame/items?item_type=game&plat_type=jdb
修改游戏(含启用停用) POST /admin/egame/update,开关也可走 POST /admin/egame/setStatus
筛选下拉 GET /admin/egame/options

「序号」前端按分页自己算:(page - 1) * limit + index + 1

字段对照

设计稿文案 接口字段 说明
游戏大类 ID game_type 固定枚举,不是 1~5 连续号,见下表
游戏大类名称 name
游戏说明 description 本次新增
PC Logo / PC 游戏图片 logologo_pc 两个等价,读的时候两个都会返回
H5/APP Logo / 图片 logo_h5 本次新增
平台 ID id 行主键。不要用稿子里的 FL01
平台类型 plat_type jdb / mg / pg / ag,小写
显示名称 / 游戏名称 name 列表筛选也用 name
游戏 ID game_code JDB001
支持终端类型 ingress 1 电脑网页,2 手机网页,3 电脑/手机网页
支持终端(文案) ingress_name 后端已拼好,列表直接展示
支持网络 network mainland / hk / kr / jp,不要传中文
支持网络(文案) network_name 大陆 / 香港 / 韩国 / 日本
启用状态 status 1 启用,0 停用
启用状态(文案) status_name
排序 sort 数字越大越靠前
游戏管理按钮 has_game_manage true 才显示「游戏管理」

options 里新增 networks,并改了文案:

  • statuses开启/关闭 改为 启用/停用
  • ingress仅电脑/仅手机/通用 改为 电脑网页/手机网页/电脑/手机网页

和设计稿不一致、按真实业务改掉的地方

  1. 平台 ID 不用 FL01~FL05
    那是稿子里的假编号。同一平台会挂在多个大类下(JDB 电子、JDB 捕鱼),真正唯一的是行 id。平台类型用 plat_type

  2. 游戏大类 ID 不是 1~5
    三方约定是:

| game_type | 名称 | | ---: | --- | | 1 | 视讯 | | 2 | 电子 | | 3 | 彩票 | | 4 | 体育 | | 5 | 电竞 | | 6 | 捕鱼 | | 7 | 棋牌 |

稿子里捕鱼写成 3、体育写成 4,对不上。捕鱼是 6,棋牌是 7。请用 game_type,不要自己重排。

  1. 保留「彩票」「电竞」两个大类
    稿子只画了 5 个。线上目录本身就有 7 个,列表要能展示,筛选也要有。

  2. 游戏分类、平台类型不能改
    稿子「修改游戏」里这两个是下拉。它们是三方目录主键,改了会对不上。请做成禁用展示,可以回传当前值,改了后端会报 目录标识不允许修改

  3. 排序越大越靠前
    和后台其它模块一致。稿子里 1、2、3 只是示意,不要理解成「1 排最前」。改排序只传 { id, sort }

  4. 有子游戏才出「游戏管理」
    稿子里 MG、PT 是「修改 --」。请判断 has_game_manage。当前示例:JDB / FG / 开元有游戏,MG / PT 没有。

  5. 不能删除
    POST /admin/egame/delete 固定失败。停用走开关。

  6. 体育大类保持启用
    稿子里体育是红开关,那只是在演示开关。正式数据体育是开的。

已补的示例数据

跑完迁移后,游戏列表靠前能看到:

显示名称 plat_type 分类 终端 网络 状态 游戏管理
JDB电子 jdb 电子 电脑/手机网页 大陆 启用
MG电子 mg 电子 电脑/手机网页 香港 停用
PT捕鱼 pt 捕鱼 手机网页 韩国 启用
FG捕鱼 fg 捕鱼 电脑/手机网页 日本 启用
开元棋牌 ky 棋牌 电脑/手机网页 大陆 启用

JDB 游戏管理内页:

游戏 ID 名称 终端 网络 状态
JDB001 JDB夺宝 电脑/手机网页 大陆 启用
JDB002 JDB招财进宝 手机网页 香港 停用
JDB003 JDB三国 电脑网页 大陆 停用

图片目前是空字符串,列表显示 --。菜单加了 egame/category(游戏大类)、egame/list(游戏列表),挂在「第三方游戏」下面。


1. 筛选项

GET /admin/egame/options

无参数。

{
  "code": 0,
  "data": {
    "categories": [
      {
        "id": 1,
        "item_type": "category",
        "game_type": 1,
        "name": "视讯",
        "description": "真人视讯游戏",
        "logo": "/static/img/game-type/sx.png",
        "logo_pc": "/static/img/game-type/sx.png",
        "logo_h5": "",
        "status": 1,
        "sort": 70,
        "platform_count": 5,
        "game_count": 0
      }
    ],
    "platforms": [
      {
        "id": 20,
        "item_type": "platform",
        "plat_type": "jdb",
        "name": "夺宝",
        "platform_scope": "global",
        "category_count": 3,
        "game_count": 3,
        "has_game_manage": true
      }
    ],
    "statuses": [
      {"value": 1, "label": "启用"},
      {"value": 0, "label": "停用"}
    ],
    "ingress": [
      {"value": "1", "label": "电脑网页"},
      {"value": "2", "label": "手机网页"},
      {"value": "3", "label": "电脑/手机网页"}
    ],
    "networks": [
      {"value": "mainland", "label": "大陆"},
      {"value": "hk", "label": "香港"},
      {"value": "kr", "label": "韩国"},
      {"value": "jp", "label": "日本"}
    ]
  }
}

下拉请直接用 value / labelcategories 给「游戏分类」,platforms 给「平台类型」。


2. 列表

GET /admin/egame/items

参数 必填 说明
item_type category / platform / game
platform_scope 只对平台有效:global 平台总开关,category 平台+大类(游戏列表页用这个)
plat_type 平台代码,游戏管理内页必带
game_type 大类
game_code 游戏 ID,精确匹配
name 显示名称 / 游戏名称,模糊
keyword 同时模糊 name / plat_type / game_code
status 1 / 0
ingress 1 / 2 / 3
network mainland / hk / kr / jp
page 默认 1
limit 默认 15,最大 200

返回 data.totaldata.data

2.1 游戏大类

GET /admin/egame/items?item_type=category

主要字段:game_typenamedescriptionlogo / logo_pclogo_h5sortstatus

2.2 游戏列表(平台)

GET /admin/egame/items?item_type=platform&platform_scope=category&game_type=&plat_type=&name=&status=&ingress=&network=&page=1&limit=15

一行是「某个平台在某个大类下」的配置,例如 JDB 电子。

{
  "id": 88,
  "item_type": "platform",
  "platform_scope": "category",
  "plat_type": "jdb",
  "platform_name": "夺宝",
  "game_type": 2,
  "game_type_name": "电子",
  "name": "JDB电子",
  "ingress": "3",
  "ingress_name": "电脑/手机网页",
  "network": "mainland",
  "network_name": "大陆",
  "logo": "",
  "logo_pc": "",
  "logo_h5": "",
  "status": 1,
  "status_name": "启用",
  "sort": 905,
  "has_game_manage": true,
  "game_count": 3,
  "effective_status": 1,
  "disabled_by": null
}

has_game_manage === true 时显示「游戏管理」,点进去带上这一行的 plat_type(建议同时带 game_type 做筛选)。

effective_status 是算上父级之后的实际是否可见:大类关了、或平台总开关关了,这里会是 0disabled_bycategory / platform / platform_category / game。行上的开关仍绑定 status

2.3 游戏管理内页

GET /admin/egame/items?item_type=game&plat_type=jdb&game_code=&name=&status=&ingress=&network=

{
  "id": 201,
  "item_type": "game",
  "game_code": "JDB001",
  "name": "JDB夺宝",
  "plat_type": "jdb",
  "platform_name": "夺宝",
  "game_type": 2,
  "game_type_name": "电子",
  "ingress": "3",
  "ingress_name": "电脑/手机网页",
  "network": "mainland",
  "network_name": "大陆",
  "logo": "",
  "logo_pc": "",
  "logo_h5": "",
  "sort": 30,
  "status": 1,
  "status_name": "启用"
}

3. 保存

POST /admin/egame/update

id 就是改,没有或 id=0 就是按目录标识新增/补齐。普通修改只传要改的字段即可。

参数 说明
id 行 ID,修改必传
name 显示名称 / 游戏名称 / 大类名称
description 游戏说明,大类用
logo / logo_pc PC 图,二选一,都传时用 logo
logo_h5 H5/APP 图
ingress 终端,平台和游戏可改;大类固定为 3
network 网络,平台和游戏可改;大类忽略。传 "" 可清空
status 启用停用
sort 排序
item_type / plat_type / game_type / game_code / platform_scope 目录标识,修改时不要改

修改大类示例:

{
  "id": 1,
  "name": "视讯",
  "description": "真人视讯游戏",
  "logo_pc": "https://cdn.example.com/sx-pc.png",
  "logo_h5": "https://cdn.example.com/sx-h5.png",
  "sort": 70,
  "status": 1
}

修改平台示例(对应「平台游戏修改」弹窗):

{
  "id": 88,
  "name": "JDB电子",
  "logo_pc": "https://cdn.example.com/jdb-pc.png",
  "logo_h5": "https://cdn.example.com/jdb-h5.png"
}

修改游戏示例(对应「修改游戏」,含启用停用):

{
  "id": 201,
  "name": "JDB夺宝",
  "logo_pc": "https://cdn.example.com/jdb001-pc.png",
  "logo_h5": "https://cdn.example.com/jdb001-h5.png",
  "status": 1
}

改排序只传:

{ "id": 88, "sort": 910 }

成功返回该行最新数据,字段和列表一致。


4. 启用 / 停用

POST /admin/egame/setStatus

列表开关、修改弹窗里的启用停用都走这里(也可以在 update 里带 status)。

{ "id": 201, "status": 0 }

5. 删除

POST /admin/egame/delete

目录由同步任务维护,不能删。请把状态设为停用。

{ "code": -3, "msg": "第三方游戏目录由同步任务维护,不能删除,请将状态设为关闭" }

6. 菜单 uri

菜单 前端 uri
第三方游戏 egame
游戏大类 egame/category
游戏列表 egame/list

按钮权限:admin/egame/optionsadmin/egame/itemsadmin/egame/updateadmin/egame/setStatusadmin/egame/delete