This commit is contained in:
wangjinlei
2025-07-21 10:41:58 +08:00
parent 93a9614a0f
commit bab491bef8
4 changed files with 132 additions and 67 deletions

View File

@@ -168,7 +168,7 @@ class Article extends Controller {
// $stack = [];
// }
grabCiteFromCrossref($data['article_id']);
// grabCiteFromCrossref($data['article_id']);
$re["track"] = $stack;
return jsonSuccess($re);
@@ -178,7 +178,7 @@ class Article extends Controller {
public function mmmm(){
grabCiteFromCrossref(3244);
grabCiteFromCrossref(400);
}
@@ -552,7 +552,7 @@ class Article extends Controller {
->where('j_journal_stage.is_publish', 1)
->where('j_journal_stage.stage_year', '>=', '2019')
->count();
$re['articleList'] = strongArticleList($list);
$re['articleList'] = strongArticleList($list,false);
$re['count'] = $count;
return jsonSuccess($re);
}

View File

@@ -704,40 +704,60 @@ class Journal extends Controller {
$journal_info = $this->journal_obj->where('journal_id', $data['journal_id'])->find();
$limit_start = ($data['pageIndex'] - 1) * $data['pageSize'];
if($journal_info['cycle']==0){
if($journal_info['cycle']==0){//连续出刊的标志是0
$stage = $this->journal_stage_obj->where("journal_id",$data['journal_id'])->where("stage_year",date("Y"))->where("state",0)->find();
$list = $this->article_obj
->field('j_article.*,j_journal_stage.*')
$query = $this->article_obj
->field("j_article.article_id,j_article.journal_id,j_article.npp,j_article.doi,j_article.journal_stage_id,j_article.title,j_article.icon,j_article.abbr,j_journal_stage.stage_year")
->join('j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
->where("j_article.journal_id",$journal_info["journal_id"])
->where("j_article.lx_online",0)
->where("j_journal_stage.journal_stage_id",$stage['journal_stage_id'])
->limit($limit_start,$data['pageSize'])
->select();
$count = $this->article_obj
->join('j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
->where("j_article.journal_id",$journal_info["journal_id"])
->where("j_article.lx_online",0)
->where("j_journal_stage.journal_stage_id",$stage['journal_stage_id'])
->count();
return json(['code' => 0, 'msg' => 'success', 'data' => ['articlelist' => strongArticleList($list), 'count' => $count]]);
->where("j_journal_stage.journal_stage_id",$stage['journal_stage_id']);
$list = $query->limit($limit_start,$data['pageSize'])->select();
$count = $query->count();
// $list = $this->article_obj
//// ->field('j_article.*,j_journal_stage.*')
// ->field("j_article.article_id,j_article.title,j_article.icon,j_article.abbr,j_journal_stage.stage_year")
// ->join('j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
// ->where("j_article.journal_id",$journal_info["journal_id"])
// ->where("j_article.lx_online",0)
// ->where("j_journal_stage.journal_stage_id",$stage['journal_stage_id'])
// ->limit($limit_start,$data['pageSize'])
// ->select();
// $count = $this->article_obj
// ->join('j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
// ->where("j_article.journal_id",$journal_info["journal_id"])
// ->where("j_article.lx_online",0)
// ->where("j_journal_stage.journal_stage_id",$stage['journal_stage_id'])
// ->count();
return json(['code' => 0, 'msg' => 'success', 'data' => ['articlelist' => $list, 'count' => $count]]);
}else{
$stages = $this->journal_stage_obj->where('journal_id', $data['journal_id'])->where('is_publish', 0)->where('state', 0)->column('journal_stage_id');
$list = $this->article_obj
->field('j_article.*,j_journal_stage.*')
$query = $this->article_obj
->field("j_article.article_id,j_article.journal_id,j_article.npp,j_article.doi,j_article.journal_stage_id,j_article.title,j_article.icon,j_article.abbr,j_journal_stage.stage_year")
->join('j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
->where('j_article.journal_stage_id', 'in', $stages)
->where('j_article.state', 0)
->where('j_article.is_public',1)
->order('j_journal_stage.stage_year desc,j_article.sort desc')
->limit($limit_start, $data['pageSize'])
->select();
$count = $this->article_obj
->join('j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
->where('j_article.journal_stage_id', 'in', $stages)
->where('j_article.state', 0)
->count();
return json(['code' => 0, 'msg' => 'success', 'data' => ['articlelist' => strongArticleList($list), 'count' => $count]]);
->order('j_journal_stage.stage_year desc,j_article.sort desc');
$list = $query->limit($limit_start, $data['pageSize'])->select();
$count = $query->count();
// $list = $this->article_obj
//// ->field('j_article.*,j_journal_stage.*')
// ->field("j_article.article_id,j_article.title,j_article.icon,j_article.abbr,j_journal_stage.stage_year")
// ->join('j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
// ->where('j_article.journal_stage_id', 'in', $stages)
// ->where('j_article.state', 0)
// ->where('j_article.is_public',1)
// ->order('j_journal_stage.stage_year desc,j_article.sort desc')
// ->limit($limit_start, $data['pageSize'])
// ->select();
// $count = $this->article_obj
// ->join('j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
// ->where('j_article.journal_stage_id', 'in', $stages)
// ->where('j_article.state', 0)
// ->count();
return json(['code' => 0, 'msg' => 'success', 'data' => ['articlelist' => $list, 'count' => $count]]);
}
}
@@ -770,7 +790,7 @@ class Journal extends Controller {
->order('j_journal_stage.stage_year desc,j_journal_stage.stage_vol desc,j_journal_stage.stage_no desc,j_article.article_id desc')
->limit(4)
->select();
return json(['code' => 0, 'msg' => 'success', 'data' => ['articlelist' => strongArticleList($list)]]);
return json(['code' => 0, 'msg' => 'success', 'data' => ['articlelist' => strongArticleList($list,false)]]);
}
@@ -886,8 +906,9 @@ class Journal extends Controller {
}
$limit_start = ($data['pageIndex'] - 1) * $data['pageSize'];
if($data['journal_id']==1){
$list = $this->article_obj
->field("j_article.*,count(j_article_cite.article_id) as cited_num")
$query = $this->article_obj
->field("j_article.article_id,j_article.journal_id,j_article.npp,j_article.doi,j_article.journal_stage_id,j_article.title,j_article.icon,j_article.abbr,count(j_article_cite.article_id) as cited_num")
->join("j_journal_stage",'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
->join("j_article_cite","j_article_cite.article_id = j_article.article_id","left")
->where('j_article.journal_id', $data['journal_id'])
@@ -897,42 +918,72 @@ class Journal extends Controller {
->where('j_journal_stage.is_publish', 1)
->group("j_article.article_id")
->having("count(j_article_cite.article_cite_id) > 3")
->order("cited_num desc")
->limit($limit_start,$data['pageSize'])
->select();
$count = $this->article_obj
->join("j_journal_stage",'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
->join("j_article_cite","j_article_cite.article_id = j_article.article_id","left")
->where('j_article.journal_id', $data['journal_id'])
->where('j_article.state', 0)
->where("j_journal_stage.stage_year",">",date("Y")-6)
->where("j_article_cite.is_wos",1)
->where('j_journal_stage.is_publish', 1)
->group("j_article.article_id")
->having("count(j_article_cite.article_cite_id) > 3")
->count();
->order("cited_num desc");
$list = $query->limit($limit_start,$data['pageSize'])->select();
$count = $query->count();
// $list = $this->article_obj
// ->field("j_article.*,count(j_article_cite.article_id) as cited_num")
// ->join("j_journal_stage",'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
// ->join("j_article_cite","j_article_cite.article_id = j_article.article_id","left")
// ->where('j_article.journal_id', $data['journal_id'])
// ->where('j_article.state', 0)
// ->where("j_journal_stage.stage_year",">",date("Y")-6)
// ->where("j_article_cite.is_wos",1)
// ->where('j_journal_stage.is_publish', 1)
// ->group("j_article.article_id")
// ->having("count(j_article_cite.article_cite_id) > 3")
// ->order("cited_num desc")
// ->limit($limit_start,$data['pageSize'])
// ->select();
// $count = $this->article_obj
// ->join("j_journal_stage",'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
// ->join("j_article_cite","j_article_cite.article_id = j_article.article_id","left")
// ->where('j_article.journal_id', $data['journal_id'])
// ->where('j_article.state', 0)
// ->where("j_journal_stage.stage_year",">",date("Y")-6)
// ->where("j_article_cite.is_wos",1)
// ->where('j_journal_stage.is_publish', 1)
// ->group("j_article.article_id")
// ->having("count(j_article_cite.article_cite_id) > 3")
// ->count();
}else{
$list = $this->article_obj
$query = $this->article_obj
->field("j_article.article_id,j_article.journal_id,j_article.npp,j_article.doi,j_article.journal_stage_id,j_article.title,j_article.icon,j_article.abbr")
->join("j_journal_stage","j_journal_stage.journal_stage_id = j_article.journal_stage_id","left")
->where('j_article.journal_id', $data['journal_id'])
->where('j_article.state', 0)
->where("j_journal_stage.stage_year",">",date("Y")-6)
->where('j_journal_stage.is_publish', 1)
->orderRaw("(j_article.abs_num + j_article.pdf_num + j_article.html_num) desc")
->limit($limit_start,$data['pageSize'])
->select();
$count = $this->article_obj
->join("j_journal_stage","j_journal_stage.journal_stage_id = j_article.journal_stage_id","left")
->where('j_article.journal_id', $data['journal_id'])
->where('j_article.state', 0)
->where("j_journal_stage.stage_year",">",date("Y")-6)
->where('j_journal_stage.is_publish', 1)
->count();
->orderRaw("(j_article.abs_num + j_article.pdf_num + j_article.html_num) desc");
$list = $query->limit($limit_start,$data['pageSize'])->select();
$count = $query->count();
// $list = $this->article_obj
// ->join("j_journal_stage","j_journal_stage.journal_stage_id = j_article.journal_stage_id","left")
// ->where('j_article.journal_id', $data['journal_id'])
// ->where('j_article.state', 0)
// ->where("j_journal_stage.stage_year",">",date("Y")-6)
// ->where('j_journal_stage.is_publish', 1)
// ->orderRaw("(j_article.abs_num + j_article.pdf_num + j_article.html_num) desc")
// ->limit($limit_start,$data['pageSize'])
// ->select();
// $count = $this->article_obj
// ->join("j_journal_stage","j_journal_stage.journal_stage_id = j_article.journal_stage_id","left")
// ->where('j_article.journal_id', $data['journal_id'])
// ->where('j_article.state', 0)
// ->where("j_journal_stage.stage_year",">",date("Y")-6)
// ->where('j_journal_stage.is_publish', 1)
// ->count();
if($count>30){
$count = 30;
}
}
$re['articles'] = strongArticleList($list);
$re['articles'] = strongArticleList($list,false);
$re['count'] = $count;
return jsonSuccess($re);
}

View File

@@ -115,11 +115,15 @@ function grabCiteFromCrossref($article_id,$act="zd"){
$article_cite_obj = Db::name("article_cite");
$article_info = $article_obj->where("article_id",$article_id)->find();
$cite_days = (time()-$article_info['cite_time'])/3600*24;
if($act=="zd"&&$cite_days<7){
return ;
}
// if($act=="zd"&&$cite_days<7){
// return ;
// }
try {
$rr = pCrossrefCite($article_id);
// var_dump($rr);die;
foreach ($rr as $v){
$c = $article_cite_obj->where("doi",$v['doi'])->find();
if($c){continue;}
@@ -134,6 +138,10 @@ function grabCiteFromCrossref($article_id,$act="zd"){
$articleEntity['state'] = 1;
$article_cite_obj->insert($articleEntity);
}
$article_obj->where("article_id",$article_id)->update(['cite_time'=>time()]);
}catch (\think\Exception $e){
echo $e->getMessage();

View File

@@ -187,15 +187,21 @@ return [
// | 缓存设置
// +----------------------------------------------------------------------
// 'cache' => [
// // 驱动方式
// 'type' => 'File',
// // 缓存保存目录
// 'path' => CACHE_PATH,
// // 缓存前缀
// 'prefix' => '',
// // 缓存有效期 0表示永久缓存
// 'expire' => 0,
// ],
'cache' => [
// 驱动方式
'type' => 'File',
// 缓存保存目录
'path' => CACHE_PATH,
// 缓存前缀
'prefix' => '',
// 缓存有效期 0表示永久缓存
'expire' => 0,
'type' => 'redis',
'host' => '127.0.0.1'
],
// +----------------------------------------------------------------------