1
This commit is contained in:
@@ -11,9 +11,9 @@ use app\api\controller\MessageController;
|
|||||||
class MessageChatroomListJob
|
class MessageChatroomListJob
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* 最大同步页数
|
* 最大同步页数(0表示不限制,同步所有页面)
|
||||||
*/
|
*/
|
||||||
const MAX_SYNC_PAGES = 1;
|
const MAX_SYNC_PAGES = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 队列任务处理
|
* 队列任务处理
|
||||||
@@ -96,17 +96,46 @@ class MessageChatroomListJob
|
|||||||
$data = [];
|
$data = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断是否有下一页,且未超过最大同步页数
|
// 获取 results 数组(实际的数据列表)
|
||||||
if (!empty($data) && is_array($data) && count($data) > 0) {
|
$results = isset($data['results']) && is_array($data['results']) ? $data['results'] : [];
|
||||||
$nextPageIndex = $pageIndex + 1;
|
$resultsCount = count($results);
|
||||||
// 检查是否超过最大同步页数
|
|
||||||
if ($nextPageIndex < self::MAX_SYNC_PAGES) {
|
Log::info("获取到 {$resultsCount} 条群聊记录,页码:{$pageIndex},页大小:{$pageSize}");
|
||||||
// 有下一页且未超过最大页数,将下一页任务添加到队列
|
|
||||||
$this->addNextPageToQueue($nextPageIndex, $pageSize);
|
// 判断是否有下一页
|
||||||
Log::info('添加下一页任务到队列,页码:' . $nextPageIndex);
|
// 1. 如果返回的数据量等于页大小,说明可能还有下一页
|
||||||
} else {
|
// 2. 或者检查是否有 total 字段,通过计算判断是否有下一页
|
||||||
Log::info('已达到最大同步页数(' . self::MAX_SYNC_PAGES . '),停止添加下一页任务');
|
$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;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user