This commit is contained in:
wangjinlei
2022-01-22 16:42:26 +08:00
parent 9bec064198
commit fb0114d85a
2 changed files with 297 additions and 203 deletions

View File

@@ -71,32 +71,32 @@ class Article extends Controller {
$author = $this->sys_author($authors, $organs, $atto); $author = $this->sys_author($authors, $organs, $atto);
//标题斜体 //标题斜体
$caches = $this->article_ltai_obj->where('article_id',$article_info['article_id'])->where('state',0)->column('content'); $caches = $this->article_ltai_obj->where('article_id', $article_info['article_id'])->where('state', 0)->column('content');
$cache_title = $article_info['title']; $cache_title = $article_info['title'];
$article_info['old_title'] = $article_info['title']; $article_info['old_title'] = $article_info['title'];
foreach ($caches as $val){ foreach ($caches as $val) {
$cache_title = str_replace($val, '<i>'.$val.'</i>', $cache_title); $cache_title = str_replace($val, '<i>' . $val . '</i>', $cache_title);
} }
$article_info['title'] = $cache_title; $article_info['title'] = $cache_title;
//组合cite信息 //组合cite信息
$no = $stage_info['stage_no'] == 0 ? ':' : '(' . $stage_info['stage_no'] . '):'; $no = $stage_info['stage_no'] == 0 ? ':' : '(' . $stage_info['stage_no'] . '):';
if($journal_info['journal_id']==22){ if ($journal_info['journal_id'] == 22) {
$cite = $article_info['abbr'] . '. ' . $article_info['title'] . '[J]. ' . $journal_info['jabbr'] . ',' . $stage_info['stage_year'] . ',' . $stage_info['stage_vol'] . $no . $article_info['npp'] . '. doi:' . $article_info['doi']; $cite = $article_info['abbr'] . '. ' . $article_info['title'] . '[J]. ' . $journal_info['jabbr'] . ',' . $stage_info['stage_year'] . ',' . $stage_info['stage_vol'] . $no . $article_info['npp'] . '. doi:' . $article_info['doi'];
}else{ } else {
$cite = $article_info['abbr'] . '. ' . $article_info['title'] . '. <i>' . choiseJabbr($article_info['article_id'],$journal_info['jabbr']) . '</i>. ' . $stage_info['stage_year'] . ';' . $stage_info['stage_vol'] . $no . $article_info['npp'] . '. doi:' . $article_info['doi']; $cite = $article_info['abbr'] . '. ' . $article_info['title'] . '. <i>' . choiseJabbr($article_info['article_id'], $journal_info['jabbr']) . '</i>. ' . $stage_info['stage_year'] . ';' . $stage_info['stage_vol'] . $no . $article_info['npp'] . '. doi:' . $article_info['doi'];
} }
// echo ($article_info['article_id']<1799&&$article_info['npp']=='Cancer Adv'?'TMR Cancer':$article_info['npp']); // echo ($article_info['article_id']<1799&&$article_info['npp']=='Cancer Adv'?'TMR Cancer':$article_info['npp']);
if(stripos($article_info['npp'], '-')){ if (stripos($article_info['npp'], '-')) {
$cc = explode('-', $article_info['npp']); $cc = explode('-', $article_info['npp']);
$article_info['first_page'] = $cc[0]; $article_info['first_page'] = $cc[0];
$article_info['last_page'] = $cc[1]; $article_info['last_page'] = $cc[1];
} }
$article_info['publication'] = date('Y/m/d', strtotime($article_info['pub_date'])); $article_info['publication'] = date('Y/m/d', strtotime($article_info['pub_date']));
//修改keywords //修改keywords
$article_info['keywords'] = str_replace(',', '&nbsp;&nbsp;&nbsp;&nbsp;', $article_info['keywords']); $article_info['keywords'] = str_replace(',', '&nbsp;&nbsp;&nbsp;&nbsp;', $article_info['keywords']);
@@ -108,12 +108,11 @@ class Article extends Controller {
$re['cite'] = $cite; $re['cite'] = $cite;
return jsonSuccess($re); return jsonSuccess($re);
} }
public function myttt() {
public function myttt(){
echo 'ok'; echo 'ok';
} }
/** /**
* @title 获取文章话题 * @title 获取文章话题
* @description 获取文章话题 * @description 获取文章话题
@@ -125,23 +124,23 @@ class Article extends Controller {
* *
* @return topics:话题列表# * @return topics:话题列表#
*/ */
public function getTopicsForArticle(){ public function getTopicsForArticle() {
$data = $this->request->post(); $data = $this->request->post();
$list = $this->article_to_topic_obj $list = $this->article_to_topic_obj
->field("j_journal_topic.*") ->field("j_journal_topic.*")
->join("j_journal_topic","j_journal_topic.journal_topic_id = j_article_to_topic.topic_id","left") ->join("j_journal_topic", "j_journal_topic.journal_topic_id = j_article_to_topic.topic_id", "left")
->where("j_article_to_topic.article_id",$data['article_id']) ->where("j_article_to_topic.article_id", $data['article_id'])
->where('j_article_to_topic.state',0) ->where('j_article_to_topic.state', 0)
->select(); ->select();
$re['topics'] = $list; $re['topics'] = $list;
return jsonSuccess($re); return jsonSuccess($re);
} }
public function mytest(){ public function mytest() {
$article_info = $this->article_obj->where('article_id',1689)->find(); $article_info = $this->article_obj->where('article_id', 1689)->find();
echo ($article_info['article_id']<1799&&$article_info['npp']=='Cancer Adv'?'TMR Cancer':$article_info['npp']); echo ($article_info['article_id'] < 1799 && $article_info['npp'] == 'Cancer Adv' ? 'TMR Cancer' : $article_info['npp']);
} }
/** /**
* @title 获取关键词相关文章 * @title 获取关键词相关文章
* @description 获取关键词相关文章 * @description 获取关键词相关文章
@@ -153,27 +152,30 @@ class Article extends Controller {
* *
* *
*/ */
public function getArticleByKeywords(){ public function getArticleByKeywords() {
$data = $this->request->post(); $data = $this->request->post();
$article_info = $this->article_obj->where('article_id',$data['article_id'])->find(); $article_info = $this->article_obj->where('article_id', $data['article_id'])->find();
if($article_info['keywords']==''){ $res_key = [];
return jsonSuccess([]); $res_rel = $this->article_obj->where("article_id","in", object_to_array(json_decode($article_info['related'])))->where('state',0)->select();
if ($article_info['keywords'] != ''&& count($res_rel)<5){
$keywords = explode(',', $article_info['keywords']);
$where = '';
foreach ($keywords as $v) {
$where .= ' keywords like "%' . $v . '%" or';
}
$whe = substr($where, 0, -2);
$wstr = 'journal_id = ' . $article_info['journal_id'] . ' and state = 0 and article_id<>' . $data['article_id'] . ' and (' . $whe . ')';
$res_key = $this->article_obj->where($wstr)->limit(5-count($res_rel))->select();
} }
$keywords = explode(',', $article_info['keywords']);
$where = ''; $res = array_merge($res_key,$res_rel);
foreach ($keywords as $v){ foreach ($res as $k => $v) {
$where .= ' keywords like "%'.$v.'%" or'; $res[$k]['journal'] = $this->journal_obj->where('journal_id', $v['journal_id'])->find();
} $res[$k]['stage'] = $this->journal_stage_obj->where('journal_stage_id', $v['journal_stage_id'])->find();
$whe = substr($where,0, -2);
$wstr = 'journal_id = '.$article_info['journal_id'].' and state = 0 and article_id<>'.$data['article_id'].' and ('.$whe.')';
$res = $this->article_obj->where($wstr)->limit(5)->select();
foreach ($res as $k => $v){
$res[$k]['journal'] = $this->journal_obj->where('journal_id',$v['journal_id'])->find();
$res[$k]['stage'] = $this->journal_stage_obj->where('journal_stage_id',$v['journal_stage_id'])->find();
} }
return jsonSuccess($res); return jsonSuccess($res);
} }
private function sys_author($authors, $organs, $atto) { private function sys_author($authors, $organs, $atto) {
$cache = []; $cache = [];
foreach ($organs as $k => $v) { foreach ($organs as $k => $v) {
@@ -209,7 +211,7 @@ class Article extends Controller {
public function getTopicArticles() { public function getTopicArticles() {
$data = $this->request->post(); $data = $this->request->post();
$topic_info = $this->journal_topic_obj->where('journal_topic_id', $data['topic_id'])->find(); $topic_info = $this->journal_topic_obj->where('journal_topic_id', $data['topic_id'])->find();
$journal_info = $this->journal_obj->where('journal_id',$topic_info['journal_id'])->find(); $journal_info = $this->journal_obj->where('journal_id', $topic_info['journal_id'])->find();
$limit_start = ($data['pageIndex'] - 1) * $data['pageSize']; $limit_start = ($data['pageIndex'] - 1) * $data['pageSize'];
$list = $this->article_to_topic_obj->field('j_article.*,j_journal_stage.*') $list = $this->article_to_topic_obj->field('j_article.*,j_journal_stage.*')
->join(array(['j_article', 'j_article_to_topic.article_id = j_article.article_id', 'LEFT'], ['j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT'])) ->join(array(['j_article', 'j_article_to_topic.article_id = j_article.article_id', 'LEFT'], ['j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT']))
@@ -218,7 +220,7 @@ class Article extends Controller {
// ->where('j_journal_stage.stage_year','>',intval(date('Y'))-3) // ->where('j_journal_stage.stage_year','>',intval(date('Y'))-3)
->orderRaw('j_journal_stage.stage_year desc ,(abs_num+pdf_num) desc') ->orderRaw('j_journal_stage.stage_year desc ,(abs_num+pdf_num) desc')
// ->order('j_article.journal_stage_id desc , j_article.article_id desc') // ->order('j_article.journal_stage_id desc , j_article.article_id desc')
->limit($limit_start,$data['pageSize']) ->limit($limit_start, $data['pageSize'])
->select(); ->select();
$count = $this->article_to_topic_obj $count = $this->article_to_topic_obj
->join(array(['j_article', 'j_article_to_topic.article_id = j_article.article_id', 'LEFT'], ['j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT'])) ->join(array(['j_article', 'j_article_to_topic.article_id = j_article.article_id', 'LEFT'], ['j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT']))
@@ -228,11 +230,11 @@ class Article extends Controller {
->count(); ->count();
//获取作者 //获取作者
foreach ($list as $k => $v) { foreach ($list as $k => $v) {
$stage_info = $this->journal_stage_obj->where('journal_stage_id',$v['journal_stage_id'])->find(); $stage_info = $this->journal_stage_obj->where('journal_stage_id', $v['journal_stage_id'])->find();
//组合cite信息 //组合cite信息
$no = $stage_info['stage_no'] == 0 ? ':' : '(' . $stage_info['stage_no'] . '):'; $no = $stage_info['stage_no'] == 0 ? ':' : '(' . $stage_info['stage_no'] . '):';
$cite = $v['abbr'] . '. ' . $v['title'] . '. <i>' . choiseJabbr($v['article_id'],$journal_info['jabbr']) . '</i>. ' . $stage_info['stage_year'] . ';' . $stage_info['stage_vol'] . $no . $v['npp'] . '. doi:' . $v['doi']; $cite = $v['abbr'] . '. ' . $v['title'] . '. <i>' . choiseJabbr($v['article_id'], $journal_info['jabbr']) . '</i>. ' . $stage_info['stage_year'] . ';' . $stage_info['stage_vol'] . $no . $v['npp'] . '. doi:' . $v['doi'];
$cache_topic = $this->article_to_topic_obj->field('j_journal_topic.*')->join('j_journal_topic','j_journal_topic.journal_topic_id = j_article_to_topic.topic_id','left')->where('j_article_to_topic.article_id',$v['article_id'])->where('j_article_to_topic.state',0)->select(); $cache_topic = $this->article_to_topic_obj->field('j_journal_topic.*')->join('j_journal_topic', 'j_journal_topic.journal_topic_id = j_article_to_topic.topic_id', 'left')->where('j_article_to_topic.article_id', $v['article_id'])->where('j_article_to_topic.state', 0)->select();
$list[$k]['topic'] = $cache_topic; $list[$k]['topic'] = $cache_topic;
$list[$k]['cite'] = $cite; $list[$k]['cite'] = $cite;
@@ -252,6 +254,7 @@ class Article extends Controller {
$re['count'] = $count; $re['count'] = $count;
return jsonSuccess($re); return jsonSuccess($re);
} }
private function getAuthor($article) { private function getAuthor($article) {
$where['article_id'] = $article['article_id']; $where['article_id'] = $article['article_id'];
$where['state'] = 0; $where['state'] = 0;
@@ -259,10 +262,10 @@ class Article extends Controller {
$frag = ''; $frag = '';
foreach ($list as $k => $v) { foreach ($list as $k => $v) {
$ca = ''; $ca = '';
if($v['orcid']!=''){ if ($v['orcid'] != '') {
$ca = '<a href="https://orcid.org/'.$v['orcid'].'" target="_blank"><img src="img/or_id.png" alt="" style="width: 13px;margin-left: 3px;"></a>'; $ca = '<a href="https://orcid.org/' . $v['orcid'] . '" target="_blank"><img src="img/or_id.png" alt="" style="width: 13px;margin-left: 3px;"></a>';
} }
$frag = $frag == '' ? '' . $v['author_name'].$ca : $frag . ', ' . $v['author_name'].$ca; $frag = $frag == '' ? '' . $v['author_name'] . $ca : $frag . ', ' . $v['author_name'] . $ca;
} }
return $frag; return $frag;
} }
@@ -282,9 +285,9 @@ class Article extends Controller {
public function getStageArticles() { public function getStageArticles() {
$data = $this->request->post(); $data = $this->request->post();
$stage_info = $this->journal_stage_obj->where('journal_stage_id', $data['stage_id'])->find(); $stage_info = $this->journal_stage_obj->where('journal_stage_id', $data['stage_id'])->find();
$journal_info = $this->journal_obj->where('journal_id',$stage_info['journal_id'])->find(); $journal_info = $this->journal_obj->where('journal_id', $stage_info['journal_id'])->find();
$list = $this->article_obj->field('j_article.*,j_journal_stage.*,j_journal.title journal_title') $list = $this->article_obj->field('j_article.*,j_journal_stage.*,j_journal.title journal_title')
->join("j_journal",'j_journal.journal_id = j_article.journal_id','left') ->join("j_journal", 'j_journal.journal_id = j_article.journal_id', 'left')
->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', $data['stage_id']) ->where('j_article.journal_stage_id', $data['stage_id'])
->where('j_article.state', 0) ->where('j_article.state', 0)
@@ -292,11 +295,11 @@ class Article extends Controller {
->select(); ->select();
//获取作者 //获取作者
foreach ($list as $k => $v) { foreach ($list as $k => $v) {
$stage_info = $this->journal_stage_obj->where('journal_stage_id',$v['journal_stage_id'])->find(); $stage_info = $this->journal_stage_obj->where('journal_stage_id', $v['journal_stage_id'])->find();
//组合cite信息 //组合cite信息
$no = $stage_info['stage_no'] == 0 ? ':' : '(' . $stage_info['stage_no'] . '):'; $no = $stage_info['stage_no'] == 0 ? ':' : '(' . $stage_info['stage_no'] . '):';
$cite = $v['abbr'] . '. ' . $v['title'] . '. <i>' . choiseJabbr($v['article_id'],$journal_info['jabbr']) . '</i>. ' . $stage_info['stage_year'] . ';' . $stage_info['stage_vol'] . $no . $v['npp'] . '. doi:' . $v['doi']; $cite = $v['abbr'] . '. ' . $v['title'] . '. <i>' . choiseJabbr($v['article_id'], $journal_info['jabbr']) . '</i>. ' . $stage_info['stage_year'] . ';' . $stage_info['stage_vol'] . $no . $v['npp'] . '. doi:' . $v['doi'];
$cache_topic = $this->article_to_topic_obj->field('j_journal_topic.*')->join('j_journal_topic','j_journal_topic.journal_topic_id = j_article_to_topic.topic_id','left')->where('j_article_to_topic.article_id',$v['article_id'])->where('j_article_to_topic.state',0)->select(); $cache_topic = $this->article_to_topic_obj->field('j_journal_topic.*')->join('j_journal_topic', 'j_journal_topic.journal_topic_id = j_article_to_topic.topic_id', 'left')->where('j_article_to_topic.article_id', $v['article_id'])->where('j_article_to_topic.state', 0)->select();
$list[$k]['topic'] = $cache_topic; $list[$k]['topic'] = $cache_topic;
$list[$k]['cite'] = $cite; $list[$k]['cite'] = $cite;
@@ -316,7 +319,7 @@ class Article extends Controller {
$re['articleList'] = $l; $re['articleList'] = $l;
return jsonSuccess($re); return jsonSuccess($re);
} }
/** /**
* @title 增加文章阅读数量 * @title 增加文章阅读数量
* @description 增加文章阅读数量 * @description 增加文章阅读数量
@@ -329,12 +332,12 @@ class Article extends Controller {
* *
* @return article:文章详情 * @return article:文章详情
*/ */
public function addArticleNum(){ public function addArticleNum() {
$data = $this->request->post(); $data = $this->request->post();
$this->article_obj->where('article_id',$data['article_id'])->setInc($data['type'].'_num'); $this->article_obj->where('article_id', $data['article_id'])->setInc($data['type'] . '_num');
$article_info = $this->article_obj->where('article_id',$data['article_id'])->find(); $article_info = $this->article_obj->where('article_id', $data['article_id'])->find();
$re['article'] = $article_info; $re['article'] = $article_info;
return jsonSuccess($re); return jsonSuccess($re);
} }
@@ -357,7 +360,7 @@ class Article extends Controller {
*/ */
public function getTopArt() { public function getTopArt() {
$data = $this->request->post(); $data = $this->request->post();
$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'];
$list = []; $list = [];
if ($data['type'] == 'cited') { if ($data['type'] == 'cited') {
@@ -365,52 +368,52 @@ class Article extends Controller {
->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', $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','>=','2019') ->where('j_journal_stage.stage_year', '>=', '2019')
->where('j_journal_stage.is_publish',1) ->where('j_journal_stage.is_publish', 1)
->order('j_article.cited desc') ->order('j_article.cited desc')
->limit($limit_start,$data['pageSize']) ->limit($limit_start, $data['pageSize'])
->select(); ->select();
} else if ($data['type'] == 'read') { } else if ($data['type'] == 'read') {
$list = $this->article_obj->field('j_article.*,j_journal_stage.*') $list = $this->article_obj->field('j_article.*,j_journal_stage.*')
->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', $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.is_publish',1) ->where('j_journal_stage.is_publish', 1)
->where('j_journal_stage.stage_year','>=','2019') ->where('j_journal_stage.stage_year', '>=', '2019')
->order('j_article.abs_num desc') ->order('j_article.abs_num desc')
->limit($limit_start,$data['pageSize']) ->limit($limit_start, $data['pageSize'])
->select(); ->select();
} else { } else {
$list = $this->article_obj->field('j_article.*,j_journal_stage.*') $list = $this->article_obj->field('j_article.*,j_journal_stage.*')
->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', $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.is_publish',1) ->where('j_journal_stage.is_publish', 1)
->where('j_journal_stage.stage_year','>=','2019') ->where('j_journal_stage.stage_year', '>=', '2019')
->orderRaw('j_article.html_num+j_article.pdf_num desc') ->orderRaw('j_article.html_num+j_article.pdf_num desc')
->limit($limit_start,$data['pageSize']) ->limit($limit_start, $data['pageSize'])
->select(); ->select();
} }
$count = $this->article_obj $count = $this->article_obj
->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', $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.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();
//获取作者 //获取作者
foreach ($list as $k => $v) { foreach ($list as $k => $v) {
$stage_info = $this->journal_stage_obj->where('journal_stage_id',$v['journal_stage_id'])->find(); $stage_info = $this->journal_stage_obj->where('journal_stage_id', $v['journal_stage_id'])->find();
//组合cite信息 //组合cite信息
$no = $stage_info['stage_no'] == 0 ? ':' : '(' . $stage_info['stage_no'] . '):'; $no = $stage_info['stage_no'] == 0 ? ':' : '(' . $stage_info['stage_no'] . '):';
$cite = $v['abbr'] . '. ' . $v['title'] . '. <i>' . choiseJabbr($v['article_id'],$journal_info['jabbr']) . '</i>. ' . $stage_info['stage_year'] . ';' . $stage_info['stage_vol'] . $no . $v['npp'] . '. doi:' . $v['doi']; $cite = $v['abbr'] . '. ' . $v['title'] . '. <i>' . choiseJabbr($v['article_id'], $journal_info['jabbr']) . '</i>. ' . $stage_info['stage_year'] . ';' . $stage_info['stage_vol'] . $no . $v['npp'] . '. doi:' . $v['doi'];
$cache_topic = $this->article_to_topic_obj->field('j_journal_topic.*')->join('j_journal_topic','j_journal_topic.journal_topic_id = j_article_to_topic.topic_id','left')->where('j_article_to_topic.article_id',$v['article_id'])->where('j_article_to_topic.state',0)->select(); $cache_topic = $this->article_to_topic_obj->field('j_journal_topic.*')->join('j_journal_topic', 'j_journal_topic.journal_topic_id = j_article_to_topic.topic_id', 'left')->where('j_article_to_topic.article_id', $v['article_id'])->where('j_article_to_topic.state', 0)->select();
$list[$k]['topic'] = $cache_topic; $list[$k]['topic'] = $cache_topic;
$list[$k]['cite'] = $cite; $list[$k]['cite'] = $cite;
$list[$k]['authortitle'] = $this->getAuthor($v); $list[$k]['authortitle'] = $this->getAuthor($v);
} }
//标题斜体 //标题斜体
foreach ($list as $k => $v) { foreach ($list as $k => $v) {
$caches = $this->article_ltai_obj->where('article_id', $v['article_id'])->where('state', 0)->column('content'); $caches = $this->article_ltai_obj->where('article_id', $v['article_id'])->where('state', 0)->column('content');
@@ -425,7 +428,7 @@ class Article extends Controller {
$re['count'] = $count; $re['count'] = $count;
return jsonSuccess($re); return jsonSuccess($re);
} }
/** /**
* @title 获取文章ris文件 * @title 获取文章ris文件
* @description 获取文章ris文件 * @description 获取文章ris文件
@@ -437,48 +440,49 @@ class Article extends Controller {
* *
* @return url:地址 * @return url:地址
*/ */
public function getArticleRis(){ public function getArticleRis() {
$data = $this->request->post(); $data = $this->request->post();
$article_info = $this->article_obj->where('article_id',$data['article_id'])->find(); $article_info = $this->article_obj->where('article_id', $data['article_id'])->find();
$filename = trim(strrchr($article_info['doi'], '/'),'/'); $filename = trim(strrchr($article_info['doi'], '/'), '/');
$file_path = '../public/article/ris/'.$filename.'.ris'; $file_path = '../public/article/ris/' . $filename . '.ris';
if(!file_exists($file_path)){ if (!file_exists($file_path)) {
//创建ris文件的内容 //创建ris文件的内容
$ris = 'TY - JOUR'."\n"; $ris = 'TY - JOUR' . "\n";
$ris .= 'T1 - '.$article_info['title']."\n"; $ris .= 'T1 - ' . $article_info['title'] . "\n";
$authors = $this->article_author_obj->where('article_id',$article_info['article_id'])->where('state',0)->select(); $authors = $this->article_author_obj->where('article_id', $article_info['article_id'])->where('state', 0)->select();
$journal = $this->journal_obj->where('journal_id',$article_info['journal_id'])->find(); $journal = $this->journal_obj->where('journal_id', $article_info['journal_id'])->find();
foreach ($authors as $vv){ foreach ($authors as $vv) {
$ris .= 'AU - '.$vv['last_name'].', '.$vv['first_name']."\n"; $ris .= 'AU - ' . $vv['last_name'] . ', ' . $vv['first_name'] . "\n";
} }
$stage_info = $this->journal_stage_obj->where('journal_stage_id',$article_info['journal_stage_id'])->find(); $stage_info = $this->journal_stage_obj->where('journal_stage_id', $article_info['journal_stage_id'])->find();
$ris .= 'JO - '.$journal['title']."\n"; $ris .= 'JO - ' . $journal['title'] . "\n";
$ris .= 'VL - '.$stage_info['stage_vol']."\n"; $ris .= 'VL - ' . $stage_info['stage_vol'] . "\n";
$ca_fq = explode('-', $stage_info['stage_page']); $ca_fq = explode('-', $stage_info['stage_page']);
$ris .= 'SP - '.$ca_fq[0]."\n";if(isset($ca_fq[1])){ $ris .= 'SP - ' . $ca_fq[0] . "\n";
$ris .= 'EP - '.$ca_fq[1]."\n"; if (isset($ca_fq[1])) {
$ris .= 'EP - ' . $ca_fq[1] . "\n";
} }
$ris .= 'PY - '.$stage_info['stage_year']."\n"; $ris .= 'PY - ' . $stage_info['stage_year'] . "\n";
$ris .= 'DA - '. $this->chendate($stage_info['issue_date'])."\n"; $ris .= 'DA - ' . $this->chendate($stage_info['issue_date']) . "\n";
$ris .= 'SN - '.$journal['issn']."\n"; $ris .= 'SN - ' . $journal['issn'] . "\n";
$ris .= 'DO - https://doi.org/'.$article_info['doi']."\n"; $ris .= 'DO - https://doi.org/' . $article_info['doi'] . "\n";
$ris .= 'UR - https://www.tmrjournals.com/article.html?J_num='.$journal['journal_id'].'&a_id='.$article_info['article_id']."\n"; $ris .= 'UR - https://www.tmrjournals.com/article.html?J_num=' . $journal['journal_id'] . '&a_id=' . $article_info['article_id'] . "\n";
$ris .= 'J2 - '.$journal['jabbr']."\n"; $ris .= 'J2 - ' . $journal['jabbr'] . "\n";
$ris .= 'JF - '.$journal['title']."\n"; $ris .= 'JF - ' . $journal['title'] . "\n";
$kws = explode(', ', $article_info['keywords']); $kws = explode(', ', $article_info['keywords']);
foreach ($kws as $vvv){ foreach ($kws as $vvv) {
$ris .= 'KW - '.str_replace('</i>','',str_replace('<i>','',$vvv))."\n"; $ris .= 'KW - ' . str_replace('</i>', '', str_replace('<i>', '', $vvv)) . "\n";
} }
$abs = str_replace('Abstract','',strip_tags(str_replace("&nbsp;","",htmlspecialchars_decode($article_info['abstract'])))); $abs = str_replace('Abstract', '', strip_tags(str_replace("&nbsp;", "", htmlspecialchars_decode($article_info['abstract']))));
$ris .= 'AB - '.$abs."\n"; $ris .= 'AB - ' . $abs . "\n";
$ris .= 'ER - '."\n"; $ris .= 'ER - ' . "\n";
//生成ris文件 //生成ris文件
file_put_contents($file_path,$ris); file_put_contents($file_path, $ris);
} }
$re['url'] = '/public/article/ris/'.$filename.'.ris'; $re['url'] = '/public/article/ris/' . $filename . '.ris';
return jsonSuccess($re); return jsonSuccess($re);
} }
/** /**
* @title 获取文章enw文件 * @title 获取文章enw文件
* @description 获取文章enw文件 * @description 获取文章enw文件
@@ -490,50 +494,50 @@ class Article extends Controller {
* *
* @return url:地址 * @return url:地址
*/ */
public function getArticleenw(){ public function getArticleenw() {
$data = $this->request->post(); $data = $this->request->post();
// $data['article_id'] = 3; // $data['article_id'] = 3;
$article_info = $this->article_obj->where('article_id',$data['article_id'])->find(); $article_info = $this->article_obj->where('article_id', $data['article_id'])->find();
$filename = trim(strrchr($article_info['doi'], '/'),'/'); $filename = trim(strrchr($article_info['doi'], '/'), '/');
$file_path = '../public/article/enw/'.$filename.'.enw'; $file_path = '../public/article/enw/' . $filename . '.enw';
if(!file_exists($file_path)){ if (!file_exists($file_path)) {
//创建ris文件的内容 //创建ris文件的内容
$ris = 'TY - JOUR'."\n"; $ris = 'TY - JOUR' . "\n";
$ris .= 'T1 - '.$article_info['title']."\n"; $ris .= 'T1 - ' . $article_info['title'] . "\n";
$authors = $this->article_author_obj->where('article_id',$article_info['article_id'])->where('state',0)->select(); $authors = $this->article_author_obj->where('article_id', $article_info['article_id'])->where('state', 0)->select();
$journal = $this->journal_obj->where('journal_id',$article_info['journal_id'])->find(); $journal = $this->journal_obj->where('journal_id', $article_info['journal_id'])->find();
foreach ($authors as $vv){ foreach ($authors as $vv) {
$ris .= 'AU - '.$vv['last_name'].', '.$vv['first_name']."\n"; $ris .= 'AU - ' . $vv['last_name'] . ', ' . $vv['first_name'] . "\n";
} }
$stage_info = $this->journal_stage_obj->where('journal_stage_id',$article_info['journal_stage_id'])->find(); $stage_info = $this->journal_stage_obj->where('journal_stage_id', $article_info['journal_stage_id'])->find();
$ris .= 'JO - '.$journal['title']."\n"; $ris .= 'JO - ' . $journal['title'] . "\n";
$ris .= 'VL - '.$stage_info['stage_vol']."\n"; $ris .= 'VL - ' . $stage_info['stage_vol'] . "\n";
$ca_fq = explode('-', $stage_info['stage_page']); $ca_fq = explode('-', $stage_info['stage_page']);
$ris .= 'SP - '.$ca_fq[0]."\n"; $ris .= 'SP - ' . $ca_fq[0] . "\n";
if(isset($ca_fq[1])){ if (isset($ca_fq[1])) {
$ris .= 'EP - '.$ca_fq[1]."\n"; $ris .= 'EP - ' . $ca_fq[1] . "\n";
} }
$ris .= 'PY - '.$stage_info['stage_year']."\n"; $ris .= 'PY - ' . $stage_info['stage_year'] . "\n";
$ris .= 'DA - '. $this->chendate($stage_info['issue_date'])."\n"; $ris .= 'DA - ' . $this->chendate($stage_info['issue_date']) . "\n";
$ris .= 'SN - '.$journal['issn']."\n"; $ris .= 'SN - ' . $journal['issn'] . "\n";
$ris .= 'DO - https://doi.org/'.$article_info['doi']."\n"; $ris .= 'DO - https://doi.org/' . $article_info['doi'] . "\n";
$ris .= 'UR - https://www.tmrjournals.com/article.html?J_num='.$journal['journal_id'].'&a_id='.$article_info['article_id']."\n"; $ris .= 'UR - https://www.tmrjournals.com/article.html?J_num=' . $journal['journal_id'] . '&a_id=' . $article_info['article_id'] . "\n";
$ris .= 'J2 - '.$journal['jabbr']."\n"; $ris .= 'J2 - ' . $journal['jabbr'] . "\n";
$ris .= 'JF - '.$journal['title']."\n"; $ris .= 'JF - ' . $journal['title'] . "\n";
$kws = explode(', ', $article_info['keywords']); $kws = explode(', ', $article_info['keywords']);
foreach ($kws as $vvv){ foreach ($kws as $vvv) {
$ris .= 'KW - '.str_replace('</i>','',str_replace('<i>','',$vvv))."\n"; $ris .= 'KW - ' . str_replace('</i>', '', str_replace('<i>', '', $vvv)) . "\n";
} }
$abs = str_replace('Abstract','',strip_tags(str_replace("&nbsp;","",htmlspecialchars_decode($article_info['abstract'])))); $abs = str_replace('Abstract', '', strip_tags(str_replace("&nbsp;", "", htmlspecialchars_decode($article_info['abstract']))));
$ris .= 'AB - '.$abs."\n"; $ris .= 'AB - ' . $abs . "\n";
$ris .= 'ER - '."\n"; $ris .= 'ER - ' . "\n";
//生成ris文件 //生成ris文件
file_put_contents($file_path,$ris); file_put_contents($file_path, $ris);
} }
$re['url'] = '/public/article/enw/'.$filename.'.enw'; $re['url'] = '/public/article/enw/' . $filename . '.enw';
return jsonSuccess($re); return jsonSuccess($re);
} }
/** /**
* @title 获取文章bib文件 * @title 获取文章bib文件
* @description 获取文章bib文件 * @description 获取文章bib文件
@@ -545,58 +549,58 @@ class Article extends Controller {
* *
* @return url:地址 * @return url:地址
*/ */
public function getArticlebib(){ public function getArticlebib() {
$data = $this->request->post(); $data = $this->request->post();
$article_info = $this->article_obj->where('article_id',$data['article_id'])->find(); $article_info = $this->article_obj->where('article_id', $data['article_id'])->find();
$filename = trim(strrchr($article_info['doi'], '/'),'/'); $filename = trim(strrchr($article_info['doi'], '/'), '/');
$file_path = '../public/article/bib/'.$filename.'.bib'; $file_path = '../public/article/bib/' . $filename . '.bib';
if(!file_exists($file_path)){ if (!file_exists($file_path)) {
//创建ris文件的内容 //创建ris文件的内容
$ris = '@article{'.$article_info['doi'].",\n"; $ris = '@article{' . $article_info['doi'] . ",\n";
$ris .= 'title = "'.$article_info['title'].'"'.",\n"; $ris .= 'title = "' . $article_info['title'] . '"' . ",\n";
$authors = $this->article_author_obj->where('article_id',$article_info['article_id'])->where('state',0)->select(); $authors = $this->article_author_obj->where('article_id', $article_info['article_id'])->where('state', 0)->select();
$journal = $this->journal_obj->where('journal_id',$article_info['journal_id'])->find(); $journal = $this->journal_obj->where('journal_id', $article_info['journal_id'])->find();
$stage_info = $this->journal_stage_obj->where('journal_stage_id',$article_info['journal_stage_id'])->find(); $stage_info = $this->journal_stage_obj->where('journal_stage_id', $article_info['journal_stage_id'])->find();
$ris .= 'journal = "'.$journal['title'].'"'.",\n"; $ris .= 'journal = "' . $journal['title'] . '"' . ",\n";
$ris .= 'volume = "'.$stage_info['stage_vol'].'"'.",\n"; $ris .= 'volume = "' . $stage_info['stage_vol'] . '"' . ",\n";
$ris .= 'pages = "'.$stage_info['stage_page'].'"'.",\n"; $ris .= 'pages = "' . $stage_info['stage_page'] . '"' . ",\n";
$ris .= 'year = "'.$stage_info['stage_year'].'"'.",\n"; $ris .= 'year = "' . $stage_info['stage_year'] . '"' . ",\n";
$ris .= 'issn = "'.$journal['issn'].'"'.",\n"; $ris .= 'issn = "' . $journal['issn'] . '"' . ",\n";
$ris .= 'doi = "https://doi.org/'.$article_info['doi'].'"'.",\n"; $ris .= 'doi = "https://doi.org/' . $article_info['doi'] . '"' . ",\n";
$ris .= 'url = "https://www.tmrjournals.com/article.html?J_num='.$journal['journal_id'].'&a_id='.$article_info['article_id'].'"'.",\n"; $ris .= 'url = "https://www.tmrjournals.com/article.html?J_num=' . $journal['journal_id'] . '&a_id=' . $article_info['article_id'] . '"' . ",\n";
$auts = ''; $auts = '';
foreach ($authors as $vv){ foreach ($authors as $vv) {
$auts .= $vv['first_name'].' '.$vv['last_name']." and "; $auts .= $vv['first_name'] . ' ' . $vv['last_name'] . " and ";
} }
$ris .= 'author = "'.substr($auts, 0,-5).'"'.",\n"; $ris .= 'author = "' . substr($auts, 0, -5) . '"' . ",\n";
$ris .= 'keywords = "'.str_replace('</i>','',str_replace('<i>','',$article_info['keywords'])).'"'.".\n"; $ris .= 'keywords = "' . str_replace('</i>', '', str_replace('<i>', '', $article_info['keywords'])) . '"' . ".\n";
$ris .= 'abstract = "'.str_replace('Abstract','',strip_tags(str_replace("&nbsp;","",htmlspecialchars_decode($article_info['abstract'])))).'"'."\n"; $ris .= 'abstract = "' . str_replace('Abstract', '', strip_tags(str_replace("&nbsp;", "", htmlspecialchars_decode($article_info['abstract'])))) . '"' . "\n";
$ris .= '}'; $ris .= '}';
file_put_contents($file_path,$ris); file_put_contents($file_path, $ris);
} }
$re['url'] = '/public/article/bib/'.$filename.'.bib'; $re['url'] = '/public/article/bib/' . $filename . '.bib';
return jsonSuccess($re); return jsonSuccess($re);
} }
/** /**
* 获取liferesearch的文章详情 * 获取liferesearch的文章详情
*/ */
public function getLifeResearch(){ public function getLifeResearch() {
echo "<h2>Life Research</h2>"; echo "<h2>Life Research</h2>";
$list = $this->article_obj->where('journal_id',14)->where('state',0)->select(); $list = $this->article_obj->where('journal_id', 14)->where('state', 0)->select();
echo "<span>Total number of articles:". count($list)."</span><br><br><br>"; echo "<span>Total number of articles:" . count($list) . "</span><br><br><br>";
foreach ($list as $k => $v) { foreach ($list as $k => $v) {
echo '<strong>'.($k+1).'. '.$v['title'].'</strong>('.$v['type'].')<br>'; echo '<strong>' . ($k + 1) . '. ' . $v['title'] . '</strong>(' . $v['type'] . ')<br>';
$au = $this->article_author_obj->where('article_id',$v['article_id'])->where('state',0)->select(); $au = $this->article_author_obj->where('article_id', $v['article_id'])->where('state', 0)->select();
foreach ($au as $val){ foreach ($au as $val) {
echo '&nbsp;&nbsp;&nbsp;&nbsp;'; echo '&nbsp;&nbsp;&nbsp;&nbsp;';
echo $val['author_name'].'('.$val['author_country'].')<br>'; echo $val['author_name'] . '(' . $val['author_country'] . ')<br>';
} }
echo '<br>'; echo '<br>';
} }
} }
/** /**
* @title 获取文章text文件 * @title 获取文章text文件
* @description 获取文章text文件 * @description 获取文章text文件
@@ -608,44 +612,44 @@ class Article extends Controller {
* *
* @return url:地址 * @return url:地址
*/ */
public function getArticletext(){ public function getArticletext() {
$data = $this->request->post(); $data = $this->request->post();
$article_info = $this->article_obj->where('article_id',$data['article_id'])->find(); $article_info = $this->article_obj->where('article_id', $data['article_id'])->find();
$filename = trim(strrchr($article_info['doi'], '/'),'/'); $filename = trim(strrchr($article_info['doi'], '/'), '/');
$file_path = '../public/article/text/'.$filename.'.txt'; $file_path = '../public/article/text/' . $filename . '.txt';
if(!file_exists($file_path)){ if (!file_exists($file_path)) {
$authors = $this->article_author_obj->where('article_id',$article_info['article_id'])->where('state',0)->select(); $authors = $this->article_author_obj->where('article_id', $article_info['article_id'])->where('state', 0)->select();
$journal = $this->journal_obj->where('journal_id',$article_info['journal_id'])->find(); $journal = $this->journal_obj->where('journal_id', $article_info['journal_id'])->find();
$stage_info = $this->journal_stage_obj->where('journal_stage_id',$article_info['journal_stage_id'])->find(); $stage_info = $this->journal_stage_obj->where('journal_stage_id', $article_info['journal_stage_id'])->find();
$auts = ''; $auts = '';
foreach ($authors as $vv){ foreach ($authors as $vv) {
$auts .= $vv['first_name'].' '.$vv['last_name'].", "; $auts .= $vv['first_name'] . ' ' . $vv['last_name'] . ", ";
} }
$ris = substr($auts, 0,-2).",\n"; $ris = substr($auts, 0, -2) . ",\n";
$ris .= $article_info['title'].",\n"; $ris .= $article_info['title'] . ",\n";
$ris .= $journal['title'].",\n"; $ris .= $journal['title'] . ",\n";
$ris .= 'Volume '.$stage_info['stage_vol'].",\n"; $ris .= 'Volume ' . $stage_info['stage_vol'] . ",\n";
$ris .= $stage_info['stage_year'].",\n"; $ris .= $stage_info['stage_year'] . ",\n";
$ris .= 'Pages '.$stage_info['stage_page'].",\n"; $ris .= 'Pages ' . $stage_info['stage_page'] . ",\n";
$ris .= 'ISSN '.$journal['issn'].",\n"; $ris .= 'ISSN ' . $journal['issn'] . ",\n";
$ris .= 'https://doi.org/'.$article_info['doi'].",\n"; $ris .= 'https://doi.org/' . $article_info['doi'] . ",\n";
$ris .= '(https://www.tmrjournals.com/article.html?J_num='.$journal['journal_id'].'&a_id='.$article_info['article_id'].')'."\n"; $ris .= '(https://www.tmrjournals.com/article.html?J_num=' . $journal['journal_id'] . '&a_id=' . $article_info['article_id'] . ')' . "\n";
$ris .= 'Abstract:'.str_replace('Abstract','',strip_tags(str_replace("&nbsp;","",htmlspecialchars_decode($article_info['abstract']))))."\n"; $ris .= 'Abstract:' . str_replace('Abstract', '', strip_tags(str_replace("&nbsp;", "", htmlspecialchars_decode($article_info['abstract'])))) . "\n";
$ris .= 'Keywords:'. str_replace('</i>','',str_replace('<i>','',str_replace(',',';', $article_info['keywords'])))."\n"; $ris .= 'Keywords:' . str_replace('</i>', '', str_replace('<i>', '', str_replace(',', ';', $article_info['keywords']))) . "\n";
file_put_contents($file_path,$ris); file_put_contents($file_path, $ris);
} }
$re['url'] = '/public/article/text/'.$filename.'.txt'; $re['url'] = '/public/article/text/' . $filename . '.txt';
return jsonSuccess($re); return jsonSuccess($re);
} }
private function chendate($rq) { private function chendate($rq) {
$st = explode(' ', $rq); $st = explode(' ', $rq);
$yf = '01'; $yf = '01';
if(!isset($st[1])){ if (!isset($st[1])) {
return $rq; return $rq;
} }
switch ($st[1]){ switch ($st[1]) {
case 'January': case 'January':
$yf = '01'; $yf = '01';
break; break;
@@ -683,7 +687,7 @@ class Article extends Controller {
$yf = '12'; $yf = '12';
break; break;
} }
return $st[2].'/'.$yf.'/'.$st[0].'/'; return $st[2] . '/' . $yf . '/' . $st[0] . '/';
} }
} }

View File

@@ -1394,6 +1394,96 @@ http://www.crossref.org/schemas/crossref4.3.7.xsd">' . PHP_EOL . PHP_EOL;
$txt = ROOT_PATH . 'public' . DS . 'xml' . DS . 'all_1.xml'; $txt = ROOT_PATH . 'public' . DS . 'xml' . DS . 'all_1.xml';
file_put_contents($txt, $xml); file_put_contents($txt, $xml);
} }
/**
* @title 增加相关文章
* @description 增加相关文章
* @author wangjinlei
* @url /master/Article/addRelatedArticle
* @method POST
*
* @param name:article_id type:int require:1 desc:文章id
* @param name:add_article_id type:int require:1 desc:增加的文章id
*/
public function addRelatedArticle(){
$data = $this->request->post();
$article_info = $this->article_obj->where('article_id',$data['article_id'])->find();
$frag = [];
if($article_info['related']==""){
$frag[] = $data['add_article_id'];
}else{
if(in_array($data['add_article_id'], object_to_array(json_decode($article_info['related'])))){
return jsonError("重复添加!!");
}
$frag = array_merge(object_to_array(json_decode($article_info['related'])),[$data['add_article_id']]);
}
$this->article_obj->where("article_id",$data['article_id'])->update(['related'=> json_encode($frag)]);
return jsonSuccess([]);
}
/**
* @title 删除相关文章
* @description 删除相关文章
* @author wangjinlei
* @url /master/Article/delRelatedArticle
* @method POST
*
* @param name:article_id type:int require:1 desc:文章id
* @param name:del_article_id type:int require:1 desc:增加的文章id
*/
public function delRelatedArticle(){
$data = $this->request->post();
$article_info = $this->article_obj->where("article_id",$data['article_id'])->find();
$frag = object_to_array(json_decode($article_info['related']));
foreach ($frag as $k => $v){
if($v==$data['del_article_id']){
unset($frag[$k]);
}
}
$this->article_obj->where("article_id",$data['article_id'])->update(['related'=> json_encode($frag)]);
return jsonSuccess([]);
}
/**
* @title 获取相关文章
* @description 获取相关文章
* @author wangjinlei
* @url /master/Article/getRelatedArticles
* @method POST
*
* @param name:article_id type:int require:1 desc:文章id
*
* @return articles:文章列表#
*/
public function getRelatedArticles(){
$data = $this->request->post();
$article_info = $this->article_obj->where("article_id",$data['article_id'])->find();
$list = $this->article_obj->where("article_id","in", object_to_array(json_decode($article_info['related'])))->select();
$re['articles'] = $list;
return jsonSuccess($re);
}
/**
* @title 获取期刊分期文章
* @description 获取期刊分期文章
* @author wangjinlei
* @url /master/Article/getArticlesByStages
* @method POST
*
* @param name:journal_id type:int require:1 desc:期刊id
*
* @return stages:文章列表#
*/
public function getArticlesByStages(){
$data = $this->request->post();
//获取期刊分期
$stage = $this->journal_stage_obj->where('journal_id',$data['journal_id'])->where("state",0)->order('stage_vol desc,stage_no')->select();
foreach ($stage as $k => $v){
$stage[$k]['articles'] = $this->article_obj->where('journal_stage_id',$v['journal_stage_id'])->where('state',0)->select();
}
$re['stages'] = $stage;
return jsonSuccess($re);
}
/** /**
* @title 注册doi * @title 注册doi