文章引用接口调整

This commit is contained in:
chengxl
2025-06-24 17:27:48 +08:00
parent ad64111e3b
commit 4ddb409d7a

View File

@@ -96,24 +96,13 @@ class Journal extends Controller
/**
* 获取全部期刊
*/
// public function getJournals()
// {
// $jouranls = $this->journal_obj->where('state', 0)->select();
// $re['journals'] = $jouranls;
// return jsonSuccess($re);
// }
public function getJournals()
{
//根据条件搜索
$aParam = $this->request->post();
$aWhere['state'] = 0;
if(!empty($aParam['issn'])){
$aWhere['issn'] = ['in',$aParam['issn']];
}
$jouranls = $this->journal_obj->where($aWhere)->select();
$jouranls = $this->journal_obj->where('state', 0)->select();
$re['journals'] = $jouranls;
return jsonSuccess($re);
}
/**
* 获取分期通过期刊
*/
@@ -249,6 +238,27 @@ class Journal extends Controller
return jsonSuccess([]);
}
// public function getCiteListForSubmission(){
// $data = $this->request->post();
// $rule = new Validate([
// "issn"=>"require"
// ]);
// if(!$rule->check($data)){
// return jsonError($rule->getError());
// }
// $journal_info = $this->journal_obj->where("issn",$data['issn'])->find();
// $s_time = strtotime(date("Y-m")."-1");
// $list1 = $this->article_cite_obj
// ->field("j_article.title,j_article.doi,j_article.article_id,j_article_cite.article_cite_id,j_article_cite.factor,j_article_cite.article_name,j_article_cite.doi article_doi,j_article_cite.journal_name,j_article_cite.vol,j_article_cite.is_wos,j_article_cite.is_china")
// ->join("j_article","j_article.article_id = j_article_cite.article_id","left")
// ->where("j_article_cite.journal_id",$journal_info['journal_id'])
// ->where("j_article_cite.state",1)
// ->where("j_article_cite.ctime",">",$s_time)
// ->select();
// $re['list'] = $list1;
// return jsonSuccess($re);
// }
public function getCiteListForSubmission(){
$data = $this->request->post();
$rule = new Validate([
@@ -259,17 +269,66 @@ class Journal extends Controller
}
$journal_info = $this->journal_obj->where("issn",$data['issn'])->find();
$s_time = strtotime(date("Y-m")."-1");
$aWhere = ['journal_id' => $journal_info['journal_id'],'state' => 1,'ctime' => ['>',$s_time]];
$list1 = $this->article_cite_obj
->field("j_article.title,j_article.doi,j_article.article_id,j_article_cite.article_cite_id,j_article_cite.factor,j_article_cite.article_name,j_article_cite.doi article_doi,j_article_cite.journal_name,j_article_cite.vol,j_article_cite.is_wos,j_article_cite.is_china")
->join("j_article","j_article.article_id = j_article_cite.article_id","left")
->where("j_article_cite.journal_id",$journal_info['journal_id'])
->where("j_article_cite.state",1)
->where("j_article_cite.ctime",">",$s_time)
->field("article_cite_id,article_id,factor,article_name,doi article_doi,journal_name,vol,is_wos,is_china,author")
->where($aWhere)
->select();
if(!empty($list1)){
//查询文章信息
$aArticleId = array_unique(array_column($list1, 'article_id'));
$aWhere = ['article_id' => ['in',$aArticleId]];
$aArticle = Db::name('article')->field('journal_stage_id,title,doi,article_id,npp')->where($aWhere)->select();
$aArticle = empty($aArticle) ? [] : array_column($aArticle, null,'article_id');
$aStageId = empty($aArticle) ? [] : array_unique(array_column($aArticle, 'journal_stage_id'));
if(!empty($aStageId)){
$aWhere = ['journal_stage_id' => ['in',$aStageId]];
$aStage = Db::name('journal_stage')->field('journal_stage_id,stage_year,stage_vol,stage_no,journal_id')->where($aWhere)->select();
$aStage = empty($aStage) ? [] : array_column($aStage, null,'journal_stage_id');
}
//数据处理
foreach ($list1 as $key => $value) {
//文章信息
$aArticleInfo = empty($aArticle[$value['article_id']]) ? [] : $aArticle[$value['article_id']];
$list1[$key] += $aArticleInfo;
//子刊信息
$list1[$key]['stage_info'] = '';
if(!empty($aArticleInfo)){
$iStageId = $aArticleInfo['journal_stage_id'];
$aStageInfo = empty($aStage[$iStageId]) ? [] : $aStage[$iStageId];
$list1[$key]['stage_info'] = $this->_cite($aStageInfo,$aArticleInfo);
}
}
}
$re['list'] = $list1;
return jsonSuccess($re);
}
/**
* 处理文章引用
* @param string $html
* @return string
*/
private function _cite($aJournalStage = [],$aArticle=[]){
if(empty($aJournalStage)){
return '';
}
$no = empty($aJournalStage['stage_no']) ? ':' : '(' . $aJournalStage['stage_no'] . '):';
$stage_year = empty($aJournalStage['stage_year']) ? '' : $aJournalStage['stage_year'];
$stage_vol = empty($aJournalStage['stage_vol']) ? '' : $aJournalStage['stage_vol'];
$sCite = '';
if ($aJournalStage['journal_id'] == 22) {
$sCite = $stage_year . ',' . $stage_vol . $no. $aArticle['npp'] . '. ';
} else {
$sCite = $stage_year . ';' . $stage_vol . $no. $aArticle['npp'] . '.' ;
}
return $sCite;
}
public function getCiteListPForSubmission(){
$data = $this->request->post();
$rule = new Validate([
@@ -352,10 +411,7 @@ class Journal extends Controller
// $list3 = $this->article_cite_obj->where("journal_id",$journal['journal_id'])->where("state",1)->where("ctime",">",$y_time)->select();
$y_time = date("Y");
//获取前两年的分期信息
$y_time_stages = $this->journal_stage_obj
->where("journal_id",$journal['journal_id'])
->whereIn("stage_year",[$y_time-1,$y_time-2])
->column("journal_stage_id");
$y_time_stages = $this->journal_stage_obj->where("journal_id",$journal['journal_id'])->whereIn("stage_year",[$y_time-1,$y_time-2])->column("journal_stage_id");
$list3 = $this->article_cite_obj
->field("j_article_cite.*")
->join("j_article","j_article.article_id = j_article_cite.article_id","left")