diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index a76822a3c..4e32d5eec 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -155,6 +155,12 @@ class DialogController extends AbstractController $user->task_dialog_id = $dialog->id; $user->save(); } + //去掉标记未读 + $isMarkDialogUser = WebSocketDialogUser::whereDialogId($dialog->id)->whereUserid($user->userid)->whereIsMarkUnread(1)->first(); + if ($isMarkDialogUser) { + $isMarkDialogUser->is_mark_unread = 0; + $isMarkDialogUser->save(); + } // $data = $list->toArray(); if ($list->currentPage() === 1) { @@ -511,6 +517,10 @@ class DialogController extends AbstractController $user = User::auth(); $dialogId = intval(Request::input('dialog_id')); $type = Request::input('type'); + $dialogUser = WebSocketDialogUser::whereUserid($user->userid)->whereDialogId($dialogId)->first(); + if (!$dialogUser) { + return Base::retError("会话不存在"); + } if ($type == 'read') { WebSocketDialogMsgRead::whereUserid($user->userid) ->whereReadAt(null) @@ -519,13 +529,11 @@ class DialogController extends AbstractController [ 'read_at' => Carbon::now() ]); + $dialogUser->is_mark_unread = 0; + $dialogUser->save(); } elseif ($type == 'unread') { - $msgRead = WebSocketDialogMsgRead::whereUserid(User::userid())->whereDialogId($dialogId)->orderByDesc('id')->first(); - if (!$msgRead) { - return Base::retError("对方未发任何消息,没法设置未读"); - } - $msgRead->read_at = null; - $msgRead->save(); + $dialogUser->is_mark_unread = 1; + $dialogUser->save(); } return Base::retSuccess("success"); } diff --git a/app/Models/WebSocketDialog.php b/app/Models/WebSocketDialog.php index 602faf116..8134dc917 100644 --- a/app/Models/WebSocketDialog.php +++ b/app/Models/WebSocketDialog.php @@ -105,7 +105,9 @@ class WebSocketDialog extends AbstractModel $last_msg = WebSocketDialogMsg::whereDialogId($dialog->id)->orderByDesc('id')->first(); $dialog->last_msg = $last_msg; // 未读信息 - $dialog->unread = WebSocketDialogMsgRead::whereDialogId($dialog->id)->whereUserid($userid)->whereReadAt(null)->count(); + $unread = WebSocketDialogMsgRead::whereDialogId($dialog->id)->whereUserid($userid)->whereReadAt(null)->count(); + $isMarkUnread = WebSocketDialogUser::whereDialogId($dialog->id)->whereUserid($userid)->whereIsMarkUnread(1)->exists(); + $dialog->unread = $unread > 0 ? $unread : ($isMarkUnread ? 1 : 0); // 对话人数 $builder = WebSocketDialogUser::whereDialogId($dialog->id); $dialog->people = $builder->count(); diff --git a/app/Models/WebSocketDialogUser.php b/app/Models/WebSocketDialogUser.php index 28ff9dcd1..2e4e5a6ba 100644 --- a/app/Models/WebSocketDialogUser.php +++ b/app/Models/WebSocketDialogUser.php @@ -8,8 +8,8 @@ namespace App\Models; * @property int $id * @property int|null $dialog_id 对话ID * @property int|null $userid 会员ID - * @property int|null $top 是否置顶:0否,1是 * @property string|null $top_at 置顶时间 + * @property int $is_mark_unread 是否标记为未读:0否,1是 * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialogUser newModelQuery() @@ -18,7 +18,7 @@ namespace App\Models; * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialogUser whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialogUser whereDialogId($value) * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialogUser whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialogUser whereTop($value) + * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialogUser whereIsMarkUnread($value) * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialogUser whereTopAt($value) * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialogUser whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|WebSocketDialogUser whereUserid($value) diff --git a/database/migrations/2022_03_08_124155_add_web_socket_dialog_users_add_is_mark_unread.php b/database/migrations/2022_03_08_124155_add_web_socket_dialog_users_add_is_mark_unread.php new file mode 100644 index 000000000..e94544efc --- /dev/null +++ b/database/migrations/2022_03_08_124155_add_web_socket_dialog_users_add_is_mark_unread.php @@ -0,0 +1,32 @@ +boolean('is_mark_unread')->default(0)->nullable(false)->after('top_at')->comment('是否标记为未读:0否,1是'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('web_socket_dialog_users', function (Blueprint $table) { + $table->dropColumn("is_mark_unread"); + }); + } +}