任务时间: 2025年06月10日 16:40
任务状态: ✅ 已完成
提交哈希: fda9514c
修复房屋排行榜功能中的多个问题,包括数据不返回、缺少缓存机制、没有限制排行榜数量等问题。
6847e41ed1057houseRank.list 为空,只有分页信息和用户排名pageSize 参数为0,导致查询限制为0,无法获取数据$page->getPerPage() 在请求中没有 perPage 字段时返回0HouseLogic.php 中有 dd() 语句阻止程序继续执行文件: app/Module/AppGame/Handler/House/RankHandler.php
// 修复前
$pageSize = $page ? $page->getPerPage() : 20;
// 修复后
$pageSize = $page && $page->getPerPage() > 0 ? $page->getPerPage() : 20;
说明: 当 getPerPage() 返回0或空值时,使用默认值20
文件: app/Module/Farm/Logics/HouseLogic.php
$maxRankLimit = 100 限制只显示前100名// 缓存键
$cacheKey = $this->cachePrefix . 'house_rank:top100';
// 缓存前100名数据10分钟
Cache::put($cacheKey, $cachedRankList, 600);
// 限制总数不超过100
return min($actualCount, 100);
dd($rankItems,$rankList); 语句php artisan debug:reproduce-error 6847e41ed1057
{
"houseRank": {
"page": {
"currentPage": "1",
"lastPage": "1",
"total": "4"
},
"userRank": "1",
"reason": "1"
}
}
{
"houseRank": {
"page": {
"currentPage": "1",
"perPage": "20",
"lastPage": "1",
"total": "4"
},
"userRank": "1",
"reason": "1",
"list": [
{
"rank": "1",
"level": "12",
"userId": "10006",
"reason": "1",
"nickname": "10006"
},
{
"rank": "2",
"level": "1",
"userId": "10000",
"reason": "1",
"nickname": "10000"
},
{
"rank": "3",
"level": "1",
"userId": "10001",
"reason": "1",
"nickname": "10001"
},
{
"rank": "4",
"level": "1",
"userId": "10002",
"reason": "1",
"nickname": "10002"
}
]
}
}
app/Module/AppGame/Handler/House/RankHandler.php - 请求处理器app/Module/Farm/Logics/HouseLogic.php - 排行榜业务逻辑app/Module/Farm/Services/HouseService.php - 服务层接口app/Module/AppGame/Proto/HouseRankDto.php - Protobuf转换app/Module/Farm/Dtos/HouseRankDto.php - 数据传输对象✅ 已完成 - 房屋排行榜功能已修复,支持前100名限制、10分钟缓存和正确的数据返回