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

231 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 管理端支付用户统计API接口文档
## 概述
本功能为管理端提供了完整的真实支付用户统计分析功能,包括:
- 支付用户数量和信息统计
- 支付金额分布分析
- 时间维度的支付统计
- 复购用户和高消费用户分析
- 支持自定义时间段查询
## 技术实现
### 核心文件结构
```
src/main/java/com/dora/
├── dto/AdminPaymentUserDto.java # 数据传输对象
├── mapper/AdminPaymentUserMapper.java # 数据访问接口
├── service/AdminPaymentUserService.java # 服务接口
├── service/impl/AdminPaymentUserServiceImpl.java # 服务实现
└── controller/AdminPaymentUserController.java # 控制器
src/main/resources/mapper/
└── AdminPaymentUserMapper.xml # SQL映射文件
```
### 数据库依赖
- `order`订单数据status=1表示已支付
- `user` 表:用户基本信息
- `membership_plan` 表:会员套餐信息
## API接口详情
### 1. 获取支付用户统计数据
**接口地址**`GET /admin/payment-users/statistics`
**请求参数**
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|--------|------|------|------|------|
| startDate | String | 否 | 开始日期 | 2024-01-01 |
| endDate | String | 否 | 结束日期 | 2024-01-31 |
**响应数据**
```json
{
"code": 200,
"message": "操作成功",
"data": {
"overview": {
"totalPaymentUsers": 150,
"totalPaymentOrders": 200,
"totalPaymentAmount": 25000.00,
"avgOrderAmount": 125.00,
"newVipUsers": 80,
"newSvipUsers": 30,
"repeatPurchaseUsers": 45,
"firstTimeUsers": 105
},
"paymentUsers": [
{
"userId": 1001,
"username": "用户001",
"phone": "138****1234",
"role": 2,
"orderCount": 3,
"totalAmount": 299.00,
"lastPaidAt": "2024-01-15T14:30:00",
"firstPaidAt": "2024-01-01T10:15:00",
"paymentMethod": 2,
"isRepeatUser": true
}
],
"amountDistribution": {
"users0To50": 20,
"users50To100": 35,
"users100To200": 45,
"users200To500": 35,
"usersAbove500": 15
},
"dailyStats": [
{
"date": "2024-01-01",
"paymentUsers": 12,
"paymentOrders": 15,
"paymentAmount": 1500.00,
"newVipUsers": 8,
"newSvipUsers": 2
}
]
}
}
```
### 2. 获取支付用户详情列表
**接口地址**`GET /admin/payment-users/list`
**请求参数**
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|--------|------|------|------|------|
| startDate | String | 否 | 开始日期 | 2024-01-01 |
| endDate | String | 否 | 结束日期 | 2024-01-31 |
| role | Integer | 否 | 用户角色筛选 | 2 |
| onlyRepeatUsers | Boolean | 否 | 只显示复购用户 | true |
| minAmount | BigDecimal | 否 | 最小支付金额 | 100 |
| maxAmount | BigDecimal | 否 | 最大支付金额 | 500 |
| sortField | String | 否 | 排序字段 | totalAmount |
| sortOrder | String | 否 | 排序方向 | DESC |
| page | Integer | 否 | 页码 | 1 |
| size | Integer | 否 | 每页大小 | 10 |
**响应数据**
```json
{
"code": 200,
"message": "操作成功",
"data": {
"users": [...],
"total": 150,
"currentPage": 1,
"pageSize": 10,
"totalPages": 15
}
}
```
### 3. 便捷统计接口
#### 3.1 今日支付用户统计
**接口地址**`GET /admin/payment-users/statistics/today`
#### 3.2 本周支付用户统计
**接口地址**`GET /admin/payment-users/statistics/week`
#### 3.3 本月支付用户统计
**接口地址**`GET /admin/payment-users/statistics/month`
#### 3.4 复购用户列表
**接口地址**`GET /admin/payment-users/list/repeat-users`
**请求参数**
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|--------|------|------|------|------|
| startDate | String | 否 | 开始日期 | 2024-01-01 |
| endDate | String | 否 | 结束日期 | 2024-01-31 |
| page | Integer | 否 | 页码 | 1 |
| size | Integer | 否 | 每页大小 | 10 |
#### 3.5 高消费用户列表
**接口地址**`GET /admin/payment-users/list/top-spenders`
**请求参数**:同复购用户列表
## 数据字段说明
### 用户角色定义
- 1普通用户
- 2VIP用户
- 3SVIP用户
### 支付方式定义
- 1支付宝
- 2微信支付
### 订单状态定义
- 0待支付
- 1已完成已支付
- 2已取消
- 3支付失败
## 性能优化
1. **SQL优化**:使用了合适的索引和查询优化
2. **分页查询**:支持大数据量分页显示
3. **缓存机制**可根据需要添加Redis缓存
4. **异步处理**:适用于大数据量统计
## 权限控制
- 所有接口都需要管理员权限验证
- 使用 `AdminSecurityUtil.getCurrentAdminId()` 验证管理员身份
## 错误处理
```json
{
"code": 500,
"message": "查询支付用户统计数据失败: 具体错误信息",
"data": null
}
```
## 使用示例
### 查询本月所有支付用户统计
```
GET /admin/payment-users/statistics/month
```
### 查询指定时间段的复购用户
```
GET /admin/payment-users/list/repeat-users?startDate=2024-01-01&endDate=2024-01-31&page=1&size=10
```
### 查询高消费VIP用户支付金额>200元
```
GET /admin/payment-users/list?role=2&minAmount=200&sortField=totalAmount&sortOrder=DESC&page=1&size=20
```
## 注意事项
1. **时间范围**:如果不指定时间范围,将统计所有历史数据
2. **数据一致性**基于已支付订单status=1进行统计
3. **复购定义**:有多次支付记录的用户
4. **新增VIP/SVIP**根据购买的会员套餐target_role字段判断
5. **金额分布**:按用户总支付金额进行区间统计
## 扩展功能建议
1. **导出功能**支持Excel导出统计数据
2. **图表展示**:前端配合实现数据可视化
3. **定时报告**:定期生成支付用户分析报告
4. **对比分析**:不同时间段的数据对比
5. **预测分析**:基于历史数据的趋势预测