# HoneyBox 后台管理系统 - Statistics 统计报表模块分析

## 模块概述

Statistics 统计报表模块是后台管理系统的核心运营分析模块，提供全面的业务数据统计、利润分析、用户行为分析等功能。该模块共包含 **10个功能页面**，是运营决策的重要数据支撑。

## 源文件位置

```
server/php/app/admin/view/Statistics/
├── dataStand.html          # 数据看板（核心仪表盘）
├── profit.html             # 盒子利润统计
├── productsOverview.html   # 出货概览
├── lotteryUsers.html       # 抽奖用户列表
├── userLotteryDetail.html  # 用户抽奖详情
├── userstatistics.html     # 用户统计图表
├── orderList.html          # 支付订单列表
├── goodsList.html          # 出货列表
├── exchangeList.html       # 兑换列表
└── shipmentList.html       # 发货列表
```

---

## 页面功能详细分析

### 1. dataStand.html - 数据看板（核心仪表盘）⭐⭐⭐⭐⭐

**功能描述：** 综合数据概览页面，是运营人员每日查看的核心页面，包含多个数据卡片区域，支持异步加载和手动刷新。

#### 1.1 今日订单卡片

| 数据项 | 说明 | 数据来源 |
|--------|------|----------|
| 发起订单数 | 今日创建的订单总数 | orders 表 |
| 支付订单数 | 今日支付成功的订单数 | orders 表 status=1 |
| 消费人数 | 今日有消费的用户数 | orders 表去重 user_id |
| 订单总金额 | 今日订单总金额 | orders.order_total |
| 出货总金额 | 今日出货奖品总价值 | order_goods.goodslist_price |
| 优惠券抵扣 | 今日优惠券抵扣总额 | orders.use_coupon |
| RMB支付 | 今日微信支付总额 | orders.price |
| 钻石支付 | 今日钻石支付总额 | orders.use_money |
| UU币支付 | 今日UU币支付总额 | orders.use_integral |
| 达达券支付 | 今日达达券支付总额 | orders.use_money2 |

#### 1.2 今日货币信息卡片

| 数据项 | 说明 |
|--------|------|
| 今日发放钻石 | 今日系统发放的钻石总量 |
| 今日消费钻石 | 今日用户消费的钻石总量 |
| 昨日发放钻石 | 昨日系统发放的钻石总量 |
| 昨日消费钻石 | 昨日用户消费的钻石总量 |
| 今日发放UU币 | 今日系统发放的UU币总量 |
| 今日消费UU币 | 今日用户消费的UU币总量 |
| 昨日发放UU币 | 昨日系统发放的UU币总量 |
| 昨日消费UU币 | 昨日用户消费的UU币总量 |
| 今日发放达达券 | 今日系统发放的达达券总量 |
| 今日消费达达券 | 今日用户消费的达达券总量 |
| 昨日发放达达券 | 昨日系统发放的达达券总量 |
| 昨日消费达达券 | 昨日用户消费的达达券总量 |

#### 1.3 今日收入汇总卡片

| 数据项 | 计算公式/说明 |
|--------|---------------|
| 订单收入（RMB+钻石） | orders.price + orders.use_money |
| RMB收入 | orders.price 总和 |
| 钻石商城收入 | 钻石商城订单收入 |
| 其他收入 | 其他渠道收入 |
| 订单出货 | 今日出货奖品总价值 |
| 支出 | 今日系统支出总额 |
| 当天发货金额 | 今日申请发货的奖品总价值 |
| 当天用户剩余达达券 | 今日用户达达券余额总和 |
| 盒柜剩余价值 | 今日用户盒柜中奖品总价值 |
| 利润 | 收入 - 发货金额 - 用户剩余达达券 - 盒柜剩余 |

#### 1.4 用户数据统计卡片

