项目背景
随着电竞游戏市场的快速发展,游戏帮玩、护航陪玩等衍生服务需求日益增长。本文分享一套基于ThinkPHP6 + Uni-app框架开发的游戏帮玩/护航陪玩系统的技术实现方案,涵盖多端同步、订单流转、权限管理等核心模块。
技术选型
后端架构
- 框架:ThinkPHP6
- 数据库:MySQL 5.7+
- 缓存:Redis
- 消息队列:Redis队列
- 接口协议:RESTful API + WebSocket
前端架构
- 客户移动端:Uni-app(支持微信小程序、H5、APP多端打包)
- 管理后台:ThinkPHP6 + Layui/jQuery
部署环境
- 服务器:Nginx / Apache
- PHP版本:7.4+
- SSL证书:HTTPS强制跳转
系统架构设计
整体架构图
┌─────────────────────────────────────────────────┐
│ 用户端 │
├─────────┬─────────┬─────────┬───────────────────┤
│ 小程序 │ H5 │ APP │ PC端管理后台 │
└────┬────┴────┬────┴────┬────┴────────┬──────────┘
│ │ │ │
└─────────┴─────────┴─────────────┘
│
┌─────────▼─────────┐
│ API Gateway │
│ (TP6 + JWT) │
└─────────┬─────────┘
│
┌──────────────┼──────────────┐
│ │ │
┌────▼────┐ ┌─────▼─────┐ ┌─────▼─────┐
│订单模块 │ │ 用户模块 │ │ 结算模块 │
└────┬────┘ └─────┬─────┘ └─────┬─────┘
│ │ │
└──────────────┼──────────────┘
│
┌─────────▼─────────┐
│ MySQL + Redis │
└───────────────────┘
多角色权限设计
系统采用RBAC权限控制模型,定义了5种核心角色:
| 角色 | 权限范围 | 主要功能 |
|---|---|---|
| 老板端 | 下单、支付、评价 | 创建订单、选择服务模式、打手评价 |
| 打手端 | 接单、上传凭证、提现 | 抢单/接派单、游戏动态发布、个人卡片管理 |
| 客服端 | 订单管理、派单、审核 | 订单状态跟踪、人工派单、完成截图审核 |
| 管事端 | 打手管理、佣金配置 | 邀请打手、团队佣金管理 |
| 工作室端 | 入驻、子账号管理 | 申请入驻、独立订单池、佣金抽成 |
核心模块实现
1. 订单模块设计
订单状态机是系统的核心,需要保证状态流转的严谨性。
// 订单状态常量定义
class OrderStatus
{
const WAIT_PAY = 0; // 待支付
const WAIT_ASSIGN = 1; // 待派单
const WAIT_RECEIVE = 2; // 待接单(抢单池)
const IN_PROGRESS = 3; // 进行中
const WAIT_CHECK = 4; // 待审核(打手已提交完成凭证)
const COMPLETED = 5; // 已完成
const CANCELLED = 6; // 已取消
const DISPUTED = 7; // 争议中
}
订单表核心字段设计:
2. 派单机制实现
系统支持三种派单模式,通过策略模式实现灵活切换:
3. WebSocket实时消息推送
使用Workerman实现WebSocket服务,保证订单通知的实时性:
// WebSocket服务端核心代码
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
$ws_worker = new Worker("websocket://0.0.0.0:2346");
$ws_worker->count = 4;
// 存储用户连接
$connections = [];
$ws_worker->onConnect = function(TcpConnection $connection) {
echo "New connection\n";
};
$ws_worker->onMessage = function(TcpConnection $connection, $data) {
$message = json_decode($data, true);
switch($message['type']) {
case 'auth':
// 用户认证,绑定user_id和连接
$connections[$message['user_id']] = $connection;
break;
case 'ping':
$connection->send(json_encode(['type' => 'pong']));
break;
}
};
// 发送消息给指定用户
function sendToUser($userId, $data) {
global $connections;
if (isset($connections[$userId])) {
$connections[$userId]->send(json_encode($data));
return true;
}
return false;
}
4. Uni-app多端适配
前端采用Uni-app框架,一套代码同时编译到微信小程序、H5和APP:
5. 微信支付集成
6. 打手结算与提现
安全防护措施
- 接口防刷:使用Redis限流,同一IP每分钟限制请求次数
- 参数过滤:严格校验所有输入参数,防止SQL注入
- JWT认证:无状态token认证,设置合理过期时间
- 敏感信息加密:用户手机号、身份证等敏感字段AES加密存储
- 操作日志:关键操作记录日志,便于追溯
总结
本系统采用ThinkPHP6 + Uni-app技术栈,实现了完整的游戏帮玩/护航订单流转体系。通过多角色权限设计、灵活的派单机制和实时消息推送,能够满足公司、俱乐部、游戏工作室、电竞主播等不同场景的运营需求。代码结构清晰,便于二次开发和功能扩展。
项目已在生产环境稳定运行,单日处理订单量峰值超过5000单,系统响应时间控制在200ms以内。