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 = []; // $stack = [];
// } // }
grabCiteFromCrossref($data['article_id']); // grabCiteFromCrossref($data['article_id']);
$re["track"] = $stack; $re["track"] = $stack;
return jsonSuccess($re); return jsonSuccess($re);
@@ -178,7 +178,7 @@ class Article extends Controller {
public function mmmm(){ 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.is_publish', 1)
->where('j_journal_stage.stage_year', '>=', '2019') ->where('j_journal_stage.stage_year', '>=', '2019')
->count(); ->count();
$re['articleList'] = strongArticleList($list); $re['articleList'] = strongArticleList($list,false);
$re['count'] = $count; $re['count'] = $count;
return jsonSuccess($re); 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(); $journal_info = $this->journal_obj->where('journal_id', $data['journal_id'])->find();
$limit_start = ($data['pageIndex'] - 1) * $data['pageSize']; $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(); $stage = $this->journal_stage_obj->where("journal_id",$data['journal_id'])->where("stage_year",date("Y"))->where("state",0)->find();
$list = $this->article_obj $query = $this->article_obj
->field('j_article.*,j_journal_stage.*') ->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') ->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.journal_id",$journal_info["journal_id"])
->where("j_article.lx_online",0) ->where("j_article.lx_online",0)
->where("j_journal_stage.journal_stage_id",$stage['journal_stage_id']) ->where("j_journal_stage.journal_stage_id",$stage['journal_stage_id']);
->limit($limit_start,$data['pageSize']) $list = $query->limit($limit_start,$data['pageSize'])->select();
->select(); $count = $query->count();
$count = $this->article_obj // $list = $this->article_obj
->join('j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT') //// ->field('j_article.*,j_journal_stage.*')
->where("j_article.journal_id",$journal_info["journal_id"]) // ->field("j_article.article_id,j_article.title,j_article.icon,j_article.abbr,j_journal_stage.stage_year")
->where("j_article.lx_online",0) // ->join('j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
->where("j_journal_stage.journal_stage_id",$stage['journal_stage_id']) // ->where("j_article.journal_id",$journal_info["journal_id"])
->count(); // ->where("j_article.lx_online",0)
return json(['code' => 0, 'msg' => 'success', 'data' => ['articlelist' => strongArticleList($list), 'count' => $count]]); // ->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{ }else{
$stages = $this->journal_stage_obj->where('journal_id', $data['journal_id'])->where('is_publish', 0)->where('state', 0)->column('journal_stage_id'); $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 $query = $this->article_obj
->field('j_article.*,j_journal_stage.*') ->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') ->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.journal_stage_id', 'in', $stages)
->where('j_article.state', 0) ->where('j_article.state', 0)
->where('j_article.is_public',1) ->where('j_article.is_public',1)
->order('j_journal_stage.stage_year desc,j_article.sort desc') ->order('j_journal_stage.stage_year desc,j_article.sort desc');
->limit($limit_start, $data['pageSize']) $list = $query->limit($limit_start, $data['pageSize'])->select();
->select(); $count = $query->count();
$count = $this->article_obj
->join('j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT') // $list = $this->article_obj
->where('j_article.journal_stage_id', 'in', $stages) //// ->field('j_article.*,j_journal_stage.*')
->where('j_article.state', 0) // ->field("j_article.article_id,j_article.title,j_article.icon,j_article.abbr,j_journal_stage.stage_year")
->count(); // ->join('j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
return json(['code' => 0, 'msg' => 'success', 'data' => ['articlelist' => strongArticleList($list), 'count' => $count]]); // ->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') ->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) ->limit(4)
->select(); ->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']; $limit_start = ($data['pageIndex'] - 1) * $data['pageSize'];
if($data['journal_id']==1){ 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_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") ->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.journal_id', $data['journal_id'])
@@ -897,42 +918,72 @@ class Journal extends Controller {
->where('j_journal_stage.is_publish', 1) ->where('j_journal_stage.is_publish', 1)
->group("j_article.article_id") ->group("j_article.article_id")
->having("count(j_article_cite.article_cite_id) > 3") ->having("count(j_article_cite.article_cite_id) > 3")
->order("cited_num desc") ->order("cited_num desc");
->limit($limit_start,$data['pageSize']) $list = $query->limit($limit_start,$data['pageSize'])->select();
->select(); $count = $query->count();
$count = $this->article_obj
->join("j_journal_stage",'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT') // $list = $this->article_obj
->join("j_article_cite","j_article_cite.article_id = j_article.article_id","left") // ->field("j_article.*,count(j_article_cite.article_id) as cited_num")
->where('j_article.journal_id', $data['journal_id']) // ->join("j_journal_stage",'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
->where('j_article.state', 0) // ->join("j_article_cite","j_article_cite.article_id = j_article.article_id","left")
->where("j_journal_stage.stage_year",">",date("Y")-6) // ->where('j_article.journal_id', $data['journal_id'])
->where("j_article_cite.is_wos",1) // ->where('j_article.state', 0)
->where('j_journal_stage.is_publish', 1) // ->where("j_journal_stage.stage_year",">",date("Y")-6)
->group("j_article.article_id") // ->where("j_article_cite.is_wos",1)
->having("count(j_article_cite.article_cite_id) > 3") // ->where('j_journal_stage.is_publish', 1)
->count(); // ->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{ }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") ->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.journal_id', $data['journal_id'])
->where('j_article.state', 0) ->where('j_article.state', 0)
->where("j_journal_stage.stage_year",">",date("Y")-6) ->where("j_journal_stage.stage_year",">",date("Y")-6)
->where('j_journal_stage.is_publish', 1) ->where('j_journal_stage.is_publish', 1)
->orderRaw("(j_article.abs_num + j_article.pdf_num + j_article.html_num) desc") ->orderRaw("(j_article.abs_num + j_article.pdf_num + j_article.html_num) desc");
->limit($limit_start,$data['pageSize']) $list = $query->limit($limit_start,$data['pageSize'])->select();
->select(); $count = $query->count();
$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) // $list = $this->article_obj
->count(); // ->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){ if($count>30){
$count = 30; $count = 30;
} }
} }
$re['articles'] = strongArticleList($list); $re['articles'] = strongArticleList($list,false);
$re['count'] = $count; $re['count'] = $count;
return jsonSuccess($re); return jsonSuccess($re);
} }

View File

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

View File

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