no message

This commit is contained in:
kuaifan 2022-04-14 23:59:16 +08:00
parent 428d2eb795
commit 8df3611e7d
2 changed files with 27 additions and 31 deletions

View File

@ -48,7 +48,7 @@ class DialogController extends AbstractController
->orderByDesc('web_socket_dialogs.last_at') ->orderByDesc('web_socket_dialogs.last_at')
->paginate(Base::getPaginate(200, 100)); ->paginate(Base::getPaginate(200, 100));
$list->transform(function (WebSocketDialog $item) use ($user) { $list->transform(function (WebSocketDialog $item) use ($user) {
return WebSocketDialog::formatData($item, $user->userid); return $item->formatData($user->userid);
}); });
// //
return Base::retSuccess('success', $list); return Base::retSuccess('success', $list);
@ -80,7 +80,7 @@ class DialogController extends AbstractController
->where('u.userid', $user->userid) ->where('u.userid', $user->userid)
->first(); ->first();
if ($item) { if ($item) {
$item = WebSocketDialog::formatData($item, $user->userid); $item = $item->formatData($user->userid);
} }
// //
return Base::retSuccess('success', $item); return Base::retSuccess('success', $item);
@ -113,7 +113,7 @@ class DialogController extends AbstractController
if (empty($dialog)) { if (empty($dialog)) {
return Base::retError('打开会话失败'); return Base::retError('打开会话失败');
} }
$data = WebSocketDialog::formatData(WebSocketDialog::find($dialog->id), $user->userid); $data = WebSocketDialog::find($dialog->id)?->formatData($user->userid);
if (empty($data)) { if (empty($data)) {
return Base::retError('打开会话错误'); return Base::retError('打开会话错误');
} }
@ -164,7 +164,7 @@ class DialogController extends AbstractController
// //
$data = $list->toArray(); $data = $list->toArray();
if ($list->currentPage() === 1) { if ($list->currentPage() === 1) {
$data['dialog'] = WebSocketDialog::formatData($dialog, $user->userid); $data['dialog'] = $dialog->formatData($user->userid);
} }
return Base::retSuccess('success', $data); return Base::retSuccess('success', $data);
} }
@ -597,7 +597,7 @@ class DialogController extends AbstractController
if (empty($dialog)) { if (empty($dialog)) {
return Base::retError('创建群组失败'); return Base::retError('创建群组失败');
} }
$dialog->pushMsg("groupAdd", WebSocketDialog::formatData($dialog, $user->userid), $userids); $dialog->pushMsg("groupAdd", $dialog->formatData($user->userid), $userids);
return Base::retSuccess('创建成功', $dialog); return Base::retSuccess('创建成功', $dialog);
} }
@ -706,7 +706,7 @@ class DialogController extends AbstractController
} }
// //
$dialog->joinGroup($userids); $dialog->joinGroup($userids);
$dialog->pushMsg("groupJoin", WebSocketDialog::formatData($dialog, $user->userid), $userids); $dialog->pushMsg("groupJoin", $dialog->formatData($user->userid), $userids);
return Base::retSuccess('添加成功'); return Base::retSuccess('添加成功');
} }

View File

@ -183,45 +183,41 @@ class WebSocketDialog extends AbstractModel
/** /**
* 格式化对话 * 格式化对话
* @param WebSocketDialog $dialog
* @param int $userid 会员ID * @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(); $last_msg = WebSocketDialogMsg::whereDialogId($this->id)->orderByDesc('id')->first();
$dialog->last_msg = $last_msg; $this->last_msg = $last_msg;
// 未读信息 // 未读信息
$dialog->unread = WebSocketDialogMsgRead::whereDialogId($dialog->id)->whereUserid($userid)->whereReadAt(null)->count(); $this->unread = WebSocketDialogMsgRead::whereDialogId($this->id)->whereUserid($userid)->whereReadAt(null)->count();
$dialog->mark_unread = $dialog->mark_unread ?? WebSocketDialogUser::whereDialogId($dialog->id)->whereUserid($userid)->value('mark_unread'); $this->mark_unread = $this->mark_unread ?? WebSocketDialogUser::whereDialogId($this->id)->whereUserid($userid)->value('mark_unread');
// 对话人数 // 对话人数
$builder = WebSocketDialogUser::whereDialogId($dialog->id); $builder = WebSocketDialogUser::whereDialogId($this->id);
$dialog->people = $builder->count(); $this->people = $builder->count();
// 对方信息 // 对方信息
$dialog->dialog_user = null; $this->dialog_user = null;
$dialog->group_info = null; $this->group_info = null;
$dialog->top_at = $dialog->top_at ?? WebSocketDialogUser::whereDialogId($dialog->id)->whereUserid($userid)->value('top_at'); $this->top_at = $this->top_at ?? WebSocketDialogUser::whereDialogId($this->id)->whereUserid($userid)->value('top_at');
switch ($dialog->type) { switch ($this->type) {
case "user": case "user":
$dialog_user = $builder->where('userid', '!=', $userid)->first(); $dialog_user = $builder->where('userid', '!=', $userid)->first();
$dialog->name = User::userid2nickname($dialog_user->userid); $this->name = User::userid2nickname($dialog_user->userid);
$dialog->dialog_user = $dialog_user; $this->dialog_user = $dialog_user;
break; break;
case "group": case "group":
if ($dialog->group_type === 'project') { if ($this->group_type === 'project') {
$dialog->group_info = Project::withTrashed()->select(['id', 'name', 'archived_at', 'deleted_at'])->whereDialogId($dialog->id)->first()?->cancelAppend()->cancelHidden(); $this->group_info = Project::withTrashed()->select(['id', 'name', 'archived_at', 'deleted_at'])->whereDialogId($this->id)->first()?->cancelAppend()->cancelHidden();
$dialog->name = $dialog->group_info ? $dialog->group_info->name : ''; $this->name = $this->group_info ? $this->group_info->name : '';
} elseif ($dialog->group_type === 'task') { } elseif ($this->group_type === 'task') {
$dialog->group_info = ProjectTask::withTrashed()->select(['id', 'name', 'complete_at', 'archived_at', 'deleted_at'])->whereDialogId($dialog->id)->first()?->cancelAppend()->cancelHidden(); $this->group_info = ProjectTask::withTrashed()->select(['id', 'name', 'complete_at', 'archived_at', 'deleted_at'])->whereDialogId($this->id)->first()?->cancelAppend()->cancelHidden();
$dialog->name = $dialog->group_info ? $dialog->group_info->name : ''; $this->name = $this->group_info ? $this->group_info->name : '';
} }
break; break;
} }
return $dialog; return $this;
} }
/** /**