perf: 优化会话搜索

This commit is contained in:
kuaifan
2024-11-06 23:22:27 +08:00
parent 02654c8327
commit e149e276d5
2 changed files with 73 additions and 21 deletions

View File

@@ -137,13 +137,26 @@ class DialogController extends AbstractController
})->orderBy('userid')
->take(20 - count($list))
->get();
$users->transform(function (User $item) {
$users->transform(function (User $item) use ($user) {
$id = 'u:' . $item->userid;
$lastAt = null;
$lastMsg = null;
$dialog = WebSocketDialog::getUserDialog($user->userid, $item->userid, now()->addDay());
if ($dialog) {
$id = $dialog->id;
$row = WebSocketDialogMsg::whereDialogId($dialog->id)->orderByDesc('id')->first();
if ($row) {
$lastAt = Carbon::parse($row->created_at)->toDateTimeString();
$lastMsg = WebSocketDialog::lastMsgFormat($row->toArray());
}
}
return [
'id' => 'u:' . $item->userid,
'id' => $id,
'type' => 'user',
'name' => $item->nickname,
'dialog_user' => $item,
'last_msg' => null,
'last_at' => $lastAt,
'last_msg' => $lastMsg,
];
});
$list = array_merge($list, $users->toArray());