| 数据项 | 说明 |
|--------|------|
| 绑定手机号人数 | 已绑定手机号的用户总数 |
| 抽奖人数 | 有抽奖记录的用户总数 |
| 用户剩余钻石 | 所有用户钻石余额总和 |
| 用户剩余UU币 | 所有用户UU币余额总和 |
| 用户剩余达达券 | 所有用户达达券余额总和 |
| 微信支付金额 | 历史微信支付总额 |
| 订单支付数量 | 历史支付成功订单总数 |
| 用户出货总金额 | 历史出货奖品总价值 |
| 用户盒柜剩余价值 | 所有用户盒柜中奖品总价值 |
| 用户已兑换的达达券 | 历史兑换达达券总额 |
| 用户已发货金额 | 历史已发货奖品总价值 |

#### 1.5 技术实现要点

- **异步加载**：每个卡片区域独立异步加载，避免页面阻塞
- **手动刷新**：每个卡片都有独立的刷新按钮
- **加载状态**：显示 loading 动画，提升用户体验
- **数据缓存**：部分数据可考虑缓存优化

---

### 2. profit.html - 盒子利润统计 ⭐⭐⭐⭐⭐

**功能描述：** 按盒子维度统计利润数据，是运营分析的核心功能，支持多条件筛选、异步加载详情、导出Excel。

#### 2.1 搜索条件

| 字段 | 类型 | 说明 |
|------|------|------|
| 盒子ID | 文本输入 | 精确匹配盒子ID |
| 盒子名称 | 文本输入 | 模糊匹配盒子名称 |
| 盒子状态 | 下拉选择 | 上架/下架/售罄 |
| 盒子类型 | 下拉选择 | 动态加载盒子类型列表 |
| 时间范围 | 日期时间范围 | 筛选订单时间范围 |

#### 2.2 统计摘要卡片

| 卡片 | 数据项 | 计算公式 |
|------|--------|----------|
| 总收入 | totalIncome | 微信支付 + 钻石支付 |
| 总出货价值 | totalCost | 奖品的采购价格总和 |
| 总利润 | totalProfit | 收入 - (出货价值 - 兑换成本) |
| 总兑换/发货价值 | totalReMoney / totalFhMoney | 已兑换达达券 / 已申请发货金额 |

#### 2.3 列表字段

| 字段 | 说明 | 异步加载 |
|------|------|----------|
| 盒子ID | 盒子唯一标识 | 否 |
| 盒子名称 | 盒子标题 | 否 |
| 盒子类型/状态 | 类型名称 + 上架状态 | 否 |
| 盒子单价 | 单次抽奖价格 | 否 |
| 抽奖次数 | 该盒子被抽奖的总次数 | **是** |
| 收入 | 微信支付 + 钻石支付 | **是** |
| 出货价值 | 奖品采购价格总和 | **是** |
| 已兑换达达券 | 用户兑换的达达券总额 | **是** |
| 已申请发货 | 申请发货的奖品总价值 | **是** |
| 单盒子利润 | 盒子单价 × 抽数 - 出货总额 | **是** |
| 单盒子利润比 | (单价×抽数-出货) / (单价×抽数) × 100% | **是** |
| 利润 | 收入 - (出货价值 - 兑换成本) | **是** |
| 利润率 | 利润 / 收入 × 100% | **是** |

#### 2.4 操作按钮

| 操作 | 功能说明 | 弹窗/跳转 |
|------|----------|-----------|
| 出货概览 | 查看该盒子的奖品出货统计 | 弹窗 productsOverview.html |
| 抽奖用户 | 查看该盒子的抽奖用户列表 | 弹窗 lotteryUsers.html |
| 导出Excel | 导出当前筛选条件下的所有数据 | 文件下载 |

#### 2.5 技术实现要点

- **异步加载队列**：表格渲染后，将每行数据加入加载队列，控制并发请求数（最大3个）
- **汇总数据独立加载**：统计摘要卡片通过独立API获取，不依赖表格数据
- **利润负值高亮**：利润为负的行显示红色背景
- **利润详情提示**：鼠标悬停显示计算公式详情

---

### 3. productsOverview.html - 出货概览 ⭐⭐⭐⭐

**功能描述：** 查看单个盒子的奖品出货统计，分析各奖品的出货情况和概率偏差。

