* Performance for product list.

This commit is contained in:
zhujinyong
2023-06-12 16:30:09 +08:00
parent 4aea7b6a39
commit 2f9ca0e6d6
6 changed files with 160 additions and 228 deletions
-49
View File
@@ -629,55 +629,6 @@ class programModel extends model
->fetchAll();
}
/**
* Get program and project progress list.
*
* @param array $programIdList
* @access public
* @return array
*/
public function getProgressList($programIdList = array())
{
$programPairs = $this->getPairs();
$existProgramIdList = array_intersect($programIdList, array_keys($programPairs));
$projectStats = $this->getProjectStats(0, 'all', 0, 'id_desc', null, 0, 0, true);
$totalProgress = array();
$projectCount = array();
$userPRJCount = array();
$progressList = array();
foreach($existProgramIdList as $programID)
{
$totalProgress[$programID] = 0;
$projectCount[$programID] = 0;
$userPRJCount[$programID] = 0;
$progressList[$programID] = 0;
foreach($projectStats as $projectID => $project)
{
if(strpos($projectStats[$projectID]->path, ",{$programID},") === false) continue;
/* The number of projects under this program that the user can view. */
if(strpos(",{$this->app->user->view->projects},", ",{$projectID},") !== false) $userPRJCount[$programID] ++;
$totalProgress[$programID] += $projectStats[$projectID]->progress;
$projectCount[$programID] ++;
}
if(empty($projectCount[$programID])) continue;
$progressList[$programID] = round($totalProgress[$programID] / $projectCount[$programID]);
}
/* Add project progress. */
/* First calculate the overall progress of the program, and then filter the unqualified projects. */
$existProjectIdList = array_intersect($programIdList, array_keys($projectStats));
foreach($existProjectIdList as $projectID) $progressList[$projectID] = $projectStats[$projectID]->progress;
return $progressList;
}
/**
* Create a program.
*