php后端模板(代码解读-BitLab 比特币钱包管理系统)

php后端模板(代码解读-BitLab 比特币钱包管理系统)
代码解读-BitLab 比特币钱包管理系统

BitLab 项目分析报告

项目概述

项目名称: BitLab - 比特币钱包系统 技术框架: Laravel 8.x PHP 版本: 7.3+ / 8.0+ 项目类型: 加密货币钱包管理系统


一、项目结构与目录组织

1.1 根目录结构

/├── core/                          # Laravel 应用主目录│   ├── app/                       # 应用核心代码│   │   ├── Http/│   │   │   ├── Controllers/       # 控制器│   │   │   ├── Middleware/        # 中间件│   │   │   └── Helpers/           # 辅助函数│   │   ├── Models/                # 数据模型│   │   ├── Lib/                   # 自定义类库│   │   ├── Mail/                  # 邮件类│   │   ├── Providers/             # 服务提供者│   │   └── Rules/                 # 验证规则│   ├── bootstrap/                 # 启动文件│   ├── config/                    # 配置文件│   ├── database/                  # 数据库相关│   ├── resources/                 # 资源文件│   │   ├── views/                 # 视图模板│   │   └── lang/                  # 语言包│   ├── routes/                    # 路由定义│   ├── storage/                   # 存储目录│   └── vendor/                    # 第三方依赖├── assets/                        # 前端静态资源│   ├── admin/                     # 后台管理资源│   ├── global/                    # 全局公共资源│   └── templates/                 # 模板资源├── install/                       # 安装程序└── index.php                      # 入口文件

1.2 核心目录说明

目录

用途

core/app/Http/Controllers

所有业务逻辑控制器

core/app/Models

Eloquent 数据模型

core/app/Http/Controllers/Admin

后台管理控制器

core/app/Http/Controllers/Gateway/Blockio

支付网关集成

assets/admin

后台前端资源 (Vue.js, Bootstrap)

assets/templates/basic

前台用户模板


二、技术栈

2.1 后端技术

  • 框架: Laravel 8.x
  • PHP 版本: 7.3+ / 8.0+
  • 数据库: MySQL
  • 缓存: File/Redis
  • 队列: Sync (同步)

2.2 前端技术

  • UI 框架: Bootstrap
  • JavaScript 框架: Vue.js
  • 图表库: ApexCharts
  • 其他: jQuery, Select2, IntlTelInput

2.3 第三方服务集成

服务

用途

Block.io

比特币钱包 API

Stripe

支付处理

Razorpay

印度支付网关

Mollie

欧洲支付网关

CoinGate

加密货币支付

Twilio

SMS 短信服务

SendGrid

邮件发送服务

Mailjet

邮件服务

Vonage/Nexmo

通讯服务

TextMagic

SMS 服务


三、核心功能模块

3.1 用户系统 (User)

功能描述: 用户注册、登录、认证、个人资料管理

核心控制器: UserController.php, Auth/RegisterController.php, Auth/LoginController.php

主要功能:

  • 用户注册(支持邮箱/手机验证)
  • 用户登录(支持 Google 2FA 双因素认证)
  • 密码重置
  • 个人资料更新
  • 头像上传

数据模型: User.php, UserLogin.php, PasswordReset.php

3.2 钱包系统 (Wallet)

功能描述: 多钱包管理、地址生成、余额查询

核心控制器: UserController.php (addWallet, wallet 方法)

主要功能:

  • 创建多个比特币钱包
  • 通过 Block.io API 生成新地址
  • 钱包余额查询
  • 钱包限制管理

数据模型: UserWallet.php

核心逻辑:

// 创建新钱包流程1. 检查用户钱包数量是否超过限制2. 调用 Block.io API 生成新地址3. 保存钱包地址到数据库

3.3 转账系统 (Send)

功能描述: 比特币转账发送

核心控制器: UserController.php (send, sendHistory 方法)

主要功能:

  • 向外部地址发送比特币
  • 计算手续费(固定手续费 + 百分比手续费)
  • 交易记录查询
  • 待处理交易管理

