朋友圈优化

This commit is contained in:
wong
2026-01-19 14:29:01 +08:00
parent 28adf38f2f
commit 7f7a5357a0

View File

@@ -73,33 +73,13 @@ class GetWechatMomentsV1Controller extends BaseController
// 可选参数wechatId 不传则查看当前账号可访问的所有微信的朋友圈
$wechatId = $this->request->param('wechatId/s', '');
// 获取当前账号可访问的微信ID集合内部已做权限控制
$accessibleWechatIds = $this->getAccessibleWechatIds();
// 如果传了 wechatId则只允许查看自己有权限的该微信
$targetWechatIds = [];
if (!empty($wechatId)) {
if (!in_array($wechatId, $accessibleWechatIds, true)) {
return ResponseHelper::error('无权查看该微信的朋友圈', 403);
}
$targetWechatIds = [$wechatId];
} else {
// 未传 wechatId则查看所有有权限的微信的朋友圈
$targetWechatIds = $accessibleWechatIds;
}
if (empty($targetWechatIds)) {
return ResponseHelper::error('暂无可查看的微信账号', 404);
}
// 查询朋友圈:如果传了 userName 参数,则只查看指定用户的;否则查看所有
$query = Db::table('s2_wechat_moments')
->whereIn('userName', $targetWechatIds);
$query = Db::table('s2_wechat_moments');
// 如果传了 userName 参数,则只查看指定用户的朋友圈
$userName = $this->request->param('userName/s', '');
if (!empty($userName)) {
$query->where('userName', $userName);
if (!empty($wechatId)) {
$query->where('userName', $wechatId);
}
// 关键词搜索
@@ -160,24 +140,14 @@ class GetWechatMomentsV1Controller extends BaseController
return ResponseHelper::error('wechatId不能为空');
}
// 权限校验:只能查看当前账号可访问的微信
$accessibleWechatIds = $this->getAccessibleWechatIds();
if (!in_array($wechatId, $accessibleWechatIds, true)) {
return ResponseHelper::error('无权查看该微信的朋友圈', 403);
}
// 获取对应的微信账号ID
$accountId = Db::table('s2_wechat_account')
->where('wechatId', $wechatId)
->value('id');
if (empty($accountId)) {
return ResponseHelper::error('微信账号不存在或尚未同步', 404);
}
// 查询朋友圈(不限制 userName导出所有朋友圈
$query = Db::table('s2_wechat_moments')
->where('wechatAccountId', $accountId);
$query = Db::table('s2_wechat_moments');
if (!empty($wechatId)) {
$query->where('userName', $wechatId);
}
// 关键词搜索
if ($keyword = trim((string)$this->request->param('keyword', ''))) {
@@ -203,7 +173,7 @@ class GetWechatMomentsV1Controller extends BaseController
}
// 获取所有数据(不分页)
$moments = $query->order('createTime', 'desc')->select();
$moments = $query->order('createTime', 'desc')->group('snsId')->select();
if (empty($moments)) {
return ResponseHelper::error('暂无数据可导出');