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> -