基于TP6+Uni-app的三角洲电竞护航小程序系统技术实践

0 阅读3分钟

DL前端.jpg DL前端2.png

项目背景

随着电竞游戏市场的快速发展,游戏帮玩、护航陪玩等衍生服务需求日益增长。本文分享一套基于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. 打手结算与提现

安全防护措施

  1. 接口防刷:使用Redis限流,同一IP每分钟限制请求次数
  2. 参数过滤:严格校验所有输入参数,防止SQL注入
  3. JWT认证:无状态token认证,设置合理过期时间
  4. 敏感信息加密:用户手机号、身份证等敏感字段AES加密存储
  5. 操作日志:关键操作记录日志,便于追溯

总结

本系统采用ThinkPHP6 + Uni-app技术栈,实现了完整的游戏帮玩/护航订单流转体系。通过多角色权限设计、灵活的派单机制和实时消息推送,能够满足公司、俱乐部、游戏工作室、电竞主播等不同场景的运营需求。代码结构清晰,便于二次开发和功能扩展。

项目已在生产环境稳定运行,单日处理订单量峰值超过5000单,系统响应时间控制在200ms以内。 DL111.png DL222.png DL333.png DL444.png DL555.png