Files
1818web-hoduan/docs/admin-user-statistics-enhancement.md

190 lines
5.8 KiB
Markdown
Raw Normal View History

# 管理后台用户统计功能增强
## 概述
对管理后台的用户统计接口 `/admin/users/statistics` 进行了全面升级提供更详细的会员分类统计特别是区分付费VIP/SVIP和兑换VIP/SVIP并考虑会员有效期状态。
## 新增统计字段
### 1. 基础用户统计
- `totalUsers` - 总用户数
- `todayNewUsers` - 今日新增用户数
- `weekNewUsers` - 本周新增用户数
- `monthNewUsers` - 本月新增用户数
- `normalUsers` - 普通用户数
### 2. VIP用户详细统计 ⭐
- `vipUsers` - VIP用户总数
- `paidVipUsers` - **当前有效付费VIP用户数**
- `exchangeVipUsers` - **当前有效兑换VIP用户数**
- `expiredVipUsers` - **过期VIP用户数**
### 3. SVIP用户详细统计 ⭐
- `svipUsers` - SVIP用户总数
- `paidSvipUsers` - **当前有效付费SVIP用户数**
- `exchangeSvipUsers` - **当前有效兑换SVIP用户数**
- `expiredSvipUsers` - **过期SVIP用户数**
### 4. 特殊会员类型统计 🆕
- `giftMembers` - **赠送会员数**注册2天内的VIP无付费和兑换记录
- `pureExchangeMembers` - **纯兑换会员数**(只使用兑换码,从未付费)
- `exchangeThenPaidMembers` - **兑换后付费会员数**(先兑换后付费)
### 5. 认证和推广统计
- `verifiedUsers` - 已实名认证用户数
- `unverifiedUsers` - 未实名认证用户数
- `promotionUsers` - 有推广等级用户数
### 6. 会员有效性统计 🆕
- `activeMembersTotal` - **当前有效会员总数**VIP+SVIP未过期
- `expiredMembersTotal` - **过期会员总数**
## 统计逻辑说明
### 付费会员识别
```sql
-- 当前有效付费VIP角色为VIP + 会员未过期 + 有成功的订单记录
AND u.role = 2
AND u.membership_expires_at IS NOT NULL AND u.membership_expires_at > NOW()
AND EXISTS (
SELECT 1 FROM `order` o
WHERE o.user_id = u.id AND o.status = 1 AND o.is_deleted = 0
)
```
### 兑换会员识别
```sql
-- 当前有效兑换VIP角色为VIP + 会员未过期 + 有兑换记录
AND u.role = 2
AND u.membership_expires_at IS NOT NULL AND u.membership_expires_at > NOW()
AND EXISTS (
SELECT 1 FROM gift_code_usage gcu
WHERE gcu.user_id = u.id AND gcu.type = 2 AND gcu.status = 1 AND gcu.is_deleted = 0
)
```
### 过期会员识别
```sql
-- 过期VIP角色为VIP + 会员已过期
AND u.role = 2
AND (u.membership_expires_at IS NULL OR u.membership_expires_at <= NOW())
```
### 赠送会员识别
```sql
-- 赠送会员VIP + 会员有效 + 注册2天内 + 无付费记录 + 无兑换记录
AND u.role > 1
AND u.membership_expires_at IS NOT NULL AND u.membership_expires_at > NOW()
AND u.create_time >= DATE_SUB(NOW(), INTERVAL 2 DAY)
AND NOT EXISTS (订单记录)
AND NOT EXISTS (兑换记录)
```
### 纯兑换会员识别
```sql
-- 纯兑换会员VIP + 有兑换记录 + 无付费记录
AND u.role > 1
AND EXISTS (兑换记录)
AND NOT EXISTS (订单记录)
```
## API接口
### 请求
```
GET /admin/users/statistics
```
### 响应示例
```json
{
"code": 200,
"message": "操作成功",
"data": {
"totalUsers": 1250,
"todayNewUsers": 15,
"weekNewUsers": 89,
"monthNewUsers": 324,
"normalUsers": 890,
"vipUsers": 280,
"paidVipUsers": 180,
"exchangeVipUsers": 65,
"expiredVipUsers": 35,
"svipUsers": 80,
"paidSvipUsers": 50,
"exchangeSvipUsers": 20,
"expiredSvipUsers": 10,
"giftMembers": 12,
"pureExchangeMembers": 45,
"exchangeThenPaidMembers": 38,
"verifiedUsers": 450,
"unverifiedUsers": 800,
"promotionUsers": 125,
"activeMembersTotal": 315,
"expiredMembersTotal": 45
}
}
```
## 业务价值
### 1. 精确的收益分析
- **区分付费和兑换**:清楚了解真实的付费用户数量
- **收益贡献分析**:付费用户是主要收益来源
- **成本控制**:兑换用户的运营成本分析
### 2. 用户生命周期管理
- **过期用户挽回**:针对过期会员制定回购策略
- **续费提醒**:基于有效期状态进行精准营销
- **用户分层**:不同类型用户的差异化服务
### 3. 运营决策支持
- **兑换码效果评估**:通过兑换用户数量分析推广效果
- **赠送策略优化**:监控赠送会员的转化情况
- **产品定价策略**:基于付费用户分布调整价格
### 4. 数据透明度
- **管理层报告**:提供清晰的用户结构分析
- **趋势监控**:跟踪各类用户数量的变化趋势
- **异常检测**:及时发现用户数据异常
## 数据一致性验证
### 验证规则
1. `vipUsers` = `paidVipUsers` + `exchangeVipUsers` + `expiredVipUsers`
2. `svipUsers` = `paidSvipUsers` + `exchangeSvipUsers` + `expiredSvipUsers`
3. `activeMembersTotal` = `paidVipUsers` + `exchangeVipUsers` + `paidSvipUsers` + `exchangeSvipUsers`
4. `expiredMembersTotal` = `expiredVipUsers` + `expiredSvipUsers`
### 特殊情况说明
- **兑换后付费用户**:可能在多个分类中出现(既有兑换记录又有付费记录)
- **时间边界**:会员到期时间精确到秒,统计时点会影响结果
- **数据更新**:统计数据实时计算,反映当前最新状态
## 性能考虑
### SQL优化
- 使用EXISTS子查询而非JOIN提高查询效率
- 合理使用索引user.role, user.membership_expires_at, order.user_id, gift_code_usage.user_id
- 统计查询建议在业务低峰期执行
### 缓存策略
- 考虑将统计结果缓存5-10分钟
- 在用户状态变更时清除相关缓存
- 提供强制刷新选项供管理员使用
## 监控和报警
### 建议监控指标
- 当日付费用户数量异常下降
- 过期用户数量异常增长
- 总用户数与分类用户数不一致
- 统计查询执行时间过长
这个增强的统计功能为管理层提供了全面、精确的用户分析数据,支持更好的业务决策和运营优化。