diff --git a/module/stakeholder/control.php b/module/stakeholder/control.php index 40dedd9cd1..756cee9783 100644 --- a/module/stakeholder/control.php +++ b/module/stakeholder/control.php @@ -96,19 +96,22 @@ class stakeholder extends control } /** + * 批量创建干系人页面。 * Batch create stakeholders. * * @param int $projectID * @param string $dept - * @param string $dept + * @param int $parentID * @access public * @return void */ - public function batchCreate($projectID, $dept = '', $parentID = 0) + public function batchCreate(int $projectID, string $dept = '', int $parentID = 0) { if($_POST) { - $stakeholderList = $this->stakeholder->batchCreate($projectID); + $stakeholderList = $this->stakeholder->batchCreate($projectID, $_POST['accounts']); + + if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); if($this->viewType == 'json') return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'idList' => $stakeholderList)); return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'load' => $this->createLink('stakeholder', 'browse', "projectID=$projectID"))); } @@ -122,16 +125,13 @@ class stakeholder extends control $this->loadModel('project')->setMenu($projectID); } - $this->loadModel('user'); $this->loadModel('dept'); $this->loadModel('execution'); - $deptUsers = $dept === '' ? array() : $this->dept->getDeptUserPairs($dept); - - $this->view->title = $this->lang->stakeholder->batchCreate; + $this->view->title = $this->lang->stakeholder->batchCreate; $this->view->project = $this->loadModel('project')->getByID($this->session->project); - $this->view->users = $this->user->getPairs('all|nodeleted|noclosed'); - $this->view->deptUsers = $deptUsers; + $this->view->users = $this->loadModel('user')->getPairs('all|nodeleted|noclosed'); + $this->view->deptUsers = $dept === '' ? array() : $this->dept->getDeptUserPairs((int)$dept); $this->view->dept = $dept; $this->view->projectID = $projectID; $this->view->depts = $this->dept->getOptionMenu(); diff --git a/module/stakeholder/model.php b/module/stakeholder/model.php index 347599082f..d55a42b323 100644 --- a/module/stakeholder/model.php +++ b/module/stakeholder/model.php @@ -120,19 +120,20 @@ class stakeholderModel extends model } /** + * 批量创建项目的干系人。 * Batch create stakeholders for a project. * * @param int $projectID + * @param array $accounts * @access public * @return array */ - public function batchCreate($projectID) + public function batchCreate(int $projectID, array $accounts): array { $this->loadModel('action'); - $data = (array)fixer::input('post')->get(); $members = $this->loadModel('user')->getTeamMemberPairs($projectID, 'project'); - $accounts = array_unique($data['accounts']); + $accounts = array_unique($accounts); $oldJoin = $this->dao->select('`user`, createdDate')->from(TABLE_STAKEHOLDER)->where('objectID')->eq($projectID)->andWhere('objectType')->eq('project')->fetchPairs(); $this->dao->delete()->from(TABLE_STAKEHOLDER)->where('objectID')->eq($projectID)->andWhere('objectType')->eq('project')->exec(); @@ -148,7 +149,6 @@ class stakeholderModel extends model $stakeholder->type = in_array($account, array_keys($members)) ? 'inside' : 'outside'; $stakeholder->createdBy = $this->app->user->account; $stakeholder->createdDate = isset($oldJoin[$account]) ? $oldJoin[$account] : helper::today(); - $this->dao->insert(TABLE_STAKEHOLDER)->data($stakeholder)->exec(); $stakeholderID = $this->dao->lastInsertId(); @@ -161,15 +161,13 @@ class stakeholderModel extends model $changedAccounts = array_diff($accounts, $oldAccounts); $changedAccounts = array_merge($changedAccounts, array_diff($oldAccounts, $accounts)); $changedAccounts = array_unique($changedAccounts); - $this->loadModel('user')->updateUserView($projectID, 'project', $changedAccounts); - $this->loadModel('project')->updateInvolvedUserView($projectID, $changedAccounts); - if($stakeholder->objectType == 'program' and $stakeholder->objectID) + if(!empty($accounts) && $stakeholder->objectType == 'program' && $stakeholder->objectID) { - $programID = $stakeholder->objectID; /* Update children user view. */ + $programID = $stakeholder->objectID; $childPrograms = $this->dao->select('id')->from(TABLE_PROJECT)->where('path')->like("%,$programID,%")->andWhere('type')->eq('program')->fetchPairs(); $childProjects = $this->dao->select('id')->from(TABLE_PROJECT)->where('path')->like("%,$programID,%")->andWhere('type')->eq('project')->fetchPairs(); $childProducts = $this->dao->select('id')->from(TABLE_PRODUCT)->where('program')->eq($programID)->fetchPairs();