AGENTS.md 5.2 KB

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 <command> 调用
  • application/extra/ — 扩展配置:queue.php(Redis队列)、kafka.phpoperatelog.php
  • extend/ — 第三方SDK:alipay、alipay_wap、DouYinGameOpen、LdzfPay、XiTaiYouPay、Obs(华为)、tree
  • public/ — Web根目录,入口文件 index.php
  • think — CLI入口(类似 artisan)

入口文件

  • Web: public/index.php — 加载 constants.phpconstants/<APP_STATUS>.phpthinkphp/start.php
  • CLI: think — 加载 public/constants.phppublic/constants/<APP_STATUS>.phpthinkphp/console.php

环境配置

环境变量通过 .env_dev / .env_pro 文件加载(ThinkPHP 的 Env::get())。APP_STATUS 常量(devstable 或默认值)决定使用哪个环境文件和路由配置。

仓库中缺失public/constants.phppublic/constants/*.php — 定义 APP_STATUS 等平台常量,属于部署配置,已 gitignore。

开发命令

# 安装依赖
composer install
# 如果系统没有 composer,可以用仓库中已提交的 composer.phar
php composer.phar install

# 运行定时任务(注册在 application/command.php)
php think <CommandName>

# 示例:
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.phpapplication/command/KafkaConsumer.php
  • Session:API 模块使用 Redis 存储
  • CORSpublic/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.phppublic/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 <command>。涉及定时任务、队列消费、数据迁移等操作一律禁止。需要调试或了解某命令行为时,只能阅读源码,不可实际执行。