diff --git a/app/Http/Controllers/FriendController.php b/app/Http/Controllers/FriendController.php index 74dbd6a..ca66e91 100644 --- a/app/Http/Controllers/FriendController.php +++ b/app/Http/Controllers/FriendController.php @@ -168,31 +168,68 @@ class FriendController extends Controller } /** - * 获取当前用户的好友列表(我添加的 + 对方也添加我的 = 双向好友标记)。 + * 获取当前用户的完整好友数据,供好友面板使用。 + * + * 返回两个列表: + * - friends:我已添加的好友(含互相状态、添加时间) + * - pending:对方已加我但我还未加对方的(含对方添加我的时间) */ public function index(): JsonResponse { $me = Auth::user(); - // 我添加的所有人 - $myAdded = FriendRequest::where('who', $me->username)->pluck('towho'); + // ── 我添加的好友及添加时间 ── + $myRows = FriendRequest::where('who', $me->username) + ->get(['towho', 'sub_time']) + ->keyBy('towho'); - // 也把我加了的 - $addedMe = FriendRequest::where('towho', $me->username)->pluck('who'); + // ── 把我加了的人(用于互相判断 + pending 列表)── + $addedMeRows = FriendRequest::where('towho', $me->username) + ->get(['who', 'sub_time']) + ->keyBy('who'); - $friends = User::whereIn('username', $myAdded) + $myAddedNames = $myRows->keys(); + $addedMeNames = $addedMeRows->keys(); + + // 我添加的好友详情 + $friends = User::whereIn('username', $myAddedNames) ->get(['username', 'usersf', 'user_level', 'sex']) - ->map(function ($u) use ($addedMe) { + ->map(function ($u) use ($myRows, $addedMeNames) { + $row = $myRows->get($u->username); + return [ 'username' => $u->username, 'headface' => $u->headface, 'user_level' => $u->user_level, 'sex' => $u->sex, - 'mutual' => $addedMe->contains($u->username), // 是否互相添加 + 'mutual' => $addedMeNames->contains($u->username), // 是否互相添加 + 'sub_time' => $row?->sub_time?->format('Y-m-d H:i') ?? '', ]; - }); + }) + ->values(); - return response()->json(['status' => 'success', 'friends' => $friends]); + // 对方加了我但我还未加的(pending) + $pendingNames = $addedMeNames->diff($myAddedNames); + $pending = User::whereIn('username', $pendingNames) + ->get(['username', 'usersf', 'user_level', 'sex']) + ->map(function ($u) use ($addedMeRows) { + $row = $addedMeRows->get($u->username); + + return [ + 'username' => $u->username, + 'headface' => $u->headface, + 'user_level' => $u->user_level, + 'sex' => $u->sex, + 'added_at' => $row?->sub_time?->format('Y-m-d H:i') ?? '', + ]; + }) + ->values(); + + return response()->json([ + 'status' => 'success', + 'friends' => $friends, + 'pending' => $pending, + ]); } /** diff --git a/resources/views/chat/partials/toolbar.blade.php b/resources/views/chat/partials/toolbar.blade.php index 830ffbe..18c71a4 100644 --- a/resources/views/chat/partials/toolbar.blade.php +++ b/resources/views/chat/partials/toolbar.blade.php @@ -15,6 +15,7 @@ {{-- ═══════════ 竖向工具条按钮 ═══════════ --}}
+{{-- ═══════════ 工具条相关 JS 函数 ═══════════ --}} + + {{-- ═══════════ 工具条相关 JS 函数 ═══════════ --}}