在线体育投注平台 Laravel 8

作者 : tideit 本文共8882个字,预计阅读时间需要23分钟 发布时间: 2026-02-28 共10人阅读

项目分析报告 – 体育博彩平台 (Prophecy)

一、项目概述

1.1 基本信息

  • 项目名称: Prophecy (体育博彩平台)
  • 技术框架: Laravel 8.x (PHP 7.3+/8.0+)
  • 项目类型: 在线体育博彩/投注平台
  • 前端框架: Tailwind CSS + Alpine.js + Blade 模板
  • 数据库: MySQL
  • 构建工具: Laravel Mix + Webpack

1.2 核心业务

这是一个完整的体育博彩投注平台,用户可以:

  • 浏览各类体育赛事(足球、篮球、网球等)
  • 查看比赛详情和赔率
  • 下注投注比赛结果
  • 管理资金(充值/提现)
  • 查看投注历史和结果
  • 通过推荐系统获得佣金

二、项目结构

2.1 目录结构

prophecy-503.show99.xyz/
├── app/                        # 应用核心代码
│   ├── Console/               # 命令行任务(定时任务)
│   ├── Events/                # 事件类
│   ├── Exceptions/            # 异常处理
│   ├── Helper/                # 辅助函数 (helpers.php)
│   ├── Http/                  # HTTP 相关
│   │   ├── Controllers/       # 控制器
│   │   │   ├── Admin/        # 后台管理控制器
│   │   │   ├── Auth/         # 认证控制器
│   │   │   └── User/         # 用户端控制器
│   │   ├── Middleware/       # 中间件
│   │   └── Requests/         # 表单请求验证
│   ├── Mail/                  # 邮件类
│   ├── Models/                # Eloquent 模型
│   ├── Providers/             # 服务提供者
│   ├── Rules/                 # 自定义验证规则
│   ├── Services/              # 业务服务层
│   │   └── Gateway/          # 支付网关服务
│   └── View/                  # 视图相关
├── bootstrap/                  # 启动文件
├── config/                     # 配置文件
├── database/                   # 数据库相关
│   ├── factories/             # 模型工厂
│   ├── migrations/            # 数据库迁移
│   └── seeders/               # 数据填充
├── resources/                  # 资源文件
│   ├── css/                   # 样式文件
│   ├── js/                    # JavaScript 文件
│   └── views/                 # Blade 视图
│       ├── admin/             # 后台视图
│       ├── auth/              # 认证视图
│       ├── layouts/           # 布局视图
│       └── themes/            # 主题视图
│           └── betting/       # 博彩主题
├── routes/                     # 路由文件
│   ├── web.php               # Web 路由
│   ├── api.php               # API 路由
│   └── auth.php              # 认证路由
├── storage/                    # 存储文件
└── public/                     # 公共资源

2.2 核心模块划分

用户端模块 (User)

  • 用户认证: 注册、登录、密码重置、邮箱/短信验证
  • 首页: 赛事展示、分类筛选、实时比赛
  • 投注系统: 投注单、下注、赔率计算
  • 资金管理: 充值、提现、交易记录
  • 个人中心: 个人资料、安全设置(两步验证)
  • 推荐系统: 邀请好友、佣金记录
  • 客服工单: 提交工单、查看回复

后台管理模块 (Admin)

  • 仪表盘: 数据统计、图表展示
  • 赛事管理:
    • 分类管理(体育类别)
    • 锦标赛管理
    • 队伍管理
    • 比赛管理
    • 问题/选项管理(投注项目)
  • 投注管理:
    • 投注记录查询
    • 赛果管理
    • 退款处理
  • 用户管理:
    • 用户列表
    • KYC 审核
    • 余额调整
    • 用户详情
  • 财务管理:
    • 充值记录(待处理/已完成)
    • 提现记录
    • 交易流水
    • 佣金记录
  • 支付网关:
    • 支付方式配置
    • 手动网关设置
  • 内容管理:
    • CMS 页面
    • 博客管理
    • 模板配置
  • 系统设置:
    • 基本配置
    • 邮件模板
    • 短信模板
    • 通知配置
    • 语言管理
    • 权限管理
  • 客服工单: 工单列表、回复处理

