# 抽奖盲盒系统架构图

## 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%+

这个架构设计充分考虑了抽奖盲盒系统的业务特点和技术需求，在保证系统稳定性和性能的同时，也为未来的功能扩展和多端部署提供了良好的基础。