diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index cc6ac6b1a..ecd96fc83 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -48,7 +48,7 @@ class DialogController extends AbstractController ->orderByDesc('web_socket_dialogs.last_at') ->paginate(Base::getPaginate(200, 100)); $list->transform(function (WebSocketDialog $item) use ($user) { - return WebSocketDialog::formatData($item, $user->userid); + return $item->formatData($user->userid); }); // return Base::retSuccess('success', $list); @@ -80,7 +80,7 @@ class DialogController extends AbstractController ->where('u.userid', $user->userid) ->first(); if ($item) { - $item = WebSocketDialog::formatData($item, $user->userid); + $item = $item->formatData($user->userid); } // return Base::retSuccess('success', $item); @@ -113,7 +113,7 @@ class DialogController extends AbstractController if (empty($dialog)) { return Base::retError('打开会话失败'); } - $data = WebSocketDialog::formatData(WebSocketDialog::find($dialog->id), $user->userid); + $data = WebSocketDialog::find($dialog->id)?->formatData($user->userid); if (empty($data)) { return Base::retError('打开会话错误'); } @@ -164,7 +164,7 @@ class DialogController extends AbstractController // $data = $list->toArray(); if ($list->currentPage() === 1) { - $data['dialog'] = WebSocketDialog::formatData($dialog, $user->userid); + $data['dialog'] = $dialog->formatData($user->userid); } return Base::retSuccess('success', $data); } @@ -597,7 +597,7 @@ class DialogController extends AbstractController if (empty($dialog)) { return Base::retError('创建群组失败'); } - $dialog->pushMsg("groupAdd", WebSocketDialog::formatData($dialog, $user->userid), $userids); + $dialog->pushMsg("groupAdd", $dialog->formatData($user->userid), $userids); return Base::retSuccess('创建成功', $dialog); } @@ -706,7 +706,7 @@ class DialogController extends AbstractController } // $dialog->joinGroup($userids); - $dialog->pushMsg("groupJoin", WebSocketDialog::formatData($dialog, $user->userid), $userids); + $dialog->pushMsg("groupJoin", $dialog->formatData($user->userid), $userids); return Base::retSuccess('添加成功'); } diff --git a/app/Models/WebSocketDialog.php b/app/Models/WebSocketDialog.php index 704dde6d8..4e34c969d 100644 --- a/app/Models/WebSocketDialog.php +++ b/app/Models/WebSocketDialog.php @@ -183,45 +183,41 @@ class WebSocketDialog extends AbstractModel /** * 格式化对话 - * @param WebSocketDialog $dialog * @param int $userid 会员ID - * @return self|null + * @return $this */ - public static function formatData(WebSocketDialog $dialog, $userid) + public function formatData($userid) { - if (empty($dialog)) { - return null; - } // 最后消息 - $last_msg = WebSocketDialogMsg::whereDialogId($dialog->id)->orderByDesc('id')->first(); - $dialog->last_msg = $last_msg; + $last_msg = WebSocketDialogMsg::whereDialogId($this->id)->orderByDesc('id')->first(); + $this->last_msg = $last_msg; // 未读信息 - $dialog->unread = WebSocketDialogMsgRead::whereDialogId($dialog->id)->whereUserid($userid)->whereReadAt(null)->count(); - $dialog->mark_unread = $dialog->mark_unread ?? WebSocketDialogUser::whereDialogId($dialog->id)->whereUserid($userid)->value('mark_unread'); + $this->unread = WebSocketDialogMsgRead::whereDialogId($this->id)->whereUserid($userid)->whereReadAt(null)->count(); + $this->mark_unread = $this->mark_unread ?? WebSocketDialogUser::whereDialogId($this->id)->whereUserid($userid)->value('mark_unread'); // 对话人数 - $builder = WebSocketDialogUser::whereDialogId($dialog->id); - $dialog->people = $builder->count(); + $builder = WebSocketDialogUser::whereDialogId($this->id); + $this->people = $builder->count(); // 对方信息 - $dialog->dialog_user = null; - $dialog->group_info = null; - $dialog->top_at = $dialog->top_at ?? WebSocketDialogUser::whereDialogId($dialog->id)->whereUserid($userid)->value('top_at'); - switch ($dialog->type) { + $this->dialog_user = null; + $this->group_info = null; + $this->top_at = $this->top_at ?? WebSocketDialogUser::whereDialogId($this->id)->whereUserid($userid)->value('top_at'); + switch ($this->type) { case "user": $dialog_user = $builder->where('userid', '!=', $userid)->first(); - $dialog->name = User::userid2nickname($dialog_user->userid); - $dialog->dialog_user = $dialog_user; + $this->name = User::userid2nickname($dialog_user->userid); + $this->dialog_user = $dialog_user; break; case "group": - if ($dialog->group_type === 'project') { - $dialog->group_info = Project::withTrashed()->select(['id', 'name', 'archived_at', 'deleted_at'])->whereDialogId($dialog->id)->first()?->cancelAppend()->cancelHidden(); - $dialog->name = $dialog->group_info ? $dialog->group_info->name : ''; - } elseif ($dialog->group_type === 'task') { - $dialog->group_info = ProjectTask::withTrashed()->select(['id', 'name', 'complete_at', 'archived_at', 'deleted_at'])->whereDialogId($dialog->id)->first()?->cancelAppend()->cancelHidden(); - $dialog->name = $dialog->group_info ? $dialog->group_info->name : ''; + if ($this->group_type === 'project') { + $this->group_info = Project::withTrashed()->select(['id', 'name', 'archived_at', 'deleted_at'])->whereDialogId($this->id)->first()?->cancelAppend()->cancelHidden(); + $this->name = $this->group_info ? $this->group_info->name : ''; + } elseif ($this->group_type === 'task') { + $this->group_info = ProjectTask::withTrashed()->select(['id', 'name', 'complete_at', 'archived_at', 'deleted_at'])->whereDialogId($this->id)->first()?->cancelAppend()->cancelHidden(); + $this->name = $this->group_info ? $this->group_info->name : ''; } break; } - return $dialog; + return $this; } /**