Files
journal/application/api/controller/Journal.php
wangjinlei 7a750502d4 20201112
2020-12-04 14:58:58 +08:00

178 lines
6.4 KiB
PHP

<?php
namespace app\api\controller;
use think\Controller;
use think\Db;
/**
* @title 期刊web接口
* @description 期刊web相关操作
* @group 期刊web相关
*/
class Journal extends Controller {
//put your code here
protected $admin_obj = '';
protected $journal_obj = '';
protected $article_obj = '';
protected $journal_topic_obj = '';
protected $journal_stage_obj = '';
protected $journal_abs_obj = '';
protected $article_to_topic_obj = '';
public function __construct(\think\Request $request = null) {
parent::__construct($request);
$this->admin_obj = Db::name('admin');
$this->journal_obj = Db::name('journal');
$this->article_obj = Db::name('article');
$this->journal_topic_obj = Db::name('journal_topic');
$this->journal_stage_obj = Db::name('journal_stage');
$this->journal_abs_obj = Db::name('journal_abstracting');
$this->article_to_topic_obj = Db::name('article_to_topic');
}
/**
* @title 获取期刊列表
* @description 获取期刊列表
* @author wangjinlei
* @url /api/Journal/getJournalList
* @method POST
*
*
* @return journalList:期刊列表@
* @journalList title:标题 issn:issn editorinchief:editorinchief acceptance:acceptance finaldecision:finaldecision apc:apc
*/
public function getJournalList(){
$where['j_journal.state'] = 0;
$res = $this->journal_obj
->field('j_journal.*,j_admin.realname realname')
->join('j_admin','j_admin.admin_id = j_journal.editor_id','LEFT')
->where($where)
->order(['j_journal.sort desc','j_journal.journal_id'])
->select();
return json(['code'=>0,'msg'=>'success','data'=>['journalList'=>$res]]);
}
/**
* @title 获取期刊信息
* @description 获取期刊信息
* @author wangjinlei
* @url /api/Journal/getJournal
* @method POST
*
* @param name:journal_id type:int require:1 desc:期刊id
*
* @return journal:期刊基础信息array#
* @return journalAbs:期刊外链信息array#
* @return journalstage:期刊分期信息array#
*/
public function getJournal(){
$data = $this->request->post();
$journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find();
$absList = $this->journal_abs_obj->where('journal_id',$data['journal_id'])->where('state',0)->order('journal_abstracting_id')->select();
$stageList = $this->journal_stage_obj->where('journal_id',$data['journal_id'])->where('is_publish',1)->where('state',0)->order('journal_stage_id')->select();
return json(['code'=>0,'msg'=>'success','data'=>['journal'=>$journal_info,'journalAbs'=>$absList,'journalStage'=>$stageList]]);
}
/**
* @title 获取期刊话题
* @description 获取期刊话题
* @author wangjinlei
* @url /api/Journal/getJournalTopic
* @method POST
*
* @param name:journal_id type:int require:1 desc:期刊id
*
* @return topicList:期刊话题列表array#
*/
public function getJournalTopic(){
$data = $this->request->post();
$res = $this->journal_topic_obj
->where('journal_id',$data['journal_id'])
->where('state',0)
->select();
//处理数组
$frag = [];
foreach ($res as $v){
if($v['parent_id'] == 0){
$frag[] = $v;
}
}
foreach ($frag as $kk => $vv){
$frag[$kk] = $this->getChieldarr($vv,$res);
}
return json(['code'=>0,'msg'=>'success','data'=>['topicList'=>$frag]]);
}
private function getChieldarr($vv,$res){
if($vv['is_final']==1){
return $vv;
}
foreach ($res as $v){
if($v['parent_id'] == $vv['journal_topic_id']){
$vv['children'][] = $this->getChieldarr($v, $res);
}
}
return $vv;
}
/**
* @title 获取期刊推广文章
* @description 获取期刊推广文章
* @author wangjinlei
* @url /api/Journal/getJournalArticles
* @method POST
*
* @param name:journal_id type:int require:1 desc:期刊id
*
* @return articleList:期刊话题列表array#
* @return stage:当前分期信息array#
*/
public function getJournalArticles(){
$data = $this->request->post();
$journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find();
$list = $this->article_obj->where('journal_stage_id',$journal_info['publish_stage_id'])
->where('state',0)
->order('article_id desc')
->select();
$stage_info = $this->journal_stage_obj->where('journal_stage_id',$journal_info['publish_stage_id'])->find();
return json(['code'=>0,'msg'=>'success','data'=>['stage'=>$stage_info,'articleList'=>$list]]);
}
/**
* @title 获取onlinefirst文章
* @description 获取onlinefirst文章
* @author wangjinlei
* @url /api/Journal/getOnlineArticle
* @method POST
*
* @param name:journal_id type:int require:1 desc:期刊id
*
* @return articlelist:文章列表array#
*/
public function getOnlineArticle(){
$data = $this->request->post();
$stages = $this->journal_stage_obj->where('journal_id',$data['journal_id'])->where('is_publish',0)->where('state',0)->column('journal_stage_id');
$list = $this->article_obj->where('journal_stage_id','in',$stages)->where('state',0)->select();
return json(['code'=>0,'msg'=>'success','data'=>['articlelist'=>$list]]);
}
/**
* @title 获取news文章
* @description 获取news文章
* @author wangjinlei
* @url /api/Journal/getNewsArticle
* @method POST
*
* @param name:journal_id type:int require:1 desc:期刊id
*
* @return articlelist:文章列表array#
*/
public function getNewsArticle(){
$data = $this->request->post();
$stages = $this->journal_stage_obj->where('journal_id',$data['journal_id'])->where('is_publish',0)->where('state',0)->column('journal_stage_id');
$list = $this->article_obj->where('journal_stage_id','in',$stages)->where('state',0)->where('type','News','Comment','or')->order('article_id')->select();
return json(['code'=>0,'msg'=>'success','data'=>['articlelist'=>$list]]);
}
}