diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index db5b9033..54301d33 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -72,6 +72,33 @@ class DialogController extends AbstractController return Base::retSuccess('success', $item); } + /** + * 打开会话 + * + * @apiParam {Number} userid 对话会员ID + */ + public function open__user() + { + $user = User::authE(); + if (Base::isError($user)) { + return $user; + } else { + $user = User::IDE($user['data']); + } + // + $userid = intval(Request::input('userid')); + // + $dialog = WebSocketDialog::checkUserDialog($user->userid, $userid); + if (empty($dialog)) { + return Base::retError('打开会话失败'); + } + $data = WebSocketDialog::formatData(WebSocketDialog::find($dialog->id), $user->userid); + if (empty($data)) { + return Base::retError('打开会话错误'); + } + return Base::retSuccess('success', $data); + } + /** * 消息列表 * @@ -162,11 +189,7 @@ class DialogController extends AbstractController 'text' => $text ]; // - if ($dialog->type == 'group') { - return WebSocketDialogMsg::addGroupMsg($dialog_id, 'text', $msg, $user->userid, $extra_int, $extra_str); - } else { - return WebSocketDialogMsg::addUserMsg($dialog_id, 'text', $msg, $user->userid, $extra_int, $extra_str); - } + return WebSocketDialogMsg::sendMsg($dialog_id, 'text', $msg, $user->userid, $extra_int, $extra_str); } /** @@ -260,11 +283,7 @@ class DialogController extends AbstractController $msg = $fileData; $msg['size'] *= 1024; // - if ($dialog->type == 'group') { - return WebSocketDialogMsg::addGroupMsg($dialog_id, 'file', $msg, $user->userid, $extra_int, $extra_str); - } else { - return WebSocketDialogMsg::addUserMsg($dialog_id, 'file', $msg, $user->userid, $extra_int, $extra_str); - } + return WebSocketDialogMsg::sendMsg($dialog_id, 'file', $msg, $user->userid, $extra_int, $extra_str); } } diff --git a/app/Models/WebSocketDialog.php b/app/Models/WebSocketDialog.php index 2f671d6f..00e29fa4 100644 --- a/app/Models/WebSocketDialog.php +++ b/app/Models/WebSocketDialog.php @@ -35,10 +35,13 @@ class WebSocketDialog extends AbstractModel * 格式化对话 * @param WebSocketDialog $dialog * @param int $userid 会员ID - * @return WebSocketDialog + * @return self|null */ public static function formatData(WebSocketDialog $dialog, $userid) { + if (empty($dialog)) { + return null; + } // 最后消息 $last_msg = WebSocketDialogMsg::whereDialogId($dialog->id)->orderByDesc('id')->first(); $dialog->last_msg = $last_msg; @@ -128,12 +131,12 @@ class WebSocketDialog extends AbstractModel } /** - * 获取聊天室对话 + * 获取对话 * @param int $userid 会员ID - * @param int $dialog_id 会话ID(即 聊天室ID) + * @param int $dialog_id 会话ID * @return self */ - public static function checkGroupDialog($userid, $dialog_id) + public static function checkDialog($userid, $dialog_id) { if ($userid == 0) { return self::whereId($dialog_id)->first(); @@ -141,7 +144,6 @@ class WebSocketDialog extends AbstractModel return self::select(['web_socket_dialogs.*']) ->join('web_socket_dialog_users', 'web_socket_dialog_users.dialog_id', '=', 'web_socket_dialogs.id') ->where('web_socket_dialogs.id', $dialog_id) - ->where('web_socket_dialogs.type', 'group') ->where('web_socket_dialog_users.userid', $userid) ->first(); } diff --git a/app/Models/WebSocketDialogMsg.php b/app/Models/WebSocketDialogMsg.php index 02f0a547..70bc9cfb 100644 --- a/app/Models/WebSocketDialogMsg.php +++ b/app/Models/WebSocketDialogMsg.php @@ -129,7 +129,7 @@ class WebSocketDialogMsg extends AbstractModel } /** - * 给会员添加并发送消息 + * 发送消息 * @param int $dialog_id 会话ID(即 聊天室ID) * @param string $type 消息类型 * @param array $msg 发送的消息 @@ -138,7 +138,7 @@ class WebSocketDialogMsg extends AbstractModel * @param string $extra_str * @return array */ - public static function addGroupMsg($dialog_id, $type, $msg, $sender = 0, $extra_int = 0, $extra_str = '') + public static function sendMsg($dialog_id, $type, $msg, $sender = 0, $extra_int = 0, $extra_str = '') { $dialogMsg = self::createInstance([ 'userid' => $sender ?: User::token2userid(), @@ -149,9 +149,9 @@ class WebSocketDialogMsg extends AbstractModel 'extra_str' => $extra_str, ]); return AbstractModel::transaction(function () use ($dialog_id, $msg, $dialogMsg) { - $dialog = WebSocketDialog::checkGroupDialog($dialogMsg->userid, $dialog_id); + $dialog = WebSocketDialog::checkDialog($dialogMsg->userid, $dialog_id); if (empty($dialog)) { - return Base::retError('不是聊天室成员'); + return Base::retError('获取会话失败'); } $dialog->last_at = Carbon::now(); $dialog->save(); @@ -167,43 +167,4 @@ class WebSocketDialogMsg extends AbstractModel }); } - - /** - * 给会员添加并发送消息 - * @param int $userid 接收的会员ID - * @param string $type 消息类型 - * @param array $msg 发送的消息 - * @param int $sender 发送的会员ID(默认自己,0为系统) - * @param int $extra_int - * @param string $extra_str - * @return array - */ - public static function addUserMsg($userid, $type, $msg, $sender = 0, $extra_int = 0, $extra_str = '') - { - $dialogMsg = self::createInstance([ - 'userid' => $sender ?: User::token2userid(), - 'type' => $type, - 'msg' => $msg, - 'read' => 0, - 'extra_int' => $extra_int, - 'extra_str' => $extra_str, - ]); - return AbstractModel::transaction(function () use ($userid, $msg, $dialogMsg) { - $dialog = WebSocketDialog::checkUserDialog($dialogMsg->userid, $userid); - if (empty($dialog)) { - return Base::retError('创建对话失败'); - } - $dialog->last_at = Carbon::now(); - $dialog->save(); - $dialogMsg->send = 1; - $dialogMsg->dialog_id = $dialog->id; - $dialogMsg->save(); - // - $task = new WebSocketDialogMsgTask($userid, $dialogMsg->toArray()); - Task::deliver($task); - // - return Base::retSuccess('发送成功', $dialogMsg); - }); - } - } diff --git a/resources/assets/js/components/UserAvatar.vue b/resources/assets/js/components/UserAvatar.vue index 0db64bcc..237348d6 100755 --- a/resources/assets/js/components/UserAvatar.vue +++ b/resources/assets/js/components/UserAvatar.vue @@ -4,9 +4,12 @@ :delay="600" :disabled="tooltipDisabled" :transfer="transfer"> -
{{$L('昵称')}}: {{user.nickname}}
{{$L('职位/职称')}}: {{user.profession || '-'}}
+