diff --git a/module/project/tao.php b/module/project/tao.php index 3fbaf9a867..6b97653caa 100755 --- a/module/project/tao.php +++ b/module/project/tao.php @@ -359,26 +359,26 @@ class projectTao extends projectModel */ protected function addProjectAdmin(int $projectID): bool { - $groupPriv = $this->dao->select('t1.*')->from(TABLE_USERGROUP)->alias('t1') + $projectAdmin = $this->dao->select('t1.*')->from(TABLE_PROJECTADMIN)->alias('t1') ->leftJoin(TABLE_GROUP)->alias('t2')->on('t1.`group` = t2.id') ->where('t1.account')->eq($this->app->user->account) ->andWhere('t2.role')->eq('projectAdmin') ->fetch(); - if(!empty($groupPriv)) + if(!empty($projectAdmin)) { - $newProject = $groupPriv->project . ",$projectID"; - $this->dao->update(TABLE_USERGROUP)->set('project')->eq($newProject)->where('account')->eq($groupPriv->account)->andWhere('`group`')->eq($groupPriv->group)->exec(); + $newProject = $projectAdmin->projects . ",$projectID"; + $this->dao->update(TABLE_PROJECTADMIN)->set('projects')->eq($newProject)->where('account')->eq($projectAdmin->account)->andWhere('`group`')->eq($projectAdmin->group)->exec(); } else { $projectAdminID = $this->dao->select('id')->from(TABLE_GROUP)->where('role')->eq('projectAdmin')->fetch('id'); - $groupPriv = new stdclass(); - $groupPriv->account = $this->app->user->account; - $groupPriv->group = $projectAdminID; - $groupPriv->project = $projectID; - $this->dao->replace(TABLE_USERGROUP)->data($groupPriv)->exec(); + $projectAdmin = new stdclass(); + $projectAdmin->account = $this->app->user->account; + $projectAdmin->group = $projectAdminID; + $projectAdmin->projects = $projectID; + $this->dao->replace(TABLE_PROJECTADMIN)->data($projectAdmin)->exec(); } return !dao::isError(); diff --git a/module/project/test/project.class.php b/module/project/test/project.class.php index 537cd498ab..b272a5721e 100644 --- a/module/project/test/project.class.php +++ b/module/project/test/project.class.php @@ -196,4 +196,19 @@ class Project { return $this->project->getBudgetWithUnit($budget); } + + /** + * Add user to project admins. + * + * @param int $budget + * @access public + * @return int|string $projectBudget + */ + public function addProjectAdminTest($projectID) + { + global $tester; + $tester->loadModel('project')->addProjectAdmin($projectID); + + return $tester->dao->select('*')->from(TABLE_PROJECTADMIN)->fetch(); + } } diff --git a/module/project/test/tao/addprojectadmin.php b/module/project/test/tao/addprojectadmin.php new file mode 100755 index 0000000000..eaafd08661 --- /dev/null +++ b/module/project/test/tao/addprojectadmin.php @@ -0,0 +1,30 @@ +#!/usr/bin/env php +gen(5); +zdTable('projectadmin')->gen(0); + +/** + +title=测试 projectModel->create(); +timeout=0 +cid=1 + +- 执行projectClass模块的addProjectAdminTest方法,参数是1属性projects @1 + +- 执行projectClass模块的addProjectAdminTest方法,参数是2属性projects @1,2 + +- 执行projectClass模块的addProjectAdminTest方法,参数是3属性projects @1,2,3 + + + +*/ + +$projectClass = new project(); + +r($projectClass->addProjectAdminTest(1)) && p('projects', '|') && e('1'); +r($projectClass->addProjectAdminTest(2)) && p('projects', '|') && e('1,2'); +r($projectClass->addProjectAdminTest(3)) && p('projects', '|') && e('1,2,3'); diff --git a/module/project/test/tao/createproduct.php b/module/project/test/tao/createproduct.php new file mode 100755 index 0000000000..f0a44973f8 --- /dev/null +++ b/module/project/test/tao/createproduct.php @@ -0,0 +1,69 @@ +#!/usr/bin/env php +id->range('1'); +$program->name->range('项目集一'); +$program->model->range('program'); +$program->code->range('项目集代号'); +$program->desc->range('测试项目集'); +$program->gen(1); + +/** + +title=测试 projectModel->create(); +timeout=0 +cid=1 + +- 执行projectClass模块的create方法,参数是$normalProject, $postData属性name @测试新增项目一 + +- 执行projectClass模块的create方法,参数是$emptyNameProject, $postData @『项目名称』不能为空。 + +- 执行projectClass模块的create方法,参数是$emptyEndProject, $postData @『计划完成』不能为空。 + +- 执行projectClass模块的create方法,参数是$beginGtEndProject, $postData @『计划完成』应当大于『2022-02-07』。 + +- 执行projectClass模块的create方法,参数是$emptyBeginProject, $postData @『计划开始』不能为空。 + + + +*/ + +global $tester; +$program = $tester->loadModel('project')->getByID(1); +$projectClass = new project(); + +$project = new stdclass(); +$project->parent = 0; +$project->name = '测试新增项目一'; +$project->budget = ''; +$project->budgetUnit = 'CNY'; +$project->begin = '2022-02-07'; +$project->end = '2023-01-01'; +$project->desc = '测试项目描述'; +$project->acl = 'private'; +$project->whitelist = 'user1,user2,user3'; +$project->PM = 'admin'; +$project->type = 'project'; +$project->model = 'scrum'; +$project->multiple = 1; +$project->hasProduct = 1; +$project->openedBy = 'admin'; +$project->openedDate = '2023-01-01'; + +$postData = new stdclass(); +$postData->rawdata = clone $project; +$postData->rawdata->uid = '64dda2xc'; +$postData->rawdata->delta = 0; +$postData->rawdata->products = array(1); + +$projectID = $projectClass->create($normalProject, $postData); + +r($projectClass->createProduct($projectID, $project, $postData, $program)) && p('name') && e('测试新增项目一'); +//r($projectClass->createProduct($emptyNameProject, $postData)) && p('message[name]:0') && e('『项目名称』不能为空。'); +//r($projectClass->createProduct($emptyEndProject, $postData)) && p('message[end]:0') && e('『计划完成』不能为空。'); +//r($projectClass->createProduct($beginGtEndProject, $postData)) && p('message[end]:0') && e('『计划完成』应当大于『2022-02-07』。'); +//r($projectClass->createProduct($emptyBeginProject, $postData)) && p('message[begin]:0') && e('『计划开始』不能为空。'); diff --git a/module/project/zen.php b/module/project/zen.php index 15a2bed7a8..fc3bcd4f1c 100644 --- a/module/project/zen.php +++ b/module/project/zen.php @@ -188,7 +188,7 @@ class projectZen extends project if($this->app->tab == 'product' and !empty($output['productID'])) $this->loadModel('product')->setMenu($output['productID']); if($this->app->tab == 'doc') unset($this->lang->doc->menu->project['subMenu']); - if($copyProjectID) $copyProject = $this->copyProject((int)$copyProjectID); + if($copyProjectID) $copyProject = $this->getCopyProject((int)$copyProjectID); $shadow = empty($copyProject->hasProduct) ? 1 : 0; if($this->view->globalDisableProgram) $programID = $this->config->global->defaultProgram;