diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index 877159765..52d0f00f4 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -650,6 +650,35 @@ class DialogController extends AbstractController ]); } + /** + * @api {get} api/dialog/msg/forward 13. 转发消息给 + * + * @apiDescription 需要token身份 + * @apiVersion 1.0.0 + * @apiGroup dialog + * @apiName msg__forward + * + * @apiParam {Number} msg_id 消息ID + * @apiParam {Array} userids 转发给的成员 + * + * @apiSuccess {Number} ret 返回状态码(1正确、0错误) + * @apiSuccess {String} msg 返回信息(错误描述) + * @apiSuccess {Object} data 返回数据 + */ + public function msg__forward() + { + $user = User::auth(); + // + $msg_id = intval(Request::input("msg_id")); + $userids = Request::input('userids'); + // + $msg = WebSocketDialogMsg::whereId($msg_id)->whereUserid($user->userid)->first(); + if (empty($msg)) { + return Base::retError("消息不存在或已被删除"); + } + return $msg->forwardMsg($userids, $user->userid); + } + /** * @api {get} api/dialog/group/add 16. 新增群组 * diff --git a/app/Models/WebSocketDialogMsg.php b/app/Models/WebSocketDialogMsg.php index ea2923f1b..2430aa652 100644 --- a/app/Models/WebSocketDialogMsg.php +++ b/app/Models/WebSocketDialogMsg.php @@ -161,6 +161,34 @@ class WebSocketDialogMsg extends AbstractModel return true; } + /** + * 转发消息 + * @param $userids + * @param int $sender 发送的会员ID + * @return mixed + */ + public function forwardMsg($userids, $sender) + { + return AbstractModel::transaction(function() use ($sender, $userids) { + $msgs = []; + foreach ($userids as $userid) { + if (!User::whereUserid($userid)->exists()) { + continue; + } + $dialog = WebSocketDialog::checkUserDialog($sender, $userid); + if ($dialog) { + $res = self::sendMsg($dialog->id, $this->type, $this->getOriginal('msg'), $sender); + if (Base::isSuccess($res)) { + $msgs[] = $res['data']; + } + } + } + return Base::retSuccess('转发成功', [ + 'msgs' => $msgs + ]); + }); + } + /** * 删除消息 * @return void diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue index c2f7c7104..d2cbca3c4 100644 --- a/resources/assets/js/pages/manage/components/DialogWrapper.vue +++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue @@ -185,6 +185,22 @@ + + + + + + + + + {{$L('取消')}} + {{$L('转发')}} + + + { + this.forwardShow = false; + this.$store.dispatch("saveDialogMsg", data.msgs); + this.$store.dispatch("updateDialogLastMsg", data.msgs); + $A.messageSuccess(msg); + }).catch(({msg}) => { + $A.modalError(msg); + }).finally(_ => { + this.forwardLoad = false; + }); + } + }, + scrollInfo() { if (!this.isReady) { return { @@ -769,7 +816,7 @@ export default { onOperate(name) { switch (name) { case "forward": - // todo 转发功能 + this.onForward('open') break; case "withdraw":