From 4430d8524285a071879802f52b75c1b561722695 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Sun, 16 Mar 2025 21:51:19 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E8=BD=AC=E5=8F=91?= =?UTF-8?q?=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Api/DialogController.php | 37 +------------- app/Http/Controllers/Api/ReportController.php | 38 +------------- app/Models/WebSocketDialogMsg.php | 49 +++++++++++++++++++ 3 files changed, 51 insertions(+), 73 deletions(-) diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index b8ba3d6b1..fa9fecb82 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -1547,42 +1547,7 @@ class DialogController extends AbstractController $fileMsg .= "

{$leave_message}

"; } // - return AbstractModel::transaction(function() use ($user, $fileMsg, $userids, $dialogids) { - $msgs = []; - $already = []; - if ($dialogids) { - if (!is_array($dialogids)) { - $dialogids = [$dialogids]; - } - foreach ($dialogids as $dialogid) { - $res = WebSocketDialogMsg::sendMsg(null, $dialogid, 'text', ['text' => $fileMsg], $user->userid); - if (Base::isSuccess($res)) { - $msgs[] = $res['data']; - $already[] = $dialogid; - } - } - } - if ($userids) { - if (!is_array($userids)) { - $userids = [$userids]; - } - foreach ($userids as $userid) { - if (!User::whereUserid($userid)->exists()) { - continue; - } - $dialog = WebSocketDialog::checkUserDialog($user, $userid); - if ($dialog && !in_array($dialog->id, $already)) { - $res = WebSocketDialogMsg::sendMsg(null, $dialog->id, 'text', ['text' => $fileMsg], $user->userid); - if (Base::isSuccess($res)) { - $msgs[] = $res['data']; - } - } - } - } - return Base::retSuccess('发送成功', [ - 'msgs' => $msgs - ]); - }); + return WebSocketDialogMsg::sendMsgBatch($user, $userids, $dialogids, $fileMsg); } /** diff --git a/app/Http/Controllers/Api/ReportController.php b/app/Http/Controllers/Api/ReportController.php index 2ddd63711..4dc70132b 100755 --- a/app/Http/Controllers/Api/ReportController.php +++ b/app/Http/Controllers/Api/ReportController.php @@ -9,7 +9,6 @@ use App\Models\Report; use App\Models\ReportLink; use App\Models\ReportReceive; use App\Models\User; -use App\Models\WebSocketDialog; use App\Models\WebSocketDialogMsg; use App\Module\Base; use App\Module\Doo; @@ -592,42 +591,7 @@ class ReportController extends AbstractController } $msgText = implode("", $reportMsgs); // - return AbstractModel::transaction(function() use ($user, $msgText, $userids, $dialogids) { - $msgs = []; - $already = []; - if ($dialogids) { - if (!is_array($dialogids)) { - $dialogids = [$dialogids]; - } - foreach ($dialogids as $dialogid) { - $res = WebSocketDialogMsg::sendMsg(null, $dialogid, 'text', ['text' => $msgText], $user->userid); - if (Base::isSuccess($res)) { - $msgs[] = $res['data']; - $already[] = $dialogid; - } - } - } - if ($userids) { - if (!is_array($userids)) { - $userids = [$userids]; - } - foreach ($userids as $userid) { - if (!User::whereUserid($userid)->exists()) { - continue; - } - $dialog = WebSocketDialog::checkUserDialog($user, $userid); - if ($dialog && !in_array($dialog->id, $already)) { - $res = WebSocketDialogMsg::sendMsg(null, $dialog->id, 'text', ['text' => $msgText], $user->userid); - if (Base::isSuccess($res)) { - $msgs[] = $res['data']; - } - } - } - } - return Base::retSuccess('发送成功', [ - 'msgs' => $msgs - ]); - }); + return WebSocketDialogMsg::sendMsgBatch($user, $userids, $dialogids, $msgText); } /** diff --git a/app/Models/WebSocketDialogMsg.php b/app/Models/WebSocketDialogMsg.php index 89ab2d20c..faecbba16 100644 --- a/app/Models/WebSocketDialogMsg.php +++ b/app/Models/WebSocketDialogMsg.php @@ -1261,6 +1261,55 @@ class WebSocketDialogMsg extends AbstractModel } } + /** + * 批量发送消息 + * @param User $user 发送的会员 + * @param array $userids 接收的会员ID + * @param array $dialogids 接收的会话ID + * @param string $msgText 发送的消息 + * @return array + */ + public static function sendMsgBatch($user, $userids, $dialogids, $msgText) + { + return AbstractModel::transaction(function() use ($user, $userids, $dialogids, $msgText) { + $msgs = []; + $already = []; + if ($dialogids) { + if (!is_array($dialogids)) { + $dialogids = [$dialogids]; + } + foreach ($dialogids as $dialogid) { + $res = WebSocketDialogMsg::sendMsg(null, $dialogid, 'text', ['text' => $msgText], $user->userid); + if (Base::isSuccess($res)) { + $msgs[] = $res['data']; + $already[] = $dialogid; + } + } + } + if ($userids) { + if (!is_array($userids)) { + $userids = [$userids]; + } + foreach ($userids as $userid) { + if (!User::whereUserid($userid)->exists()) { + continue; + } + $dialog = WebSocketDialog::checkUserDialog($user, $userid); + if ($dialog && !in_array($dialog->id, $already)) { + $res = WebSocketDialogMsg::sendMsg(null, $dialog->id, 'text', ['text' => $msgText], $user->userid); + if (Base::isSuccess($res)) { + $msgs[] = $res['data']; + } + } + } + } + return Base::retSuccess('发送成功', [ + 'msgs' => $msgs + ]); + }); + } + + /** * 将被@的人加入群 * @param WebSocketDialog $dialog 对话