From 269b4232351b9c30b78753110e2f5ec3dffd10dc Mon Sep 17 00:00:00 2001 From: liugang Date: Wed, 16 Aug 2023 17:24:54 +0800 Subject: [PATCH] * testcaseModel: filter the cases of scenes with project in session, case type, modules and showAutoCase. --- module/testcase/control.php | 2 +- module/testcase/model.php | 26 ++++++++++++++++++-------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/module/testcase/control.php b/module/testcase/control.php index 51880fc165..45e6d426d3 100644 --- a/module/testcase/control.php +++ b/module/testcase/control.php @@ -154,7 +154,7 @@ class testcase extends control { $pager->pageID = $pageID; // 场景和用例混排,$pageID 可能大于场景分页后的总页数。在 pager 构造函数中会被设为 1,这里要重新赋值。 - $scenes = $this->testcase->getSceneGroups($productID, $branch, $moduleID, $sort, $pager); // 获取包含子场景和用例的顶级场景树。 + $scenes = $this->testcase->getSceneGroups($productID, $branch, $moduleID, $caseType, $sort, $pager); // 获取包含子场景和用例的顶级场景树。 if(!$this->cookie->onlyScene) { diff --git a/module/testcase/model.php b/module/testcase/model.php index 030837e45e..9ba4fb5584 100644 --- a/module/testcase/model.php +++ b/module/testcase/model.php @@ -3274,18 +3274,20 @@ class testcaseModel extends model * @param int $productID * @param int $branch * @param int $moduleID + * @param string $caseType * @param string $orderBy * @param object $pager * @access public * @return array */ - public function getSceneGroups($productID, $branch = 0, $moduleID = 0, $orderBy = 'id_desc', $pager = null) + public function getSceneGroups($productID, $branch = 0, $moduleID = 0, $caseType = '', $orderBy = 'id_desc', $pager = null) { + $modules = $moduleID ? $this->loadModel('tree')->getAllChildId($moduleID) : '0'; $scenes = $this->dao->select('*')->from(TABLE_SCENE) ->where('deleted')->eq('0') ->andWhere('product')->eq($productID) ->beginIF($branch !== 'all')->andWhere('branch')->eq($branch)->fi() - ->beginIF($moduleID)->andWhere('module')->eq($moduleID)->fi() + ->beginIF($modules)->andWhere('module')->in($modules)->fi() ->orderBy('grade_desc, sort_asc') ->fetchAll('id'); @@ -3296,14 +3298,22 @@ class testcaseModel extends model $cases = array(); if($scenes && !$this->cookie->onlyScene) { - $caseList = $this->dao->select('*')->from(TABLE_CASE) - ->where('deleted')->eq('0') - ->andWhere('scene')->ne(0) - ->andWhere('product')->eq($productID) - ->beginIF($branch !== 'all')->andWhere('branch')->eq($branch)->fi() - ->beginIF($moduleID)->andWhere('module')->eq($moduleID)->fi() + $stmt = $this->dao->select('t1.*')->from(TABLE_CASE)->alias('t1'); + + if($this->app->tab == 'project') $stmt = $stmt->leftJoin(TABLE_PROJECTCASE)->alias('t2')->on('t1.id=t2.case'); + + $caseList = $stmt->where('t1.deleted')->eq('0') + ->andWhere('t1.scene')->ne(0) + ->andWhere('t1.product')->eq($productID) + ->beginIF($this->app->tab == 'project')->andWhere('t2.project')->eq($this->session->project)->fi() + ->beginIF($branch !== 'all')->andWhere('t1.branch')->eq($branch)->fi() + ->beginIF($modules)->andWhere('t1.module')->in($modules)->fi() + ->beginIF($this->cookie->showAutoCase)->andWhere('t1.auto')->ne('unit')->fi() + ->beginIF(!$this->cookie->showAutoCase)->andWhere('t1.auto')->notIN('unit,auto')->fi() + ->beginIF($caseType)->andWhere('t1.type')->eq($caseType)->fi() ->orderBy($orderBy) ->fetchAll('id'); + $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'testcase', false); $caseList = $this->loadModel('story')->checkNeedConfirm($caseList); $caseList = $this->appendData($caseList);