# 抽奖盲盒系统业务流程图

## 1. 系统整体业务流程

```mermaid
graph TD
    A[用户注册/登录] --> B[浏览商品]
    B --> C{选择抽奖类型}
    
    C --> D1[一番赏]
    C --> D2[无限赏]
    C --> D3[擂台赏]
    C --> D4[抽卡机]
    C --> D5[积分赏]
    C --> D6[全局赏]
    C --> D7[福利盲盒]
    C --> D8[领主赏]
    C --> D9[连击赏]
    
    D1 --> E[创建订单]
    D2 --> E
    D3 --> E
    D4 --> E
    D5 --> E
    D6 --> E
    D7 --> E
    D8 --> E
    D9 --> E
    
    E --> F{选择支付方式}
    F --> G1[微信支付]
    F --> G2[支付宝支付]
    F --> G3[余额支付]
    F --> G4[虚拟货币支付]
    F --> G5[优惠券抵扣]
    
    G1 --> H[支付成功]
    G2 --> H
    G3 --> H
    G4 --> H
    G5 --> H
    
    H --> I[执行抽奖算法]
    I --> J[生成中奖结果]
    J --> K{奖品类型判断}
    
    K --> L1[普通奖品]
    K --> L2[宝箱奖品]
    K --> L3[特殊奖品]
    K --> L4[虚拟货币]
    
    L1 --> M[用户选择处理方式]
    L2 --> N[开启宝箱]
    L3 --> M
    L4 --> O[自动到账]
    
    N --> M
    M --> P{处理方式}
    P --> Q1[选择发货]
    P --> Q2[回收换钱]
    P --> Q3[发布集市]
    
    Q1 --> R1[填写收货地址]
    Q2 --> R2[获得回收金额]
    Q3 --> R3[集市交易]
    
    R1 --> S1[商家发货]
    R2 --> T[完成]
    R3 --> U[等待买家]
    
    S1 --> V[用户确认收货]
    U --> W[买家购买]
    V --> T
    W --> T
```

## 2. 用户注册登录流程

```mermaid
sequenceDiagram
    participant U as 用户
    participant F as 前端
    participant A as API服务
    participant D as 数据库
    participant S as 短信服务
    
    U->>F: 输入手机号
    F->>A: 发送验证码请求
    A->>S: 调用短信接口
    S-->>A: 发送成功
    A->>D: 保存验证码记录
    A-->>F: 返回发送结果
    
    U->>F: 输入验证码
    F->>A: 提交登录/注册
    A->>D: 验证验证码
    D-->>A: 验证结果
    
    alt 验证成功
        A->>D: 创建/更新用户信息
        A->>A: 生成JWT Token
        A-->>F: 返回用户信息和Token
        F-->>U: 登录成功
    else 验证失败
        A-->>F: 返回错误信息
        F-->>U: 显示错误
    end
```

## 3. 抽奖核心流程

```mermaid
graph TD
    A[用户发起抽奖] --> B[验证用户权限]
    B --> C{权限检查}
    C -->|失败| D[返回错误信息]
    C -->|成功| E[验证商品状态]
    
    E --> F{商品检查}
    F -->|下架/售罄| G[返回商品不可用]
    F -->|正常| H[创建订单]
    
    H --> I[计算订单金额]
    I --> J[应用优惠券/折扣]
    J --> K[用户确认支付]
    
    K --> L{支付处理}
    L -->|失败| M[订单取消]
    L -->|成功| N[开始抽奖流程]
    
    N --> O[获取奖品池]
    O --> P[执行抽奖算法]
    
    P --> Q{抽奖算法类型}
    Q --> R1[加权随机算法]
    Q --> R2[概率区间算法]
    Q --> R3[库存消耗算法]
    
    R1 --> S[计算中奖结果]
    R2 --> S
    R3 --> S
    
    S --> T[更新库存]
    T --> U[创建中奖记录]
    U --> V{奖品类型}
    
    V --> W1[普通奖品]
    V --> W2[宝箱奖品]
    V --> W3[虚拟货币]
    V --> W4[特殊奖品]
    
    W1 --> X[等待用户选择]
    W2 --> Y[触发宝箱开启]
    W3 --> Z[自动发放到账]
    W4 --> AA[特殊处理逻辑]
    
    Y --> BB[递归抽奖流程]
    BB --> X
    AA --> X
    
    X --> CC[用户做出选择]
    CC --> DD{选择类型}
    DD --> EE[发货流程]
    DD --> FF[回收流程]
    DD --> GG[集市流程]
```

## 4. 支付流程

```mermaid
sequenceDiagram
    participant U as 用户
    participant F as 前端
    participant A as API服务
    participant P as 支付服务
    participant D as 数据库
    
    U->>F: 选择支付方式
    F->>A: 创建支付订单
    A->>D: 保存订单信息
    A->>P: 调用支付接口
    P-->>A: 返回支付参数
    A-->>F: 返回支付信息
    
    F->>U: 显示支付界面
    U->>P: 完成支付
    P->>A: 支付回调通知
    
    A->>D: 验证订单状态
    A->>D: 更新支付状态
    A->>A: 触发抽奖流程
    A-->>P: 确认回调处理
    
    A->>F: 推送抽奖结果
    F-->>U: 显示中奖信息
```

