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