#### 3.1 统计摘要

| 数据项 | 说明 |
|--------|------|
| 总出货数量 | 该盒子所有奖品的出货总次数 |
| 总出货价值 | 该盒子所有奖品的出货总价值（兑换价格） |
| 平均每次出货价值 | 总出货价值 / 总出货数量 |
| 盒子单价 | 该盒子的单次抽奖价格 |
| 平均出货价值倍率 | 平均出货价值 / 盒子单价 |
| 出货金额最多的奖品 | 出货总价值最高的奖品名称和金额 |
| 占总出货金额百分比 | 最高奖品出货金额 / 总出货价值 × 100% |

#### 3.2 列表字段

| 字段 | 说明 |
|------|------|
| 奖品ID | 奖品唯一标识 |
| 奖品类型 | 奖品等级（A/B/C/D/E等） |
| 奖品名称 | 奖品标题 |
| 奖品图片 | 奖品缩略图 |
| 出货数量 | 该奖品的出货次数 |
| 奖品单价 | 奖品售价 |
| 兑换金额 | 奖品回收价格 |
| 理论概率 | 配置的中奖概率 |
| 实际概率 | 实际出货次数 / 总出货次数 × 100% |
| 概率偏差 | 实际概率 - 理论概率（正值绿色，负值红色） |
| 总价值 | 出货数量 × 兑换金额 |

#### 3.3 技术实现要点

- **概率偏差分析**：帮助运营人员发现概率配置问题
- **数据分析卡片**：自动分析出货金额最多的奖品
- **PHP服务端计算**：统计数据在服务端计算完成后返回

---

### 4. lotteryUsers.html - 抽奖用户列表 ⭐⭐⭐

**功能描述：** 查看某个盒子的所有抽奖用户，分析用户抽奖行为。

#### 4.1 页面信息

- 显示当前盒子名称（通过 boxInfo 返回）

#### 4.2 列表字段

| 字段 | 说明 | 排序 |
|------|------|------|
| 用户ID | 用户唯一标识 | 否 |
| 用户昵称 | 用户昵称 | 否 |
| 抽奖次数 | 该用户在此盒子的抽奖次数 | 是 |
| 出货价值 | 该用户获得奖品的总价值 | 是 |
| 微信支付 | 该用户微信支付总额 | 是 |
| 钻石支付 | 该用户钻石支付总额 | 是 |
| 总支付金额 | 微信支付 + 钻石支付 | 是 |

#### 4.3 操作按钮

| 操作 | 功能说明 |
|------|----------|
| 查看详情 | 查看该用户在此盒子的抽奖明细 |

#### 4.4 技术实现要点

- **分页加载**：默认每页20条
- **排序支持**：支持按抽奖次数、出货价值、支付金额排序
- **弹窗打开**：从 profit.html 以弹窗形式打开

---

### 5. userLotteryDetail.html - 用户抽奖详情 ⭐⭐⭐

**功能描述：** 查看单个用户在某盒子的抽奖明细记录。

#### 5.1 页面信息

- 显示用户昵称（通过 userInfo 返回）
- 显示盒子名称（通过 boxInfo 返回）

#### 5.2 统计摘要

| 数据项 | 说明 |
|--------|------|
| 抽奖次数 | 该用户在此盒子的抽奖总次数 |
| 出货价值 | 该用户获得奖品的总价值 |
| 总支付金额 | 该用户的总支付金额 |
| 微信支付 | 微信支付金额 |
| 钻石支付 | 钻石支付金额 |

#### 5.3 列表字段

| 字段 | 说明 |
|------|------|
| ID | 记录ID |
| 抽奖时间 | 抽奖时间（时间戳转换） |
| 奖品名称 | 中奖奖品名称 |
| 奖品价值 | 奖品兑换价格 |
| 订单ID | 关联订单ID |
| 支付方式 | 微信支付/钻石支付 |
| 支付金额 | 本次支付金额 |
| 是否发货 | 已发货/未发货 |

---

### 6. userstatistics.html - 用户统计图表 ⭐⭐⭐⭐

