MineLab 加密货币挖矿管理平台 项目完整分析报告
一、项目概述
1.1 项目简介
MineLab 是一个基于 Laravel 框架开发的加密货币挖矿管理平台该平台允许用户购买挖矿计划、管理加密货币钱包、进行充值和提现操作,并支持推荐系统。
1.2 技术栈
- 后端框架: Laravel 8.x (PHP 7.4)
- 数据库: MySQL/MariaDB
- 缓存: Redis
- Web 服务器: Nginx (OpenResty)
- 前端: Bootstrap 4, jQuery, 自定义模板系统
1.3 核心业务
- 加密货币挖矿计划销售和管理
- 用户钱包余额管理
- 多种支付网关集成(PayPal、Stripe、比特币等)
- 用户推荐返利系统
- 每日收益自动发放
- 提现审批流程
二、项目目录结构
minelab_12/├── assets/ # 静态资源文件(前端模板、图片等)│ └── admin/ # 后台管理模板│ └── basic/ # 用户前台模板│ └── images/ # 公共图片资源│├── core/ # Laravel 应用核心目录│ ├── app/ # 应用核心代码│ │ ├── Admin/ # 管理员控制器│ │ ├── Auth/ # 认证相关控制器│ │ ├── Gateway/ # 支付网关处理│ │ ├── Http/Controllers/ # 所有控制器│ │ ├── Lib/ # 工具库(Google Authenticator 等)│ │ ├── Mail/ # 邮件通知类│ │ ├── Providers/ # 服务提供者│ │ └── *.php # Eloquent 模型│ ││ ├── bootstrap/ # 启动文件│ │ └── cache/ # 配置缓存目录│ ││ ├── config/ # 配置文件目录│ ├── database/ # 数据库迁移和种子文件│ ├── resources/ # 资源文件│ │ ├── lang/ # 语言包│ │ └── views/ # Blade 视图模板│ ││ ├── routes/ # 路由配置│ │ ├── web.php # Web 路由│ │ └── admin.php # 后台路由(集成在 web.php 中)│ ││ ├── storage/ # 存储目录│ │ ├── app/ # 文件存储│ │ ├── framework/ # 框架缓存│ │ └── logs/ # 日志文件│ ││ ├── vendor/ # Composer 依赖包│ ├── artisan # Laravel CLI 工具│ └── .env # 环境配置文件│├── install/ # 安装脚本和数据库文件│ ├── index.php # Web 安装向导│ └── database.sql # 完整数据库结构│└── index.php # 应用入口文件三、核心功能模块
3.1 用户模块 (UserController)
功能描述: 处理用户相关的所有操作
主要功能:
- 用户仪表盘展示(持币情况、充值/提现统计)
- 个人资料管理(头像上传、地址信息)
- 密码修改
- 两步验证(Google Authenticator)
- 钱包地址管理
- 充值/提现历史查询
- 推荐系统管理
核心代码位置: core/app/Http/Controllers/UserController.php
// 用户仪表盘 - 显示所有持币矿工public function home(){ $miners = Miner::with(['userCoinBalances'=> function($q){ return $q->where('user_id', auth()->id()); }])->whereHas('userCoinBalances', function($q){ return $q->where('user_id', auth()->id()); })->get();}// 钱包地址更新public function walletUpdate(Request $request){ foreach ($request->address as $key => $value) { UserCoinBalance::where('coin_code', $key) ->where('user_id', auth()->id()) ->update(['wallet'=>$value]); }}3.2 挖矿计划模块 (OrderPlanController)
功能描述: 处理挖矿计划的购买和支付流程
主要功能:
- 浏览可用挖矿计划
- 使用余额购买计划
- 选择第三方支付网关
- 推荐返利计算和发放
- 订单状态管理
核心代码位置: core/app/Http/Controllers/OrderPlanController.php
购买流程:
- 用户选择计划和支付方式
- 如选择余额支付:扣除余额 → 创建订单 → 发放推荐返利
- 如选择网关支付:创建待支付订单 → 跳转支付网关 → 回调确认
public function orderPlan(Request $request){ // 验证计划存在 $plan = Plan::where('id', $request->plan_id)->where('status', 1)->firstOrFail(); // 余额支付 if($request->payment_method == 1){ if($user->balance < $plan->price){ return back()->with('error', '余额不足'); } // 扣除余额,创建订单,计算返利 $user->balance -= $order->amount; $user->save(); // 推荐返利逻辑 if($general->referral_system && $referrer){ $bonus = $order->amount * $general->referral_bonus / 100; $referrer->increment('balance', $bonus); } } else { // 网关支付 $order->status = 0; // 待支付状态 $order->save(); return redirect()->route('user.payment'); }}3.3 支付网关模块 (PaymentController)
功能描述: 集成多种支付方式,处理充值和订单支付
支持的支付网关 (位于 core/app/Http/Controllers/Gateway/):
- PayPal (标准支付和 SDK)
- Stripe (标准、JS、V3 版本)
- Skrill
- Payeer
- Paytm
- Paystack
- Razorpay
- Instamojo
- Perfect Money
- Flutterwave
- Coinbase Commerce
- CoinPayments (支持法币)
- Coingate
- Mollie
- Cashmaal
- Blockchain (比特币)
- Blockio
- Voguepay
核心代码位置: core/app/Http/Controllers/Gateway/PaymentController.php
3.4 充值管理模块 (DepositController - 后台)
功能描述: 管理员审核和管理用户充值请求
主要功能:
- 查看待审核/已批准/已拒绝/成功的充值
- 手动审核充值请求
- 批准充值(自动增加用户余额或订单状态)
- 拒绝充值(发送通知)
- 按支付方式/日期/关键词筛选
核心代码位置: core/app/Admin/DepositController.php
// 批准充值public function approve(Request $request){ $deposit = Deposit::where('id',$request->id) ->where('status',2)->firstOrFail(); $deposit->status = 1; $deposit->save(); // 增加用户余额或激活订单 if(!$deposit->is_payment){ $user->balance += $deposit->amount; } else { $order->status = 1; // 激活订单 } // 发送通知邮件 notify($user, 'DEPOSIT_APPROVE', [...]);}3.5 提现模块 (WithdrawalController)
功能描述: 处理用户提现请求和管理
流程:
- 用户选择币种和提现金额
- 系统检查钱包余额
- 创建提现记录并冻结余额
- 管理员审核
- 批准后打款并扣减余额
- 拒绝后退回余额
状态说明:
- 0: 待处理
- 1: 已批准
- 2: 已拒绝
- 3: 已完成
3.6 管理员模块
功能描述: 后台管理系统
主要控制器:
- AdminController - 管理员仪表盘、个人资料、密码管理
- ManageUsersController - 用户管理(查看、封禁、余额调整)
- PlanController - 挖矿计划管理
- MinerController - 矿工/币种管理
- FrontendController - 前端页面内容管理
- GatewayController - 支付网关配置
- GeneralSettingController - 系统设置
- EmailTemplateController - 邮件模板管理
- SupportTicketController - 工单支持系统
3.7 定时任务模块 (CronController)
功能描述: 每日收益自动发放
核心逻辑:
// 核心功能:每日收益发放public function returnAmount(){ // 获取所有活跃订单 $orders = Order::where('status', 1) ->where('period_remain', '>', 0) ->get(); foreach($orders as $order){ // 计算每日收益(随机区间) $amount = rand($order->min_return_per_day, $order->max_return_per_day); // 增加用户持币余额 $wallet = UserCoinBalance::where('user_id', $order->user_id) ->where('coin_code', $order->coin_code) ->first(); $wallet->increment('balance', $amount); // 记录交易 Transaction::create([...]); // 发送通知 notify($user, 'RETURN_AMOUNT_PER_DAY', [...]); }}四、数据库设计
4.1 核心数据表 (共 26 张表)
用户相关表
表名 | 描述 | 主要字段 |
users | 用户表 | id, username, email, password, balance, status, ev(邮件验证), sv(短信验证), ts(两步验证), ref_by(推荐人), address(JSON), image |
user_logins | 用户登录日志 | user_id, ip, browser, os, login_at |
user_coin_balances | 用户持币余额 | user_id, coin_code, balance, wallet(提币地址) |
password_resets | 用户密码重置 | email, token, status |
挖矿相关表
表名 | 描述 | 主要字段 |
miners | 矿工/币种表 | name, coin_code, symbol, network, image, min_withdraw_limit, max_withdraw_limit |
plans | 挖矿计划表 | miner_id, title, price, min_return_per_day, max_return_per_day, period, period_unit(day/month/year), speed, speed_unit |
orders | 用户订单表 | user_id, plan_details(JSON), amount, coin_code, period, period_remain, status(0 待支付/1 活跃) |
财务相关表
表名 | 描述 | 主要字段 |
transactions | 交易流水表 | user_id, amount, charge, post_balance, trx_type(+/-), details, trx |
deposits | 充值记录表 | user_id, method_code, amount, method_currency, charge, rate, final_amo, btc_amo, btc_wallet, status(1 成功/2 待审/3 拒绝), is_payment(是否订单支付) |
withdrawals | 提现记录表 | user_id, user_coin_balance_id, amount, status, admin_feedback |
referral_logs | 推荐返利日志 | user_id, referee_id, amount |
系统相关表
表名 | 描述 | 主要字段 |
admins | 管理员表 | name, email, username, password, image, access(JSON 权限) |
admin_password_resets | 管理员密码重置 | email, token, status |
general_settings | 系统设置 | sitename, cur_text(货币符号), referral_system, referral_bonus, email_configuration, sms_configuration |
gateways | 支付网关配置 | name, alias, code, description, status |
gateway_currencies | 网关币种配置 | gateway_id, currency, rate, symbol, min_amount, max_amount |
email_sms_templates | 通知模板 | act, name, subj, email_body, sms_body, shortcodes, email_status, sms_status |
extensions | 扩展插件配置 | act, name, script, shortcode, status(如 Google Recaptcha, Analytics) |
frontends | 前端内容管理 | data_keys, data_values(JSON) |
pages | 自定义页面 | title, slug, description |
languages | 多语言配置 | name, code, text, json(JSON 语言内容) |
support_tickets | 工单表 | user_id, subject, status(open/closed/answered), priority |
support_messages | 工单消息 | support_ticket_id, user_id, message |
support_attachments | 工单附件 | support_message_id, image |
features | 特性展示 | name |
subscribers | 邮件订阅 |
4.2 数据关系
User (用户)├── orders (订单)├── transactions (交易)├── deposits (充值)├── withdrawals (提现)├── user_coin_balances (持币余额)├── user_logins (登录日志)├── support_tickets (工单)├── referral_logs (被推荐记录)└── referrer (推荐人 - 自关联)Miner (矿工/币种)└── plans (计划)Plan (计划)└── orders (订单)Order (订单)├── user (用户)└── transaction (交易记录)Gateway (支付网关)└── gateway_currencies (支持的币种)Deposit (充值)├── user (用户)└── gateway (支付网关)Withdrawal (提现)├── user (用户)└── user_coin_balance (持币账户)五、路由结构
5.1 公共路由
路由 | 方法 | 描述 |
/ | GET | 首页 |
/plans | GET | 挖矿计划列表 |
/blogs | GET | 博客列表 |
/contact | GET/POST | 联系我们 |
/{slug} | GET | 自定义页面 |
5.2 用户路由 (前缀:/user)
路由 | 方法 | 描述 |
/login | GET/POST | 用户登录 |
/register | GET/POST | 用户注册 |
/password/reset | GET/POST | 密码重置 |
/dashboard | GET | 用户仪表盘 |
/profile-setting | GET/POST | 个人资料
|
/change-password | GET/POST | 修改密码 |
/twofactor | GET/POST | 两步验证 |
/plans | GET | 计划列表 |
/plans/purchased | GET | 已购计划 |
/plan/order | POST | 购买计划 |
/payment | GET | 支付页面 |
/deposit | ANY | 充值 |
/deposit/history | GET | 充值历史 |
/withdraw | GET/POST | 提现 |
/withdraw/history | GET | 提现历史 |
/wallets | GET/POST | 钱包管理 |
/ticket | GET/POST | 支持工单 |
5.3 管理员路由 (前缀:/admin)
路由 | 方法 | 描述 |
/ | GET/POST | 管理员登录 |
/dashboard | GET | 仪表盘 |
/profile | GET/POST | 个人资料 |
/miners | GET | 矿工列表 |
/plans | GET | 计划管理 |
/deposit/pending | GET | 待审充值 |
/deposit/approved | GET | 已批充值 |
/deposit/rejected | GET | 被拒充值 |
/deposit/history | GET | 充值历史 |
/withdraw/pending | GET | 待审提现 |
/withdraw/approved | GET | 已批提现 |
/withdraw/rejected | GET | 被拒提现 |
/users | GET | 用户列表 |
/users/active | GET | 活跃用户 |
/users/banned | GET | 封禁用户 |
/users/email-verified | GET | 邮箱验证用户 |
/users/email-unverified | GET | 邮箱未验证用户 |
/users/with-balance | GET | 有余额用户 |
/users/add-sub-balance | POST | 增减余额 |
/report/transaction | GET | 交易报告 |
/report/login/history | GET | 登录历史 |
/tickets | GET | 工单列表 |
/general-setting | GET/POST | 系统设置 |
/email-template | GET/POST | 邮件模板 |
/sms-template | GET/POST | 短信模板 |
/frontend/templates | GET/POST | 前端模板管理 |
/language | GET/POST | 语言管理 |
/seo | GET/POST | SEO 设置 |
5.4 支付回调路由 (前缀:/ipn)
支持所有支付网关的 IPN 回调,如:
- /ipn/paypal
- /ipn/stripe
- /ipn/coinpayments
- /ipn/blockchain
- 等等...
5.5 定时任务路由
路由 | 描述 |
/cron | 每日收益发放(需配置 crontab 定时访问) |
六、核心业务逻辑
6.1 用户注册流程
1. 填写注册表单(用户名、邮箱、密码、推荐码可选)2. 验证验证码(ReCaptcha/自定义)3. 检查用户名/邮箱是否已存在4. 创建用户记录5. 发送邮箱验证邮件6. 如有推荐人,记录推荐关系6.2 购买计划流程
用户选择计划 │ ▼选择支付方式 │ ├─→ 余额支付 ─→ 检查余额充足 ─→ 扣除余额 ─→ 创建订单 (status=1) ─→ 计算返利 ─→ 完成 │ └─→ 网关支付 ─→ 创建订单 (status=0) ─→ 跳转支付网关 ─→ │ ▼ 支付成功回调 ─→ 激活订单 (status=1) ─→ 计算返利6.3 每日收益发放逻辑
// CronController 核心逻辑1. 查询所有活跃订单 (status=1, period_remain>0)2. 遍历每个订单: - 计算随机收益:rand(min_return, max_return) - 查找用户持币钱包 - 增加钱包余额 - 创建交易记录 - 发送通知 - 减少订单剩余天数 (period_remain--)3. 订单到期后 (period_remain=0) 自动关闭6.4 推荐返利逻辑
// 当用户购买计划时if(推荐系统启用 AND 用户有推荐人){ // 计算返利金额 bonus = 订单金额 × 返利百分比 / 100 // 增加推荐人余额 推荐人.balance += bonus // 记录返利日志 ReferralLog.create([ 'user_id' => 推荐人 ID, 'referee_id' => 购买人 ID, 'amount' => bonus ]) // 创建交易记录 Transaction.create([...]) // 发送通知 notify(推荐人,'REFERRAL_BONUS', [...])}6.5 充值审核流程
用户发起充值 │ ├─→ 自动网关 ─→ 支付成功 ─→ 自动批准 ─→ 增加余额/激活订单 │ └─→ 手动网关 ─→ 待审核状态 (status=2) ─→ │ ▼ 管理员审核 │ ┌────────┴───────┐ ▼ ▼ 批准 (status=1) 拒绝 (status=3) │ │ ▼ ▼ 增加余额/激活订单 发送拒绝通知6.6 提现审批流程
用户发起提现 │ ▼检查钱包余额充足 │ ▼创建提现记录 (status=0)冻结/扣除余额 │ ▼管理员审核 │ ├─→ 批准 ─→ 打款 ─→ 记录打款信息 ─→ 状态更新 │ └─→ 拒绝 ─→ 退回余额 ─→ 发送拒绝通知七、通知系统
7.1 通知类型
系统支持多种通知模板,通过 email_sms_templates 表管理:
模板标识 | 用途 | 主要变量 |
PASS_RESET_CODE | 密码重置验证码 | code, ip, browser, operating_system, time |
EVER_CODE | 邮箱验证码 | code |
SVER_CODE | 短信验证码 | code |
2FA_ENABLE | 两步验证启用 | ip, browser, operating_system, time |
2FA_DISABLE | 两步验证禁用 | ip, browser, operating_system, time |
DEPOSIT_COMPLETE | 自动充值成功 | amount, currency, method_name, trx, post_balance |
DEPOSIT_REQUEST | 手动充值请求 | amount, currency, method_name, trx |
DEPOSIT_APPROVE | 充值批准 | amount, currency, post_balance |
DEPOSIT_REJECT | 充值拒绝 | amount, rejection_message |
WITHDRAW_REQUEST | 提现请求 | amount, coin_code, wallet, trx, post_balance |
WITHDRAW_APPROVE | 提现批准 | amount, coin_code, admin_details |
WITHDRAW_REJECT | 提现拒绝 | amount, coin_code, admin_details |
BAL_ADD | 管理员增加余额 | amount, currency, post_balance |
BAL_SUB | 管理员扣除余额 | amount, currency, post_balance |
PAYMENT_VIA_USER_BALANCE | 余额支付成功 | plan_title, amount, post_balance |
RETURN_AMOUNT_PER_DAY | 每日收益 | amount, coin_code, plan_title, post_balance |
PAYMENT_COMPLETE | 网关支付完成 | plan_title, amount, method_name |
7.2 通知发送函数
// 发送通知的辅助函数notify($user, $template_code, $variables);// 示例notify($user, 'DEPOSIT_APPROVE', [ 'amount' => 100, 'currency' => 'USD', 'method_name' => 'PayPal', 'trx' => 'TRX123456', 'post_balance' => 500]);八、安全机制
8.1 用户认证
- 密码加密: 使用 Laravel 的 Hash::make() (bcrypt)
- 会话管理: 基于 Laravel Session
- CSRF 保护: 所有表单包含 CSRF Token
- XSS 防护: Blade 模板自动转义输出
8.2 两步验证 (2FA)
- 集成 Google Authenticator
- 使用 Totp 算法生成 6 位动态验证码
- 支持启用/禁用功能
8.3 邮箱/短信验证
- 注册后发送验证码
- 验证通过前限制部分功能
- 验证码有效期管理
8.4 管理员权限控制
// 权限中间件Route::middleware(['admin', 'access'])->group(function () { // 需要管理员权限和特定访问权限的路由});8.5 文件上传安全
- 限制文件类型(白名单)
- 限制文件大小
- 重命名上传文件
- 存储到非公开目录
九、扩展系统设计
9.1 支付网关扩展
支付网关位于 core/app/Http/Controllers/Gateway/,每个网关包含:
GatewayName/├── ProcessController.php # 支付处理和回调└── SDK/ # 可选的 SDK 文件网关配置流程:
- 在 gateways 表添加记录
- 在 gateway_currencies 表添加支持的币种
- 配置网关密钥(后台管理界面)
- 实现 ProcessController 处理支付和回调
9.2 前端模板系统
系统支持多模板切换,通过 frontends 表管理页面内容:
// 激活模板public function templatesActive(Request $request){ $frontend = Frontend::where('data_keys', 'template.active')->first(); $frontend->data_values = ['template' => $request->template]; $frontend->save();}9.3 页面构建器
支持可视化页面构建:
- 管理页面列表
- 拖拽组件排序
- 自定义组件内容
十、配置文件
10.1 关键配置项 (.env)
APP_NAME=LaravelAPP_ENV=local/productionAPP_DEBUG=true/falseAPP_URL=http://minelab_12# 数据库配置DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=minelab_12DB_USERNAME=minelab_12DB_PASSWORD=minelab_12# Redis 配置REDIS_HOST=127.0.0.1REDIS_PASSWORD=foobaredREDIS_PORT=6379# 邮件配置MAIL_MAILER=smtpMAIL_HOST=smtp.mailtrap.ioMAIL_PORT=2525MAIL_USERNAME=nullMAIL_PASSWORD=nullMAIL_ENCRYPTION=null10.2 系统设置 (数据库)
通过 general_settings 表管理:
- 网站名称
- 货币符号
- 推荐系统开关
- 推荐返利比例
- 邮件/SMS 配置
- KYC 审核开关
十一、定时任务配置
11.1 Cron 配置
需要配置系统 crontab 每分钟执行:
# 每分钟执行收益发放* * * * * curl http://minelab_12.show99.xyz/cron或使用 PHP-CLI:
* * * * * cd /path/to/core && php artisan schedule:run >> /dev/null 2>&111.2 定时任务内容
- 检查所有活跃订单
- 计算并发放每日收益
- 更新订单剩余天数
- 到期订单自动关闭
- 发送每日收益通知
十二、常见问题
12.1 PHP 版本兼容性
- 推荐版本: PHP 7.4
- 不支持: PHP 8.0+ (Laravel 版本较旧,存在兼容性问题)
12.2 目录权限要求
以下目录需要写入权限 (777):
- core/storage/ 及其子目录
- core/bootstrap/cache/
12.3 必须启用的 PHP 扩展
- BCMath
- Ctype
- Fileinfo
- JSON
- Mbstring
- OpenSSL
- PDO
- pdo_mysql
- Tokenizer
- XML
- cURL
- GD
- GMP
十三、总结
MineLab 是一个功能完整的加密货币挖矿管理平台,具有以下特点:
优点:
- 功能完整:支持计划购买、支付、充值、提现、推荐等完整业务流程
- 扩展性强:支持 20+ 种支付网关,易于添加新网关
- 模板化设计:支持多模板切换
- 通知系统完善:支持邮件和短信通知
- 多语言支持
安全注意事项:
- 及时修改默认管理员密码
- 删除 install/ 目录
- 定期备份数据库
- 启用两步验证
- 配置合适的提现审核流程
运维建议:
- 配置 crontab 定时任务确保收益正常发放
- 监控日志文件发现异常
- 定期清理缓存
- 关注充值/提现审核队列
💻 配套实训环境与动手练习
本文涉及的相关技术指令、开发环境与工具链已内置在边学边练在线实验室中,无需繁琐安装配置,随时在浏览器中实践体验:
