From 04c59041e0a135e835530baad95e2402d7b02a37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9F=A6=E8=8D=A3=E8=B6=85?= <302645122@qq.com> Date: Thu, 17 Feb 2022 09:17:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E3=80=90=E6=B6=88=E6=81=AF=E3=80=91?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=A2=9E=E5=8A=A0=E7=82=B9=E5=87=BB=E5=8F=B3?= =?UTF-8?q?=E9=94=AE=E7=BD=AE=E9=A1=B6=E8=AF=A5=E8=81=8A=E5=A4=A9=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Api/DialogController.php | 36 +++++++++- app/Models/WebSocketDialogUser.php | 1 + ...145641_web_socket_dialog_users_add_top.php | 34 +++++++++ public/js/drawio/images/manifest.json | 2 +- .../assets/js/pages/manage/messenger.vue | 72 ++++++++++++++++++- .../assets/sass/pages/page-messenger.scss | 34 +++++++++ 6 files changed, 175 insertions(+), 4 deletions(-) create mode 100644 database/migrations/2022_02_16_145641_web_socket_dialog_users_add_top.php diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index 4166fbe0..3ec12877 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -8,6 +8,7 @@ use App\Models\User; use App\Models\WebSocketDialog; use App\Models\WebSocketDialogMsg; use App\Models\WebSocketDialogMsgRead; +use App\Models\WebSocketDialogUser; use App\Module\Base; use Carbon\Carbon; use Request; @@ -39,9 +40,10 @@ class DialogController extends AbstractController { $user = User::auth(); // - $list = WebSocketDialog::select(['web_socket_dialogs.*']) + $list = WebSocketDialog::select(['web_socket_dialogs.*','u.top']) ->join('web_socket_dialog_users as u', 'web_socket_dialogs.id', '=', 'u.dialog_id') ->where('u.userid', $user->userid) + ->orderByDesc('u.top') ->orderByDesc('web_socket_dialogs.last_at') ->paginate(Base::getPaginate(200, 100)); $list->transform(function (WebSocketDialog $item) use ($user) { @@ -475,4 +477,36 @@ class DialogController extends AbstractController $msg->deleteMsg(); return Base::retSuccess("success"); } + + /** + * @api {get} api/dialog/top 12. 会话置顶 + * + * @apiDescription 消息撤回限制24小时内,需要token身份 + * @apiVersion 1.0.0 + * @apiGroup dialog + * @apiName top + * + * @apiParam {Number} dialog_id 会话ID + * + * @apiSuccess {Number} ret 返回状态码(1正确、0错误) + * @apiSuccess {String} msg 返回信息(错误描述) + * @apiSuccess {Object} data 返回数据 + */ + public function top() + { + $user = User::auth(); + $dialogId = intval(Request::input('dialog_id')); + $dialogUser = WebSocketDialogUser::whereUserid($user->userid)->whereDialogId($dialogId)->first(); + if (!$dialogUser) { + return Base::retError("会话不存在"); + } + WebSocketDialogUser::whereUserid($user->userid) + ->update([ + 'top' => 0 + ]); + $dialogUser->top = 1; + $dialogUser->save(); + return Base::retSuccess("success", $dialogId); + } + } diff --git a/app/Models/WebSocketDialogUser.php b/app/Models/WebSocketDialogUser.php index b06d770d..9a0265fb 100644 --- a/app/Models/WebSocketDialogUser.php +++ b/app/Models/WebSocketDialogUser.php @@ -8,6 +8,7 @@ namespace App\Models; * @property int $id * @property int|null $dialog_id 对话ID * @property int|null $userid 会员ID + * @property int|null $top 是否置顶:0否,1是 * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialogUser newModelQuery() diff --git a/database/migrations/2022_02_16_145641_web_socket_dialog_users_add_top.php b/database/migrations/2022_02_16_145641_web_socket_dialog_users_add_top.php new file mode 100644 index 00000000..dab630e4 --- /dev/null +++ b/database/migrations/2022_02_16_145641_web_socket_dialog_users_add_top.php @@ -0,0 +1,34 @@ +tinyInteger('top')->nullable()->default(0)->after('userid')->comment('是否置顶:0否,1是'); + } + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('web_socket_dialog_users', function (Blueprint $table) { + $table->dropColumn("top"); + }); + } +} diff --git a/public/js/drawio/images/manifest.json b/public/js/drawio/images/manifest.json index 5182c6f5..b18bb247 100644 --- a/public/js/drawio/images/manifest.json +++ b/public/js/drawio/images/manifest.json @@ -1,5 +1,5 @@ { - "name": "diagrams.net", + "name": "", "short_name": "Diagrams", "description": "diagrams.net is a completely free diagram editor", "icons": [ diff --git a/resources/assets/js/pages/manage/messenger.vue b/resources/assets/js/pages/manage/messenger.vue index 0980848e..66bf985b 100644 --- a/resources/assets/js/pages/manage/messenger.vue +++ b/resources/assets/js/pages/manage/messenger.vue @@ -24,13 +24,14 @@ class="messenger-list overlay-y" @on-scroll="listScroll" static> -