3.1 KiB
3.1 KiB
收益数据不一致问题诊断 - 2026-01-31
问题描述
收益查看页面显示的数据不一致:
- 顶部"总收益":¥222
- 下方"本月总收益":¥1774
问题原因
数据来源
1. 顶部"总收益"(¥222)
// 调用接口
GET /api/provider/earnings/stats?type=overview
// 使用字段
totalEarnings = res.data.totalEarnings
2. 下方"本月总收益"(¥1774)
// 调用接口
GET /api/provider/earnings/stats?type=month
// 使用字段
currentStats.earnings = res.data.earnings || res.data.total
根本原因
后端接口返回的数据不一致:
type=overview返回的totalEarnings= 222(可能是累计总收益)type=month返回的earnings= 1774(本月收益)
逻辑混乱:
- 顶部显示"总收益",但实际显示的可能是某个特定时期的收益
- 下方显示"本月总收益",数值反而更大
可能的情况
情况1:后端数据错误
type=overview返回的不是真正的总收益- 可能只统计了部分数据
情况2:前端理解错误
- 顶部应该显示"可提取收益"而不是"总收益"
- 下方的"本月总收益"是正确的
情况3:数据库统计问题
- 总收益统计SQL有问题
- 本月收益统计正常
验证步骤
1. 检查后端接口返回
# 查看overview接口返回
GET /api/provider/earnings/stats?type=overview
# 查看month接口返回
GET /api/provider/earnings/stats?type=month
2. 检查数据库数据
-- 查看服务商的所有订单收益
SELECT
SUM(price) as total_earnings,
COUNT(*) as order_count
FROM work_order
WHERE provider_id = ?
AND status IN (3, 4); -- 已完成的订单
-- 查看本月订单收益
SELECT
SUM(price) as month_earnings,
COUNT(*) as order_count
FROM work_order
WHERE provider_id = ?
AND status IN (3, 4)
AND DATE_FORMAT(service_date, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m');
3. 检查后端Controller
文件:peidu/backend/src/main/java/com/peidu/controller/ProviderController.java
查找 /api/provider/earnings/stats 接口的实现
修复方案
方案1:修改前端显示逻辑(推荐)
将顶部的"总收益"改为"可提取收益",更符合实际业务逻辑
<view class="total-earnings">
<text class="label">可提取收益(元)</text>
<text class="amount">{{ withdrawableEarnings }}</text>
</view>
方案2:修复后端接口
确保 type=overview 返回真正的累计总收益
方案3:统一数据源
让顶部和下方使用相同的数据源,避免混淆
建议
短期方案:
- 确认顶部显示的是什么数据(总收益 vs 可提取收益)
- 修改文案,让用户理解数据含义
长期方案:
- 规范后端接口返回的数据结构
- 统一收益统计逻辑
- 添加数据验证,确保一致性
相关文件
- 前端页面:
peidu/uniapp/src/provider-package/pages/provider/earnings.vue - 后端控制器:
peidu/backend/src/main/java/com/peidu/controller/ProviderController.java
诊断时间:2026-01-31