Files
1818web-hoduan/docs/admin-user-statistics-enhancement.md
2025-11-14 17:41:15 +08:00

5.8 KiB
Raw Blame 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 - 过期会员总数

统计逻辑说明

付费会员识别

-- 当前有效付费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
)

兑换会员识别

-- 当前有效兑换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
)

过期会员识别

-- 过期VIP角色为VIP + 会员已过期
AND u.role = 2 
AND (u.membership_expires_at IS NULL OR u.membership_expires_at <= NOW())

赠送会员识别

-- 赠送会员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 (兑换记录)

纯兑换会员识别

-- 纯兑换会员VIP + 有兑换记录 + 无付费记录
AND u.role > 1 
AND EXISTS (兑换记录)
AND NOT EXISTS (订单记录)

API接口

请求

GET /admin/users/statistics

响应示例

{
  "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分钟
  • 在用户状态变更时清除相关缓存
  • 提供强制刷新选项供管理员使用

监控和报警

建议监控指标

  • 当日付费用户数量异常下降
  • 过期用户数量异常增长
  • 总用户数与分类用户数不一致
  • 统计查询执行时间过长

这个增强的统计功能为管理层提供了全面、精确的用户分析数据,支持更好的业务决策和运营优化。