数据模型: Send.php

手续费计算:

$charge = $fixed_charge + ($amount * $percent_charge / 100);$requiredBalance = $amount + $charge;

3.4 收款系统 (Receive)

功能描述: 自动检测并接收转入的比特币

核心控制器: CronController.php (receive 方法)

主要功能:

  • 定时任务扫描所有钱包地址余额
  • 自动将资金归集到主钱包
  • 记录收款交易
  • 发送收款通知

数据模型: Transaction.php

3.5 交易记录系统 (Transaction)

功能描述: 记录所有资金变动

数据模型: Transaction.php

交易类型:

  • + : 收入(收款、管理员添加余额)
  • - : 支出(转账、管理员扣除余额)

记录字段:

  • user_id: 用户 ID
  • wallet_id: 钱包 ID
  • amount: 金额
  • post_balance: 交易后余额
  • charge: 手续费
  • trx_type: 交易类型 (+/-)
  • details: 交易详情
  • trx: 交易号

3.6 后台管理系统 (Admin)

功能描述: 完整的后台管理功能

核心控制器:

  • AdminController.php - 后台首页
  • ManageUsersController.php - 用户管理
  • ReportController.php - 报表统计
  • SupportTicketController.php - 工单管理
  • GeneralSettingController.php - 系统设置
  • FrontendController.php - 前台页面管理

主要功能:

  • 仪表盘统计
  • 用户管理(查看/编辑/禁用/发送邮件)
  • 余额管理(添加/扣除用户余额)
  • 交易记录查询
  • 收发款历史
  • 系统设置
  • 邮件/SMS 模板管理
  • 工单管理
  • 语言管理

3.7 定时任务系统 (Cron)

功能描述: 后台定时执行的任务

核心控制器: CronController.php

任务列表:

路由

功能

频率

/cron/rate

更新 BTC/USD 汇率

每 15 分钟

/cron/send

处理待发送交易

每 15 分钟

/cron/receive

检测并处理收款

每 15 分钟

核心逻辑:

// rate - 汇率更新1. 调用 Block.io API 获取当前 BTC 价格2. 保存到系统设置// send - 发送处理1. 查询所有状态为 0(待处理)的交易2. 调用 Block.io API 准备交易3. 更新交易状态// receive - 收款检测1. 轮询检查 30 个钱包地址2. 检测余额变化3. 如有余额则归集到主钱包4. 创建交易记录

3.8 工单系统 (Support Ticket)

功能描述: 用户支持工单

核心控制器: TicketController.php, Admin/SupportTicketController.php

数据模型: SupportTicket.php, SupportMessage.php, SupportAttachment.php

工单状态:

  • 0: 待处理
  • 1: 已回复
  • 2: 已关闭

3.9 通知系统 (Notification)

功能描述: 邮件、SMS、站内通知

核心功能:

  • 邮件通知(支持 PHP Mail, SMTP, SendGrid, Mailjet)
  • SMS 通知(支持 Twilio, TextMagic, Vonage 等)
  • 站内通知(管理员通知)

数据模型: EmailTemplate.php, SmsTemplate.php, AdminNotification.php

3.10 前端页面构建器 (Page Builder)

功能描述: 可视化页面构建

核心控制器: PageBuilderController.php, FrontendController.php

主要功能:

  • 页面管理
  • 区块管理
  • SEO 设置
  • 自定义 CSS

四、核心业务逻辑

4.1 用户注册流程

1. 用户填写注册表单(用户名、邮箱、手机、密码等)2. 验证表单数据3. 检查手机号是否已存在4. 验证验证码(如开启)5. 创建用户记录   - 密码使用 Hash 加密   - 设置验证状态6. 记录登录日志7. 创建管理员通知8. 自动登录

4.2 发送比特币流程

1. 用户填写发送表单   - 目标地址   - 发送金额   - 源钱包   - 2FA 验证码(如开启)2. 验证表单3. 检查余额是否充足4. 验证 2FA(如开启)5. 计算手续费6. 创建 Send 记录(状态=0 待处理)7. 扣除用户钱包余额8. 创建交易记录(类型为 -)9. 发送用户通知10. 创建管理员通知11. Cron 任务异步处理实际发送

