Merge branch 'sprint/243_liugang_optimize' into 'zentaopms_239'

* Optimize.

See merge request easycorp/zentaopms!5440
This commit is contained in:
刘刚
2022-09-21 01:57:01 +00:00
+22 -16
View File
@@ -236,10 +236,14 @@ class productModel extends model
$product = $this->dao->findById($productID)->from(TABLE_PRODUCT)->fetch();
if(!$product) return false;
if($product->shadow) $product->name = $this->dao->select('t2.name')->from(TABLE_PROJECTPRODUCT)->alias('t1')
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project=t2.id')
->where('t1.product')->eq($productID)
->fetch('name');
if($product->shadow)
{
$projectName = $this->dao->select('t2.name')->from(TABLE_PROJECTPRODUCT)->alias('t1')
->leftJoin(TABLE_PROJECT)->alias('t2')->on("t1.project = t2.id AND t2.type = 'project'")
->where('t1.product')->eq($productID)
->fetch('name');
if($projectName) $product->name = $projectName;
}
return $this->loadModel('file')->replaceImgURL($product, 'desc');
}
@@ -263,17 +267,16 @@ class productModel extends model
* @param string $status
* @param int $limit
* @param int $line
* @param string $type all|normal|shadow
* @param string $shadow all | 0 | 1
* @access public
* @return array
*/
public function getList($programID = 0, $status = 'all', $limit = 0, $line = 0, $type = 'normal')
public function getList($programID = 0, $status = 'all', $limit = 0, $line = 0, $shadow = 0)
{
$products = $this->dao->select('t1.*')->from(TABLE_PRODUCT)->alias('t1')
->leftJoin(TABLE_PROGRAM)->alias('t2')->on('t1.program = t2.id')
->where('t1.deleted')->eq(0)
->beginIF($type == 'normal')->andWhere('t1.shadow')->eq(0)->fi()
->beginIF($type == 'shadow')->andWhere('t1.shadow')->eq(1)->fi()
->beginIF($shadow != 'all')->andWhere('t1.shadow')->eq((int)$shadow)->fi()
->beginIF($programID)->andWhere('t1.program')->eq($programID)->fi()
->beginIF($line > 0)->andWhere('t1.line')->eq($line)->fi()
->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->products)->fi()
@@ -295,7 +298,7 @@ class productModel extends model
->beginIF($limit > 0)->limit($limit)->fi()
->fetchAll('id');
if($type == 'all')
if($shadow == 'all')
{
$shadowProducts = array();
foreach($products as $product)
@@ -304,14 +307,17 @@ class productModel extends model
}
if($shadowProducts)
{
$shadowProducts = $this->dao->select('t1.id,t3.name')->from(TABLE_PRODUCT)->alias('t1')
->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.id=t2.product')
->leftJoin(TABLE_PROJECT)->alias('t3')->on('t2.project=t3.id')
$shadowProducts = $this->dao->select('t1.id, t3.name')->from(TABLE_PRODUCT)->alias('t1')
->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.id = t2.product')
->leftJoin(TABLE_PROJECT)->alias('t3')->on("t2.project = t3.id AND t3.type = 'project'")
->where('t1.id')->in($shadowProducts)
->andWhere('t3.deleted')->eq('0')
->andWhere('t3.type')->eq('project')
->fetchPairs();
foreach($shadowProducts as $id => $name) $products[$id]->name = $name;
foreach($shadowProducts as $id => $name)
{
if(isset($products[$id])) $products[$id]->name = $name;
}
}
}
@@ -553,11 +559,11 @@ class productModel extends model
* @param string $status
* @param int $num
* @param int $projectID
* @param string $type all|normal|shadow
* @param mixed $shadow all | 0 | 1
* @access public
* @return array
*/
public function getOrderedProducts($status, $num = 0, $projectID = 0, $type = 'normal')
public function getOrderedProducts($status, $num = 0, $projectID = 0, $shadow = 0)
{
$products = array();
if($projectID)
@@ -567,7 +573,7 @@ class productModel extends model
}
else
{
$products = $this->getList('', $status, $num, 0, $type);
$products = $this->getList('', $status, $num, 0, $shadow);
}
if(empty($products)) return $products;