From 5ec56b4a9eac48c93bb40ba6c25b34942ac54ed5 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Thu, 23 Jun 2022 18:53:57 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BB=85(=E7=BE=A4=E8=81=8A)=E4=B8=94(?= =?UTF-8?q?=E6=98=AF=E7=BE=A4=E4=B8=BB=E6=88=96=E6=B2=A1=E6=9C=89=E7=BE=A4?= =?UTF-8?q?=E4=B8=BB)=E6=89=8D=E5=8F=AF=E4=BB=A5@=E6=88=90=E5=91=98?= =?UTF-8?q?=E4=BB=A5=E5=A4=96=E7=9A=84=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Tasks/WebSocketDialogMsgTask.php | 11 +++++++---- .../js/pages/manage/components/ChatInput/index.vue | 5 ++++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/Tasks/WebSocketDialogMsgTask.php b/app/Tasks/WebSocketDialogMsgTask.php index 58c1040a4..c597b6982 100644 --- a/app/Tasks/WebSocketDialogMsgTask.php +++ b/app/Tasks/WebSocketDialogMsgTask.php @@ -61,10 +61,13 @@ class WebSocketDialogMsgTask extends AbstractTask // 将会话以外的成员加入会话内 $userids = $dialog->dialogUser->pluck('userid')->toArray(); $diffids = array_values(array_diff($mentions, $userids)); - if ($diffids && $dialog->type === 'group') { - $dialog->joinGroup($diffids, $msg->userid); - $dialog->pushMsg("groupJoin", null, $diffids); - $userids = array_values(array_unique(array_merge($mentions, $userids))); + if ($diffids) { + // 仅(群聊)且(是群主或没有群主)才可以@成员以外的人 + if ($dialog->type === 'group' && in_array($dialog->owner_id, [0, $msg->userid])) { + $dialog->joinGroup($diffids, $msg->userid); + $dialog->pushMsg("groupJoin", null, $diffids); + $userids = array_values(array_unique(array_merge($mentions, $userids))); + } } // 推送目标①:会话成员/群成员 diff --git a/resources/assets/js/pages/manage/components/ChatInput/index.vue b/resources/assets/js/pages/manage/components/ChatInput/index.vue index 772638086..4590dd011 100755 --- a/resources/assets/js/pages/manage/components/ChatInput/index.vue +++ b/resources/assets/js/pages/manage/components/ChatInput/index.vue @@ -1095,7 +1095,10 @@ export default { getMoreUser(key, existIds) { return new Promise(resolve => { - if (this.taskId > 0 || this.dialogData.type === 'group') { + const {owner_id, type} = this.dialogData + const permission = type === 'group' && [0, this.userId].includes(owner_id) + if (this.taskId > 0 || permission) { + console.log(this.dialogData); this.__getMoreTimer && clearTimeout(this.__getMoreTimer) this.__getMoreTimer = setTimeout(_ => { this.$store.dispatch("call", {