From 923016197aa6f4df4541ec5dfc266dc87d4b7873 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Mon, 14 Apr 2025 13:18:38 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E8=87=AA=E5=B7=B1?= =?UTF-8?q?=E7=9A=84=E5=AF=B9=E8=AF=9D=E4=B8=8D=E9=99=90=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=92=A4=E5=9B=9E=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Api/DialogController.php | 8 +++++--- app/Models/WebSocketDialog.php | 12 ++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index 2fe6eb57d..dde26c44d 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -1082,11 +1082,11 @@ class DialogController extends AbstractController $dialogIds = $dialog_ids ? explode(',', $dialog_ids) : [$dialog_id ?: 0]; foreach ($dialogIds as $dialog_id) { // - WebSocketDialog::checkDialog($dialog_id); + $dialog = WebSocketDialog::checkDialog($dialog_id); // if ($update_id > 0) { $action = $update_mark ? "update-$update_id" : "change-$update_id"; - if (!$user->bot) { + if (!$user->bot && !$dialog->isSelfDialog()) { Setting::validateMsgLimit('edit', $update_id); } } elseif ($reply_id > 0) { @@ -1811,7 +1811,9 @@ class DialogController extends AbstractController if (empty($msg)) { return Base::retError("消息不存在或已被删除"); } - if (!$user->bot) { + $dialog = WebSocketDialog::checkDialog($msg->dialog_id); + // + if (!$user->bot && !$dialog->isSelfDialog()) { Setting::validateMsgLimit('rev', $msg); } $msg->withdrawMsg(); diff --git a/app/Models/WebSocketDialog.php b/app/Models/WebSocketDialog.php index 0648f2141..2d0ff27f9 100644 --- a/app/Models/WebSocketDialog.php +++ b/app/Models/WebSocketDialog.php @@ -666,6 +666,18 @@ class WebSocketDialog extends AbstractModel Task::deliver($task); } + /** + * 检查是否是单人对话 + * @return bool + */ + public function isSelfDialog() + { + if ($this->type !== 'user') { + return false; + } + return WebSocketDialogUser::whereDialogId($this->id)->where('userid', '>', 0)->count() === 1; + } + /** * 获取对话(同时检验对话身份) * @param $dialog_id