**功能描述：** 用户数据和订单数据的图表展示，使用 ECharts 实现可视化。

#### 6.1 图表区域

| 图表 | 数据系列 | 图表类型 |
|------|----------|----------|
| 用户数据 | 登录人数、注册人数 | 折线图 |
| 订单支付数据 | RMB支付、钻石支付 | 折线图 |
| 其他数据（预留） | 出货价值、发货价值、回收价值 | 折线图 |

#### 6.2 图表功能

- **时间轴**：X轴为时间轴，支持日期格式化
- **数据缩放**：支持滑动条缩放和鼠标滚轮缩放
- **默认显示**：默认显示最近50%的数据
- **保存图片**：支持将图表保存为图片

#### 6.3 数据表格

| 字段分组 | 字段列表 |
|----------|----------|
| 日期 | 统计日期 |
| 用户信息 | 注册人数、登录人数 |
| 订单信息 | 订单数量、用户数量、RMB支付、钻石支付、UU币支付、达达券支付 |
| 钻石商城 | 支付总额 |

#### 6.4 技术实现要点

- **ECharts 5.x**：使用 ECharts 实现图表
- **异步数据加载**：通过 AJAX 获取统计数据
- **表格分页**：支持分页显示，默认50条/页
- **默认倒序**：按日期倒序排列，最新数据在前

---

### 7. orderList.html - 支付订单列表 ⭐⭐

**功能描述：** 查看所有支付订单的明细列表。

#### 7.1 列表字段

| 字段 | 说明 |
|------|------|
| 序号 | 行号 |
| 订单ID | 订单唯一标识 |
| 订单号 | 订单编号 |
| 用户ID | 用户唯一标识 |
| 用户昵称 | 用户昵称 |
| 盒子ID | 盒子唯一标识 |
| 盒子名称 | 盒子标题 |
| 订单总金额 | 订单原始金额 |
| 实际支付 | 折后实际支付金额 |
| 微信 | 微信支付金额 |
| 钻石 | 钻石支付金额 |
| UU币 | UU币支付金额 |
| 达达券 | 达达券支付金额 |
| 优惠券抵扣 | 优惠券抵扣金额 |
| 订单状态 | 已支付/未支付 |
| 下单时间 | 订单创建时间 |
| 支付时间 | 订单支付时间 |

#### 7.2 技术实现要点

- **宽表格**：表格宽度1800px，支持横向滚动
- **分页显示**：支持分页
- **状态标签**：已支付显示绿色，未支付显示灰色

---

### 8. goodsList.html - 出货列表 ⭐⭐

**功能描述：** 查看所有出货记录（用户中奖记录）。

#### 8.1 列表字段

| 字段 | 说明 |
|------|------|
| ID | 记录ID |
| 订单ID | 关联订单ID |
| 用户ID | 用户唯一标识 |
| 盒子ID | 盒子唯一标识 |
| 盒子排序 | 盒子内序号 |
| 奖品ID | 奖品唯一标识 |
| 奖品名称 | 奖品标题 |
| 奖品图片 | 奖品缩略图 |
| 奖品价值 | 奖品售价 |
| 兑换价值 | 奖品回收价格 |
| 奖品类型 | 现货/预售/货币/宝箱 |
| 状态 | 待选择/回收/选择发货/发布集市 |
| 添加时间 | 中奖时间 |

#### 8.2 状态说明

| 状态值 | 显示 | 说明 |
|--------|------|------|
| 0 | 待选择 | 用户尚未选择处理方式 |
| 1 | 回收 | 用户选择回收兑换达达券 |
| 2 | 选择发货 | 用户选择申请发货 |
| 3 | 发布集市 | 用户选择发布到集市交易 |

---

### 9. exchangeList.html - 兑换列表 ⭐⭐

**功能描述：** 查看所有兑换（回收）记录，即用户将奖品兑换为达达券的记录。

#### 9.1 列表字段

