diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index 14287de11..586f91673 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -718,6 +718,7 @@ class DialogController extends AbstractController } // $dialog_id = intval(Request::input('dialog_id')); + $dialog_ids = trim(Request::input('dialog_ids')); $update_id = intval(Request::input('update_id')); $update_mark = !($user->bot && in_array(strtolower(trim(Request::input('update_mark'))), ['no', 'false', '0'])); $reply_id = intval(Request::input('reply_id')); @@ -725,59 +726,65 @@ class DialogController extends AbstractController $text_type = strtolower(trim(Request::input('text_type'))); $silence = in_array(strtolower(trim(Request::input('silence'))), ['yes', 'true', '1']); $markdown = in_array($text_type, ['md', 'markdown']); - // - WebSocketDialog::checkDialog($dialog_id); - // - if ($update_id > 0) { - $action = $update_mark ? "update-$update_id" : "change-$update_id"; - } elseif ($reply_id > 0) { - $action = "reply-$reply_id"; - } else { - $action = ""; - } - // - if (!$markdown) { - $text = WebSocketDialogMsg::formatMsg($text, $dialog_id); - } - $strlen = mb_strlen($text); - $noimglen = mb_strlen(preg_replace("/]*?>/i", "", $text)); - if ($strlen < 1) { - return Base::retError('消息内容不能为空'); - } - if ($noimglen > 200000) { - return Base::retError('消息内容最大不能超过200000字'); - } - if ($noimglen > 5000) { - // 内容过长转成文件发送 - $path = "uploads/chat/" . date("Ym") . "/" . $dialog_id . "/"; - Base::makeDir(public_path($path)); - $path = $path . md5($text) . ".htm"; - $file = public_path($path); - file_put_contents($file, $text); - $size = filesize(public_path($path)); - if (empty($size)) { - return Base::retError('消息发送保存失败'); + // + $result = []; + $dialogIds = $dialog_ids ? explode(',', $dialog_ids) : [$dialog_id]; + foreach($dialogIds as $dialog_id) { + // + WebSocketDialog::checkDialog($dialog_id); + // + if ($update_id > 0) { + $action = $update_mark ? "update-$update_id" : "change-$update_id"; + } elseif ($reply_id > 0) { + $action = "reply-$reply_id"; + } else { + $action = ""; } - $ext = $markdown ? 'md' : 'htm'; - $fileData = [ - 'name' => "LongText-{$strlen}.{$ext}", - 'size' => $size, - 'file' => $file, - 'path' => $path, - 'url' => Base::fillUrl($path), - 'thumb' => '', - 'width' => -1, - 'height' => -1, - 'ext' => $ext, - ]; - return WebSocketDialogMsg::sendMsg($action, $dialog_id, 'file', $fileData, $user->userid, false, false, $silence); + // + if (!$markdown) { + $text = WebSocketDialogMsg::formatMsg($text, $dialog_id); + } + $strlen = mb_strlen($text); + $noimglen = mb_strlen(preg_replace("/]*?>/i", "", $text)); + if ($strlen < 1) { + return Base::retError('消息内容不能为空'); + } + if ($noimglen > 200000) { + return Base::retError('消息内容最大不能超过200000字'); + } + if ($noimglen > 5000) { + // 内容过长转成文件发送 + $path = "uploads/chat/" . date("Ym") . "/" . $dialog_id . "/"; + Base::makeDir(public_path($path)); + $path = $path . md5($text) . ".htm"; + $file = public_path($path); + file_put_contents($file, $text); + $size = filesize(public_path($path)); + if (empty($size)) { + return Base::retError('消息发送保存失败'); + } + $ext = $markdown ? 'md' : 'htm'; + $fileData = [ + 'name' => "LongText-{$strlen}.{$ext}", + 'size' => $size, + 'file' => $file, + 'path' => $path, + 'url' => Base::fillUrl($path), + 'thumb' => '', + 'width' => -1, + 'height' => -1, + 'ext' => $ext, + ]; + $result = WebSocketDialogMsg::sendMsg($action, $dialog_id, 'file', $fileData, $user->userid, false, false, $silence); + } + // + $msgData = ['text' => $text]; + if ($markdown) { + $msgData['type'] = 'md'; + } + $result = WebSocketDialogMsg::sendMsg($action, $dialog_id, 'text', $msgData, $user->userid, false, false, $silence); } - // - $msgData = ['text' => $text]; - if ($markdown) { - $msgData['type'] = 'md'; - } - return WebSocketDialogMsg::sendMsg($action, $dialog_id, 'text', $msgData, $user->userid, false, false, $silence); + return $result; } /**