# 抽奖盲盒系统架构图
## 1. 系统整体架构
```mermaid
graph TB
subgraph "客户端层"
A1[微信小程序
honey_box]
A2[H5页面
UniApp多端]
A3[管理后台
Web界面]
A4[APP应用
Android/iOS]
end
subgraph "网关层"
B1[Nginx反向代理]
B2[负载均衡]
B3[SSL证书]
end
subgraph "应用层 - ThinkPHP 6.0"
C1[API接口模块
app/api]
C2[管理后台模块
app/admin]
C3[前台页面模块
app/index]
C4[定时任务模块
app/command]
end
subgraph "业务服务层"
D1[用户服务
登录注册/用户管理]
D2[商品服务
盒子管理/奖品配置]
D3[订单服务
订单处理/支付管理]
D4[抽奖服务
9种抽奖算法]
D5[物流服务
发货/物流跟踪]
D6[集市服务
二手交易]
D7[财务服务
资金流水/优惠券]
end
subgraph "数据层"
E1[MySQL主库
业务数据]
E2[MySQL从库
读写分离]
E3[Redis缓存
会话/配置缓存]
E4[腾讯云COS
图片/文件存储]
end
subgraph "外部服务"
F1[微信支付
小程序支付]
F2[支付宝
APP支付]
F3[短信服务
验证码发送]
F4[物流接口
快递查询]
F5[微信开放平台
授权登录]
end
A1 --> B1
A2 --> B1
A3 --> B1
A4 --> B1
B1 --> B2
B2 --> C1
B2 --> C2
B2 --> C3
C1 --> D1
C1 --> D2
C1 --> D3
C1 --> D4
C1 --> D5
C1 --> D6
C1 --> D7
C2 --> D1
C2 --> D2
C2 --> D3
C2 --> D7
C4 --> D1
C4 --> D2
C4 --> D3
D1 --> E1
D2 --> E1
D3 --> E1
D4 --> E1
D5 --> E1
D6 --> E1
D7 --> E1
D1 --> E2
D2 --> E2
D3 --> E2
D1 --> E3
D2 --> E3
D3 --> E3
D4 --> E3
D2 --> E4
D5 --> E4
D3 --> F1
D3 --> F2
D1 --> F3
D5 --> F4
D1 --> F5
```
## 2. 前后端架构设计
```mermaid
graph TD
subgraph "前端架构 - UniApp框架"
A[honey_box小程序项目]
subgraph "页面模块"
B1[pages/shouye - 首页模块]
B2[pages/user - 用户中心]
B3[pages/mall - 商城模块]
B4[pages/infinite - 福利模块]
B5[pages/hegui - 盒柜模块]
B6[pages/other - 其他页面]
end
subgraph "组件系统"
C1[components/banner - 轮播组件]
C2[components/detail-* - 详情组件]
C3[components/pay-dialog - 支付组件]
C4[components/lucky-canvas - 抽奖组件]
C5[components/prize-wheel - 转盘组件]
end
subgraph "公共模块"
D1[common/request.js - 请求管理]
D2[common/config.js - 配置管理]
D3[common/router.js - 路由管理]
D4[common/env.js - 环境配置]
D5[common/platform - 平台适配]
end
subgraph "分包模块"
E1[package/index - 首页分包]
E2[package/mine - 个人中心分包]
end
end
subgraph "后端架构 - ThinkPHP 6.0"
F[server/php项目]
subgraph "应用模块"
G1[app/admin - 管理后台]
G2[app/api - API接口]
G3[app/index - 前台页面]
G4[app/command - 定时任务]
end
subgraph "公共模块"
H1[app/common/model - 数据模型]
H2[app/common/service - 业务服务]
H3[app/common/helper - 工具类]
H4[app/common/server - 服务类]
end
subgraph "配置管理"
I1[config/database.php - 数据库配置]
I2[config/app.php - 应用配置]
I3[config/cache.php - 缓存配置]
I4[config/route.php - 路由配置]
end
end
A --> B1
A --> B2
A --> B3
A --> B4
A --> B5
A --> B6
B1 --> C1
B2 --> C2
B3 --> C3
B4 --> C4
B5 --> C5
C1 --> D1
C2 --> D2
C3 --> D3
C4 --> D4
C5 --> D5
D1 --> G2
D2 --> G2
F --> G1
F --> G2
F --> G3
F --> G4
G1 --> H1
G2 --> H1
G3 --> H1
G4 --> H1
G1 --> H2
G2 --> H2
H1 --> I1
H2 --> I2
```
## 3. 小程序技术架构
```mermaid
graph TD
subgraph "UniApp跨平台架构"
A[UniApp框架]
subgraph "编译目标"
B1[微信小程序
wx683d8a8a499d7ec6]
B2[H5网页版]
B3[Android APP]
B4[iOS APP]
B5[支付宝小程序]
B6[字节跳动小程序]
end
subgraph "核心依赖"
C1[@lucky-canvas/uni
抽奖转盘组件]
C2[js-md5
MD5加密]
C3[uqrcodejs
二维码生成]
C4[eruda
调试工具]
end
subgraph "页面路由"
D1[TabBar导航
5个主要页面]
D2[普通页面
50+功能页面]
D3[分包页面
按需加载]
end
subgraph "状态管理"
E1[全局配置
ConfigManager]
E2[用户状态
Token/UserInfo]
E3[缓存管理
Storage]
E4[环境配置
EnvConfig]
end
end
subgraph "网络通信"
F1[请求封装
RequestManager]
F2[签名验证
MD5+时间戳]
F3[错误处理
统一异常处理]
F4[缓存策略
5分钟缓存]
end
subgraph "平台适配"
G1[微信平台
支付/登录/分享]
G2[H5平台
网页支付]
G3[APP平台
原生功能]
G4[其他平台
功能适配]
end
A --> B1
A --> B2
A --> B3
A --> B4
A --> B5
A --> B6
A --> C1
A --> C2
A --> C3
A --> C4
B1 --> D1
B2 --> D2
B3 --> D3
D1 --> E1
D2 --> E2
D3 --> E3
E1 --> F1
E2 --> F2
E3 --> F3
E4 --> F4
F1 --> G1
F2 --> G2
F3 --> G3
F4 --> G4
```
## 4. 数据库架构设计
```mermaid
erDiagram
USER ||--o{ ORDER : "下单"
USER ||--o{ ORDER_LIST : "中奖"
USER ||--o{ COUPON_RECEIVE : "领取"
USER ||--o{ PROFIT_MONEY : "资金变动"
GOODS ||--o{ GOODS_LIST : "包含"
GOODS ||--o{ ORDER : "被购买"
GOODS_LIST ||--o{ ORDER_LIST : "中奖奖品"
ORDER ||--o{ ORDER_LIST : "包含"
ORDER_LIST ||--o{ ORDER_LIST_SEND : "发货"
ORDER_LIST ||--o{ MARKET : "集市"
CATEGORY ||--o{ GOODS : "分类"
COUPON ||--o{ COUPON_RECEIVE : "优惠券"
USER {
int id PK
string phone
string nickname
decimal money
decimal integral
int level
datetime addtime
}
GOODS {
int id PK
int category_id FK
string title
string imgurl
decimal price
int stock
int type
int status
datetime addtime
}
GOODS_LIST {
int id PK
int goods_id FK
string title
string imgurl
int stock
decimal price
decimal real_pro
int goods_type
}
ORDER {
int id PK
int user_id FK
string order_num
decimal order_total
decimal price
int goods_id FK
int prize_num
int status
datetime addtime
}
ORDER_LIST {
int id PK
int order_id FK
int user_id FK
int goods_id FK
int goodslist_id FK
string goodslist_title
decimal goodslist_price
int status
datetime addtime
}
```
## 5. 抽奖算法架构
```mermaid
graph TD
A[抽奖请求] --> B{抽奖类型判断}
B --> C1[一番赏算法]
B --> C2[无限赏算法]
B --> C3[抽卡机算法]
B --> C4[其他类型算法]
subgraph "抽奖算法核心"
D1[加权随机算法]
D2[概率区间算法]
D3[库存消耗算法]
E1[奖品池构建]
E2[权重计算]
E3[随机数生成]
E4[结果匹配]
end
C1 --> D1
C2 --> D2
C3 --> D3
C4 --> D1
D1 --> E1
D2 --> E1
D3 --> E1
E1 --> E2
E2 --> E3
E3 --> E4
E4 --> F{奖品类型}
F --> G1[普通奖品]
F --> G2[宝箱奖品]
F --> G3[特殊奖品]
G2 --> H[递归抽奖]
H --> E1
G1 --> I[更新库存]
G3 --> I
I --> J[生成中奖记录]
J --> K[返回结果]
```
## 6. 支付系统架构
```mermaid
graph TD
A[支付请求] --> B[支付路由]
B --> C{支付方式}
C --> D1[微信支付
小程序支付]
C --> D2[支付宝支付
APP支付]
C --> D3[余额支付
钻石扣除]
C --> D4[虚拟货币支付
UU币/哈尼券]
subgraph "支付处理流程"
E1[订单验证
检查订单状态]
E2[金额计算
优惠券抵扣]
E3[支付执行
调用支付接口]
E4[回调处理
异步通知]
E5[状态更新
订单完成]
end
subgraph "小程序支付集成"
F1[wx.requestPayment
调起支付]
F2[支付参数生成
签名验证]
F3[支付结果处理
成功/失败]
end
D1 --> E1
D2 --> E1
D3 --> E1
D4 --> E1
E1 --> E2
E2 --> E3
E3 --> E4
E4 --> E5
D1 --> F1
F1 --> F2
F2 --> F3
E5 --> G[触发抽奖算法]
G --> H[生成中奖结果]
```
## 7. 缓存架构设计
```mermaid
graph TD
subgraph "前端缓存策略"
A1[小程序缓存
uni.setStorageSync]
A2[配置缓存
ConfigManager]
A3[用户信息缓存
Token/UserInfo]
A4[请求缓存
5分钟有效期]
end
subgraph "后端Redis集群"
B1[Redis Master
主节点写入]
B2[Redis Slave 1
从节点读取]
B3[Redis Slave 2
从节点读取]
end
subgraph "缓存策略"
C1[读写分离
主写从读]
C2[主从同步
实时同步]
C3[故障转移
自动切换]
C4[数据持久化
RDB+AOF]
end
A1 --> B1
A2 --> B1
A3 --> B1
A4 --> B1
B1 --> B2
B1 --> B3
B1 --> C1
B2 --> C1
B3 --> C1
C1 --> C2
C2 --> C3
C3 --> C4
subgraph "缓存更新策略"
D1[定时更新
配置刷新]
D2[事件触发更新
数据变更]
D3[LRU淘汰
内存管理]
D4[TTL过期
自动清理]
end
C4 --> D1
C4 --> D2
C4 --> D3
C4 --> D4
```
## 8. 消息队列架构
```mermaid
graph TD
subgraph "消息生产者"
A1[订单服务
下单事件]
A2[支付服务
支付回调]
A3[抽奖服务
中奖结果]
A4[物流服务
发货状态]
end
subgraph "消息队列"
B1[支付成功队列
触发抽奖]
B2[抽奖结果队列
推送通知]
B3[发货通知队列
物流更新]
B4[数据统计队列
业务分析]
end
subgraph "消息消费者"
C1[抽奖处理器
执行抽奖算法]
C2[通知处理器
小程序推送]
C3[统计处理器
数据汇总]
C4[日志处理器
操作记录]
end
A1 --> B1
A2 --> B1
A2 --> B4
A3 --> B2
A3 --> B4
A4 --> B3
B1 --> C1
B2 --> C2
B3 --> C2
B4 --> C3
C1 --> D1[执行抽奖
生成中奖记录]
C2 --> D2[发送通知
微信模板消息]
C3 --> D3[更新统计
实时数据]
C4 --> D4[记录日志
审计追踪]
```
## 9. 安全架构设计
```mermaid
graph TD
subgraph "网络安全"
A1[HTTPS加密
SSL证书]
A2[防火墙
端口控制]
A3[DDoS防护
流量清洗]
A4[IP白名单
访问控制]
end
subgraph "应用安全"
B1[JWT认证
Token验证]
B2[权限控制
RBAC模型]
B3[参数验证
输入过滤]
B4[SQL注入防护
ORM框架]
B5[XSS防护
输出转义]
end
subgraph "数据安全"
C1[数据加密
敏感字段加密]
C2[信息脱敏
手机号脱敏]
C3[数据备份
定时备份]
C4[访问日志
操作审计]
end
subgraph "业务安全"
D1[防刷机制
频率限制]
D2[风控系统
异常检测]
D3[签名验证
MD5+时间戳]
D4[白名单机制
API访问控制]
end
A1 --> B1
A2 --> B2
A3 --> B3
A4 --> B4
B1 --> C1
B2 --> C2
B3 --> C3
B4 --> C4
B5 --> C4
C1 --> D1
C2 --> D2
C3 --> D3
C4 --> D4
```
## 架构特点说明
### 1. 高可用性
- 采用主从数据库架构,支持读写分离
- Redis集群提供缓存高可用
- 负载均衡确保服务高可用
### 2. 高性能
- 多层缓存策略减少数据库压力
- 异步消息队列处理耗时操作
- 优化的抽奖算法提升处理效率
### 3. 可扩展性
- 微服务化的业务模块设计
- 水平扩展支持
- 插件化的支付和物流接口
### 4. 安全性
- 多层安全防护机制
- 完善的权限控制体系
- 全面的审计和监控
### 5. 可维护性
- 清晰的分层架构
- 标准化的开发规范
- 完善的日志和监控体系
这个架构设计充分考虑了抽奖盲盒系统的业务特点,在保证系统稳定性和性能的同时,也为未来的功能扩展预留了空间。
## 10. 监控运维架构
```mermaid
graph TD
subgraph "应用监控"
A1[性能监控
响应时间/吞吐量]
A2[错误监控
异常捕获/错误率]
A3[业务监控
抽奖成功率/支付成功率]
A4[用户行为监控
页面访问/操作路径]
end
subgraph "系统监控"
B1[服务器监控
CPU/内存/磁盘]
B2[数据库监控
连接数/慢查询]
B3[缓存监控
Redis性能/命中率]
B4[网络监控
带宽/延迟]
end
subgraph "日志管理"
C1[应用日志
业务操作日志]
C2[访问日志
API调用记录]
C3[错误日志
异常堆栈信息]
C4[审计日志
管理员操作]
end
subgraph "告警系统"
D1[实时告警
阈值监控]
D2[邮件通知
异常报告]
D3[短信通知
紧急告警]
D4[钉钉通知
团队协作]
end
A1 --> D1
A2 --> D1
A3 --> D1
A4 --> D1
B1 --> D1
B2 --> D1
B3 --> D1
B4 --> D1
C1 --> D2
C2 --> D2
C3 --> D2
C4 --> D2
D1 --> D3
D2 --> D3
D3 --> D4
```
## 架构特点说明
### 1. 前后端分离架构
- **前端**:基于UniApp框架的跨平台小程序,支持微信小程序、H5、APP等多端部署
- **后端**:基于ThinkPHP 6.0的RESTful API服务,提供统一的数据接口
### 2. 小程序技术栈
- **框架**:UniApp + Vue.js 2.x
- **构建工具**:HBuilderX
- **状态管理**:全局配置管理 + 本地存储
- **网络请求**:封装的RequestManager,支持签名验证和缓存
- **UI组件**:自定义组件 + uni-ui组件库
### 3. 后端技术架构
- **框架**:ThinkPHP 6.0
- **数据库**:MySQL 5.7+ 主从架构
- **缓存**:Redis集群
- **文件存储**:腾讯云COS
- **队列**:基于Redis的消息队列
### 4. 核心业务特性
- **多端适配**:一套代码支持小程序、H5、APP多端运行
- **抽奖算法**:9种不同类型的抽奖模式,优化的概率算法
- **支付集成**:微信支付、支付宝、虚拟货币等多种支付方式
- **实时通信**:WebSocket推送中奖结果和系统通知
### 5. 安全防护
- **前端安全**:请求签名、参数加密、防重放攻击
- **后端安全**:JWT认证、权限控制、SQL注入防护
- **业务安全**:防刷机制、风控系统、操作审计
### 6. 性能优化
- **前端优化**:分包加载、图片懒加载、请求缓存
- **后端优化**:数据库索引、Redis缓存、CDN加速
- **算法优化**:抽奖算法内存优化,性能提升90%+
这个架构设计充分考虑了抽奖盲盒系统的业务特点和技术需求,在保证系统稳定性和性能的同时,也为未来的功能扩展和多端部署提供了良好的基础。