| 字段 | 说明 |
|------|------|
| 序号 | 行号 |
| ID | 记录ID |
| 订单ID | 关联订单ID |
| 用户ID | 用户唯一标识 |
| 兑换单号 | 兑换记录编号 |
| 盒子ID | 盒子唯一标识 |
| 奖品ID | 奖品唯一标识 |
| 奖品名称 | 奖品标题 |
| 奖品图片 | 奖品缩略图 |
| 奖品价值 | 奖品售价 |
| 兑换价值 | 兑换获得的达达券金额 |
| 奖品类型 | 现货/预售/货币/宝箱 |
| 添加时间 | 中奖时间 |
| 选择时间 | 兑换操作时间 |

---

### 10. shipmentList.html - 发货列表 ⭐⭐

**功能描述：** 查看所有发货记录，即用户申请发货的奖品记录。

#### 10.1 列表字段

| 字段 | 说明 |
|------|------|
| ID | 记录ID |
| 订单ID | 关联订单ID |
| 用户ID | 用户唯一标识 |
| 发货单号 | 发货记录编号 |
| 盒子ID | 盒子唯一标识 |
| 奖品ID | 奖品唯一标识 |
| 奖品名称 | 奖品标题 |
| 奖品图片 | 奖品缩略图 |
| 奖品价值 | 奖品售价 |
| 兑换价值 | 奖品回收价格 |
| 奖品类型 | 现货/预售/货币/宝箱 |
| 保险状态 | 是/否（是否购买保险） |
| 添加时间 | 中奖时间 |
| 选择时间 | 申请发货时间 |

---

## 模块复杂度评估

| 页面 | 主要功能 | 复杂度 | 迁移优先级 |
|------|----------|--------|------------|
| dataStand.html | 数据看板、多卡片、异步加载 | ⭐⭐⭐⭐⭐ | P0 |
| profit.html | 盒子利润统计、异步加载、导出 | ⭐⭐⭐⭐⭐ | P0 |
| userstatistics.html | ECharts图表、数据表格 | ⭐⭐⭐⭐ | P0 |
| productsOverview.html | 出货概览、概率分析 | ⭐⭐⭐⭐ | P1 |
| lotteryUsers.html | 抽奖用户列表 | ⭐⭐⭐ | P1 |
| userLotteryDetail.html | 用户抽奖详情 | ⭐⭐⭐ | P1 |
| orderList.html | 订单列表 | ⭐⭐ | P2 |
| goodsList.html | 出货列表 | ⭐⭐ | P2 |
| exchangeList.html | 兑换列表 | ⭐⭐ | P2 |
| shipmentList.html | 发货列表 | ⭐⭐ | P2 |

---

## 后端 API 设计建议

### 数据看板 API

```
GET /api/admin/statistics/today-order          # 今日订单数据
GET /api/admin/statistics/currency-info        # 今日货币信息
GET /api/admin/statistics/income-summary       # 今日收入汇总
GET /api/admin/statistics/user-stats           # 用户数据统计
```

### 盒子利润统计 API

```
GET /api/admin/statistics/profit               # 盒子利润列表（分页）
GET /api/admin/statistics/profit/summary       # 利润汇总数据
GET /api/admin/statistics/profit/{goodsId}     # 单个盒子详细统计
GET /api/admin/statistics/profit/export        # 导出Excel
```

### 出货概览 API

```
GET /api/admin/statistics/products-overview/{goodsId}  # 盒子出货概览
```

### 抽奖用户 API

```
GET /api/admin/statistics/lottery-users/{goodsId}           # 抽奖用户列表
GET /api/admin/statistics/lottery-users/{goodsId}/{userId}  # 用户抽奖详情
GET /api/admin/statistics/lottery-users/{goodsId}/{userId}/summary  # 用户抽奖汇总
```

### 用户统计图表 API

```
GET /api/admin/statistics/daily-statistics     # 每日统计数据
```

### 列表查询 API

```
GET /api/admin/statistics/orders               # 支付订单列表
GET /api/admin/statistics/goods                # 出货列表
GET /api/admin/statistics/exchanges            # 兑换列表
GET /api/admin/statistics/shipments            # 发货列表
```

---

