* Refector productModel getProjectPairsByProductIdList.

This commit is contained in:
wangyidong
2023-05-16 16:45:24 +08:00
parent 163eae0a55
commit b82bb919bc
2 changed files with 51 additions and 12 deletions
+9 -12
View File
@@ -925,22 +925,19 @@ class productModel extends model
* Get project pairs by product.
*
* @param array $productIdList
* @param int $branch
* @param int $appendProject
* @param string $status all|closed|unclosed
* @access public
* @return array
*/
public function getProjectPairsByProductIdList(array $productIdList, int $branch = 0, int $appendProject = 0, string $status = ''): array
public function getProjectPairsByProductIdList(array $productIdList): array
{
$projectPairs = array();
foreach($productIdList as $productID)
{
$projects = $this->getProjectPairsByProduct($productID, $branch, $appendProject, $status);
$projectPairs = $projectPairs + $projects;
}
return $projectPairs;
return $this->dao->select('t2.id, t2.name')->from(TABLE_PROJECTPRODUCT)->alias('t1')
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
->where('t1.product')->in($productIdList)
->andWhere('t2.type')->eq('project')
->beginIF(!$this->app->user->admin)->andWhere('t2.id')->in($this->app->user->view->projects)->fi()
->andWhere('t2.deleted')->eq('0')
->orderBy('t1.product,order_asc')
->fetchPairs('id', 'name');
}
/**
@@ -0,0 +1,42 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . "/test/lib/init.php";
include dirname(__FILE__, 2) . '/product.class.php';
$product = zdTable('product');
$product->type->range('normal{2},branch,normal{2}');
$product->gen(5);
$project = zdTable('project');
$project->status->range('wait{2},doing{4},suspended,closed');
$project->multiple->range('0{25},1{25}');
$project->gen(50);
$projectproduct = zdTable('projectproduct');
$projectproduct->product->range('1-4');
$projectproduct->project->range('11-70');
$projectproduct->branch->range('0{2},1,0');
$projectproduct->gen(50);
/**
title=测试productTao->getProjectPairsByProductIdList();
cid=1
pid=1
*/
global $tester;
$product = $tester->loadModel('product');
$product->app->user->admin = true;
r($product->getProjectPairsByProductIdList(array())) && p() && e('0'); //不传入产品 ID。
r(count($product->getProjectPairsByProductIdList(array(4)))) && p() && e('12'); //用超级管理员账号,传入单个产品数组,确认获取条目数。
r(count($product->getProjectPairsByProductIdList(array(3, 4)))) && p() && e('24'); //用超级管理员账号,传入多个产品数组,确认获取条目数。
r(count($product->getProjectPairsByProductIdList(array(4, 10)))) && p() && e('12'); //用超级管理员账号,传入产品数组中含有不存在的产品,确认获取条目数。
$product->app->user->admin = false;
$product->app->user->view->projects = '14,38,46,58';
r(count($product->getProjectPairsByProductIdList(array(4)))) && p() && e('4'); //不用超级管理员账号,传入单个产品数组,确认获取条目数。
r(count($product->getProjectPairsByProductIdList(array(3, 4)))) && p() && e('4'); //不用超级管理员账号,传入多个产品数组,确认获取条目数。
r(count($product->getProjectPairsByProductIdList(array(4, 10)))) && p() && e('4'); //不用超级管理员账号,传入产品数组中含有不存在的产品,确认获取条目数。