From 3ae3acf70573194f9d34f159a21d50ebc3e6635f Mon Sep 17 00:00:00 2001 From: weifashi <605403358@qq.com> Date: Thu, 10 Aug 2023 22:14:47 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A1.=E4=BC=9A=E8=AF=9D=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=8F=B3=E9=94=AE=E6=B7=BB=E5=8A=A0=E6=A0=87=E8=AE=B0?= =?UTF-8?q?=E9=A2=9C=E8=89=B2=E7=9A=84=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Api/DialogController.php | 47 +++++++++++++++++-- app/Models/WebSocketDialog.php | 2 +- ...3619_add_web_socket_dialog_users_color.php | 36 ++++++++++++++ .../assets/js/pages/manage/dashboard.vue | 11 +++-- .../assets/js/pages/manage/messenger.vue | 24 +++++++++- 5 files changed, 110 insertions(+), 10 deletions(-) create mode 100644 database/migrations/2023_08_10_093619_add_web_socket_dialog_users_color.php diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index 015613234..e2785e7e3 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -80,7 +80,7 @@ class DialogController extends AbstractController return Base::retError('请输入搜索关键词'); } // 搜索会话 - $dialogs = WebSocketDialog::select(['web_socket_dialogs.*', 'u.top_at', 'u.mark_unread', 'u.silence', 'u.updated_at as user_at']) + $dialogs = WebSocketDialog::select(['web_socket_dialogs.*', 'u.top_at', 'u.mark_unread', 'u.silence', 'u.color', 'u.updated_at as user_at']) ->join('web_socket_dialog_users as u', 'web_socket_dialogs.id', '=', 'u.dialog_id') ->where('web_socket_dialogs.name', 'LIKE', "%{$key}%") ->where('u.userid', $user->userid) @@ -117,7 +117,7 @@ class DialogController extends AbstractController } // 搜索消息会话 if (count($list) < 20) { - $msgs = WebSocketDialog::select(['web_socket_dialogs.*', 'u.top_at', 'u.mark_unread', 'u.silence', 'u.updated_at as user_at', 'm.id as search_msg_id']) + $msgs = WebSocketDialog::select(['web_socket_dialogs.*', 'u.top_at', 'u.mark_unread', 'u.silence', 'u.color', 'u.updated_at as user_at', 'm.id as search_msg_id']) ->join('web_socket_dialog_users as u', 'web_socket_dialogs.id', '=', 'u.dialog_id') ->join('web_socket_dialog_msgs as m', 'web_socket_dialogs.id', '=', 'm.dialog_id') ->where('u.userid', $user->userid) @@ -154,7 +154,7 @@ class DialogController extends AbstractController // $dialog_id = intval(Request::input('dialog_id')); // - $item = WebSocketDialog::select(['web_socket_dialogs.*', 'u.top_at', 'u.mark_unread', 'u.silence', 'u.updated_at as user_at']) + $item = WebSocketDialog::select(['web_socket_dialogs.*', 'u.top_at', 'u.mark_unread', 'u.silence', 'u.color', 'u.updated_at as user_at']) ->join('web_socket_dialog_users as u', 'web_socket_dialogs.id', '=', 'u.dialog_id') ->where('web_socket_dialogs.id', $dialog_id) ->where('u.userid', $user->userid) @@ -1542,6 +1542,47 @@ class DialogController extends AbstractController ]); } + /** + * @api {get} api/dialog/msg/color 30. 设置颜色 + * + * @apiDescription 需要token身份 + * @apiVersion 1.0.0 + * @apiGroup dialog + * @apiName msg__color + * + * @apiParam {Number} dialog_id 会话ID + * @apiParam {String} color 颜色 + * + * @apiSuccess {Number} ret 返回状态码(1正确、0错误) + * @apiSuccess {String} msg 返回信息(错误描述) + * @apiSuccess {Object} data 返回数据 + */ + public function msg__color() + { + $user = User::auth(); + + $dialogId = intval(Request::input('dialog_id')); + $color = Request::input('color',''); + $dialogUser = WebSocketDialogUser::whereUserid($user->userid)->whereDialogId($dialogId)->first(); + if (!$dialogUser) { + return Base::retError("会话不存在"); + } + // + $dialogData = WebSocketDialog::find($dialogId); + if (empty($dialogData)) { + return Base::retError("会话不存在"); + } + // + $dialogUser->color = $color; + $dialogUser->save(); + // + $data = [ + 'id' => $dialogId, + 'color' => $color + ]; + return Base::retSuccess("success", $data); + } + /** * @api {get} api/dialog/group/add 33. 新增群组 * diff --git a/app/Models/WebSocketDialog.php b/app/Models/WebSocketDialog.php index de263e044..37befd4be 100644 --- a/app/Models/WebSocketDialog.php +++ b/app/Models/WebSocketDialog.php @@ -76,7 +76,7 @@ class WebSocketDialog extends AbstractModel */ public function getDialogList($userid, $updated = "", $deleted = "") { - $builder = WebSocketDialog::select(['web_socket_dialogs.*', 'u.top_at', 'u.mark_unread', 'u.silence', 'u.updated_at as user_at']) + $builder = WebSocketDialog::select(['web_socket_dialogs.*', 'u.top_at', 'u.mark_unread', 'u.silence', 'u.color', 'u.updated_at as user_at']) ->join('web_socket_dialog_users as u', 'web_socket_dialogs.id', '=', 'u.dialog_id') ->where('u.userid', $userid); if ($updated) { diff --git a/database/migrations/2023_08_10_093619_add_web_socket_dialog_users_color.php b/database/migrations/2023_08_10_093619_add_web_socket_dialog_users_color.php new file mode 100644 index 000000000..b96e01c0d --- /dev/null +++ b/database/migrations/2023_08_10_093619_add_web_socket_dialog_users_color.php @@ -0,0 +1,36 @@ +string('color', 20)->nullable()->default('')->after('important')->comment('颜色'); + } + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + Schema::table('web_socket_dialog_users', function (Blueprint $table) { + $table->dropColumn("color"); + }); + } +} diff --git a/resources/assets/js/pages/manage/dashboard.vue b/resources/assets/js/pages/manage/dashboard.vue index ebf0589f7..0e85ecc6d 100644 --- a/resources/assets/js/pages/manage/dashboard.vue +++ b/resources/assets/js/pages/manage/dashboard.vue @@ -175,10 +175,13 @@ export default { }, scrollTo(type) { - $A.scrollToView(this.$refs[`type_${type}`][0], { - behavior: 'smooth', - inline: 'end', - }); + let refs = this.$refs[`type_${type}`] + if (refs) { + $A.scrollToView(refs[0], { + behavior: 'smooth', + inline: 'end', + }); + } }, openTask(task) { diff --git a/resources/assets/js/pages/manage/messenger.vue b/resources/assets/js/pages/manage/messenger.vue index ccaad98a0..93726ba31 100644 --- a/resources/assets/js/pages/manage/messenger.vue +++ b/resources/assets/js/pages/manage/messenger.vue @@ -63,7 +63,8 @@ dialog_id: dialog.id, search_msg_id: dialog.search_msg_id })" - v-longpress="handleLongpress"> + v-longpress="handleLongpress" + :style="{'background-color':dialog.color}">