## 5. 商品管理流程

```mermaid
graph TD
    A[管理员登录] --> B[商品管理后台]
    B --> C{操作类型}
    
    C --> D1[创建商品]
    C --> D2[编辑商品]
    C --> D3[管理库存]
    C --> D4[设置奖品]
    
    D1 --> E1[填写基本信息]
    E1 --> E2[上传商品图片]
    E2 --> E3[设置价格和库存]
    E3 --> E4[配置抽奖参数]
    E4 --> E5[保存商品]
    
    D4 --> F1[添加奖品]
    F1 --> F2[设置奖品概率]
    F2 --> F3[配置奖品库存]
    F3 --> F4[设置奖品价值]
    F4 --> F5[保存奖品配置]
    
    D3 --> G1[查看库存状态]
    G1 --> G2[调整库存数量]
    G2 --> G3[设置预警阈值]
    G3 --> G4[配置自动下架]
    
    E5 --> H[商品审核]
    F5 --> H
    G4 --> H
    
    H --> I{审核结果}
    I -->|通过| J[商品上架]
    I -->|拒绝| K[返回修改]
    
    J --> L[用户可见]
    K --> C
```

## 6. 订单处理流程

```mermaid
graph TD
    A[订单创建] --> B[订单支付]
    B --> C[抽奖执行]
    C --> D[生成中奖记录]
    
    D --> E{用户选择}
    E --> F1[选择发货]
    E --> F2[选择回收]
    E --> F3[发布集市]
    
    F1 --> G1[用户填写地址]
    G1 --> G2[生成发货订单]
    G2 --> G3[商家打包发货]
    G3 --> G4[物流配送]
    G4 --> G5[用户确认收货]
    G5 --> G6[订单完成]
    
    F2 --> H1[计算回收价格]
    H1 --> H2[确认回收]
    H2 --> H3[资金到账]
    H3 --> H4[回收完成]
    
    F3 --> I1[设置售价]
    I1 --> I2[发布到集市]
    I2 --> I3[等待买家]
    I3 --> I4{是否有买家}
    I4 -->|是| I5[买家支付]
    I4 -->|否| I6[撤回商品]
    I5 --> I7[交易完成]
    I6 --> E
```

## 7. 集市交易流程

```mermaid
sequenceDiagram
    participant S as 卖家
    participant M as 集市系统
    participant B as 买家
    participant P as 支付系统
    participant D as 数据库
    
    S->>M: 发布商品到集市
    M->>D: 保存商品信息
    M-->>S: 发布成功
    
    B->>M: 浏览集市商品
    M->>D: 查询商品列表
    D-->>M: 返回商品数据
    M-->>B: 显示商品列表
    
    B->>M: 选择购买商品
    M->>D: 检查商品状态
    D-->>M: 商品可购买
    M->>P: 创建支付订单
    P-->>M: 返回支付信息
    M-->>B: 显示支付界面
    
    B->>P: 完成支付
    P->>M: 支付成功回调
    M->>D: 更新交易状态
    M->>D: 转移商品所有权
    M->>S: 通知交易成功
    M-->>B: 交易完成
```

## 8. 数据统计分析流程

```mermaid
graph TD
    A[数据收集] --> B[实时数据处理]
    B --> C[数据存储]
    C --> D[定时任务分析]
    
    D --> E{分析类型}
    E --> F1[用户行为分析]
    E --> F2[销售数据分析]
    E --> F3[财务数据分析]
    E --> F4[商品热度分析]
    
    F1 --> G1[用户活跃度]
    F1 --> G2[用户消费习惯]
    F1 --> G3[用户留存率]
    
    F2 --> H1[销售额统计]
    F2 --> H2[商品销量排行]
    F2 --> H3[地区销售分布]
    
    F3 --> I1[收入支出统计]
    F3 --> I2[利润率分析]
    F3 --> I3[成本控制]
    
    F4 --> J1[商品点击率]
    F4 --> J2[转化率分析]
    F4 --> J3[库存周转率]
    
    G1 --> K[生成报表]
    G2 --> K
    G3 --> K
    H1 --> K
    H2 --> K
    H3 --> K
    I1 --> K
    I2 --> K
    I3 --> K
    J1 --> K
    J2 --> K
    J3 --> K
    
    K --> L[管理员查看]
    K --> M[自动预警]
    K --> N[决策支持]
```

## 流程图说明

### 主要业务流程特点：

1. **多样化抽奖模式**：支持9种不同的抽奖类型，满足不同用户需求
2. **灵活支付方式**：支持多种支付方式和虚拟货币组合支付
3. **智能抽奖算法**：采用优化后的加权随机算法，确保公平性和性能
4. **完整订单流程**：从下单到收货的完整闭环
5. **用户自主选择**：中奖后可选择发货、回收或集市交易
6. **实时数据分析**：全方位的数据统计和分析支持

### 技术实现要点：

- 使用事务确保数据一致性
- 异步处理提高系统性能
- 缓存机制减少数据库压力
- 完善的日志记录便于问题排查
- 模块化设计便于功能扩展

这些流程图展示了系统的核心业务逻辑和技术架构，为开发和运维提供了清晰的指导。