From 3eb22784d54fe89c2983b4464dbcc0851c29aef3 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Wed, 23 Jun 2021 15:47:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=BC=9A=E8=AF=9D=E4=B9=8B?= =?UTF-8?q?=E5=90=8E=E8=A6=81=E5=B0=86=E6=9C=AA=E8=AF=BB=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E7=BB=99=E6=B8=85=E9=9B=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Models/Project.php | 4 ++++ app/Models/ProjectTask.php | 6 ++++++ app/Models/WebSocketDialog.php | 16 ++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/app/Models/Project.php b/app/Models/Project.php index 876424e2..6f8ab786 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -318,6 +318,10 @@ class Project extends AbstractModel public function deleteProject() { AbstractModel::transaction(function () { + $dialog = WebSocketDialog::find($this->dialog_id); + if ($dialog) { + $dialog->deleteDialog(); + } $columns = ProjectColumn::whereProjectId($this->id)->get(); foreach ($columns as $column) { $column->deleteColumn(false); diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index 6f1f6fe1..ac8bd8d6 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -626,6 +626,12 @@ class ProjectTask extends AbstractModel public function deleteTask($pushMsg = true) { AbstractModel::transaction(function () { + if ($this->dialog_id) { + $dialog = WebSocketDialog::find($this->dialog_id); + if ($dialog) { + $dialog->deleteDialog(); + } + } $this->delete(); $this->addLog("删除{任务}:" . $this->name); }); diff --git a/app/Models/WebSocketDialog.php b/app/Models/WebSocketDialog.php index a92362cf..b6d5e367 100644 --- a/app/Models/WebSocketDialog.php +++ b/app/Models/WebSocketDialog.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Exceptions\ApiException; +use Carbon\Carbon; use Illuminate\Database\Eloquent\SoftDeletes; /** @@ -47,6 +48,21 @@ class WebSocketDialog extends AbstractModel return $this->hasMany(WebSocketDialogUser::class, 'dialog_id', 'id'); } + /** + * 删除会话 + * @return bool + */ + public function deleteDialog() + { + AbstractModel::transaction(function () { + WebSocketDialogMsgRead::whereDialogId($this->id)->whereNull('read_at')->update([ + 'read_at' => Carbon::now() + ]); + $this->delete(); + }); + return true; + } + /** * 获取对话(同时检验对话身份) * @param $id