三、核心业务逻辑

3.1 赛事管理流程

赛事层级结构:
GameCategory (分类)
    └── GameTournament (锦标赛)
            └── GameMatch (比赛)
                    ├── GameTeam1 (队伍 1)
                    ├── GameTeam2 (队伍 2)
                    └── GameQuestions (投注问题)
                            └── GameOptions (投注选项/赔率)

核心模型关系:

  • GameCategory – 体育分类(足球、篮球等)
  • GameTournament – 锦标赛/联赛
  • GameMatch – 具体比赛
  • GameTeam – 参赛队伍
  • GameQuestions – 投注问题(如:谁会赢?)
  • GameOption – 投注选项及赔率

3.2 投注流程

用户投注流程:
1. 用户浏览比赛列表 → 2. 选择比赛和投注选项 → 3. 填写投注金额
→ 4. 系统计算潜在回报 → 5. 确认投注 → 6. 扣除余额生成投注记录

投注数据模型:

  • BetInvest – 投注主记录
    • user_id: 用户 ID
    • question_id: 投注问题 ID
    • invest_amount: 投注金额
    • return_amount: 潜在回报
    • status: 状态 (0 待结算 1 赢 2 输 3 退款)
  • BetInvestLog – 投注明细记录

3.3 赛果结算流程

赛果管理流程:
1. 比赛结束 → 2. 管理员设置获胜选项 → 3. 系统自动计算中奖用户
→ 4. 更新投注记录状态 → 5. 发放奖金到用户余额 → 6. 记录交易流水

3.4 支付系统

支持的支付网关 (25+ 种):

  • 国际支付: PayPal, Stripe, Skrill, PerfectMoney
  • 加密货币: Coinbase Commerce, Blockchain, Block.io, CoinPayments
  • 地区支付:
    • 欧洲: Mollie, Payeer
    • 非洲: Flutterwave, Paystack, Monnify
    • 亚洲: Razorpay, Paytm, PayUmoney, Instamojo
    • 拉美: MercadoPago
    • 其他: Authorize.net, 2Checkout, Voguepay

充值流程:

1. 用户选择支付网关 → 2. 输入金额 → 3. 系统计算手续费
→ 4. 跳转到支付网关 → 5. 用户完成支付 → 6. 回调处理
→ 7. 管理员审核(手动)/自动入账 → 8. 更新用户余额

提现流程:

1. 用户选择提现方式 → 2. 填写提现金额和账户信息
→ 3. 系统验证余额和限制 → 4. 提交申请 → 5. 管理员审核
→ 6. 执行打款 → 7. 更新状态和余额

3.5 推荐系统

推荐层级佣金:

  • 支持多级推荐(可配置)
  • 佣金类型:
    • 存款佣金 (deposit_commission)
    • 投注佣金 (bet_commission)
    • 投注赢利佣金 (bet_win_commission)

数据模型:

  • Referral – 推荐关系记录
  • ReferralBonus – 佣金奖励记录

3.6 KYC 认证系统

认证流程:

1. 用户上传身份证明 → 2. 提交审核 → 3. 管理员审核
→ 4. 审核通过/拒绝 → 5. 更新用户状态

数据模型:

  • KYC – KYC 认证记录
  • IdentifyForm – 身份验证表单配置

四、核心代码分析

4.1 路由结构 (routes/web.php)

// 前台路由
Route::get('/''FrontendController@index')->name('home');
Route::get('/category/{category_slug}/{category_id}''FrontendController@category');
Route::get('/match/{match_name}/{match_id}''FrontendController@match');

// 用户中心路由 (需要登录)
Route::group(['middleware' => ['auth'], 'prefix' => 'user'], function () {
    Route::get('/dashboard''User\HomeController@index')->name('home');
    Route::post('/betSlip''User\HomeController@betSlip')->name('betSlip');
    Route::get('/bet-history''User\BetHistoryController@betList')->name('betHistory');
    Route::get('/add-fund''User\HomeController@addFund')->name('addFund');
    Route::get('/withdraw''User\HomeController@payoutMoney')->name('payout.money');
    // ...更多路由
});

