HaniBlindBox/docs/系统架构图.md
2026-01-01 21:43:38 +08:00

724 lines
17 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 抽奖盲盒系统架构图
## 1. 系统整体架构
```mermaid
graph TB
subgraph "客户端层"
A1[微信小程序<br/>honey_box]
A2[H5页面<br/>UniApp多端]
A3[管理后台<br/>Web界面]
A4[APP应用<br/>Android/iOS]
end
subgraph "网关层"
B1[Nginx反向代理]
B2[负载均衡]
B3[SSL证书]
end
subgraph "应用层 - ThinkPHP 6.0"
C1[API接口模块<br/>app/api]
C2[管理后台模块<br/>app/admin]
C3[前台页面模块<br/>app/index]
C4[定时任务模块<br/>app/command]
end
subgraph "业务服务层"
D1[用户服务<br/>登录注册/用户管理]
D2[商品服务<br/>盒子管理/奖品配置]
D3[订单服务<br/>订单处理/支付管理]
D4[抽奖服务<br/>9种抽奖算法]
D5[物流服务<br/>发货/物流跟踪]
D6[集市服务<br/>二手交易]
D7[财务服务<br/>资金流水/优惠券]
end
subgraph "数据层"
E1[MySQL主库<br/>业务数据]
E2[MySQL从库<br/>读写分离]
E3[Redis缓存<br/>会话/配置缓存]
E4[腾讯云COS<br/>图片/文件存储]
end
subgraph "外部服务"
F1[微信支付<br/>小程序支付]
F2[支付宝<br/>APP支付]
F3[短信服务<br/>验证码发送]
F4[物流接口<br/>快递查询]
F5[微信开放平台<br/>授权登录]
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[微信小程序<br/>wx683d8a8a499d7ec6]
B2[H5网页版]
B3[Android APP]
B4[iOS APP]
B5[支付宝小程序]
B6[字节跳动小程序]
end
subgraph "核心依赖"
C1[@lucky-canvas/uni<br/>抽奖转盘组件]
C2[js-md5<br/>MD5加密]
C3[uqrcodejs<br/>二维码生成]
C4[eruda<br/>调试工具]
end
subgraph "页面路由"
D1[TabBar导航<br/>5个主要页面]
D2[普通页面<br/>50+功能页面]
D3[分包页面<br/>按需加载]
end
subgraph "状态管理"
E1[全局配置<br/>ConfigManager]
E2[用户状态<br/>Token/UserInfo]
E3[缓存管理<br/>Storage]
E4[环境配置<br/>EnvConfig]
end
end
subgraph "网络通信"
F1[请求封装<br/>RequestManager]
F2[签名验证<br/>MD5+时间戳]
F3[错误处理<br/>统一异常处理]
F4[缓存策略<br/>5分钟缓存]
end
subgraph "平台适配"
G1[微信平台<br/>支付/登录/分享]
G2[H5平台<br/>网页支付]
G3[APP平台<br/>原生功能]
G4[其他平台<br/>功能适配]
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[微信支付<br/>小程序支付]
C --> D2[支付宝支付<br/>APP支付]
C --> D3[余额支付<br/>钻石扣除]
C --> D4[虚拟货币支付<br/>UU币/哈尼券]
subgraph "支付处理流程"
E1[订单验证<br/>检查订单状态]
E2[金额计算<br/>优惠券抵扣]
E3[支付执行<br/>调用支付接口]
E4[回调处理<br/>异步通知]
E5[状态更新<br/>订单完成]
end
subgraph "小程序支付集成"
F1[wx.requestPayment<br/>调起支付]
F2[支付参数生成<br/>签名验证]
F3[支付结果处理<br/>成功/失败]
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[小程序缓存<br/>uni.setStorageSync]
A2[配置缓存<br/>ConfigManager]
A3[用户信息缓存<br/>Token/UserInfo]
A4[请求缓存<br/>5分钟有效期]
end
subgraph "后端Redis集群"
B1[Redis Master<br/>主节点写入]
B2[Redis Slave 1<br/>从节点读取]
B3[Redis Slave 2<br/>从节点读取]
end
subgraph "缓存策略"
C1[读写分离<br/>主写从读]
C2[主从同步<br/>实时同步]
C3[故障转移<br/>自动切换]
C4[数据持久化<br/>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[定时更新<br/>配置刷新]
D2[事件触发更新<br/>数据变更]
D3[LRU淘汰<br/>内存管理]
D4[TTL过期<br/>自动清理]
end
C4 --> D1
C4 --> D2
C4 --> D3
C4 --> D4
```
## 8. 消息队列架构
```mermaid
graph TD
subgraph "消息生产者"
A1[订单服务<br/>下单事件]
A2[支付服务<br/>支付回调]
A3[抽奖服务<br/>中奖结果]
A4[物流服务<br/>发货状态]
end
subgraph "消息队列"
B1[支付成功队列<br/>触发抽奖]
B2[抽奖结果队列<br/>推送通知]
B3[发货通知队列<br/>物流更新]
B4[数据统计队列<br/>业务分析]
end
subgraph "消息消费者"
C1[抽奖处理器<br/>执行抽奖算法]
C2[通知处理器<br/>小程序推送]
C3[统计处理器<br/>数据汇总]
C4[日志处理器<br/>操作记录]
end
A1 --> B1
A2 --> B1
A2 --> B4
A3 --> B2
A3 --> B4
A4 --> B3
B1 --> C1
B2 --> C2
B3 --> C2
B4 --> C3
C1 --> D1[执行抽奖<br/>生成中奖记录]
C2 --> D2[发送通知<br/>微信模板消息]
C3 --> D3[更新统计<br/>实时数据]
C4 --> D4[记录日志<br/>审计追踪]
```
## 9. 安全架构设计
```mermaid
graph TD
subgraph "网络安全"
A1[HTTPS加密<br/>SSL证书]
A2[防火墙<br/>端口控制]
A3[DDoS防护<br/>流量清洗]
A4[IP白名单<br/>访问控制]
end
subgraph "应用安全"
B1[JWT认证<br/>Token验证]
B2[权限控制<br/>RBAC模型]
B3[参数验证<br/>输入过滤]
B4[SQL注入防护<br/>ORM框架]
B5[XSS防护<br/>输出转义]
end
subgraph "数据安全"
C1[数据加密<br/>敏感字段加密]
C2[信息脱敏<br/>手机号脱敏]
C3[数据备份<br/>定时备份]
C4[访问日志<br/>操作审计]
end
subgraph "业务安全"
D1[防刷机制<br/>频率限制]
D2[风控系统<br/>异常检测]
D3[签名验证<br/>MD5+时间戳]
D4[白名单机制<br/>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[性能监控<br/>响应时间/吞吐量]
A2[错误监控<br/>异常捕获/错误率]
A3[业务监控<br/>抽奖成功率/支付成功率]
A4[用户行为监控<br/>页面访问/操作路径]
end
subgraph "系统监控"
B1[服务器监控<br/>CPU/内存/磁盘]
B2[数据库监控<br/>连接数/慢查询]
B3[缓存监控<br/>Redis性能/命中率]
B4[网络监控<br/>带宽/延迟]
end
subgraph "日志管理"
C1[应用日志<br/>业务操作日志]
C2[访问日志<br/>API调用记录]
C3[错误日志<br/>异常堆栈信息]
C4[审计日志<br/>管理员操作]
end
subgraph "告警系统"
D1[实时告警<br/>阈值监控]
D2[邮件通知<br/>异常报告]
D3[短信通知<br/>紧急告警]
D4[钉钉通知<br/>团队协作]
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%+
这个架构设计充分考虑了抽奖盲盒系统的业务特点和技术需求,在保证系统稳定性和性能的同时,也为未来的功能扩展和多端部署提供了良好的基础。