5.8 KiB
5.8 KiB
管理后台用户统计功能增强
概述
对管理后台的用户统计接口 /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. 数据透明度
- 管理层报告:提供清晰的用户结构分析
- 趋势监控:跟踪各类用户数量的变化趋势
- 异常检测:及时发现用户数据异常
数据一致性验证
验证规则
vipUsers=paidVipUsers+exchangeVipUsers+expiredVipUserssvipUsers=paidSvipUsers+exchangeSvipUsers+expiredSvipUsersactiveMembersTotal=paidVipUsers+exchangeVipUsers+paidSvipUsers+exchangeSvipUsersexpiredMembersTotal=expiredVipUsers+expiredSvipUsers
特殊情况说明
- 兑换后付费用户:可能在多个分类中出现(既有兑换记录又有付费记录)
- 时间边界:会员到期时间精确到秒,统计时点会影响结果
- 数据更新:统计数据实时计算,反映当前最新状态
性能考虑
SQL优化
- 使用EXISTS子查询而非JOIN,提高查询效率
- 合理使用索引(user.role, user.membership_expires_at, order.user_id, gift_code_usage.user_id)
- 统计查询建议在业务低峰期执行
缓存策略
- 考虑将统计结果缓存5-10分钟
- 在用户状态变更时清除相关缓存
- 提供强制刷新选项供管理员使用
监控和报警
建议监控指标
- 当日付费用户数量异常下降
- 过期用户数量异常增长
- 总用户数与分类用户数不一致
- 统计查询执行时间过长
这个增强的统计功能为管理层提供了全面、精确的用户分析数据,支持更好的业务决策和运营优化。