任务时间: 2025-06-25 22:35
任务类型: 功能重构
状态: ✅ 已完成
重写Transfer模块的手续费统计逻辑,将原来基于last_processed_order_id的增量统计改为基于时间范围的全量统计,解决重新统计时统计范围不一致的问题。
getLastProcessedOrderId()方法返回的是其他日期的最后处理订单ID,导致查询范围错误改为按当天时间范围(00:00:00 - 23:59:59)统计所有已完成订单,简化逻辑并确保数据准确性。
transfer_fee_daily_stats表的last_processed_order_id字段idx_last_processed_order_idv_transfer_fee_app_summary视图,移除对该字段的引用last_processed_order_id字段定义getLastProcessedOrderId()方法getAppSummary()方法,移除对该字段的查询processAppStatistics()方法,改为时间范围查询validateStatistics()方法,使用相同的时间范围逻辑whereBetween('completed_at', [$startTime, $endTime])// 原逻辑:基于订单ID增量统计
$lastProcessedOrderId = TransferFeeDailyStats::getLastProcessedOrderId($app->id);
$orders = TransferOrder::where('transfer_app_id', $app->id)
->where('status', TransferStatus::COMPLETED)
->where('id', '>', $lastProcessedOrderId)
->whereDate('completed_at', $date)
->get();
// 新逻辑:基于时间范围全量统计
$startTime = $date . ' 00:00:00';
$endTime = $date . ' 23:59:59';
$orders = TransferOrder::where('transfer_app_id', $app->id)
->where('status', TransferStatus::COMPLETED)
->whereBetween('completed_at', [$startTime, $endTime])
->get();
php artisan transfer:fee-statistics --date=2025-06-25
✅ 成功统计,显示结果正确
php artisan transfer:fee-statistics --date=2025-06-25 --rerun
✅ 重新统计功能正常,统计范围准确
php artisan transfer:fee-statistics --date=2025-06-25 --validate
✅ 验证功能正常,数据一致性检查通过
completed_at字段有索引,查询效率良好本次重构成功解决了原有统计逻辑的问题,提高了系统的可靠性和可维护性。新的时间范围统计方式更加直观和准确,为后续的功能扩展奠定了良好基础。