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