279 lines
6.2 KiB
Markdown
279 lines
6.2 KiB
Markdown
|
|
# 后台提现审核 - 快速测试指南
|
|||
|
|
|
|||
|
|
## 🚀 快速启动
|
|||
|
|
|
|||
|
|
### 1. 重启服务
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd E:\Gongsi\Mycontent
|
|||
|
|
python devlop.py restart mycontent
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 访问页面
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
http://localhost:3006/admin/withdrawals
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📊 界面功能验证
|
|||
|
|
|
|||
|
|
### 顶部统计卡片
|
|||
|
|
|
|||
|
|
应该显示:
|
|||
|
|
- [ ] 总申请数量
|
|||
|
|
- [ ] 待处理数量和金额
|
|||
|
|
- [ ] 已完成数量和金额
|
|||
|
|
- [ ] 已拒绝数量
|
|||
|
|
|
|||
|
|
### 筛选按钮
|
|||
|
|
|
|||
|
|
- [ ] 全部
|
|||
|
|
- [ ] 待处理(橙色高亮)
|
|||
|
|
- [ ] 已完成
|
|||
|
|
- [ ] 已拒绝
|
|||
|
|
|
|||
|
|
### 提现记录表格
|
|||
|
|
|
|||
|
|
| 列名 | 内容验证 |
|
|||
|
|
|------|---------|
|
|||
|
|
| 申请时间 | 显示为本地时间格式 |
|
|||
|
|
| 用户 | 头像 + 昵称 + 电话/推荐码 |
|
|||
|
|
| 提现金额 | 橙色加粗显示 |
|
|||
|
|
| **用户佣金信息** | **新增列** |
|
|||
|
|
| 状态 | 显示对应颜色的徽章 |
|
|||
|
|
| 处理时间 | 已处理显示时间,未处理显示"-" |
|
|||
|
|
| 操作 | 待处理显示批准/拒绝按钮 |
|
|||
|
|
|
|||
|
|
## 🔍 关键功能:用户佣金信息
|
|||
|
|
|
|||
|
|
### 正常显示(绿色)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
累计佣金: ¥100.00 [青色]
|
|||
|
|
已提现: ¥30.00 [灰色]
|
|||
|
|
待审核: ¥50.00 [橙色]
|
|||
|
|
────────────────────────
|
|||
|
|
审核后余额: ¥20.00 [绿色] ✅
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**验证要点**:
|
|||
|
|
- [ ] 所有金额都正确显示两位小数
|
|||
|
|
- [ ] 累计佣金为青色(#38bdac)
|
|||
|
|
- [ ] 审核后余额为绿色(正数)
|
|||
|
|
- [ ] 有分隔线
|
|||
|
|
|
|||
|
|
### 风险警告(红色)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
累计佣金: ¥100.00 [青色]
|
|||
|
|
已提现: ¥30.00 [灰色]
|
|||
|
|
待审核: ¥80.00 [橙色]
|
|||
|
|
────────────────────────
|
|||
|
|
审核后余额: -¥10.00 [红色] ❌
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**验证要点**:
|
|||
|
|
- [ ] 审核后余额为红色(负数)
|
|||
|
|
- [ ] 点击"批准"时弹出风险警告
|
|||
|
|
- [ ] 警告文字包含负数金额
|
|||
|
|
|
|||
|
|
## 🧪 测试用例
|
|||
|
|
|
|||
|
|
### 测试1:正常用户提现
|
|||
|
|
|
|||
|
|
**准备数据**:
|
|||
|
|
```sql
|
|||
|
|
-- 用户A:累计佣金 ¥90,已提现 ¥0,待审核 ¥0
|
|||
|
|
-- 申请提现 ¥50
|
|||
|
|
|
|||
|
|
-- 插入订单(产生佣金)
|
|||
|
|
INSERT INTO orders (id, user_id, amount, referrer_id, status, pay_time)
|
|||
|
|
VALUES ('test_order_1', 'buyer_1', 100, 'YOUR_USER_ID', 'paid', NOW());
|
|||
|
|
|
|||
|
|
-- 申请提现
|
|||
|
|
INSERT INTO withdrawals (id, user_id, amount, status, wechat_openid, created_at)
|
|||
|
|
VALUES ('W_TEST_1', 'YOUR_USER_ID', 50, 'pending', NULL, NOW());
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**预期结果**:
|
|||
|
|
- 累计佣金: ¥90.00(100 × 90%)
|
|||
|
|
- 已提现: ¥0.00
|
|||
|
|
- 待审核: ¥50.00
|
|||
|
|
- 审核后余额: ¥40.00 ✅ 绿色
|
|||
|
|
|
|||
|
|
**操作**:点击"批准"
|
|||
|
|
- 弹出确认框(无风险警告)
|
|||
|
|
- 确认后状态改为 success
|
|||
|
|
|
|||
|
|
### 测试2:超额提现(风险)
|
|||
|
|
|
|||
|
|
**准备数据**:
|
|||
|
|
```sql
|
|||
|
|
-- 同一用户再申请 ¥60(总待审核 ¥110 > 可提现 ¥90)
|
|||
|
|
INSERT INTO withdrawals (id, user_id, amount, status, wechat_openid, created_at)
|
|||
|
|
VALUES ('W_TEST_2', 'YOUR_USER_ID', 60, 'pending', NULL, NOW());
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**预期结果**:
|
|||
|
|
- W_TEST_1: 审核后余额 ¥40.00 ✅ 绿色
|
|||
|
|
- W_TEST_2: 审核后余额 **-¥20.00** ❌ 红色
|
|||
|
|
|
|||
|
|
**操作**:点击"批准" W_TEST_2
|
|||
|
|
- ⚠️ 弹出风险警告
|
|||
|
|
- 显示负数余额
|
|||
|
|
- 需要二次确认
|
|||
|
|
|
|||
|
|
### 测试3:拒绝提现
|
|||
|
|
|
|||
|
|
**操作**:点击"拒绝" W_TEST_2
|
|||
|
|
- 弹出输入框:"请输入拒绝原因"
|
|||
|
|
- 输入:"余额不足"
|
|||
|
|
- 确认
|
|||
|
|
|
|||
|
|
**预期结果**:
|
|||
|
|
- 提现记录状态改为 failed
|
|||
|
|
- error_message 保存为"余额不足"
|
|||
|
|
- 刷新页面后,W_TEST_1 的"待审核"金额恢复为 ¥50
|
|||
|
|
|
|||
|
|
## 🎯 快速验证步骤
|
|||
|
|
|
|||
|
|
### Step 1: 查看界面
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 启动服务
|
|||
|
|
python devlop.py restart mycontent
|
|||
|
|
|
|||
|
|
# 2. 浏览器访问
|
|||
|
|
http://localhost:3006/admin/withdrawals
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Step 2: 检查数据显示
|
|||
|
|
|
|||
|
|
- [ ] 表格列是否完整(7列)
|
|||
|
|
- [ ] 用户佣金信息列是否显示
|
|||
|
|
- [ ] 头像是否正确显示
|
|||
|
|
- [ ] 金额是否有两位小数
|
|||
|
|
|
|||
|
|
### Step 3: 测试筛选
|
|||
|
|
|
|||
|
|
- [ ] 点击"待处理",只显示 pending 记录
|
|||
|
|
- [ ] 点击"已完成",只显示 success 记录
|
|||
|
|
- [ ] 点击"全部",显示所有记录
|
|||
|
|
|
|||
|
|
### Step 4: 测试审核
|
|||
|
|
|
|||
|
|
- [ ] 找一条审核后余额为绿色的记录
|
|||
|
|
- [ ] 点击"批准"
|
|||
|
|
- [ ] 确认是否正常弹框
|
|||
|
|
- [ ] 确认后检查状态是否更新
|
|||
|
|
|
|||
|
|
### Step 5: 验证计算
|
|||
|
|
|
|||
|
|
使用验证脚本:
|
|||
|
|
```sql
|
|||
|
|
-- 在 phpMyAdmin 中执行
|
|||
|
|
-- 文件: scripts/verify-withdrawal-data.sql
|
|||
|
|
|
|||
|
|
SET @user_id = 'YOUR_USER_ID';
|
|||
|
|
-- 然后执行脚本中的所有查询
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
对比:
|
|||
|
|
- SQL 计算的可提现金额
|
|||
|
|
- 页面显示的审核后余额
|
|||
|
|
- 应该一致 ✅
|
|||
|
|
|
|||
|
|
## 🐛 常见问题排查
|
|||
|
|
|
|||
|
|
### 问题1:用户佣金信息显示"暂无数据"
|
|||
|
|
|
|||
|
|
**原因**:后端查询失败或数据为空
|
|||
|
|
|
|||
|
|
**排查**:
|
|||
|
|
```bash
|
|||
|
|
# 查看后端日志
|
|||
|
|
pm2 logs mycontent --lines 50
|
|||
|
|
|
|||
|
|
# 查找错误信息
|
|||
|
|
[Withdrawals] 查询失败: ...
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题2:审核后余额计算错误
|
|||
|
|
|
|||
|
|
**原因**:数据库数据不一致
|
|||
|
|
|
|||
|
|
**排查**:
|
|||
|
|
```sql
|
|||
|
|
-- 检查用户的 withdrawn_earnings 是否准确
|
|||
|
|
SELECT
|
|||
|
|
u.withdrawn_earnings as DB中的已提现,
|
|||
|
|
COALESCE(SUM(w.amount), 0) as 实际已完成提现
|
|||
|
|
FROM users u
|
|||
|
|
LEFT JOIN withdrawals w ON w.user_id = u.id AND w.status = 'success'
|
|||
|
|
WHERE u.id = 'YOUR_USER_ID'
|
|||
|
|
GROUP BY u.id, u.withdrawn_earnings;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题3:批准后状态未更新
|
|||
|
|
|
|||
|
|
**原因**:审核接口可能失败
|
|||
|
|
|
|||
|
|
**排查**:
|
|||
|
|
```bash
|
|||
|
|
# 查看浏览器 Network 面板
|
|||
|
|
# 检查 PUT /api/admin/withdrawals 的响应
|
|||
|
|
|
|||
|
|
# 查看后端日志
|
|||
|
|
pm2 logs mycontent
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题4:头像显示不出来
|
|||
|
|
|
|||
|
|
**原因**:头像URL路径问题
|
|||
|
|
|
|||
|
|
**排查**:
|
|||
|
|
```sql
|
|||
|
|
-- 检查用户头像字段
|
|||
|
|
SELECT id, nickname, avatar FROM users WHERE avatar IS NOT NULL LIMIT 5;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📝 验证清单
|
|||
|
|
|
|||
|
|
### 数据准确性
|
|||
|
|
- [ ] 累计佣金 = 订单总金额 × 90%
|
|||
|
|
- [ ] 已提现 = users.withdrawn_earnings
|
|||
|
|
- [ ] 待审核 = SUM(withdrawals.amount WHERE status='pending')
|
|||
|
|
- [ ] 审核后余额 = 累计 - 已提现 - 待审核
|
|||
|
|
|
|||
|
|
### 界面显示
|
|||
|
|
- [ ] 用户头像/首字母
|
|||
|
|
- [ ] 用户昵称
|
|||
|
|
- [ ] 用户电话/推荐码
|
|||
|
|
- [ ] 提现金额(橙色)
|
|||
|
|
- [ ] 佣金信息(完整4项)
|
|||
|
|
- [ ] 状态徽章
|
|||
|
|
- [ ] 批准/拒绝按钮
|
|||
|
|
|
|||
|
|
### 功能测试
|
|||
|
|
- [ ] 筛选功能
|
|||
|
|
- [ ] 刷新功能
|
|||
|
|
- [ ] 批准操作
|
|||
|
|
- [ ] 拒绝操作
|
|||
|
|
- [ ] 风险警告
|
|||
|
|
|
|||
|
|
### 安全验证
|
|||
|
|
- [ ] 超额提现显示红色
|
|||
|
|
- [ ] 批准时弹出风险警告
|
|||
|
|
- [ ] 需要二次确认
|
|||
|
|
- [ ] 批准后数据正确更新
|
|||
|
|
|
|||
|
|
## 🎉 完成标志
|
|||
|
|
|
|||
|
|
当所有验证项都打勾 ✅,说明提现审核功能已完全对接并正常工作!
|
|||
|
|
|
|||
|
|
**关键指标**:
|
|||
|
|
- 数据显示完整准确
|
|||
|
|
- 计算逻辑正确
|
|||
|
|
- 风险警告有效
|
|||
|
|
- 审核操作成功
|