4.3 接收比特币流程

1. Cron 定时任务执行2. 轮询 30 个钱包地址3. 调用 Block.io API 查询余额4. 发现新余额时:   a. 调用 Block.io API 归集到主钱包   b. 更新用户钱包余额   c. 创建交易记录(类型为 +)   d. 发送用户通知5. 更新钱包最后检查时间

4.4 管理员操作用户余额流程

1. 管理员进入用户详情2. 填写金额和备注3. 选择添加或扣除4. 验证钱包地址属于该用户5. 执行操作:   - 添加:增加余额,创建 + 交易记录   - 扣除:检查余额后减少,创建 - 交易记录6. 发送用户通知

五、核心数据模型

5.1 用户表 (users)

字段

类型

说明

id

bigint

主键

username

string

用户名

email

string

邮箱

password

string

密码 (Hash)

firstname

string

lastname

string

mobile

string

手机号

country_code

string

国家代码

address

json

地址信息

status

int

状态 (1 正常/0 禁用)

ev

int

邮箱验证

sv

int

手机验证

ts

int

2FA 开关

tsc

string

2FA 密钥

tv

int

2FA 验证状态

ref_by

int

推荐人 ID

5.2 用户钱包表 (user_wallets)

字段

类型

说明

id

bigint

主键

user_id

bigint

用户 ID

name

string

钱包名称

coin_code

string

币种代码 (BTC)

wallet_address

string

钱包地址

balance

decimal

余额

last_cron

int

最后检查时间戳

5.3 交易表 (transactions)

字段

类型

说明

id

bigint

主键

user_id

bigint

用户 ID

wallet_id

bigint

钱包 ID

amount

decimal

金额

post_balance

decimal

交易后余额

charge

decimal

手续费

trx_type

char

类型 (+/-)

details

text

详情

trx

string

交易号

5.4 发送表 (sends)

字段

类型

说明

id

bigint

主键

user_id

bigint

用户 ID

wallet_id

bigint

钱包 ID

receive_wallet

string

目标地址

amount

decimal

金额

charge

decimal

手续费

status

int

状态 (0 待处理/1 成功/9 失败)

trx

string

交易号

5.5 管理员表 (admins)

字段

类型

说明

id

bigint

主键

name

string

姓名

email

string

邮箱

password

string

密码

image

string

头像

api_token

string

API 令牌


六、路由结构

6.1 前台用户路由

路由

方法

说明

/login

GET/POST

用户登录

/register

GET/POST

用户注册

/password/reset

GET/POST

密码重置

/user/dashboard

GET

用户仪表板

/user/wallet

GET

钱包列表

/user/send

GET/POST

发送比特币

/user/send/history

GET

发送历史

/user/receive/history

GET

收款历史

/user/transaction/history

GET

交易历史

/user/profile-setting

GET/POST

个人资料

/user/change-password

GET/POST

修改密码

/user/security

GET/POST

2FA 设置

