# AGENTS.md — new_sdk ## 项目概述 游戏SDK平台 — 基于 ThinkPHP 5.0 的多模块应用,涵盖游戏渠道SDK对接、支付回调、公会管理和官网。PHP 7.0–7.2。 **仓库根目录** (`D:\web\composer\new_sdk\new_sdk`) 只有 `www/`,所有应用代码在 `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.php` - `application/service/` — 顶层服务类(PayService、GamePayService 等) - `application/crontab/` — 定时任务,注册在 `application/command.php`,通过 `php think ` 调用 - `application/extra/` — 扩展配置:`queue.php`(Redis队列)、`kafka.php`、`operatelog.php` - `extend/` — 第三方SDK:alipay、alipay_wap、DouYinGameOpen、LdzfPay、XiTaiYouPay、Obs(华为)、tree - `public/` — Web根目录,入口文件 `index.php` - `think` — CLI入口(类似 artisan) ## 入口文件 - **Web**: `public/index.php` — 加载 `constants.php` → `constants/.php` → `thinkphp/start.php` - **CLI**: `think` — 加载 `public/constants.php` → `public/constants/.php` → `thinkphp/console.php` ## 环境配置 环境变量通过 `.env_dev` / `.env_pro` 文件加载(ThinkPHP 的 `Env::get()`)。`APP_STATUS` 常量(`dev`、`stable` 或默认值)决定使用哪个环境文件和路由配置。 **仓库中缺失**:`public/constants.php` 和 `public/constants/*.php` — 定义 `APP_STATUS` 等平台常量,属于部署配置,已 gitignore。 ## 开发命令 ```bash # 安装依赖 composer install # 如果系统没有 composer,可以用仓库中已提交的 composer.phar php composer.phar install # 运行定时任务(注册在 application/command.php) php think # 示例: php think PolyChannelFlowStats php think ChannelSettleMonth php think AutoPackage # PHPUnit(tests/ 目录目前不存在) vendor/bin/phpunit ``` 没有配置 lint、typecheck 或 codegen 命令,没有 CI 工作流。 ## 关键约定 - **PSR-4 自动加载**:`app\` 命名空间映射到 `application/`(composer.json) - **模型命名**:`application/common/model/` 下使用 ThinkPHP 约定(如 `app\common\model\Members`) - **控制器模式**:每个模块有独立的 `controller/`、`model/`、`validate/`、`view/` 目录 - **配置加载**:模块级配置通过各模块目录下的 `config.php`;扩展配置在 `application/extra/` - **队列**:Redis 驱动(`application/extra/queue.php`),使用 db select 3 - **Kafka**:用于事件流(`application/extra/kafka.php`、`application/command/KafkaConsumer.php`) - **Session**:API 模块使用 Redis 存储 - **CORS**:`public/index.php` 中完全开放(`Access-Control-Allow-Origin: *`) - **响应码**:100=登录失效, 110=参数有误, 120=处理提示, 130=执行异常, 200=正常 ## 外部服务 - MySQL 7, Redis 5.2.1 - 阿里云OSS / 华为云OBS(文件存储) - 支付宝(SDK 在 `extend/alipay/`、`extend/alipay_wap/`) - 微信支付(`application/common/library/WeixinPay.php`) - 钉钉机器人(告警) - 阿里云短信 - 抖音游戏开放平台(`extend/DouYinGameOpen/`) - Kafka(事件流) - GatewayWorker/WebSocket(`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/*.php` 已 gitignore — 没有它们应用无法启动,需要为你的环境创建。 - `application/common.php` 约2000行全局辅助函数(auth_code、curl_post 等)— 所有模块都在用。 - `.env_dev` 和 `.env_pro` 包含真实凭据。`.gitignore` 列的是 `.env`,但这两个文件名不在其中。 - `composer.phar` 已提交到仓库 — 系统没有 composer 时可以直接用。 - `phpunit.xml` 引用的 `tests/` 目录在仓库中不存在。 - `application/service/` 中有 `_bak` 文件(GamePayService_bak.php、MemberCoinService_bak.php)。 ## 禁止操作 - **禁止启动定时任务** — 不要创建、启动或修改任何 cron / scheduled task(包括 crontab、systemd timer、Windows 计划任务、PHP 定时脚本等)。 - **禁止执行 `php think` 命令** — 不要运行仓库内的任何 `php think `。涉及定时任务、队列消费、数据迁移等操作一律禁止。需要调试或了解某命令行为时,只能阅读源码,不可实际执行。