From ff1eee82b93ec645dac1d12c9839a5c32cee274b Mon Sep 17 00:00:00 2001 From: zenggang Date: Fri, 19 May 2023 06:51:51 +0000 Subject: [PATCH] * Bug batchChangeModule --- module/bug/control.php | 26 ++-- module/bug/model.php | 26 ++-- module/bug/test/bug.class.php | 11 +- module/bug/test/model/batchchangemodule.php | 140 ++++++++++++++++---- 4 files changed, 149 insertions(+), 54 deletions(-) diff --git a/module/bug/control.php b/module/bug/control.php index 5c87a54355..e9be51aa96 100755 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -704,30 +704,25 @@ class bug extends control } /** + * 批量修改bug所属模块。 * Batch change the module of bug. * * @param int $moduleID * @access public * @return void */ - public function batchChangeModule($moduleID) + public function batchChangeModule(int $moduleID) { if($this->post->bugIDList) { - $bugIDList = $this->post->bugIDList; - $bugIDList = array_unique($bugIDList); - unset($_POST['bugIDList']); - $allChanges = $this->bug->batchChangeModule($bugIDList, $moduleID); - if(dao::isError()) return print(js::error(dao::getError())); - foreach($allChanges as $bugID => $changes) - { - $this->loadModel('action'); - $actionID = $this->action->create('bug', $bugID, 'Edited'); - $this->action->logHistory($actionID, $changes); - } + $bugIdList = $this->post->bugIDList; + $bugIdList = array_unique($bugIdList); + + $this->bug->batchChangeModule($bugIdList, $moduleID); + if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); } $this->loadModel('score')->create('ajax', 'batchOther'); - return print(js::locate($this->session->bugList, 'parent')); + return array('load' => $this->session->bugList, 'closeModal' => true); } /** @@ -948,6 +943,7 @@ class bug extends control } /** + * 激活一个bug。 * Activate a bug. * * @param int $bugID @@ -955,7 +951,7 @@ class bug extends control * @access public * @return void */ - public function activate($bugID, $extra = '') + public function activate(int $bugID, string $extra = '') { if(!empty($_POST)) { @@ -1155,7 +1151,7 @@ class bug extends control $extendFields = $this->bug->getFlowExtendFields(); foreach($extendFields as $extendField) $postExtendData[$extendField->field] = $this->post->{$extendField->field}; - $activateBugs = $this->bug->batchActivate($activateData, $postExtendData); + $this->bug->batchActivate($activateData, $postExtendData); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); $this->loadModel('score')->create('ajax', 'batchOther'); diff --git a/module/bug/model.php b/module/bug/model.php index aabe6f2c8c..ad000fe86d 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -1022,32 +1022,40 @@ class bugModel extends model } /** + * 批量修改bug所属模块。 * Batch change the module of bug. * - * @param array $bugIDList + * @param array $bugIdList * @param int $moduleID * @access public - * @return array + * @return bool */ - public function batchChangeModule($bugIDList, $moduleID) + public function batchChangeModule(array $bugIdList, int $moduleID): bool { - $now = helper::now(); - $allChanges = array(); - $oldBugs = $this->getByList($bugIDList); - foreach($bugIDList as $bugID) + $this->loadModel('action'); + $now = helper::now(); + $oldBugs = $this->getByIdList($bugIdList); + + foreach($bugIdList as $bugID) { $oldBug = $oldBugs[$bugID]; if($moduleID == $oldBug->module) continue; + /* Change the module of bug. */ $bug = new stdclass(); $bug->lastEditedBy = $this->app->user->account; $bug->lastEditedDate = $now; $bug->module = $moduleID; $this->dao->update(TABLE_BUG)->data($bug)->autoCheck()->where('id')->eq((int)$bugID)->exec(); - if(!dao::isError()) $allChanges[$bugID] = common::createChanges($oldBug, $bug); + if(dao::isError()) return false; + + /* Record logs. */ + $changes = common::createChanges($oldBug, $bug); + $actionID = $this->action->create('bug', $bugID, 'Edited'); + $this->action->logHistory($actionID, $changes); } - return $allChanges; + return true; } /** diff --git a/module/bug/test/bug.class.php b/module/bug/test/bug.class.php index 163cd0f7fb..8fa96a3624 100644 --- a/module/bug/test/bug.class.php +++ b/module/bug/test/bug.class.php @@ -1075,9 +1075,9 @@ class bugTest */ public function batchChangeModuleTest($bugIDList, $moduleID, $bugID) { - $bugs = $this->objectModel->getByIdList($bugIDList); + $oldBugs = $this->objectModel->getByIdList($bugIDList); - $object = $this->objectModel->batchChangeModule($bugIDList, $moduleID, $bugs); + $this->objectModel->batchChangeModule($bugIDList, $moduleID); if(dao::isError()) { @@ -1085,7 +1085,12 @@ class bugTest } else { - return !empty($object[$bugID]) ? $object[$bugID] : 0; + $newBugs = $this->objectModel->getByIdList($bugIDList); + if(!empty($newBugs[$bugID])) + { + $changes = common::createChanges($oldBugs[$bugID], $newBugs[$bugID]); + return $changes; + } } } diff --git a/module/bug/test/model/batchchangemodule.php b/module/bug/test/model/batchchangemodule.php index 35bd8402e8..72f13ce4ca 100755 --- a/module/bug/test/model/batchchangemodule.php +++ b/module/bug/test/model/batchchangemodule.php @@ -2,41 +2,127 @@ batchChangeModule(); +timeout=0 cid=1 -pid=1 -修改bug1 2模块为0 >> module,1821,0 -修改bug1 2模块为8 >> module,0,8 -修改bug1 2模块为9 >> module,8,9 -修改bug1 2模块为10 >> module,9,10 -修改bug1 2模块为11 >> module,10,11 -修改bug1 2模块为11 未发生变化 >> 0 -修改bug1 3模块为0 >> module,11,0 -修改bug1 3模块为8 >> module,0,8 -修改bug1 3模块为9 >> module,8,9 -修改bug1 3模块为10 >> module,9,10 -修改bug1 3模块为11 >> module,10,11 -修改bug1 3模块为11 未发生变化 >> 0 -修改bug1 4模块为0 >> module,11,0 -修改bug1 4模块为8 >> module,0,8 -修改bug1 4模块为9 >> module,8,9 -修改bug1 4模块为10 >> module,9,10 -修改bug1 4模块为11 >> module,10,11 -修改bug1 4模块为11 未发生变化 >> 0 -修改bug2 3模块为0 >> module,11,0 -修改bug2 3模块为8 >> module,0,8 -修改bug2 3模块为9 >> module,8,9 -修改bug2 3模块为10 >> module,9,10 -修改bug2 3模块为11 >> module,10,11 -修改bug2 3模块为11 未发生变化 >> 0 +- 修改bug1 2模块为0 + - 第0条的field属性 @module + - 第0条的old属性 @1821 + - 第0条的new属性 @0 + +- 修改bug1 2模块为8 + - 第0条的field属性 @module + - 第0条的old属性 @0 + - 第0条的new属性 @8 + +- 修改bug1 2模块为9 + - 第0条的field属性 @module + - 第0条的old属性 @8 + - 第0条的new属性 @9 + +- 修改bug1 2模块为10 + - 第0条的field属性 @module + - 第0条的old属性 @9 + - 第0条的new属性 @10 + +- 修改bug1 2模块为11 + - 第0条的field属性 @module + - 第0条的old属性 @10 + - 第0条的new属性 @11 + +- 修改bug1 2模块为11 未发生变化 @0 + +- 修改bug1 3模块为0 + - 第0条的field属性 @module + - 第0条的old属性 @11 + - 第0条的new属性 @0 + +- 修改bug1 3模块为8 + - 第0条的field属性 @module + - 第0条的old属性 @0 + - 第0条的new属性 @8 + +- 修改bug1 3模块为9 + - 第0条的field属性 @module + - 第0条的old属性 @8 + - 第0条的new属性 @9 + +- 修改bug1 3模块为10 + - 第0条的field属性 @module + - 第0条的old属性 @9 + - 第0条的new属性 @10 + +- 修改bug1 3模块为11 + - 第0条的field属性 @module + - 第0条的old属性 @10 + - 第0条的new属性 @11 + +- 修改bug1 3模块为11 未发生变化 @0 + +- 修改bug1 4模块为0 + - 第0条的field属性 @module + - 第0条的old属性 @11 + - 第0条的new属性 @0 + +- 修改bug1 4模块为8 + - 第0条的field属性 @module + - 第0条的old属性 @0 + - 第0条的new属性 @8 + +- 修改bug1 4模块为9 + - 第0条的field属性 @module + - 第0条的old属性 @8 + - 第0条的new属性 @9 + +- 修改bug1 4模块为10 + - 第0条的field属性 @module + - 第0条的old属性 @9 + - 第0条的new属性 @10 + +- 修改bug1 4模块为11 + - 第0条的field属性 @module + - 第0条的old属性 @10 + - 第0条的new属性 @11 + +- 修改bug1 4模块为11 未发生变化 @0 + +- 修改bug2 3模块为0 + - 第0条的field属性 @module + - 第0条的old属性 @11 + - 第0条的new属性 @0 + +- 修改bug2 3模块为8 + - 第0条的field属性 @module + - 第0条的old属性 @0 + - 第0条的new属性 @8 + +- 修改bug2 3模块为9 + - 第0条的field属性 @module + - 第0条的old属性 @8 + - 第0条的new属性 @9 + +- 修改bug2 3模块为10 + - 第0条的field属性 @module + - 第0条的old属性 @9 + - 第0条的new属性 @10 + +- 修改bug2 3模块为11 + - 第0条的field属性 @module + - 第0条的old属性 @10 + - 第0条的new属性 @11 + +- 修改bug2 3模块为11 未发生变化 @0 */ +zdTable('bug')->gen(10); +zdTable('module')->gen(20); + $bugIDList1 = array('1', '2'); $bugIDList2 = array('1', '3'); $bugIDList3 = array('1', '4'); @@ -68,4 +154,4 @@ r($bug->batchChangeModuleTest($bugIDList4, $moduleList[1], $bugIDList4[1])) && p r($bug->batchChangeModuleTest($bugIDList4, $moduleList[2], $bugIDList4[0])) && p('0:field,old,new') && e('module,8,9'); // 修改bug2 3模块为9 r($bug->batchChangeModuleTest($bugIDList4, $moduleList[3], $bugIDList4[1])) && p('0:field,old,new') && e('module,9,10'); // 修改bug2 3模块为10 r($bug->batchChangeModuleTest($bugIDList4, $moduleList[4], $bugIDList4[0])) && p('0:field,old,new') && e('module,10,11'); // 修改bug2 3模块为11 -r($bug->batchChangeModuleTest($bugIDList4, $moduleList[4], $bugIDList4[1])) && p() && e('0'); // 修改bug2 3模块为11 未发生变化 +r($bug->batchChangeModuleTest($bugIDList4, $moduleList[4], $bugIDList4[1])) && p() && e('0'); // 修改bug2 3模块为11 未发生变化 \ No newline at end of file