feat(media): 微信消息媒体 OSS 归档与下载地址回写

- 新增 MediaArchiveJob、MediaOssArchiveService、WechatMediaArchiveService 与回填命令
- Message/DataProcessing 等支持归档调度与持久化下载 URL
- WebSocket 控制器整理;朋友圈与文档/定时任务说明更新

Made-with: Cursor
This commit is contained in:
wong
2026-04-13 17:23:02 +08:00
parent 3bf1b2aee9
commit b1bfcec35b
12 changed files with 970 additions and 134 deletions

View File

@@ -201,7 +201,7 @@ class GetWechatMomentsV1Controller extends BaseController
// 格式化数据
$rows = [];
foreach ($moments as $moment) {
$resUrls = $this->decodeJson($moment['resUrls'] ?? null);
$resUrls = $this->preferredMediaUrls($moment);
$imageUrls = is_array($resUrls) ? $resUrls : [];
// 格式化日期和时间
@@ -300,7 +300,8 @@ class GetWechatMomentsV1Controller extends BaseController
'content' => $row['content'] ?? '',
'commentList' => $this->decodeJson($row['commentList'] ?? null),
'likeList' => $this->decodeJson($row['likeList'] ?? null),
'resUrls' => $this->decodeJson($row['resUrls'] ?? null),
'resUrls' => $this->preferredMediaUrls($row),
'ossUrls' => $this->decodeJson($row['ossUrls'] ?? null),
'createTime' => $formatTime($row['createTime'] ?? null),
'momentEntity' => [
'lat' => $row['lat'] ?? 0,
@@ -312,6 +313,16 @@ class GetWechatMomentsV1Controller extends BaseController
];
}
protected function preferredMediaUrls(array $row): array
{
$ossUrls = $this->decodeJson($row['ossUrls'] ?? null);
if (!empty($ossUrls)) {
return $ossUrls;
}
return $this->decodeJson($row['resUrls'] ?? null);
}
/**
* JSON字段解析
*