时间: 2025年07月02日 22:07 任务: 修复 House-Rank 排行榜第二页数据显示问题
用户反馈房屋排行榜第二页数据有问题:
但是列表数据为空,没有显示第二页的数据
{
"runUnid": "6865391969844",
"runMs": "21",
"code": "OK",
"callpath": "House-Rank",
"lastData": {},
"houseRank": {
"page": {
"currentPage": "2",
"perPage": "10",
"lastPage": "2",
"total": "15"
},
"userRank": "13",
"reason": "1"
}
}
通过代码分析发现了多个问题:
在 app/Module/Farm/Logics/HouseLogic.php 的 getHouseRankListCache 方法中:
arrayHouseRankDto 对象array_slice 操作失败getHouseRankListCache 方法不应该处理分页逻辑getHouseRankList 方法中处理getTotalHouseRankCount() 统计的是 FarmUser::count()user_infos 表// 修改前
protected function getHouseRankListCache(int $userId, int $page = 1, int $pageSize = 20): array
// 修改后
protected function getHouseRankListCache(): array
getHouseRankList 方法中// 修改前
$rank = $offset + $index + 1;
// 修改后
$userRank = $index + 1; // 用户在整个排行榜中的排名
// 修改前
'total' => min($maxRankLimit, $this->getTotalHouseRankCount())
// 修改后
'total' => count($cachedRankList) // 直接使用缓存数据的行数
创建测试命令验证修复效果:
docker exec kku_laravel php artisan test:house-rank
测试结果:
app/Module/Farm/Logics/HouseLogic.php
getHouseRankListCache 方法getHouseRankList 方法中的分页逻辑getTotalHouseRankCount 方法修复房屋排行榜第二页数据问题
- 修复getHouseRankListCache方法返回类型错误
- 移除分页参数,缓存方法只负责获取数据
- 修复用户排名计算错误
- 使用缓存数据行数作为总数,确保分页信息准确
- 删除不再使用的getTotalHouseRankCount方法
问题已完全修复:
现在房屋排行榜的分页功能完全正常,第二页数据能够正确显示。