## 数据库表依赖

### 主要数据表

| 表名 | 用途 |
|------|------|
| orders | 订单表，存储订单信息 |
| order_goods | 订单商品表，存储中奖记录 |
| goods | 盒子表，存储盒子信息 |
| goodslist | 奖品表，存储奖品信息 |
| users | 用户表，存储用户信息 |
| user_money_log | 用户余额流水表 |
| user_integral_log | 用户积分流水表 |
| user_score_log | 用户钻石流水表 |
| send_order | 发货订单表 |
| send_order_goods | 发货订单商品表 |

### 关键字段映射

| PHP字段 | 说明 | .NET建议字段 |
|---------|------|--------------|
| order_total | 订单总金额 | OrderTotal |
| order_zhe_total | 折后金额 | DiscountedTotal |
| price | 微信支付金额 | WechatPayment |
| use_money | 钻石支付金额 | DiamondPayment |
| use_integral | UU币支付金额 | UuCoinPayment |
| use_money2 | 达达券支付金额 | DadaCouponPayment |
| use_coupon | 优惠券抵扣 | CouponDiscount |
| goodslist_price | 奖品售价 | PrizePrice |
| goodslist_money | 奖品兑换价格 | PrizeExchangePrice |
| real_pro | 理论概率 | TheoreticalProbability |

---

## 前端技术要点

### Vue 3 + Element Plus 实现建议

#### 数据看板组件结构

```
views/business/statistics/
├── dashboard.vue              # 数据看板主页面
├── profit.vue                 # 盒子利润统计
├── user-statistics.vue        # 用户统计图表
├── components/
│   ├── TodayOrderCard.vue     # 今日订单卡片
│   ├── CurrencyInfoCard.vue   # 货币信息卡片
│   ├── IncomeSummaryCard.vue  # 收入汇总卡片
│   ├── UserStatsCard.vue      # 用户统计卡片
│   ├── ProfitTable.vue        # 利润统计表格
│   ├── ProfitSummary.vue      # 利润汇总卡片
│   ├── ProductsOverviewDialog.vue  # 出货概览弹窗
│   ├── LotteryUsersDialog.vue      # 抽奖用户弹窗
│   ├── UserLotteryDetailDialog.vue # 用户抽奖详情弹窗
│   └── StatisticsChart.vue    # 统计图表组件
```

#### 图表库选择

- **ECharts 5.x**：功能强大，与 PHP 版本保持一致
- **vue-echarts**：Vue 3 封装版本，使用更方便

#### 异步加载实现

```typescript
// 利润表格异步加载示例
const loadingQueue = ref<GoodsItem[]>([])
const maxConcurrentRequests = 3

const processLoadingQueue = async () => {
  const batch = loadingQueue.value.splice(0, maxConcurrentRequests)
  await Promise.all(batch.map(item => loadBoxStatistics(item)))
  if (loadingQueue.value.length > 0) {
    processLoadingQueue()
  }
}
```

---

## 迁移计划建议

### 阶段1：核心功能（2周）

1. **数据看板** (dataStand.html)
   - 后端：4个统计API
   - 前端：4个卡片组件 + 主页面

2. **盒子利润统计** (profit.html)
   - 后端：利润列表API、汇总API、详情API、导出API
   - 前端：表格组件、汇总卡片、异步加载逻辑

3. **用户统计图表** (userstatistics.html)
   - 后端：每日统计API
   - 前端：ECharts图表组件、数据表格

### 阶段2：详情功能（1周）

4. **出货概览** (productsOverview.html)
5. **抽奖用户列表** (lotteryUsers.html)
6. **用户抽奖详情** (userLotteryDetail.html)

### 阶段3：列表功能（1周）

7. **支付订单列表** (orderList.html)
8. **出货列表** (goodsList.html)
9. **兑换列表** (exchangeList.html)
10. **发货列表** (shipmentList.html)

---

## 更新记录

| 日期 | 版本 | 更新内容 |
|------|------|----------|
| 2026-01-18 | v1.0 | 初始版本，完成10个页面功能分析 |
