* Refactor getProjectPairsByProduct method and case.

This commit is contained in:
tianshujie
2023-09-18 15:53:00 +08:00
parent 642849b9be
commit 1269e6739e
2 changed files with 16 additions and 13 deletions
+3 -4
View File
@@ -828,14 +828,13 @@ class productModel extends model
$appendProject = $this->productTao->formatAppendParam($appendProject);
return $this->dao->select('t2.id, t2.name')->from(TABLE_PROJECTPRODUCT)->alias('t1')
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
->where('(1=1')
->andWhere('t1.product')->eq($productID)
->where('(t1.product')->eq($productID)
->andWhere('t2.type')->eq('project')
->andWhere('t2.deleted')->eq('0')
->beginIF($status == 'noclosed')->andWhere('t2.status')->ne('closed')->fi()
->beginIF(strpos($param, 'multiple') !== false)->andWhere('t2.multiple')->ne('0')->fi()
->andWhere('t2.type')->eq('project')
->beginIF(!$this->app->user->admin)->andWhere('t2.id')->in($this->app->user->view->projects)->fi()
->beginIF($product->type != 'normal' and $branch !== '' and $branch != 'all')->andWhere('t1.branch')->in($branch)->fi()
->andWhere('t2.deleted')->eq('0')
->markRight(1)
->beginIF($appendProject)->orWhere('t2.id')->in($appendProject)->fi()
->orderBy('order_asc')
@@ -3,6 +3,9 @@
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/product.class.php';
zdTable('user')->gen(5);
su('admin');
$product = zdTable('product');
$product->type->range('normal{2},branch,normal{2}');
$product->gen(5);
@@ -10,6 +13,7 @@ $product->gen(5);
$project = zdTable('project');
$project->status->range('wait{2},doing{4},suspended,closed');
$project->multiple->range('0{25},1{25}');
$project->deleted->range('0');
$project->gen(50);
$projectproduct = zdTable('projectproduct');
@@ -21,8 +25,8 @@ $projectproduct->gen(50);
/**
title=测试productModel->getProjectPairsByProduct();
timeout=0
cid=1
pid=1
*/
@@ -33,17 +37,17 @@ $product->app->user->admin = true;
r($product->getProjectPairsByProduct(0)) && p() && e('0'); //不传入产品 ID。
r($product->getProjectPairsByProduct(10)) && p() && e('0'); //传入不存在产品 ID。
r(count($product->getProjectPairsByProduct(4))) && p() && e('12'); //用超级管理员,传入产品 ID,确认获取条目数。
r(count($product->getProjectPairsByProduct(4, '', '', 'noclosed'))) && p() && e('6'); //用超级管理员,传入产品 ID,确认获取非关闭项目的条目数。
r(count($product->getProjectPairsByProduct(4, '', '18', 'noclosed'))) && p() && e('7'); //用超级管理员,传入产品 ID 和追加查询的项目,确认获取非关闭项目的条目数。
r(count($product->getProjectPairsByProduct(4, '', '', 'noclosed', 'multiple'))) && p() && e('3'); //用超级管理员,传入产品 ID,确认获取启用执行非关闭项目的条目数。
r(count($product->getProjectPairsByProduct(3, 'all'))) && p() && e('12'); //用超级管理员,传入产品 ID 和所有分支,确认获取条目数。
r(count($product->getProjectPairsByProduct(3, '1'))) && p() && e('12'); //用超级管理员,传入产品 ID 和存在分支,确认获取条目数。
r(count($product->getProjectPairsByProduct(3, '2'))) && p() && e('0'); //用超级管理员,传入产品 ID 和不存在分支,确认获取条目数。
r(count($product->getProjectPairsByProduct(4))) && p() && e('10'); // 用超级管理员,传入产品 ID,确认获取条目数。
r(count($product->getProjectPairsByProduct(4, '', '', 'noclosed'))) && p() && e('10'); // 用超级管理员,传入产品 ID,确认获取非关闭项目的条目数。
r(count($product->getProjectPairsByProduct(4, '', '18', 'noclosed'))) && p() && e('10'); // 用超级管理员,传入产品 ID 和追加查询的项目,确认获取非关闭项目的条目数。
r(count($product->getProjectPairsByProduct(4, '', '', 'noclosed', 'multiple'))) && p() && e('7'); // 用超级管理员,传入产品 ID,确认获取启用执行非关闭项目的条目数。
r(count($product->getProjectPairsByProduct(3, 'all'))) && p() && e('10'); // 用超级管理员,传入产品 ID 和所有分支,确认获取条目数。
r(count($product->getProjectPairsByProduct(3, '1'))) && p() && e('10'); // 用超级管理员,传入产品 ID 和存在分支,确认获取条目数。
r(count($product->getProjectPairsByProduct(3, '2'))) && p() && e('0'); // 用超级管理员,传入产品 ID 和不存在分支,确认获取条目数。
$product->app->user->admin = false;
$product->app->user->view->projects = '14,38,46,58';
r(count($product->getProjectPairsByProduct(4))) && p() && e('4'); //用超级管理员,传入产品 ID,确认获取条目数。
r(count($product->getProjectPairsByProduct(4))) && p() && e('3'); //用超级管理员,传入产品 ID,确认获取条目数。
r(count($product->getProjectPairsByProduct(4, '', '', 'noclosed'))) && p() && e('3'); //用超级管理员,传入产品 ID,确认获取非关闭项目的条目数。
r(count($product->getProjectPairsByProduct(4, '', '18', 'noclosed'))) && p() && e('4'); //用超级管理员,传入产品 ID 和追加查询的项目,确认获取非关闭项目的条目数。
r(count($product->getProjectPairsByProduct(4, '', '', 'noclosed', 'multiple'))) && p() && e('2'); //用超级管理员,传入产品 ID,确认获取启用执行非关闭项目的条目数。