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) {