From e6f6b3fee298cd9b9c96f157958952d31eb5ed9d Mon Sep 17 00:00:00 2001 From: kuaifan Date: Thu, 13 Mar 2025 15:02:53 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=B7=A5=E4=BD=9C=E6=B5=81=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=E5=B7=B2=E7=A6=BB=E8=81=8C=E4=BA=BA=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Models/Project.php | 7 +++++++ app/Models/ProjectTask.php | 11 ++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) 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'])) {