This commit is contained in:
wong
2026-01-19 10:51:18 +08:00
parent 28f4479d3c
commit 3a0621aab8

View File

@@ -11,9 +11,9 @@ use app\api\controller\MessageController;
class MessageChatroomListJob
{
/**
* 最大同步页数
* 最大同步页数0表示不限制同步所有页面
*/
const MAX_SYNC_PAGES = 1;
const MAX_SYNC_PAGES = 0;
/**
* 队列任务处理
@@ -96,17 +96,46 @@ class MessageChatroomListJob
$data = [];
}
// 判断是否有下一页,且未超过最大同步页数
if (!empty($data) && is_array($data) && count($data) > 0) {
$nextPageIndex = $pageIndex + 1;
// 检查是否超过最大同步页数
if ($nextPageIndex < self::MAX_SYNC_PAGES) {
// 有下一页且未超过最大页数,将下一页任务添加到队列
$this->addNextPageToQueue($nextPageIndex, $pageSize);
Log::info('添加下一页任务到队列,页码:' . $nextPageIndex);
} else {
Log::info('已达到最大同步页数(' . self::MAX_SYNC_PAGES . '),停止添加下一页任务');
// 获取 results 数组(实际的数据列表)
$results = isset($data['results']) && is_array($data['results']) ? $data['results'] : [];
$resultsCount = count($results);
Log::info("获取到 {$resultsCount} 条群聊记录,页码:{$pageIndex},页大小:{$pageSize}");
// 判断是否有下一页
// 1. 如果返回的数据量等于页大小,说明可能还有下一页
// 2. 或者检查是否有 total 字段,通过计算判断是否有下一页
$hasNextPage = false;
if ($resultsCount > 0) {
// 方法1: 如果返回的数据量等于页大小,可能还有下一页
if ($resultsCount >= $pageSize) {
$hasNextPage = true;
Log::info("返回数据量({$resultsCount})等于或大于页大小({$pageSize}),可能存在下一页");
}
// 方法2: 如果有 total 字段,通过计算判断
if (isset($data['total']) && is_numeric($data['total'])) {
$total = intval($data['total']);
$currentPageEnd = ($pageIndex + 1) * $pageSize;
$hasNextPage = ($currentPageEnd < $total);
Log::info("根据 total{$total})计算,当前页结束位置:{$currentPageEnd},是否有下一页:" . ($hasNextPage ? '是' : '否'));
}
}
// 如果有下一页,且未超过最大同步页数,添加下一页任务
if ($hasNextPage) {
$nextPageIndex = $pageIndex + 1;
// 检查是否超过最大同步页数0表示不限制
if (self::MAX_SYNC_PAGES == 0 || $nextPageIndex < self::MAX_SYNC_PAGES) {
$this->addNextPageToQueue($nextPageIndex, $pageSize);
Log::info("添加下一页任务到队列,页码:{$nextPageIndex}");
} else {
Log::info("已达到最大同步页数(" . self::MAX_SYNC_PAGES . "),停止添加下一页任务");
}
} else {
Log::info("没有更多页面需要同步,页码:{$pageIndex},返回数据量:{$resultsCount}");
}
return true;