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

16 KiB
Raw Permalink Blame History

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 抽奖服务

十、部署与运行

# 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