diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index 42cd1893f..7257a4ded 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -2277,13 +2277,16 @@ class DialogController extends AbstractController $dialog = WebSocketDialog::checkDialog($msg->dialog_id); // $before = $dialog->top_msg_id; + $beforeTopUserid = $dialog->top_userid; $dialog->top_msg_id = $msg->id == $before ? 0 : $msg->id; + $dialog->top_userid = $dialog->top_msg_id ? $user->userid : 0; $dialog->save(); // $data = [ 'update' => [ 'dialog_id' => $dialog->id, 'top_msg_id' => $dialog->top_msg_id, + 'top_userid' => $dialog->top_userid, ] ]; $res = $msg->sendMsg(null, $dialog->id, 'top', [ @@ -2295,17 +2298,11 @@ class DialogController extends AbstractController ] ], $user->userid); if (Base::isSuccess($res)) { - if ($before != $dialog->top_msg_id) { - $oldTop = WebSocketDialog::whereTopMsgId($before)->first(); - if ($oldTop){ - $oldTop->top_msg_id = 0; - $oldTop->save(); - } - } $data['add'] = $res['data']; $dialog->pushMsg('updateTopMsg', $data['update']); } else { $dialog->top_msg_id = $before; + $dialog->top_userid = $beforeTopUserid; $dialog->save(); } // diff --git a/database/migrations/2023_12_29_145804_add_web_socket_dialogs_top.php b/database/migrations/2023_12_29_145804_add_web_socket_dialogs_top.php index c09226ecc..80d8f2098 100644 --- a/database/migrations/2023_12_29_145804_add_web_socket_dialogs_top.php +++ b/database/migrations/2023_12_29_145804_add_web_socket_dialogs_top.php @@ -21,7 +21,8 @@ class AddWebSocketDialogsTop extends Migration }); // Schema::table('web_socket_dialogs', function (Blueprint $table) { - $table->bigInteger('top_msg_id')->nullable()->default(0)->after('link_id')->comment('置顶的消息ID'); + $table->bigInteger('top_userid')->nullable()->default(0)->after('link_id')->comment('置顶的用户ID'); + $table->bigInteger('top_msg_id')->nullable()->default(0)->after('top_userid')->comment('置顶的消息ID'); }); } @@ -40,7 +41,12 @@ class AddWebSocketDialogsTop extends Migration }); // Schema::table('web_socket_dialogs', function (Blueprint $table) { - $table->dropColumn("top_msg_id"); + if (Schema::hasColumn('web_socket_dialogs', 'top_msg_id')) { + $table->dropColumn("top_msg_id"); + } + if (Schema::hasColumn('web_socket_dialogs', 'top_userid')) { + $table->dropColumn("top_userid"); + } }); } } diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue index 1824e7ae3..9d63d3dbb 100644 --- a/resources/assets/js/pages/manage/components/DialogWrapper.vue +++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue @@ -147,7 +147,7 @@ : {{$A.getMsgSimpleDesc(topMessageInfo)}}

-

{{$L('置顶人员')}}

+

{{$L('置顶人员')}}

@@ -3399,7 +3399,8 @@ export default { // 取消置顶 this.$store.dispatch("saveDialog", { 'id' : this.dialogId, - 'top_msg_id' : data.update?.top_msg_id || 0 + 'top_msg_id' : data.update?.top_msg_id || 0, + 'top_userid' : data.update?.top_userid || 0 }); // 置顶 if (data.update?.top_msg_id) { diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index f072cdf3d..ef3059dc1 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -3508,7 +3508,11 @@ export default { break; case 'updateTopMsg': // 更新置顶 - dispatch("saveDialog", {id: data.dialog_id, top_msg_id: data.top_msg_id}) + dispatch("saveDialog", { + id: data.dialog_id, + top_msg_id: data.top_msg_id, + top_userid: data.top_userid + }) dispatch("getDialogMsgTop", dialog_id) break; }