This commit is contained in:
wangjinlei
2023-09-22 10:50:18 +08:00
parent 9a6f419c9a
commit 54d7c0d69f
5 changed files with 167 additions and 1 deletions

View File

@@ -20,7 +20,12 @@ class Monitor extends Base
public function getJournalBoards(){
$journals = $this->journal_obj->where('state',0)->select();
foreach ($journals as $k => $v){
$boards = $this->board_to_journal_obj->field("t_board_to_journal.*,t_user.google_index,t_user.google_time,t_user.wos_index,t_user.wos_time")->join("t_user","t_user.user_id = t_board_to_journal.user_id","left")->where("t_board_to_journal.journal_id",$v['journal_id'])->where('t_board_to_journal.state',0)->select();
$boards = $this->board_to_journal_obj
->field("t_board_to_journal.*,t_user.google_index,t_user.google_time,t_user.wos_index,t_user.wos_time")
->join("t_user","t_user.user_id = t_board_to_journal.user_id","left")
->where("t_board_to_journal.journal_id",$v['journal_id'])
->where('t_board_to_journal.state',0)
->select();
$ca_board = $this->getBoardsForJournal($v['journal_id']);
$journals[$k]["boards"] = $ca_board;
$journals[$k]['boards_count'] = count($boards);
@@ -61,4 +66,91 @@ class Monitor extends Base
return jsonSuccess($re);
}
/**获取期刊青年编委
* @return void
*/
public function getYboards(){
$data = $this->request->post();
$rule = new Validate([
"journal_id"=>"require",
'pageIndex'=>'require',
'pageSize'=>'require'
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$yboards = $this->user_to_yboard_obj
->field("t_user.account,t_user.realname,t_user.email,t_user.score,t_user.remark,t_user.wos_index,t_user.wos_time,t_user.google_index,t_user.google_time,t_user_reviewer_info.field,t_user_reviewer_info.company,t_user_to_yboard.*")
->join("t_user",'t_user.user_id = t_user_to_yboard.user_id','left')
->join("t_user_reviewer_info",'t_user_reviewer_info.reviewer_id = t_user_to_yboard.user_id','left')
->where("t_user_to_yboard.journal_id",$data['journal_id'])
->where("t_user_to_yboard.start_date","<=",time())
->where("t_user_to_yboard.end_date",">=",time())
->where("t_user_to_yboard.state",0)
->page($data['pageIndex'],$data['pageSize'])
->select();
$count = $this->user_to_yboard_obj
->join("t_user",'t_user.user_id = t_user_to_yboard.user_id','left')
->join("t_user_reviewer_info",'t_user_reviewer_info.reviewer_id = t_user_to_yboard.user_id','left')
->where("t_user_to_yboard.journal_id",$data['journal_id'])
->where("t_user_to_yboard.start_date","<=",time())
->where("t_user_to_yboard.end_date",">=",time())
->where("t_user_to_yboard.state",0)->count();
foreach($yboards as $k=>$val){
$article1 = $this->article_obj->where('user_id',$val['user_id'])->where('journal_id',$val['journal_id'])->where('state',5)->where('ctime',">",strtotime("-1 year"))->select();
$article11 = $this->article_obj->where('user_id',$val['user_id'])->where('journal_id',$val['journal_id'])->where('ctime',">",strtotime("-1 year"))->select();
$ids = $this->article_author_obj->where('email',$val['email'])->column("article_id");
$article2 = $this->article_obj->where('state',5)->where('journal_id',$val['journal_id'])->where('article_id',"in",$ids)->select();
$article22 = $this->article_obj->where('journal_id',$val['journal_id'])->where('article_id',"in",$ids)->select();
$articles = my_array_merge($article1,$article2);
$articles_all = my_array_merge($article11,$article22);
$reviewes = $this->article_reviewer_obj->join("t_article","t_article.article_id = t_article_reviewer.article_id","left")->where('t_article_reviewer.reviewer_id',$val['user_id'])->where('t_article.journal_id',$data['journal_id'])->where('t_article_reviewer.ctime',">",strtotime("-1 year"))->where('t_article_reviewer.state',"in",[1,2,3])->select();
$yboards[$k]['articles'] = $articles;
$yboards[$k]['articles_all'] = $articles_all;
$yboards[$k]['reviewes'] = $reviewes;
}
$re['yboards'] = $yboards;
$re['count'] = $count;
return jsonSuccess($re);
}
/**获取期刊青年科学家列表
* @return void
*/
public function getJournalYBoards(){
$journals = $this->journal_obj->where('state',0)->select();
foreach ($journals as $k => $v){
$yboards = $this->user_to_yboard_obj
->field("t_user.account,t_user.realname,t_user.email,t_user.score,t_user.remark,t_user.wos_index,t_user.wos_time,t_user.google_index,t_user.google_time,t_user_reviewer_info.field,t_user_reviewer_info.company,t_user_to_yboard.*")
->join("t_user",'t_user.user_id = t_user_to_yboard.user_id','left')
->join("t_user_reviewer_info",'t_user_reviewer_info.reviewer_id = t_user_to_yboard.user_id','left')
->where("t_user_to_yboard.journal_id",$v['journal_id'])
->where("t_user_to_yboard.start_date","<=",time())
->where("t_user_to_yboard.end_date",">=",time())
->where("t_user_to_yboard.state",0)
->select();
$journals[$k]['yboard_count'] = count($yboards);
$board_index = [];
$sum = 0;
foreach ($yboards as $key => $val){
if($val['wos_index']>0){
$board_index[] = $val['wos_index']*1.5;
$sum += $val['wos_index']*1.5;
}elseif($val['google_index']>0){
$board_index[] = $val['google_index'];
$sum += $val['google_index'];
}
}
$journals[$k]['index_num'] = count($board_index);
$journals[$k]['median'] = count($board_index)==0?0:zw_array($board_index);
$journals[$k]['avg'] = count($board_index)==0?0:round($sum/count($board_index),2);
}
$re['journals'] = $journals;
return jsonSuccess($re);
}
}