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 定时任务路由

路由

说明

/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

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

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 最佳实践,适合需要运营比特币钱包服务的场景。

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

相关阅读