From 186126a7264b56fde962e0a7fb7a169297e85327 Mon Sep 17 00:00:00 2001 From: wangjinlei <751475802@qq.com> Date: Tue, 23 Jun 2026 09:55:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/controller/Main.php | 69 +++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/application/api/controller/Main.php b/application/api/controller/Main.php index 99c2236..6c3f9bd 100644 --- a/application/api/controller/Main.php +++ b/application/api/controller/Main.php @@ -317,6 +317,75 @@ class Main extends Controller { } + public function citeMate(){ + $data = $this->request->post(); + $rule = new Validate([ + "journal_issn"=>"require", + "year"=>"require" + ]); + if(!$rule->check($data)){ + return jsonError($rule->getError()); + } + $journal_info = $this->journal_obj->where("issn",$data['journal_issn'])->find(); + $r = $this->journal_stage_obj->where("journal_id",$journal_info['journal_id'])->where("stage_year",date("Y",strtotime("- ".$data['year']." year")))->where("is_publish",1)->limit(1)->select(); + if(!$r){ + return jsonError("没有该年数据"); + } + + $cites = $this->article_obj + ->field("j_article.*") + ->join("j_article_cite","j_article_cite.article_id = j_article.article_id","right") + ->where("j_article.journal_id",$journal_info['journal_id']) + ->where("j_article.journal_stage_id",">=",$r[0]['journal_stage_id']) + ->select(); + $topics = []; + $country = []; + foreach ($cites as $k=>$v){ + $cache_topics = $this->article_to_topic_obj->where("article_id",$v['article_id'])->select(); + foreach ($cache_topics as $k1=>$v1){ + isset($topics[$v1['topic_id']])?$topics[$v1['topic_id']]++:$topics[$v1['topic_id']] = 1; + } + + $cache_country = $this->article_author_obj->where("article_id",$v['article_id'])->where("is_report",1)->select(); + foreach ($cache_country as $k1=>$v1){ + isset($country[$v1['author_country']])?$country[$v1['author_country']]++:$country[$v1['author_country']] = 1; + } + } + foreach ($topics as $k=>$v){ + $topics[$k] = [ + "topic_id"=>$k, + "topic_name"=>Db::name("journal_topic")->where("journal_topic_id",$k)->value("title"), + "num"=>$v + ]; + } + $new_country = []; + foreach ($country as $k=>$v){ + $new_country[] = [ + "country"=>$k, + "num"=>$v + ]; + } + + usort($topics, function($a, $b) { + return $b['num'] - $a['num']; + }); + + usort($new_country, function($a, $b) { + return $b['num'] - $a['num']; + }); + + + + + + $re['cites_num'] = count($cites); + $re['topics'] = $topics; + $re['country'] = $new_country; + + return jsonSuccess($re); + } + + public function getAllCiteArticles(){