From 1f53c0419b5715358269a61f363b426376362189 Mon Sep 17 00:00:00 2001 From: wangjinlei <751475802@qq.com> Date: Wed, 21 Aug 2024 14:20:27 +0800 Subject: [PATCH] 1 --- application/api/controller/Article.php | 4 +- application/api/controller/Journal.php | 2 +- application/api/controller/Main.php | 84 +++++++++++++++++++++++++- application/common.php | 54 +++++++++++++++++ 4 files changed, 140 insertions(+), 4 deletions(-) diff --git a/application/api/controller/Article.php b/application/api/controller/Article.php index 4f008c2..ee8a033 100644 --- a/application/api/controller/Article.php +++ b/application/api/controller/Article.php @@ -459,7 +459,7 @@ class Article extends Controller { $list[$k]['mains'] = [];//getArticleMains($v['article_id']); $cm = $this->article_main_obj->where('article_id',$v['article_id'])->where('state',0)->find(); $list[$k]['has_mains'] = $cm?1:0; - $list[$k]["cite_num"] = $this->article_cite_obj->where("article_id",$v['article_id'])->where("state",1)->count(); + $list[$k]["cite_num"] = $this->article_cite_obj->where("article_id",$v['article_id'])->where("state",1)->where("is_wos",1)->count(); } //标题斜体 foreach ($list as $k => $v) { @@ -614,7 +614,7 @@ class Article extends Controller { if(!$rule->check($data)){ return jsonError($rule->getError()); } - $list = $this->article_cite_obj->where("article_id",$data['article_id'])->where("state",1)->select(); + $list = $this->article_cite_obj->where("article_id",$data['article_id'])->where("state",1)->where("is_wos",1)->select(); $re['list'] = $list; return jsonSuccess($re); diff --git a/application/api/controller/Journal.php b/application/api/controller/Journal.php index 1d824d2..2e49839 100644 --- a/application/api/controller/Journal.php +++ b/application/api/controller/Journal.php @@ -657,7 +657,7 @@ class Journal extends Controller { $list[$k]['mains'] = [];//getArticleMains($v['article_id']); $cm = $this->article_main_obj->where('article_id',$v['article_id'])->where('state',0)->find(); $list[$k]['has_mains'] = $cm?1:0; - $list[$k]["cite_num"] = $this->article_cite_obj->where("article_id",$v['article_id'])->where("state",1)->count(); + $list[$k]["cite_num"] = $this->article_cite_obj->where("article_id",$v['article_id'])->where("state",1)->where("is_wos",1)->count(); } //获取作者 diff --git a/application/api/controller/Main.php b/application/api/controller/Main.php index 41b609d..2fd8d80 100644 --- a/application/api/controller/Main.php +++ b/application/api/controller/Main.php @@ -7,6 +7,7 @@ use think\Db; use ip\IpLocation; use ipserv\iplimit; use think\Queue; +use think\Validate; /** * @title 前段web接口 @@ -316,7 +317,7 @@ class Main extends Controller { } $list[$k]['title'] = $cache_title; } - //连续出版判断,决定是否显示出版时间 + //连续出版判断,决定是否显示出版时间 foreach ($list as $k => $v){ $ca_stage = $this->journal_stage_obj->where('journal_stage_id',$v['journal_stage_id'])->find(); if(($v['journal_id']==2&&$ca_stage['stage_year']>=2022)||($v['journal_id']==18&&$ca_stage['stage_year']>=2022)||($v['journal_id']==17&&$ca_stage['stage_year']>=2019)){ @@ -328,6 +329,87 @@ class Main extends Controller { $re['articles'] = $list; return jsonSuccess($re); } + + + public function getCitedTopArticles(){ + //tmr两条 mdm一条 bmec一条 + $s_time = strtotime("-3 year"); + + $tmr_list = $this->article_obj->field("j_article.*,COUNT(j_article_cite.article_cite_id) as cite_num") + ->join("j_article_cite","j_article_cite.article_id = j_article.article_id","left") + ->where("j_article.ctime",">",$s_time) + ->where("j_article.journal_id",1) + ->where("j_article_cite.state",1) + ->where("j_article_cite.is_wos",1) + ->group("j_article.article_id") + ->order("cite_num desc") + ->limit(2) + ->select(); + + $bmec_list = $this->article_obj->field("j_article.*,COUNT(j_article_cite.article_cite_id) as cite_num") + ->join("j_article_cite","j_article_cite.article_id = j_article.article_id","left") + ->where("j_article.ctime",">",$s_time) + ->where("j_article.journal_id",25) + ->where("j_article_cite.state",1) + ->where("j_article_cite.is_wos",1) + ->group("j_article.article_id") + ->order("cite_num desc") + ->limit(1) + ->select(); + + $mdm_list = $this->article_obj->field("j_article.*,COUNT(j_article_cite.article_cite_id) as cite_num") + ->join("j_article_cite","j_article_cite.article_id = j_article.article_id","left") + ->where("j_article.ctime",">",$s_time) + ->where("j_article.journal_id",11) + ->where("j_article_cite.state",1) + ->where("j_article_cite.is_wos",1) + ->group("j_article.article_id") + ->order("cite_num desc") + ->limit(1) + ->select(); + + $list = array_merge($tmr_list,$bmec_list,$mdm_list); + $re['list'] = $list; + + return jsonSuccess($re); + } + + + + + public function getAllCiteArticles(){ + $data = $this->request->post(); + $rule = new Validate([ + "limit"=> "require", + "page"=>"require" + ]); + if(!$rule->check($data)){ + return jsonError($rule->getError()); + } + $s_time = strtotime("-3 year"); + $list = $this->article_obj->field("j_article.*,COUNT(j_article_cite.article_cite_id) as cite_num") + ->join("j_article_cite","j_article_cite.article_id = j_article.article_id","left") + ->where("j_article.ctime",">",$s_time) + ->where("j_article_cite.state",1) + ->where("j_article_cite.is_wos",1) + ->group("j_article.article_id") + ->order("cite_num desc") + ->page($data['page'],$data['limit']) + ->select(); + + $count = $this->article_obj->field("j_article.*,COUNT(j_article_cite.article_cite_id) as cite_num") + ->join("j_article_cite","j_article_cite.article_id = j_article.article_id","left") + ->where("j_article.ctime",">",$s_time) + ->where("j_article_cite.state",1) + ->where("j_article_cite.is_wos",1) + ->group("j_article.article_id") + ->order("cite_num desc") + ->count(); + $re['list'] = strongArticleList($list); + $re['count'] = $count; + + return jsonSuccess($re); + } /** * @title 获取3top文章列表 diff --git a/application/common.php b/application/common.php index 7fdda0c..0a90686 100644 --- a/application/common.php +++ b/application/common.php @@ -232,6 +232,60 @@ function getArticleTracks($doi) } } + +function getAuthor($article) { + $article_author_obj = Db::name("article_author"); + $where['article_id'] = $article['article_id']; + $where['state'] = 0; + $list = $article_author_obj->where($where)->select(); + $frag = ''; + foreach ($list as $k => $v) { + $ca = ''; + if($v['orcid']!=''){ + $ca = ''; + } + $frag = $frag == '' ? '' . $v['author_name'].$ca : $frag . ', ' . $v['author_name'].$ca; + } + return $frag; +} + +function strongArticleList($list){ + $journal_stage_obj = Db::name("journal_stage"); + $journal_obj = Db::name("journal"); + $journals_ltai_obj = Db::name("article_ltai"); + foreach ($list as $k => $v) { + $stage_info = $journal_stage_obj->where('journal_stage_id', $v['journal_stage_id'])->find(); + $journal_info = $journal_obj->where('journal_id', $v['journal_id'])->find(); + //组合cite信息 + $no = $stage_info['stage_no'] == 0 ? ':' : '(' . $stage_info['stage_no'] . '):'; + $cite = $v['abbr'] . '. ' . $v['title'] . '. ' . choiseJabbr($v['article_id'],$journal_info['jabbr']) . '. ' . $stage_info['stage_year'] . ';' . $stage_info['stage_vol'] . $no . $v['npp'] . '. doi:' . $v['doi']; + $list[$k]['cite'] = $cite; + $list[$k]['authortitle'] = getAuthor($v); + $list[$k]["mains"] = null; + $list[$k]['has_html'] = hasHtml($v['article_id']); + } + + //标题斜体 + foreach ($list as $k => $v) { + $caches = $journals_ltai_obj->where('article_id', $v['article_id'])->where('state', 0)->column('content'); + $cache_title = $v['title']; + foreach ($caches as $val) { + $cache_title = str_replace($val, '' . $val . '', $cache_title); + } + $list[$k]['title'] = $cache_title; + } + //连续出版判断,决定是否显示出版时间 + foreach ($list as $k => $v){ + $ca_stage = $journal_stage_obj->where('journal_stage_id',$v['journal_stage_id'])->find(); + if(($v['journal_id']==2&&$ca_stage['stage_year']>=2022)||($v['journal_id']==18&&$ca_stage['stage_year']>=2022)||($v['journal_id']==17&&$ca_stage['stage_year']>=2019)){ + $list[$k]['isShowOtime'] = 1; + }else{ + $list[$k]['isShowOtime'] = 0; + } + } + return $list; +} + function choiseJtitle($list) { foreach ($list as $k => $v) {