// 后台管理路由
Route::group(['prefix' => 'admin'], function () {
    Route::get('/dashboard''Admin\DashboardController@dashboard');
    Route::get('category/list''Admin\CategoryController@listCategory');
    Route::get('match/list''Admin\MatchController@listMatch');
    Route::get('/bet-history''Admin\ManageBetController@betList');
    Route::get('/result/history''Admin\ManageResultController@resultList');
    // ...更多路由
});

4.2 核心控制器

FrontendController.php

  • 首页展示
  • 分类/锦标赛/比赛页面
  • 博客/FAQ/联系我们
  • 内容管理

User/HomeController.php

  • 用户仪表盘
  • 投注功能
  • 充值/提现
  • 个人资料管理
  • 交易记录查询

PaymentController.php

  • 充值请求处理
  • 支付网关集成
  • IPN 回调处理
  • 充值确认

GameFetchController.php

  • 赛事数据获取
  • 实时比赛数据
  • 赔率数据格式化

4.3 核心模型

User.php (用户模型)

// 核心属性
- id, firstname, lastname, username, email
- phone, phone_code, address, image
- balance, referral_id, status
- email_verified_at, code, code_expired_at

// 核心关系funds(): 充值记录
- transaction(): 交易记录
- ticket(): 工单
- payout(): 提现记录
- referral(): 推荐人
- referralBonusLog(): 佣金记录

BetInvest.php (投注记录)

// 核心属性
- user_id, question_id
- invest_amount: 投注金额
- return_amount: 潜在回报
- status: 0 待结算 1 赢 2 输 3 退款

// 核心关系user(): 用户
- betInvestLog(): 投注明细

GameMatch.php (比赛)

// 核心属性
- category_id, tournament_id
- team1_id, team2_id
- name, start_date, end_date
- status, is_unlock

// 核心关系gameCategory(): 分类
- gameTournament(): 锦标赛
- gameTeam1/gameTeam2(): 队伍
- gameQuestions(): 投注问题

Gateway.php (支付网关)

// 核心属性
- code, name, image, status
- parameters: 配置参数 (JSON)
- currencies: 支持币种 (JSON)
- min_amount, max_amount
- percentage_charge, fixed_charge
- convention_rate: 汇率

4.4 辅助函数 (app/Helper/helpers.php)

// 主题相关
template() - 获取当前主题

// 文件处理
getFile() - 获取文件 URL
removeFile() - 删除文件
uploadImage() - 上传图片

// 格式化
getAmount() - 格式化金额
dateTime() - 格式化日期
slug() - 生成 URL 友好别名

// 安全相关
strRandom() - 生成随机字符串
code() - 生成验证码
getIpInfo() - 获取 IP 信息

// 业务相关
getLevelUser() - 获取推荐层级
invoice() - 生成订单号

4.5 支付网关服务结构

app/Services/Gateway/
├── stripe/Payment.php      # Stripe 支付
├── paypal/Payment.php      # PayPal 支付
├── coinbasecommerce/       # Coinbase 商务
├── blockchain/             # Blockchain 加密货币
├── flutterwave/            # Flutterwave 非洲支付
├── razorpay/               # Razorpay 印度支付
└── ... (25+ 网关)

每个网关实现统一接口:

class Payment {
    public static function prepareData($order$gateway)  // 准备支付数据
    public static function ipn($request$gateway$order$trx$type)  // IPN 回调
}

五、数据库设计

5.1 核心数据表

用户相关

  • users – 用户主表
  • password_resets – 密码重置
  • kyc – KYC 认证
  • identify_forms – 身份验证表单

赛事相关

  • categories – 体育分类
  • game_tournaments – 锦标赛
  • game_teams – 队伍
  • game_matches – 比赛
  • game_questions – 投注问题
  • game_options – 投注选项/赔率

投注相关

  • bet_invests – 投注记录
  • bet_invest_logs – 投注明细

财务相关

  • funds – 充值记录
  • payout_logs – 提现记录
  • payout_methods – 提现方式
  • gateways – 支付网关
  • transactions – 交易流水

推荐相关

  • referrals – 推荐关系
  • referral_bonuses – 佣金奖励

