* Bug batchChangeModule

This commit is contained in:
zenggang
2023-05-19 06:51:51 +00:00
parent 46bb3f0257
commit ff1eee82b9
4 changed files with 149 additions and 54 deletions
+11 -15
View File
@@ -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');
+17 -9
View File
@@ -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;
}
/**
+8 -3
View File
@@ -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;
}
}
}
+113 -27
View File
@@ -2,41 +2,127 @@
<?php
include dirname(__FILE__, 5) . "/test/lib/init.php";
include dirname(__FILE__, 2) . '/bug.class.php';
su('admin');
su('user1');
/**
title=测试bugModel->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 未发生变化