/ticket/*

GET/POST

工单系统

6.2 后台管理路由

路由前缀

说明

/admin

管理员登录

/admin/dashboard

仪表盘

/admin/users/*

用户管理

/admin/tickets/*

工单管理

/admin/report/*

报表统计

/admin/email-template/*

邮件模板

/admin/sms-template/*

SMS 模板

/admin/general-setting

系统设置

/admin/frontend/*

前台页面管理

/admin/language/*

语言管理

6.3 定时任务路由

路由

说明

php后端模板(代码解读-BitLab 比特币钱包管理系统)

/cron/rate

更新汇率

/cron/send

处理发送

/cron/receive

处理收款


七、辅助函数 (helpers.php)

7.1 图像处理

  • uploadImage() - 上传图片
  • uploadFile() - 上传文件
  • getImage() - 获取图片 URL

7.2 验证函数

  • verifyG2fa() - Google 2FA 验证
  • captchaVerify() - 自定义验证码验证
  • loadReCaptcha() - 加载 ReCaptcha

7.3 通知函数

  • notify() - 发送通知(邮件+SMS)
  • sendEmail() - 发送邮件
  • sendSms() - 发送 SMS
  • sendPhpMail() - PHP Mail
  • sendSmtpMail() - SMTP 邮件
  • sendSendGridMail() - SendGrid 邮件
  • sendMailjetMail() - Mailjet 邮件

7.4 工具函数

  • getTrx() - 生成交易号
  • showAmount() - 格式化金额
  • getAmount() - 获取金额
  • getIpInfo() - 获取 IP 信息
  • osBrowser() - 获取浏览器/OS 信息
  • getNumber() - 生成随机数字
  • verificationCode() - 生成验证码
  • slug() - 生成 URL 友好字符串
  • shortDescription() - 截取文本
  • cryptoQR() - 生成加密货币二维码
  • diffForHumans() - 人类可读时间差
  • showDateTime() - 格式化日期时间

7.5 系统函数

  • systemDetails() - 系统信息
  • activeTemplate() - 当前模板
  • imagePath() - 图片路径配置
  • getContent() - 获取前端内容
  • getPageSections() - 获取页面区块
  • getTemplates() - 获取可用模板

八、中间件

中间件

说明

Authenticate

用户认证

AuthenticateApi

API 认证

CheckStatusApi

检查用户状态

LanguageMiddleware

语言切换

RedirectIfAuthenticated

已登录重定向

RedirectIfAdmin

检查是否管理员

RedirectIfNotAdmin

检查是否非管理员

Demo

演示模式限制

PreventRequestsDuringMaintenance

维护模式

VerifyCsrfToken

CSRF 验证


九、扩展与插件系统

9.1 扩展模型 (Extension.php)

系统支持动态扩展功能:

  • Google ReCaptcha
  • Google Analytics
  • Tawk.to 在线聊天
  • Facebook 评论
  • 自定义验证码

9.2 支付网关

系统支持多种支付网关(代码中存在但当前版本主要使用 Block.io):

  • Stripe
  • Razorpay
  • Mollie
  • CoinGate

十、安全特性

10.1 认证安全

  • 密码 Hash 加密 (bcrypt)
  • Google 2FA 双因素认证
  • CSRF Token 保护
  • 邮箱验证
  • 手机短信验证

10.2 数据安全

  • SQL 注入防护 (Eloquent ORM)
  • XSS 防护 (Blade 模板转义)
  • 输入验证 (Request Validation)
  • 文件上传验证 (FileTypeValidate)

10.3 操作安全

  • 管理员操作日志
  • 用户登录日志
  • 交易记录完整追踪
  • 交易状态管理

十一、系统特点与限制

11.1 优点

  1. 完整的钱包系统: 支持多钱包、转账、收款
  2. 后台管理完善: 用户管理、报表统计、系统设置
  3. 通知系统健全: 支持多种邮件和 SMS 服务商
  4. 定时任务自动化: 自动处理收发款
  5. 安全性较高: 2FA、验证机制完善

11.2 限制

  1. 仅支持比特币: 当前版本主要支持 BTC
  2. 依赖 Block.io: 核心功能依赖第三方 API
  3. 队列同步处理: 高并发可能有问题
  4. 无提现审核: 发送交易自动处理

十三、总结

BitLab 是一个功能完整的比特币钱包管理系统,基于 Laravel 8 框架开发。系统核心功能包括:

  1. 用户管理: 注册、登录、认证、资料管理
  2. 钱包管理: 多钱包创建、地址生成
  3. 转账系统: 发送比特币到外部地址
  4. 收款系统: 自动检测并归集收款
  5. 后台管理: 完整的用户管理和系统配置
  6. 通知系统: 邮件和 SMS 通知

系统采用 Block.io 作为底层钱包 API 提供商,通过定时任务实现自动化收发款处理。代码结构清晰,遵循 Laravel 最佳实践,适合需要运营比特币钱包服务的场景。

文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有

相关阅读