游戏SDK平台 — 基于 ThinkPHP 5.0 的多模块应用,涵盖游戏渠道SDK对接、支付回调、公会管理和官网。PHP 7.0–7.2。
路径约定:
AGENTS.md 的目录;禁止在说明、脚本或结论中写死某台机器上的绝对路径。<仓库根目录>/www/new_sdk/。www/new_sdk/。多模块 ThinkPHP 应用,通过域名路由将子域名映射到模块(application/route.php):
| 子域名前缀 | 模块 | 用途 |
|---|---|---|
admin |
admin/ |
后台管理 |
sdkapi / t |
api/ |
支付回调 + SDK API |
cpsapi / sdkcpsapi |
guildapi/ |
公会API |
mcpsapi |
mcpsapi/ |
MCPS API |
jhgame |
complex/ |
渠道SDK对接 |
www |
home/ |
官网 (PC) |
m |
mobile/ |
手机端 |
核心目录:
application/common/ — 共享代码:model/(151个模型)、logic/、library/、controller/Base.phpapplication/service/ — 顶层服务类(PayService、GamePayService 等)application/crontab/ — 定时任务源码,注册在 application/command.php;只允许阅读分析,禁止实际执行对应 php think <command>application/extra/ — 扩展配置:queue.php(Redis队列)、kafka.php、operatelog.phpextend/ — 第三方SDK:alipay、alipay_wap、DouYinGameOpen、LdzfPay、XiTaiYouPay、Obs(华为)、treepublic/ — Web根目录,入口文件 index.phpthink — CLI入口(类似 artisan)public/index.php — 加载 constants.php → constants/<APP_STATUS>.php → thinkphp/start.phpthink — 加载 public/constants.php → public/constants/<APP_STATUS>.php → thinkphp/console.phppublic/constants.php 是运行环境入口,负责定义 APP_STATUS。当前项目默认使用:
define('APP_STATUS', 'test');
因此 Web 和 CLI 默认都会继续加载:
public/constants/test.php
环境对应关系:
APP_STATUS |
加载的常量配置 |
|---|---|
test |
public/constants/test.php |
dev |
public/constants/dev.php |
stable |
public/constants/stable.php |
除非用户明确要求切换环境,否则保持 APP_STATUS=test,不要修改为 dev 或 stable。
数据库、Redis、外部服务密钥等环境变量由应用根目录下的 .env 加载,ThinkPHP 通过 Env::get() 读取。.env 中可能包含真实凭据,读取和输出时必须脱敏,不要将密钥、密码或令牌写入回复、日志或新文档。
Docker Compose 中普通的 APP_ENV 不会自动修改 APP_STATUS;判断当前环境时必须以 public/constants.php 的实际定义为准。
# 安装依赖
composer install
# 如果系统没有 composer,可以用仓库中已提交的 composer.phar
php composer.phar install
# PHPUnit(tests/ 目录目前不存在)
vendor/bin/phpunit
没有配置 lint、typecheck 或 codegen 命令,没有 CI 工作流。
仓库虽然提供 think CLI 入口,但根据本文“禁止操作”,不得执行任何 php think 命令。
app\ 命名空间映射到 application/(composer.json)application/common/model/ 下使用 ThinkPHP 约定(如 app\common\model\Members)controller/、model/、validate/、view/ 目录config.php;扩展配置在 application/extra/application/extra/queue.php),使用 db select 3application/extra/kafka.php、application/command/KafkaConsumer.php)public/index.php 中完全开放(Access-Control-Allow-Origin: *)extend/alipay/、extend/alipay_wap/)application/common/library/WeixinPay.php)extend/DouYinGameOpen/)application/common/logic/Websocket.php)本仓库是五个仓库之一,其余不在本目录内:
new_sdk_cps-admin — CPS后台new_sdk_cps-py — CPS打包(Python,被 application/common/logic/SubPackage.php 引用)new_sdk_ws — 通知服务(WebSocket)new_sdk_go — Excel导出 & 游戏礼包发放(Go,被 application/common/library/MakeReportGo.php 引用)public/constants.php 及 public/constants/test.php、dev.php、stable.php 当前均存在;默认按 test 环境分析和运行。application/common.php 约2000行全局辅助函数(auth_code、curl_post 等)— 所有模块都在用。.env;其中可能包含真实凭据,检查时必须脱敏,并避免提交或复制到文档。composer.phar 已提交到仓库 — 系统没有 composer 时可以直接用。phpunit.xml 引用的 tests/ 目录在仓库中不存在。application/service/ 中有 _bak 文件(GamePayService_bak.php、MemberCoinService_bak.php)。php think 命令 — 不要运行仓库内的任何 php think <command>。涉及定时任务、队列消费、数据迁移等操作一律禁止。需要调试或了解某命令行为时,只能阅读源码,不可实际执行。