274 lines
7.7 KiB
Markdown
274 lines
7.7 KiB
Markdown
# 管理后台用户统计API使用示例
|
||
|
||
## 接口调用
|
||
|
||
### 基本调用
|
||
```bash
|
||
GET /admin/users/statistics
|
||
Authorization: Bearer <admin_token>
|
||
```
|
||
|
||
### 响应数据解读
|
||
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "操作成功",
|
||
"data": {
|
||
// 基础用户统计
|
||
"totalUsers": 1250, // 总用户数
|
||
"todayNewUsers": 15, // 今日新增
|
||
"weekNewUsers": 89, // 本周新增
|
||
"monthNewUsers": 324, // 本月新增
|
||
"normalUsers": 890, // 普通用户数
|
||
|
||
// VIP用户详细分类
|
||
"vipUsers": 280, // VIP总数
|
||
"paidVipUsers": 180, // 当前有效付费VIP ✨
|
||
"exchangeVipUsers": 65, // 当前有效兑换VIP ✨
|
||
"expiredVipUsers": 35, // 过期VIP ✨
|
||
|
||
// SVIP用户详细分类
|
||
"svipUsers": 80, // SVIP总数
|
||
"paidSvipUsers": 50, // 当前有效付费SVIP ✨
|
||
"exchangeSvipUsers": 20, // 当前有效兑换SVIP ✨
|
||
"expiredSvipUsers": 10, // 过期SVIP ✨
|
||
|
||
// 特殊会员类型
|
||
"giftMembers": 12, // 赠送会员(新用户福利)
|
||
"pureExchangeMembers": 45, // 纯兑换会员(从未付费)
|
||
"exchangeThenPaidMembers": 38, // 兑换后付费会员
|
||
|
||
// 认证和推广
|
||
"verifiedUsers": 450, // 已实名认证
|
||
"unverifiedUsers": 800, // 未实名认证
|
||
"promotionUsers": 125, // 有推广等级
|
||
|
||
// 会员有效性汇总
|
||
"activeMembersTotal": 315, // 当前有效会员总数
|
||
"expiredMembersTotal": 45 // 过期会员总数
|
||
}
|
||
}
|
||
```
|
||
|
||
## 数据分析场景
|
||
|
||
### 1. 收益分析 💰
|
||
|
||
**真实付费用户**:
|
||
```javascript
|
||
// 计算真实付费用户数量
|
||
const realPaidUsers = data.paidVipUsers + data.paidSvipUsers;
|
||
console.log(`真实付费用户:${realPaidUsers}人`);
|
||
|
||
// 计算付费转化率
|
||
const paidConversionRate = (realPaidUsers / data.totalUsers * 100).toFixed(2);
|
||
console.log(`付费转化率:${paidConversionRate}%`);
|
||
```
|
||
|
||
**收益贡献分析**:
|
||
```javascript
|
||
// 分析不同会员类型的收益贡献
|
||
const analysis = {
|
||
付费VIP: data.paidVipUsers,
|
||
付费SVIP: data.paidSvipUsers,
|
||
兑换VIP: data.exchangeVipUsers,
|
||
兑换SVIP: data.exchangeSvipUsers
|
||
};
|
||
|
||
console.log('会员结构分析:', analysis);
|
||
```
|
||
|
||
### 2. 用户生命周期管理 📈
|
||
|
||
**过期用户挽回**:
|
||
```javascript
|
||
// 识别需要挽回的过期用户
|
||
const expiredUsers = data.expiredVipUsers + data.expiredSvipUsers;
|
||
const expiredRate = (expiredUsers / (data.vipUsers + data.svipUsers) * 100).toFixed(2);
|
||
|
||
console.log(`过期用户:${expiredUsers}人,过期率:${expiredRate}%`);
|
||
|
||
if (expiredRate > 15) {
|
||
console.log('⚠️ 过期率偏高,建议启动挽回营销活动');
|
||
}
|
||
```
|
||
|
||
**续费预警**:
|
||
```javascript
|
||
// 计算当前活跃会员占比
|
||
const activeRate = (data.activeMembersTotal / data.totalUsers * 100).toFixed(2);
|
||
console.log(`活跃会员占比:${activeRate}%`);
|
||
|
||
// 监控续费风险
|
||
if (data.expiredMembersTotal > data.activeMembersTotal * 0.2) {
|
||
console.log('🚨 续费风险较高,建议加强续费提醒');
|
||
}
|
||
```
|
||
|
||
### 3. 运营策略优化 🎯
|
||
|
||
**兑换码效果评估**:
|
||
```javascript
|
||
// 分析兑换码推广效果
|
||
const exchangeUsers = data.exchangeVipUsers + data.exchangeSvipUsers;
|
||
const pureExchangeRate = (data.pureExchangeMembers / exchangeUsers * 100).toFixed(2);
|
||
|
||
console.log(`兑换用户总数:${exchangeUsers}人`);
|
||
console.log(`纯兑换用户占比:${pureExchangeRate}%`);
|
||
|
||
if (data.exchangeThenPaidMembers > data.pureExchangeMembers) {
|
||
console.log('✅ 兑换码策略有效,促进了后续付费');
|
||
} else {
|
||
console.log('⚠️ 兑换码转化效果待优化');
|
||
}
|
||
```
|
||
|
||
**赠送策略分析**:
|
||
```javascript
|
||
// 分析赠送会员转化
|
||
const giftConversionPotential = data.giftMembers;
|
||
console.log(`赠送会员数量:${giftConversionPotential}人`);
|
||
|
||
if (giftConversionPotential > data.todayNewUsers * 0.5) {
|
||
console.log('📊 赠送比例较高,关注转化效果');
|
||
}
|
||
```
|
||
|
||
### 4. 管理层报告 📊
|
||
|
||
**关键指标摘要**:
|
||
```javascript
|
||
const summary = {
|
||
用户规模: {
|
||
总用户数: data.totalUsers,
|
||
月新增: data.monthNewUsers,
|
||
增长率: ((data.monthNewUsers / (data.totalUsers - data.monthNewUsers)) * 100).toFixed(2) + '%'
|
||
},
|
||
会员结构: {
|
||
有效会员: data.activeMembersTotal,
|
||
会员率: (data.activeMembersTotal / data.totalUsers * 100).toFixed(2) + '%',
|
||
付费占比: ((data.paidVipUsers + data.paidSvipUsers) / data.activeMembersTotal * 100).toFixed(2) + '%'
|
||
},
|
||
质量指标: {
|
||
实名认证率: (data.verifiedUsers / data.totalUsers * 100).toFixed(2) + '%',
|
||
推广用户数: data.promotionUsers,
|
||
过期风险: (data.expiredMembersTotal / (data.activeMembersTotal + data.expiredMembersTotal) * 100).toFixed(2) + '%'
|
||
}
|
||
};
|
||
|
||
console.log('📈 用户数据摘要:', JSON.stringify(summary, null, 2));
|
||
```
|
||
|
||
## 前端展示建议
|
||
|
||
### 1. 仪表板布局
|
||
|
||
```html
|
||
<!-- 核心指标卡片 -->
|
||
<div class="metrics-grid">
|
||
<div class="metric-card">
|
||
<h3>总用户数</h3>
|
||
<span class="number">{{totalUsers}}</span>
|
||
<span class="growth">本月+{{monthNewUsers}}</span>
|
||
</div>
|
||
|
||
<div class="metric-card">
|
||
<h3>有效会员</h3>
|
||
<span class="number">{{activeMembersTotal}}</span>
|
||
<span class="rate">{{membershipRate}}%</span>
|
||
</div>
|
||
|
||
<div class="metric-card">
|
||
<h3>付费用户</h3>
|
||
<span class="number">{{paidVipUsers + paidSvipUsers}}</span>
|
||
<span class="conversion">转化率{{conversionRate}}%</span>
|
||
</div>
|
||
</div>
|
||
```
|
||
|
||
### 2. 会员结构饼图
|
||
|
||
```javascript
|
||
// Chart.js 配置示例
|
||
const membershipChart = {
|
||
type: 'pie',
|
||
data: {
|
||
labels: ['付费VIP', '兑换VIP', '付费SVIP', '兑换SVIP', '普通用户'],
|
||
datasets: [{
|
||
data: [
|
||
data.paidVipUsers,
|
||
data.exchangeVipUsers,
|
||
data.paidSvipUsers,
|
||
data.exchangeSvipUsers,
|
||
data.normalUsers
|
||
],
|
||
backgroundColor: ['#4CAF50', '#FF9800', '#2196F3', '#9C27B0', '#757575']
|
||
}]
|
||
}
|
||
};
|
||
```
|
||
|
||
### 3. 预警提示
|
||
|
||
```javascript
|
||
// 预警逻辑
|
||
const alerts = [];
|
||
|
||
if (data.expiredMembersTotal > data.activeMembersTotal * 0.3) {
|
||
alerts.push({
|
||
type: 'warning',
|
||
message: '过期会员数量偏高,建议加强续费营销'
|
||
});
|
||
}
|
||
|
||
if (data.pureExchangeMembers > data.exchangeThenPaidMembers) {
|
||
alerts.push({
|
||
type: 'info',
|
||
message: '兑换用户付费转化率待提升'
|
||
});
|
||
}
|
||
|
||
if (data.todayNewUsers < data.weekNewUsers / 7) {
|
||
alerts.push({
|
||
type: 'warning',
|
||
message: '今日新增用户低于周平均水平'
|
||
});
|
||
}
|
||
```
|
||
|
||
## 定时任务建议
|
||
|
||
### 每日统计报告
|
||
```javascript
|
||
// 每日早上8点执行
|
||
cron.schedule('0 8 * * *', async () => {
|
||
const stats = await getAdminUserStatistics();
|
||
|
||
// 生成日报
|
||
const report = generateDailyReport(stats);
|
||
|
||
// 发送给管理层
|
||
await sendToAdmins(report);
|
||
});
|
||
```
|
||
|
||
### 异常监控
|
||
```javascript
|
||
// 每小时检查一次关键指标
|
||
cron.schedule('0 * * * *', async () => {
|
||
const stats = await getAdminUserStatistics();
|
||
|
||
// 检查异常情况
|
||
if (stats.expiredMembersTotal > lastStats.expiredMembersTotal * 1.1) {
|
||
await sendAlert('过期用户数量异常增长');
|
||
}
|
||
|
||
if (stats.activeMembersTotal < lastStats.activeMembersTotal * 0.95) {
|
||
await sendAlert('有效会员数量异常下降');
|
||
}
|
||
});
|
||
```
|
||
|
||
这个统计接口为管理层提供了全面的用户分析能力,支持精确的业务决策和运营优化。通过区分不同类型的会员,能够更好地理解用户结构,制定针对性的营销策略。
|