系统相关

  • configures – 系统配置
  • admins – 管理员
  • tickets – 客服工单
  • subscribers – 订阅用户
  • languages – 语言包

5.2 关键数据表结构

users 表

- id: 主键
- firstname, lastname: 姓名
- username: 用户名 (唯一)
- email: 邮箱 (唯一)
- password: 密码 (bcrypt)
- phone, phone_code: 手机号
- address: 地址
- image: 头像
- balance: 余额
- referral_id: 推荐人 ID
- status: 状态 (1 激活 0 禁用)
- email_verified_at: 邮箱验证时间
- code, code_expired_at: 验证码及过期时间
- remember_token: 记住我令牌
- created_at, updated_at

bet_invests 表

- id: 主键
- user_id: 用户 ID
- question_id: 问题 ID
- invest_amount: 投注金额
- return_amount: 潜在回报
- status: 状态
  - 0: 待结算
  - 1: 赢 (已派奖)
  - 2: 输
  - 3: 退款
- created_at, updated_at

game_matches 表

- id: 主键
- category_id: 分类 ID
- tournament_id: 锦标赛 ID
- team1_id, team2_id: 队伍 ID
- name: 比赛名称
- start_date, end_date: 比赛时间
- status: 状态
- is_unlock: 是否解锁投注
- created_at, updated_at

六、技术特性

6.1 安全特性

  • CSRF 保护: Laravel 内置 CSRF Token
  • SQL 注入防护: Eloquent ORM 参数绑定
  • XSS 防护: Purify HTML 净化
  • 密码加密: bcrypt 加密
  • 两步验证: Google Authenticator
  • 邮箱/短信验证: 注册/提现验证
  • IP 检测: 用户行为追踪

6.2 性能优化

  • 缓存: Redis/Memcached 支持
  • 队列: 后台任务处理
  • 优化命令php artisan optimize:clear
  • Eager Loading: 模型关联预加载

6.3 扩展性

  • 主题系统: 支持多主题切换
  • 多语言: 完整的多语言支持
  • 插件系统: 第三方服务集成
  • 模块化: 清晰的模块划分

6.4 第三方集成

  • 社交登录: Laravel Socialite
  • 邮件服务: PHPMailer, Nexmo
  • 短信服务: Nexmo
  • 实时通知: Pusher
  • 验证码: reCAPTCHA
  • 客服系统: Tawk.to, Facebook Messenger
  • 分析工具: Google Analytics

七、部署配置

7.1 环境要求

  • PHP: 7.3+ / 8.0+
  • MySQL: 5.7+
  • Web 服务器: Nginx / Apache
  • 扩展: BCMath, Ctype, Fileinfo, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML

7.2 关键配置

  • .env – 环境变量配置
  • config/basic.php – 基本配置(货币、佣金等)
  • config/location.php – 文件上传路径配置
  • app/Http/Kernel.php – 中间件配置

7.3 定时任务

// routes/web.php
Route::get('cron', function () {
    return Artisan::call('cron:run');
});

// 需要配置系统 crontab 定期访问

7.4 队列处理

# 启动队列监听
php artisan queue:work

八、总结

8.1 项目特点

  1. 功能完整: 涵盖博彩平台所有核心功能
  2. 支付丰富: 支持 25+ 种支付网关
  3. 架构清晰: Laravel MVC 标准架构
  4. 可扩展: 模块化设计,易于扩展
  5. 安全性高: 多层安全防护机制

8.2 核心业务闭环

用户注册 → 充值 → 浏览赛事 → 下注 → 赛果结算 → 赢利提现
         ↓
    推荐好友 → 获得佣金

8.3 技术栈总结

  • 后端: Laravel 8.x + PHP 7.3+/8.0+
  • 前端: Blade + Tailwind CSS + Alpine.js
  • 数据库: MySQL + Eloquent ORM
  • 缓存: Redis/Memcached
  • 队列: Laravel Queue
  • 实时: Pusher
  • 构建: Laravel Mix + Webpack

文档生成时间: 2026 年 2 月 28 日 项目版本: Laravel 8.x 分析范围: 完整项目代码分析


资源在线 » 在线体育投注平台 Laravel 8

常见问题FAQ

发表评论