hasOne(Project::class, 'id', 'project_id'); } /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function projectTask(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(ProjectTask::class, 'column_id', 'id')->whereNull('archived_at')->orderBy('sort')->orderBy('id'); } /** * 删除列表 * @param bool $pushMsg 是否推送 * @return bool */ public function deleteColumn($pushMsg = true) { AbstractModel::transaction(function () use ($pushMsg) { $tasks = ProjectTask::whereColumnId($this->id)->get(); foreach ($tasks as $task) { $task->deleteTask($pushMsg); } $this->delete(); $this->addLog("删除列表:" . $this->name); }); if ($pushMsg) { $this->pushMsg("delete"); } return true; } /** * 添加项目日志 * @param string $detail * @param int $userid * @return ProjectLog */ public function addLog($detail, $userid = 0) { $log = ProjectLog::createInstance([ 'project_id' => $this->project_id, 'column_id' => $this->id, 'task_id' => 0, 'userid' => $userid ?: User::userid(), 'detail' => $detail, ]); $log->save(); return $log; } /** * 推送消息 * @param string $action * @param array $data 发送内容,默认为[id, project_id] * @param array $userid 指定会员,默认为项目所有成员 */ public function pushMsg($action, $data = null, $userid = null) { if (!$this->project) { return; } if ($data === null) { $data = [ 'id' => $this->id, 'project_id' => $this->project_id, ]; } if ($userid === null) { $userid = $this->project->relationUserids(); } $params = [ 'ignoreFd' => Request::header('fd'), 'userid' => $userid, 'msg' => [ 'type' => 'projectColumn', 'action' => $action, 'data' => $data, ] ]; $task = new PushTask($params, false); Task::deliver($task); } }