# 祈盟SDK(new_sdk) > 内部代号:`new_sdk` | 业务名:祈盟SDK(Qimeng SDK) > 项目类型:**多租户游戏SDK聚合平台** 为游戏发行商和渠道合作伙伴提供一站式接入与运营能力,核心能力包括: - 多渠道游戏发行(一次接入对接 45+ 渠道) - 多支付方式集成(聚合 10+ 支付渠道) - 跨游戏、跨渠道的用户统一管理 - 数据统计、分析与风控 - CPS 公会渠道分层管理 --- ## 一、技术栈 | 组件 | 版本 / 说明 | | ----------- | ---------------------------------------- | | 框架 | ThinkPHP 5.0.7 | | PHP | 7.0 - 7.2 | | 数据库 | MySQL | | 缓存 | Redis | | 消息队列 | Kafka / ThinkPHP queue | | 对象存储 | 阿里云 OSS、华为云 OBS | | 部署 | Docker + docker-compose + Nginx + php-fpm | --- ## 二、目录结构 项目根目录 `c:\web\composer\qi_meng\new_sdk`: ``` ├── docker-compose.yml / Dockerfile # 容器化部署 ├── nginx/ # Nginx 配置 │ └── default.conf ├── php-fpm/ # PHP-FPM 配置 │ ├── Dockerfile │ ├── php-ini-overrides.ini │ └── sources.list ├── crontabs/ script/ # 定时任务与脚本 ├── logs/ # 日志目录 ├── key/ # 密钥 └── www/new_sdk/ # 主项目(ThinkPHP5) ├── application/ │ ├── admin/ # 后台(100+ 控制器) │ ├── api/ # 对外 API(v1 / v2 / mlbb / complex) │ ├── cps/ # 公会系统 │ ├── common/ # 公共模型 / 工厂 / 服务 │ └── crontab/ # 定时任务(14+) ├── extend/ # 第三方 SDK(支付宝、抖音游戏开放等) ├── public/ # 入口 + 静态资源 + mlbb/complex 特殊入口 ├── doc/ doc_channel/ docs_12/ md/ # 各类文档 └── tests/ # 单测 ``` --- ## 三、业务模块(12 大块) | # | 模块 | # | 模块 | | - | ---------- | - | ------------ | | 1 | 用户体系 | 7 | 客服系统 | | 2 | 游戏管理 | 8 | 风控系统 | | 3 | 支付处理 | 9 | CPS 公会系统 | | 4 | 渠道管理 | 10 | 运营工具 | | 5 | 数据统计 | 11 | 自动打包 | | 6 | 内容管理 | 12 | MLBB 游戏专项 | --- ## 四、对外域名生态 | 用途 | 生产(`7dgames.cn` / `qmgames.cn`) | 测试(前缀加 `dev`) | | ---------------- | ----------------------------------- | -------------------- | | 后台 | `sdkadmin` | `devsdkadmin` | | 支付回调 + API | `sdkapi` | `devsdkapi` | | 渠道 SDK 对接 | `sdkjhgame` | `devsdkjhgame` | | 公会后台 | `sdkcps` | `devsdkcps` | | 公会 API | `sdkcpsapi` | `devsdkcpsapi` | | 官网 | `sdkwww` | — | | 渠道包下载 | `sdkdownapp` | `devsdkdownapp` | | 导出下载(Go) | `sdkdownreport` | `devsdkdownreport` | | 图片静态资源 | `sdkstatic` | `devsdkstatic` | - 隐私页:https://sdkapi.qmgames.cn/privacy.html - 分包服务器请求域名:http://sdkpack.qmgames.cn/pack --- ## 五、关联仓库 | 仓库 | 职责 | | ---------------------- | ----------------------------- | | `new_sdk`(本仓库) | 后台 + API + CPS_API | | `new_sdk_cps-admin` | CPS 公会后台 | | `new_sdk_cps-py` | CPS 打包(Python) | | `new_sdk_ws` | 相关通知服务(WebSocket) | | `new_sdk_go` | Excel 导出 & 发放游戏礼包 | --- ## 六、核心架构 ``` ┌────────────────────────────────────────────────────────────┐ │ 用户接入层 游戏App │ Web端 │ 渠道SDK │ 公会系统 │ ├────────────────────────────────────────────────────────────┤ │ API 网关层 v1 / v2 / mlbb / complex │ ├────────────────────────────────────────────────────────────┤ │ 业务逻辑层 支付中心 │ 用户中心 │ 渠道适配 │ 统计聚合 │ ├────────────────────────────────────────────────────────────┤ │ 数据访问层 用户 / 支付 / 游戏 / 统计 模型 │ ├────────────────────────────────────────────────────────────┤ │ 基础设施层 MySQL │ Redis │ Kafka │ OSS │ 短信/推送 │ 钉钉 │ └────────────────────────────────────────────────────────────┘ ``` ### 关键流程 - **游戏接入**:接入 → 渠道配置 → SDK 打包 → 分发 → 数据采集 - **支付**:下单(`nw_pay`)→ 调用支付 SDK → 用户支付 → 异步回调(`nw_pay_cpinfo`)→ 验签 → 发货(`nw_member_coin`)→ 通知游戏服务器 - **渠道分层**:平台 → B+ 级(总代)→ B 级(分销)→ B- 级(子分销)→ 推广员 ### 核心数据表 ``` nw_members / nw_subaccount / nw_bind 用户体系 nw_channel / nw_channel_ca / nw_channel_frozen 渠道 cy_game / cy_game_package 游戏 nw_pay / nw_member_coin 支付 & 余额 nw_complex_summary_* 统计汇总 nw_channel_share CPS 分成配置 ``` --- ## 七、外部依赖 - **支付渠道(10+)**:支付宝(APP/H5/扫码)、微信支付(H5/小程序/扫码)、易宝、联动优势、趣智连、喜钛游、全民付… - **云服务**:阿里云 OSS、华为云 OBS、阿里云短信、钉钉告警机器人 - **第三方 API**:176Park、MLBB、抖音广告追踪 --- ## 八、项目现状与重构规划 ### 现状特征 - **功能完整**,覆盖游戏 SDK 全链路 - **业务复杂**,多租户、多渠道、多支付 - **技术债务**:ThinkPHP 5.0.7 已过时、PHP 7.0-7.2 官方停止维护 - **代码质量**:缺乏统一规范、无测试覆盖、耦合度高 ### 主要痛点 1. `PaymentController` 约 2000 行,逻辑混乱 2. 45+ 个 Channel SDK 存在大量重复代码 3. 80+ 个数据模型缺乏统一规范 4. 无测试覆盖,改一处可能影响多处 5. 大量同步阻塞调用影响性能 ### 重构文档索引(`www/new_sdk/docs_12/`) ``` 01_项目概览.md 全局认知 02_痛点清单.md 痛点盘点 03_模块矩阵.md 模块划分 04_架构设计方案.md 目标架构 05_重构实施方案.md 落地方案 06_SDK渠道架构优化方案.md 45+ 渠道 SDK 标准化 07_极简SDK重构方案.md SDK 极简版 08_签名系统终极方案.md 签名体系重构 09_全部文档总结.md 总结 README_SDK重构总结.md README_决策版.md ``` --- ## 九、环境要求 | 类型 | 配置 | | -------- | ---------------------- | | 服务器 | 2 核 4G | | 打包服务器 | 2 核 8G | | 数据库 | 2 核 8G | | Redis | 2 核 4G | | 带宽 | 5M | | 开发栈 | PHP + MySQL + Redis + WS + Go + Python | 必备:mysql / redis / docker / git。 ### 需要准备的第三方资源 - 域名 - 阿里云 OSS(或华为云 OBS) - 阿里云短信 - 支付宝支付(wap / 扫码) - 微信支付(h5 / 扫码) - 钉钉预警机器人(可选,充值异常 / 特殊回调异常) --- ## 十、部署与构建 ### 容器化部署(推荐) ```bash docker-compose up -d --build ``` ### 目录配置要点 - `nginx/default.conf`:Nginx 站点配置 - `php-fpm/php-ini-overrides.ini`:PHP 配置覆盖 - `docker-compose.yml`:容器编排 - `Dockerfile`:PHP-FPM 镜像构建 ### 队列(支付异步回调) ```bash # 生产:守护进程(性能最高,改代码需重启) php think queue:work --queue asyncCallback --daemon # 调试:热更新 php think queue:listen --queue asyncCallback # 后台挂起 nohup php think queue:work --queue asyncCallback --daemon > /dev/null 2>&1 & ``` | 参数 | 说明 | | -------- | ----------------------------------------- | | `delay` | 任务失败后延迟多少秒重试(默认 0) | | `force` | 维护模式下仍强制运行 | | `memory` | 允许占用的最大内存(默认 128M) | | `sleep` | 队列空闲时进程休眠秒数(默认 3) | | `tries` | 任务失败最大重试次数(默认 0 = 无限重试) | --- ## 十一、API 响应码约定 ``` 100 = 登录失效 110 = 请求参数有误 120 = 请求处理过程提示 130 = 执行异常 200 = 正常 ``` --- ## 十二、常用运维命令 ```bash # 查询某天的日志文件列表及对应时间 ls runtime/log/apilog/202603/*02.log | awk -F'/' '{print $NF}' \ | awk -F'-' '/^[0-9]+-/{cmd="date -d @"$1" +\"%Y-%m-%d %H:%M:%S\""; cmd | getline date; close(cmd); print date,$0}' # 查询某天日志中是否包含某订单号 ls runtime/log/apilog/202603/*23.log | while read f; do \ grep -q "WL17742374917242139316" "$f" && { \ d=$(date -d @"$(basename "$f" | awk -F'-' '{print $1}')" +"%F %T"); \ echo "$d $(basename "$f")"; \ }; \ done ``` --- ## 十三、其他代码入口 - **WS 通知管理** - `www/new_sdk/public/static/js/wsbusiness.js` - `www/new_sdk/public/static/js/link_to_wsocket.js` - **当前仓库缺少 / 需另行对接** - 报表生成服务(`app\common\library\MakeReportGo`,关联 Go 程序) - 渠道打包(`app\common\logic\SubPackage`,关联 Python 程序) - Workerman 相关配置 --- ## 十四、上手建议 如果你要上手或推进工作,推荐按此顺序: 1. 读 `www/new_sdk/docs_12/01_项目概览.md` + `02_痛点清单.md` 建立全局认知 2. 看 `09_全部文档总结.md` 把握重构总体思路 3. 支付模块重点看 `application/common/factory/Pay.php` 与 `application/api/controller/v1/PayNotify.php` 4. 渠道 SDK 看 `06_SDK渠道架构优化方案.md` + `extend/` 目录 5. 风控看根目录 `risk_control_tables.sql` 与 `application/admin/controller/` 下风控相关控制器 --- ## 参考 - [ThinkPHP 5 完全开发手册](http://www.kancloud.cn/manual/thinkphp5)