diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index 4d85b2014..a76822a3c 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -487,4 +487,46 @@ class DialogController extends AbstractController $dialogUser->save(); return Base::retSuccess("success", $dialogId); } + + + /** + * @api {get} api/dialog/msg/mark 13. 消息标记操作 + * + * @apiDescription 需要token身份 + * @apiVersion 1.0.0 + * @apiGroup dialog + * @apiName msg__mark + * + * @apiParam {Number} dialog_id 消息ID + * @apiParam {String} type 类型 + * - read + * - unread + * + * @apiSuccess {Number} ret 返回状态码(1正确、0错误) + * @apiSuccess {String} msg 返回信息(错误描述) + * @apiSuccess {Object} data 返回数据 + */ + public function msg__mark() + { + $user = User::auth(); + $dialogId = intval(Request::input('dialog_id')); + $type = Request::input('type'); + if ($type == 'read') { + WebSocketDialogMsgRead::whereUserid($user->userid) + ->whereReadAt(null) + ->whereDialogId($dialogId) + ->update( + [ + 'read_at' => Carbon::now() + ]); + } elseif ($type == 'unread') { + $msgRead = WebSocketDialogMsgRead::whereUserid(User::userid())->whereDialogId($dialogId)->orderByDesc('id')->first(); + if (!$msgRead) { + return Base::retError("对方未发任何消息,没法设置未读"); + } + $msgRead->read_at = null; + $msgRead->save(); + } + return Base::retSuccess("success"); + } } diff --git a/resources/assets/js/pages/manage/messenger.vue b/resources/assets/js/pages/manage/messenger.vue index 622442f6a..eafe452d0 100644 --- a/resources/assets/js/pages/manage/messenger.vue +++ b/resources/assets/js/pages/manage/messenger.vue @@ -85,6 +85,12 @@ {{ $L(topOperateItem.top_at ? '取消置顶' : '置顶该聊天') }} + + {{ $L('标记已读') }} + + + {{ $L('标记未读') }} + @@ -480,6 +486,22 @@ export default { $A.modalError(msg, 301); this.$Modal.remove(); }); + }, + + updateRead(type) { + this.$store.dispatch("call", { + url: 'dialog/msg/mark', + data: { + dialog_id: this.topOperateItem.id, + type: type + }, + }).then(() => { + this.$store.dispatch("getDialogs"); + this.$Modal.remove(); + }).catch(({msg}) => { + $A.modalError(msg, 301); + this.$Modal.remove(); + }); } } }