diff --git a/app/Models/Project.php b/app/Models/Project.php index 599f08b20..ad2e78c18 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -419,6 +419,7 @@ class Project extends AbstractModel $hasStart = false; $hasEnd = false; $upTaskList = []; + $projectUserids = $this->relationUserids(); foreach ($flows as $item) { $id = intval($item['id']); $turns = Base::arrayRetainInt($item['turns'] ?: [], true); @@ -435,6 +436,12 @@ class Project extends AbstractModel if ($userlimit && empty($userids)) { throw new ApiException("状态[{$item['name']}]设置错误,设置限制负责人时必须填写状态负责人"); } + foreach ($userids as $userid) { + if (!in_array($userid, $projectUserids)) { + $nickname = User::userid2nickname($userid); + throw new ApiException("状态[{$item['name']}]设置错误,状态负责人[{$nickname}]不在项目成员内"); + } + } $flow = ProjectFlowItem::updateInsert([ 'id' => $id, 'project_id' => $this->id, diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index ef682aba8..3a34b95b3 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -618,7 +618,12 @@ class ProjectTask extends AbstractModel $data['complete_at'] = false; } } - if ($newFlowItem->userids) { + $flowUserids = $newFlowItem->userids; + if ($flowUserids) { + // 确认负责人在任务中 + $flowUserids = ProjectUser::whereProjectId($this->project_id)->whereIn('userid', $flowUserids)->pluck('userid')->toArray(); + } + if ($flowUserids) { // 判断自动添加负责人 $flowData['owner'] = $data['owner'] = $this->taskUser->where('owner', 1)->pluck('userid')->toArray(); if (in_array($newFlowItem->usertype, ["replace", "merge"])) { @@ -627,14 +632,14 @@ class ProjectTask extends AbstractModel $flowData['assist'] = $data['assist'] = $this->taskUser->where('owner', 0)->pluck('userid')->toArray(); $data['assist'] = array_merge($data['assist'], $data['owner']); } - $data['owner'] = $newFlowItem->userids; + $data['owner'] = $flowUserids; // 判断剔除模式:保留操作状态的人员 if ($newFlowItem->usertype == "merge") { $data['owner'][] = User::userid(); } } else { // 添加模式 - $data['owner'] = array_merge($data['owner'], $newFlowItem->userids); + $data['owner'] = array_merge($data['owner'], $flowUserids); } $data['owner'] = array_values(array_unique($data['owner'])); if (isset($data['assist'])) {