Files
dafuweng/PROJECT_ANALYSIS.md
2026-03-02 13:44:38 +08:00

445 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# GGL 项目分析文档
## 一、项目概述
本项目是一个基于 **WebmanWorkerman** 框架构建的 **游戏聚合 + 支付平台** 后端系统,提供玩家端 API、第三方回调接口以及后台管理系统ExAdmin
- **框架**: Webman (workerman/webman-framework ^1.5.0)
- **语言**: PHP >= 7.2
- **ORM**: Illuminate Database (Eloquent) ^8.83
- **后台管理**: ExAdmin (rockys/ex-admin-webman ^1.0)
- **HTTP 监听**: `http://0.0.0.0:8786`
- **进程数**: `cpu_count() * 4`
---
## 二、项目目录结构
```
ggl/
├── addons/webman/ # ExAdmin 后台管理模块
│ ├── controller/ # 后台控制器 (28个)
│ ├── model/ # Eloquent 数据模型 (60+)
│ ├── middleware/ # 后台中间件
│ ├── database/ # 数据库迁移 & 种子
│ ├── service/ # 菜单等服务
│ ├── token/ # Token 驱动
│ ├── traits/ # 公共 Trait
│ ├── validator/ # 验证器
│ ├── common/ # 公共组件 (登录/系统)
│ ├── echart/ # 图表组件
│ ├── form/ # 表单组件
│ └── grid/ # 列表组件
├── app/
│ ├── api/controller/v1/ # 玩家端 API 控制器
│ ├── external/ # 外部回调 API 控制器
│ ├── exception/ # 异常处理
│ ├── middleware/ # 应用中间件
│ ├── queue/redis/ # Redis 队列消费者
│ ├── service/ # 业务服务层
│ │ └── game/ # 游戏平台接口适配
│ └── functions.php # 全局函数
├── config/ # 配置文件
├── db/migrations/ # Phinx 数据库迁移
├── process/ # 自定义进程
├── public/ # Web 静态资源
├── resource/translations/ # 多语言资源 (zh_CN, en, Ma_my, cam_dia)
├── runtime/ # 运行时文件 (日志/缓存)
├── support/ # 框架辅助文件
├── composer.json
├── start.php # Linux 入口
└── windows.php # Windows 入口
```
---
## 三、核心功能模块
### 3.1 玩家端功能
| 模块 | 功能描述 |
|------|----------|
| 用户认证 | 手机号注册、短信验证码、登录、登出、忘记密码 |
| 玩家信息 | 获取玩家信息、编辑昵称 |
| 银行卡管理 | 银行列表、添加/编辑/删除银行卡 |
| 充值功能 | 充值列表、充值项配置、玩家充值、上传凭证、SePay充值 |
| 提现功能 | 提现申请、SePay提现 |
| 账单记录 | Cash In/Out列表、充提记录、游戏记录 |
| 游戏中心 | 登录游戏、获取游戏地址 |
| 抽奖系统 | 奖品列表、抽奖、抽奖记录 |
| 数据中心 | 礼品中心 |
| 版本更新 | APP 版本检测更新 |
### 3.2 后台管理功能
| 模块 | 功能描述 |
|------|----------|
| 仪表盘 | 登录数据、玩家数据、充值/提现数据、图表统计 |
| 玩家管理 | 玩家列表、等级设置、标签管理、人工充值/提现、钱包管理、密码重置 |
| 游戏管理 | 游戏列表、进入游戏、奖品管理、每日库存补充、游戏服务配置 |
| 充值管理 | 充值记录、充值审核、充值方式配置、快捷支付配置 |
| 提现管理 | 提现记录、提现审核(通过/拒绝)、付款处理 |
| 渠道管理 | 渠道列表、渠道管理员、渠道配置 |
| 系统管理 | 菜单管理、角色权限管理、部门管理、岗位管理、系统设置 |
| 货币管理 | 货币列表、货币配置 |
| APP版本管理 | Android/iOS 版本管理、渠道配置、APK解压 |
| 附件管理 | 文件上传、分类管理 |
| 游戏记录 | 玩家游戏记录查询 |
| 配送记录 | 玩家配送记录查询 |
### 3.3 第三方集成
| 服务 | 说明 |
|------|------|
| SKL Pay | 支付充值、提现、回调通知 |
| One Pay | 支付服务 |
| Se Pay | 支付充值、提现服务 |
| 短信服务 | Weiqucloud 短信 API含日本/台湾短信) |
| Facebook SDK | Facebook Graph SDK 集成 |
| WebSocket 推送 | webman/push 实时消息推送 |
### 3.4 游戏平台适配
通过 `GameServiceInterface` 统一接口 + `GameServiceFactory` 工厂模式,接入多个游戏平台:
| 游戏平台 | 接口文件 |
|----------|----------|
| MEGA888 | MeGa888ServiceInterface.php |
| KISS918 | Kiss918ServiceInterface.php |
| Joker | JokerServiceInterface.php |
| JiLi | JiLiServiceInterface.php |
| JDB | JDBServiceInterface.php |
| Pragmatic | PragmaticServiceInterface.php |
| LionKing | LionKingServiceInterface.php |
| Lucky365 | Lucky365ServiceInterface.php |
| MarioClub | MarioClubServiceInterface.php |
| MonkeyKing | MonkeyKingServiceInterface.php |
| NextSpin | NextSpinServiceInterface.php |
| BigGaming | BigGamingServiceInterface.php |
| CS | CSServiceInterface.php |
统一接口方法:`createPlayer()``getPlayer()``getSimpleGameList()``login()`
---
## 四、API 接口清单
### 4.1 玩家端 API`/api/v1`
> 请求方式:全部为 **POST**
> 中间件:`SiteAuthMiddleware`(需要 `Site-Id` 请求头)、`Lang`(多语言)、`AppVersionMiddleware`(版本校验)
#### 4.1.1 认证与用户
| 接口路径 | 控制器方法 | 功能说明 |
|----------|-----------|----------|
| `/api/v1/phone-register` | PlayerController@phoneRegister | 手机号注册 |
| `/api/v1/send-msg` | PlayerController@sendMsg | 发送短信验证码 |
| `/api/v1/login` | PlayerController@login | 玩家登录 |
| `/api/v1/logout` | IndexController@logout | 玩家登出 |
| `/api/v1/forget-password` | PlayerController@forgetPassword | 忘记密码 |
| `/api/v1/player-info` | PlayerController@playerInfo | 获取玩家信息 |
| `/api/v1/edit-player-name` | PlayerController@editPlayerName | 编辑玩家昵称 |
#### 4.1.2 银行卡管理
| 接口路径 | 控制器方法 | 功能说明 |
|----------|-----------|----------|
| `/api/v1/bank-list` | IndexController@bankList | 获取银行列表 |
| `/api/v1/bank-card-list` | IndexController@bankCardList | 获取用户银行卡列表 |
| `/api/v1/add-bank-card` | IndexController@addBankCard | 添加银行卡 |
| `/api/v1/edit-bank-card` | IndexController@editBankCard | 修改银行卡 |
| `/api/v1/delete-bank-card` | IndexController@deleteBankCard | 删除银行卡 |
#### 4.1.3 充值相关
| 接口路径 | 控制器方法 | 功能说明 |
|----------|-----------|----------|
| `/api/v1/recharge-list` | PlayerController@rechargeList | 获取充值列表 |
| `/api/v1/recharge-setting-list` | PlayerController@rechargeSettingList | 获取充值项配置列表 |
| `/api/v1/recharge-info` | PlayerController@rechargeInfo | 获取充值配置详情 |
| `/api/v1/player-recharge` | IndexController@playerRecharge | 玩家充值 |
| `/api/v1/upload-certificate` | IndexController@uploadCertificate | 上传充值凭证 |
| `/api/v1/complete-recharge` | PlayerController@completeRecharge | 完成充值 |
| `/api/v1/se-recharge-list` | PlayerController@seRechargeList | SePay充值列表 |
| `/api/v1/se-recharge` | PlayerController@seRecharge | SePay充值 |
#### 4.1.4 提现相关
| 接口路径 | 控制器方法 | 功能说明 |
|----------|-----------|----------|
| `/api/v1/withdrawal` | IndexController@playerWithdrawal | 玩家提现 |
| `/api/v1/se-withdrawal` | PlayerController@seWithdrawal | SePay提现 |
#### 4.1.5 账单与记录
| 接口路径 | 控制器方法 | 功能说明 |
|----------|-----------|----------|
| `/api/v1/cash-out-list` | IndexController@cashOutList | Cash Out 列表 |
| `/api/v1/cash-in-list` | IndexController@cashInList | Cash In 列表 |
| `/api/v1/game-record` | PlayerController@gameRecord | 游戏记录 |
| `/api/v1/deposit-withdrawal-records` | PlayerController@depositWithdrawalRecord | 充提记录 |
#### 4.1.6 游戏相关
| 接口路径 | 控制器方法 | 功能说明 |
|----------|-----------|----------|
| `/api/v1/login-game` | GameController@loginGame | 登录游戏(返回游戏地址)|
| `/api/v1/gametest` | GameController@gametest | 游戏测试接口 |
#### 4.1.7 抽奖系统
| 接口路径 | 控制器方法 | 功能说明 |
|----------|-----------|----------|
| `/api/v1/prize-list` | GameController@getPrizeList | 获取奖品列表 |
| `/api/v1/lottery` | GameController@lottery | 执行抽奖 |
| `/api/v1/draw-records` | GameController@getDrawRecords | 获取抽奖记录 |
#### 4.1.8 其他
| 接口路径 | 控制器方法 | 功能说明 |
|----------|-----------|----------|
| `/api/v1/get-app-update` | VersionController@getAppUpdate | 获取APP版本更新信息 |
| `/api/v1/channel-info` | IndexController@channelInfo | 获取渠道信息 |
| `/api/v1/gift-center` | PlayerController@giftCenter | 数据中心/礼品中心 |
---
### 4.2 外部回调接口(`/external`
| 接口路径 | 请求方式 | 控制器方法 | 功能说明 |
|----------|---------|-----------|----------|
| `/external/login` | GET | ExternalApiController@login | 外部登录页面 |
| `/external/download` | GET | ExternalApiController@download | 外部下载页面 |
| `/external/skl-recharge-notify` | POST | ExternalApiController@sklRechargeNotify | SKL支付充值回调 |
| `/external/skl-withdrawal-notify` | POST | ExternalApiController@sklWithdrawalNotify | SKL支付提现回调 |
| `/external/skl-query/` | GET | ExternalApiController@sklQuery | SKL支付跳转查询 |
---
### 4.3 后台管理接口
后台基于 ExAdmin 自动生成 CRUD 路由,默认路径前缀为 `/admin``/agent`
#### 主要管理模块
| 模块 | 控制器 | 主要功能 |
|------|--------|----------|
| 管理员 | AdminController | 管理员列表、修改密码、编辑信息、重置密码 |
| 仪表盘 | IndexController | 登录/玩家/充值/提现数据统计、图表 |
| 玩家管理 | PlayerController | 玩家CRUD、等级/标签、人工充提、钱包、记录查询 |
| 游戏管理 | GameController | 游戏CRUD、进入游戏、奖品管理、服务配置 |
| 充值记录 | RechargeRecordController | 充值记录查询、玩家详情 |
| 提现记录 | WithdrawRecordController | 提现记录查询、玩家详情 |
| 菜单管理 | MenuController | 菜单CRUD |
| 角色管理 | RoleController | 角色CRUD、权限分配 |
| 部门管理 | DepartmentController | 部门CRUD |
| 岗位管理 | PostController | 岗位CRUD |
| 系统设置 | SystemSettingController | 系统配置、结算日期 |
| 货币管理 | CurrencyController | 货币CRUD |
| APP版本 | AppVersionController | Android/iOS版本管理 |
| 附件管理 | AttachmentController | 文件上传、分类 |
| 游戏记录 | PlayGameRecordController | 游戏记录查询 |
| 配送记录 | PlayerDeliveryRecordController | 配送记录查询 |
#### 渠道端管理模块(`/agent`
| 模块 | 控制器 | 主要功能 |
|------|--------|----------|
| 渠道仪表盘 | ChannelIndexController | 渠道数据统计 |
| 渠道玩家 | ChannelPlayerController | 玩家管理、推广员绑定 |
| 渠道管理 | ChannelController | 渠道CRUD |
| 渠道管理员 | ChannelAdminController | 渠道管理员CRUD |
| 渠道充值记录 | ChannelRechargeRecordController | 充值审核(通过/拒绝)、凭证查看 |
| 渠道充值配置 | ChannelRechargeController | 充值方式、快捷支付配置 |
| 渠道提现记录 | ChannelWithdrawRecordController | 提现审核、付款处理 |
| 渠道游戏 | ChannelGameController | 游戏管理 |
| 渠道岗位 | ChannelPostController | 岗位管理 |
| 渠道游戏记录 | ChannelPlayGameRecordController | 游戏记录 |
| 渠道配送记录 | ChannelPlayerDeliveryRecordController | 配送记录 |
---
## 五、中间件
### 5.1 应用中间件API 请求)
| 中间件 | 作用 |
|--------|------|
| SiteAuthMiddleware | 站点/渠道验证,通过 `Site-Id` 请求头识别渠道 |
| Lang | 多语言处理 |
| AppVersionMiddleware | APP 版本校验 |
### 5.2 后台中间件
| 中间件 | 作用 |
|--------|------|
| AuthMiddleware | 后台管理员登录鉴权 |
| Permission | 角色权限校验 |
| LoadLangPack | 语言包加载 |
| RequestMiddleware | 请求预处理 |
---
## 六、数据模型
### 6.1 玩家相关
| 模型 | 说明 |
|------|------|
| Player | 玩家基础信息 |
| PlayerExtend | 玩家扩展信息 |
| PlayerBank | 玩家银行卡 |
| PlayerRechargeRecord | 充值记录 |
| PlayerWithdrawRecord | 提现记录 |
| PlayerDeliveryRecord | 配送记录 |
| PlayerLoginRecord | 登录记录 |
| PlayerRegisterRecord | 注册记录 |
| PlayerEditLog | 编辑日志 |
| PlayerTag | 玩家标签 |
| PlayerLevel | 玩家等级 |
| PlayerPromoter | 推广员 |
| PlayerGamePlatform | 玩家游戏平台关联 |
| PlayerGameRecord | 游戏记录 |
| PlayerLotteryRecord | 抽奖记录 |
| PlayerChipRecord | 筹码记录 |
| PlayerBankruptcyRecord | 破产记录 |
| PlayerPlatformCash | 平台现金 |
| PlayerMoneyEditLog | 资金变动日志 |
| PlayerWalletTransfer | 钱包转账 |
### 6.2 渠道相关
| 模型 | 说明 |
|------|------|
| Channel | 渠道 |
| ChannelRechargeMethod | 渠道充值方式 |
| ChannelRechargeMethodLang | 充值方式多语言 |
| ChannelRechargeSetting | 渠道充值配置 |
| ChannelFinancialRecord | 渠道财务记录 |
### 6.3 管理后台相关
| 模型 | 说明 |
|------|------|
| AdminUser | 管理员用户 |
| AdminRole | 管理角色 |
| AdminMenu | 管理菜单 |
| AdminConfig | 管理配置 |
| AdminDepartment | 部门 |
| AdminPost | 岗位 |
| AdminFileAttachment | 文件附件 |
### 6.4 业务相关
| 模型 | 说明 |
|------|------|
| Game | 游戏 |
| GamePlatform | 游戏平台 |
| GameType | 游戏类型 |
| Currency | 货币 |
| BankList | 银行列表 |
| Prize | 奖品 |
| DrawRecord | 抽奖记录 |
| Notice / Announcement | 公告/通知 |
| Activity / ActivityContent | 活动 |
| SepayRecharge | SePay充值记录 |
| Qrcode / QrcodeBatch / QrcodeOwner | 二维码管理 |
| PromoterProfitRecord | 推广员利润记录 |
| CommissionRecord | 佣金记录 |
| Broadcast | 广播消息 |
| AppVersion | APP版本 |
| SystemSetting | 系统设置 |
| ExternalApp | 外部应用 |
| ApiErrorLog | API 错误日志 |
| PhoneSmsLog | 短信日志 |
---
## 七、技术架构
### 7.1 核心依赖
| 依赖包 | 版本 | 用途 |
|--------|------|------|
| workerman/webman-framework | ^1.5.0 | Web 框架核心 |
| illuminate/database | ^8.83 | Eloquent ORM |
| rockys/ex-admin-webman | ^1.0 | 后台管理系统 |
| tinywan/jwt | ^1.6 | JWT 鉴权 |
| webman/push | ^1.0 | WebSocket 推送 |
| webman/redis-queue | ^1.2 | Redis 消息队列 |
| workerman/crontab | ^1.0 | 定时任务 |
| symfony/translation | ^5.4 | 多语言翻译 |
| gitfei1231/webman-api-sign | ^0.0.21 | API 签名验证 |
| facebook/graph-sdk | ^5.1 | Facebook 集成 |
| endroid/qr-code | ^4.6 | 二维码生成 |
| robmorgan/phinx | ^0.14.0 | 数据库迁移 |
| yzh52521/webman-lock | ^1.0 | 分布式锁 |
### 7.2 队列消费者
| 消费者 | 队列名 | 功能 |
|--------|--------|------|
| SendBroadcasts | broadcast_tasks | 广播消息发送 |
| CancelRecharge | - | 取消充值处理 |
### 7.3 多语言支持
- 简体中文 (zh_CN)
- 英语 (en)
- 马来语 (Ma_my)
- 柬埔寨语 (cam_dia)
### 7.4 存储
| 组件 | 配置 |
|------|------|
| MySQL | 默认数据库utf8mb4 编码 |
| Redis | 127.0.0.1:6379DB 1 |
| Redis Queue | 8 个消费进程,最大重试 5 次 |
---
## 八、异常处理
| 异常类 | 说明 |
|--------|------|
| ApiHandler | API 统一异常处理 |
| GameException | 游戏相关异常 |
| PlayerCheckException | 玩家校验异常 |
| PromoterCheckException | 推广员校验异常 |
---
## 九、支付服务
| 服务类 | 说明 |
|--------|------|
| SklPayServices | SKL 支付服务(充值/提现)|
| OnePayServices | OnePay 支付服务 |
| SePayServices | SePay 支付服务 |
| DrawService | 抽奖服务 |
---
## 十、部署与运行
```bash
# Linux 启动
php start.php start
# Linux 守护进程
php start.php start -d
# Windows 启动
php windows.php
# 停止
php start.php stop
# 重启
php start.php restart
```
默认监听地址:`http://0.0.0.0:8786`