From a4fe2faf4f3ee9878bae55999b0fd61ff3bbe342 Mon Sep 17 00:00:00 2001 From: chaideqing Date: Fri, 28 Apr 2023 15:59:40 +0800 Subject: [PATCH] * Refactor model->unlinkmember. --- module/project/model.php | 6 +-- module/project/tao.php | 28 ++++++++-- module/project/test/model/unlinkmember.php | 62 +++++++++++++++++----- 3 files changed, 76 insertions(+), 20 deletions(-) diff --git a/module/project/model.php b/module/project/model.php index 924001b9d9..c9f52f5f57 100755 --- a/module/project/model.php +++ b/module/project/model.php @@ -1806,16 +1806,16 @@ class projectModel extends model * @access public * @return void */ - public function unlinkMember($projectID, $account, $removeExecution = 'no') + public function unlinkMember(int $projectID, string $account, string $removeExecution = 'no'): void { - $this->dao->delete()->from(TABLE_TEAM)->where('root')->eq((int)$projectID)->andWhere('type')->eq('project')->andWhere('account')->eq($account)->exec(); + $this->projectTao->unlinkTeamMember($projectID, 'project', $account); $this->loadModel('user')->updateUserView($projectID, 'project', array($account)); if($removeExecution == 'yes') { $executions = $this->loadModel('execution')->getByProject($projectID, 'undone', 0, true); - $this->dao->delete()->from(TABLE_TEAM)->where('root')->in(array_keys($executions))->andWhere('type')->eq('execution')->andWhere('account')->eq($account)->exec(); + $this->projectTao->unlinkTeamMember(array_keys($executions), 'execution', $account); $this->user->updateUserView(array_keys($executions), 'sprint', array($account)); } diff --git a/module/project/tao.php b/module/project/tao.php index 402ad006c7..3fbaf9a867 100755 --- a/module/project/tao.php +++ b/module/project/tao.php @@ -220,7 +220,7 @@ class projectTao extends projectModel * @param object $postData * @param object $program * @access protected - * @return bool + * @return bool */ protected function createDocLib(int $projectID, object $project, object $postData, object $program): bool { @@ -269,7 +269,7 @@ class projectTao extends projectModel * @param object $postData * @param object $program * @access protected - * @return bool + * @return bool */ protected function createProduct(int $projectID, object $project, object $postData, object $program): bool { @@ -333,7 +333,7 @@ class projectTao extends projectModel * @param object $rawdata * @param object $program * @access protected - * @return bool + * @return bool */ protected function getLinkedProductsCount(object $project, object $rawdata): int { @@ -355,7 +355,7 @@ class projectTao extends projectModel * * @param int $projectID * @access protected - * @return bool + * @return bool */ protected function addProjectAdmin(int $projectID): bool { @@ -383,4 +383,24 @@ class projectTao extends projectModel return !dao::isError(); } + + /** + * 删除项目团队成员。 + * Delete project team member. + * + * @param array|int $projectIdList + * @param string $type + * @param string $account + * @access protected + * @return bool + */ + protected function unlinkTeamMember(int|array $projectIdList, string $type, string $account): bool + { + $this->dao->delete()->from(TABLE_TEAM) + ->where('root')->in($projectIdList) + ->andWhere('type')->eq($type) + ->andWhere('account')->eq($account) + ->exec(); + return !dao::isError(); + } } diff --git a/module/project/test/model/unlinkmember.php b/module/project/test/model/unlinkmember.php index c965e2f87b..82fb13c4a4 100755 --- a/module/project/test/model/unlinkmember.php +++ b/module/project/test/model/unlinkmember.php @@ -1,29 +1,65 @@ #!/usr/bin/env php id->range('2-9'); + $team->root->range('2,7-9{3}'); + $team->type->range('project,execution{7}'); + $team->account->range('admin,user1,user2,admin'); + $team->limited->range('no'); + $team->join->range('2023-04-02'); + $team->days->range('7'); + $team->hours->range('7'); + $team->gen(8); + + $execution = zdTable('project'); + $execution->id->range('2,6,8,9'); + $execution->project->range('2,3'); + $execution->name->prefix('项目')->range('8,9'); + $execution->code->prefix('project')->range('8,9'); + $execution->type->range('project{2},sprint,kanban'); + $execution->status->range('doing,suspended,closed'); + $execution->gen(4); +} /** -title=测试 projectModel->unlinkMember(); +title=测试 projectModel::getByID; +timeout=0 cid=1 pid=1 -查看移除团队成员之前的ID为11的项目团队成员数量 >> 3 -查看移除团队成员之后的ID为11的项目团队成员数量 >> 2 -查看项目ID为11的团队成员的真实姓名 >> 产品经理92 -查看项目ID为11的团队成员的真实姓名 >> 产品经理92 +- 执行$diffMembers @1 >> 1 + >> admin +- 执行$beforeMembers['admin'] @admin >> 0 + >> 1 +- 执行$afterMembers['admin'] @0 >> admin + >> 0 */ global $tester; $tester->loadModel('project'); -$beforeMembers = $tester->project->getTeamMemberPairs(11); -$tester->project->unlinkMember(11, 'admin', false); -$afterMembers = $tester->project->getTeamMemberPairs(11); +initData(); -r(count($beforeMembers)) && p('') && e('3'); // 查看移除团队成员之前的ID为11的项目团队成员数量 -r(count($afterMembers)) && p('') && e('2'); // 查看移除团队成员之后的ID为11的项目团队成员数量 -r($beforeMembers) && p('pm92') && e('产品经理92'); // 查看项目ID为11的团队成员的真实姓名 -r($afterMembers) && p('pm92') && e('产品经理92'); // 查看项目ID为11的团队成员的真实姓名 +$beforeMembers = $tester->project->getTeamMemberPairs(2); +$beforeExecutionMembers = $tester->project->getTeamMemberPairs(8); + +$tester->project->unlinkMember(2, 'admin', 'yes'); + +$afterMembers = $tester->project->getTeamMemberPairs(2); +$afterExecutionMembers = $tester->project->getTeamMemberPairs(6); +$diffMembers = count($beforeMembers) - count($afterMembers); +$diffExecutionMembers = count($beforeExecutionMembers) - count($afterExecutionMembers); + +r($diffMembers) && p() && e('1'); +r($beforeMembers['admin']) && p() && e('admin'); +r($afterMembers['admin']) && p() && e('0'); +r($diffExecutionMembers) && p() && e('1'); +r($beforeExecutionMembers['admin']) && p() && e('admin'); +r($afterExecutionMembers['admin']) && p() && e('0');