diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index ec69a4094..f832f477c 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -934,7 +934,8 @@ class DialogController extends AbstractController * @apiName msg__forward * * @apiParam {Number} msg_id 消息ID - * @apiParam {Array} userids 转发给的成员 + * @apiParam {Array} dialogids 转发给的对话ID + * @apiParam {Array} userids 转发给的成员ID * * @apiSuccess {Number} ret 返回状态码(1正确、0错误) * @apiSuccess {String} msg 返回信息(错误描述) @@ -945,10 +946,11 @@ class DialogController extends AbstractController $user = User::auth(); // $msg_id = intval(Request::input("msg_id")); + $dialogids = Request::input('dialogids'); $userids = Request::input('userids'); // - if (empty($userids)) { - return Base::retError("请选择转发成员"); + if (empty($dialogids) && empty($userids)) { + return Base::retError("请选择转发对话或成员"); } // $msg = WebSocketDialogMsg::whereId($msg_id)->first(); @@ -957,7 +959,7 @@ class DialogController extends AbstractController } WebSocketDialog::checkDialog($msg->dialog_id); // - return $msg->forwardMsg($userids, $user->userid); + return $msg->forwardMsg($dialogids, $userids, $user->userid); } /** diff --git a/app/Models/WebSocketDialogMsg.php b/app/Models/WebSocketDialogMsg.php index 99ebabf63..127d81152 100644 --- a/app/Models/WebSocketDialogMsg.php +++ b/app/Models/WebSocketDialogMsg.php @@ -365,23 +365,42 @@ class WebSocketDialogMsg extends AbstractModel /** * 转发消息 - * @param $userids + * @param array|int $dialogids + * @param array|int $userids * @param int $sender 发送的会员ID * @return mixed */ - public function forwardMsg($userids, $sender) + public function forwardMsg($dialogids, $userids, $sender) { - return AbstractModel::transaction(function() use ($sender, $userids) { + return AbstractModel::transaction(function() use ($dialogids, $sender, $userids) { $msgs = []; - foreach ($userids as $userid) { - if (!User::whereUserid($userid)->exists()) { - continue; + $already = []; + if ($dialogids) { + if (!is_array($dialogids)) { + $dialogids = [$dialogids]; } - $dialog = WebSocketDialog::checkUserDialog($sender, $userid); - if ($dialog) { - $res = self::sendMsg(null, $dialog->id, $this->type, $this->getOriginal('msg'), $sender); + foreach ($dialogids as $dialogid) { + $res = self::sendMsg(null, $dialogid, $this->type, $this->getOriginal('msg'), $sender); 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($sender, $userid); + if ($dialog && !in_array($dialog->id, $already)) { + $res = self::sendMsg(null, $dialog->id, $this->type, $this->getOriginal('msg'), $sender); + if (Base::isSuccess($res)) { + $msgs[] = $res['data']; + } } } } diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue index 56d5811bc..0e72babfb 100644 --- a/resources/assets/js/pages/manage/components/DialogWrapper.vue +++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue @@ -271,8 +271,38 @@ :title="$L('转发')" :mask-closable="false">