首页加载速度慢方法调整

This commit is contained in:
chengxl
2025-04-02 17:24:14 +08:00
parent 0f6b00631a
commit 0543e421ec

View File

@@ -513,54 +513,114 @@ class Ucenter extends Base{
}
// private function getAsAuthorNew($userId){
// $user_info = $this->user_obj->where("user_id",$userId)->find();
// $flag = [];
// //推荐总数
// if($user_info['code']!=''){
// $tj_num = $this->article_obj->where("code",$user_info['code'])->count();
// }else{
// $tj_num = 0 ;
// }
// $flag['tj'] = $tj_num;
// //获取作为提交者的文章
// $ids1 = $this->article_obj->where("t_article.user_id",$userId)->column("article_id");
// //获取作为作者的文章
// $ids2 = $this->article_author_obj->where("email",$user_info['email'])->where("state",0)->column("article_id");
// $ids = array_unique(array_merge($ids1,$ids2));
// $articles = $this->article_obj
// ->field("t_article.*,t_journal.title as journal_title,t_journal.abbr")
// ->join("t_journal","t_journal.journal_id = t_article.journal_id","left")
// ->whereIn("t_article.article_id",$ids)
// ->select();
// foreach ($articles as $k => $v){
// $role = [];
// if($v['user_id'] == $user_info['user_id']){
// $role[] = "user";
// }
// $author_check = $this->article_author_obj->where("email",$user_info['email'])->where("article_id",$v['article_id'])->where("state",0)->find();
// if($author_check){
// $role[] = "author";
// }
// $articles[$k]['role'] = $role;
// if($v['state']==5){
// $check = $this->production_article_obj->where("article_id",$v['article_id'])->where("state",2)->find();
// if($check){
// $articles[$k]['link'] = "https://doi.org/10.53388/".$check['doi'];
// }
// }
// }
// $flag['articles'] = $articles;
// return $flag;
// }
private function getAsAuthorNew($userId){
$user_info = $this->user_obj->where("user_id",$userId)->find();
$flag = [];
//推荐总数
$tj_num = 0 ;
if($user_info['code']!=''){
$tj_num = $this->article_obj->where("code",$user_info['code'])->count();
}else{
$tj_num = 0 ;
}
$flag['tj'] = $tj_num;
//获取作为提交者的文章
$ids1 = $this->article_obj->where("t_article.user_id",$userId)->column("article_id");
//获取作为作者的文章
$ids2 = $this->article_author_obj->where("email",$user_info['email'])->where("state",0)->column("article_id");
//文章ID合并
$ids = array_unique(array_merge($ids1,$ids2));
$articles = $this->article_obj
$flag['articles'] = [];
if(empty($ids)){
return $flag;
}
//查询文章信息
$aArticle = $aAuthor = $aProductionArticle = [];
$aChunksId = array_chunk($ids, 1000);
foreach ($aChunksId as $value) {
$articles = $this->article_obj
->field("t_article.*,t_journal.title as journal_title,t_journal.abbr")
->join("t_journal","t_journal.journal_id = t_article.journal_id","left")
->whereIn("t_article.article_id",$ids)
->whereIn("article_id",$value)
->select();
if(!empty($articles)){
//查询生产文章主表
$aArticleId = array_column($articles, 'article_id');
$aProductionArticleInfo = $this->production_article_obj->field('article_id,doi')->whereIn("article_id",$aArticleId)->where("state",2)->column('doi','article_id');
if(!empty($aProductionArticleInfo)){
$aProductionArticle = array_merge($aProductionArticle,$aProductionArticleInfo);
}
}
$aArticle = array_merge($aArticle,$articles);
}
foreach ($articles as $k => $v){
//数据处理
foreach ($aArticle as $k => $v){
$role = [];
if($v['user_id'] == $user_info['user_id']){
$role[] = "user";
}
$author_check = $this->article_author_obj->where("email",$user_info['email'])->where("article_id",$v['article_id'])->where("state",0)->find();
if($author_check){
if(!empty($ids2) && in_array($v['article_id'], $ids2)){
$role[] = "author";
}
$articles[$k]['role'] = $role;
if($v['state']==5){
$check = $this->production_article_obj->where("article_id",$v['article_id'])->where("state",2)->find();
if($check){
$articles[$k]['link'] = "https://doi.org/10.53388/".$check['doi'];
}
if($v['state']==5 && !empty($aProductionArticle[$v['article_id']])){
$articles[$k]['link'] = empty($aProductionArticle[$v['article_id']]) ? '' : "https://doi.org/10.53388/".$aProductionArticle[$v['article_id']];
}
}
$flag['articles'] = $articles;
return $flag;
}
public function getMajor(){
$data = $this->request->post();
$rule = new Validate([