admin_obj = Db::name('admin'); $this->journal_obj = Db::name('journal'); $this->article_obj = Db::name('article'); $this->article_author_obj = Db::name('article_author'); $this->journal_topic_obj = Db::name('journal_topic'); $this->journal_stage_obj = Db::name('journal_stage'); $this->journal_notices_obj = Db::name('journal_notices'); $this->journal_abs_obj = Db::name('journal_abstracting'); $this->journal_cfp_obj = Db::name('journal_cfp'); $this->article_to_topic_obj = Db::name('article_to_topic'); $this->journal_paper_obj = Db::name('journal_paper'); $this->journal_paper_art_obj = Db::name('journal_paper_art'); } /** * @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 desc')->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('sort asc') ->select(); $stage_info = $this->journal_stage_obj->where('journal_stage_id',$journal_info['publish_stage_id'])->find(); //获取作者 foreach($list as $k=>$v){ //组合cite信息 $no = $stage_info['stage_no']==0?':':'('.$stage_info['stage_no'].'):'; $cite = $v['abbr'].' '.$v['title'].' '.$journal_info['jabbr'].' '.$stage_info['stage_year'].';'.$stage_info['stage_vol'].$no.$v['npp'].'. doi:'.$v['doi']; $list[$k]['cite'] = $cite; $list[$k]['authortitle'] = $this->getAuthor($v); } return json(['code'=>0,'msg'=>'success','data'=>['stage'=>$stage_info,'articleList'=>$list]]); } private function getAuthor($article){ $where['article_id'] = $article['article_id']; $where['state'] = 0; $list = $this->article_author_obj->where($where)->select(); $frag = ''; foreach ($list as $k=>$v){ $frag .= $v['author_name'].','; } return substr($frag,0, -1); } /** * @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 ->field('j_article.*,j_journal_stage.*') ->join('j_journal_stage','j_article.journal_stage_id = j_journal_stage.journal_stage_id','LEFT') ->where('j_article.journal_stage_id','in',$stages) ->where('j_article.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',1)->where('state',0)->column('journal_stage_id'); $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') ->where('j_article.journal_stage_id','in',$stages) ->where('j_article.state',0) ->where('j_article.type',['like','News'],['like','Comment'],'or') ->order('j_article.article_id') ->select(); return json(['code'=>0,'msg'=>'success','data'=>['articlelist'=>$list]]); } /** * @title 获取top前4条article * @description 获取top前4条article * @author wangjinlei * @url /api/Journal/getTopArticle * @method POST * * @param name:journal_id type:int require:1 desc:期刊id * * @return articles:文章列表array# */ public function getTopArticle(){ $data = $this->request->post(); $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')->where('j_article.journal_id',$data['journal_id'])->where('j_article.state',0)->orderRaw('j_article.cited+j_article.abs_num+j_article.pdf_num desc')->limit(4)->select(); return jsonSuccess(['articles'=>$list]); } /** * @title 获取消息列表 * @description 获取消息列表 * @author wangjinlei * @url /api/Journal/getNotices * @method POST * * @param name:journal_id type:int require:1 desc:期刊id * * @return notices:消息列表array# */ public function getNotices(){ $data = $this->request->post(); $list = $this->journal_notices_obj->where('journal_id',$data['journal_id'])->where('state',0)->select(); return jsonSuccess(['notices'=>$list]); } /** * @title 获取highl话题文章 * @description 获取highl话题文章 * @author wangjinlei * @url /api/Journal/getHighTopicArticle * @method POST * * @param name:journal_id type:int require:1 desc:期刊id * * @return topic_info:话题详情 * @return articlelist:文章列表array# */ public function getHighTopicArticle(){ $data = $this->request->post(); $topic_info = $this->journal_topic_obj->where('journal_id',$data['journal_id'])->where('position','highlights')->where('state',0)->find(); if($topic_info){ $list = $this->article_to_topic_obj->field('j_article.*') ->join('j_article','j_article.article_id = j_article_to_topic.article_id','LEFT') ->where('j_article_to_topic.topic_id',$topic_info['journal_topic_id']) ->where('j_article_to_topic.state',0) ->select(); return jsonSuccess(['topic_info'=>$topic_info,'articlelist'=>$list]); }else{ return jsonError('no highlights'); } } /** * @title 获取话题列表 * @description 获取话题列表 * @author wangjinlei * @url /api/Journal/getTopicList * @method POST * * @param name:journal_topic_id type:int require:1 desc:期刊话题id * * @return oldJournal:父期刊信息 Description * @return journalList:话题列表array# */ public function getTopicList(){ $data = $this->request->post(); $journal_info = $this->journal_topic_obj->where('journal_topic_id',$data['journal_topic_id'])->find(); $list = $this->journal_topic_obj->where('parent_id',$data['journal_topic_id'])->where('state',0)->select(); $re['oldJournal'] = $journal_info; $re['journalList'] = $list; return jsonSuccess($re); } /** * @title 获取期刊cfp * @description 获取期刊cfp * @author wangjinlei * @url /api/Journal/getJournalCfp * @method POST * * @param name:journal_id type:int require:1 desc:期刊id * * @return cfps:期刊cfps# */ public function getJournalCfp(){ $data = $this->request->post(); $list = $this->journal_cfp_obj->where('journal_id',$data['journal_id'])->where('state',0)->select(); $re['cfps'] = $list; return jsonSuccess($re); } /** * @title 获取期刊footer * @description 获取期刊footer * @author wangjinlei * @url /api/Journal/getFooter * @method POST * * @param name:journal_id type:int require:1 desc:期刊id * * @return footers:footers# */ public function getFooter(){ $data = $this->request->post(); $papers = $this->journal_paper_obj->where('journal_id',$data['journal_id'])->where('state',0)->select(); foreach ($papers as $k => $v){ $cache_list = $this->journal_paper_art_obj->where('journal_paper_id',$v['journal_paper_id'])->where('state',0)->select(); $papers[$k]['articles'] = $cache_list; } $re['footers'] = $papers; return jsonSuccess($re); } /** * @title 获取期刊footer文章 * @description 获取期刊footer文章 * @author wangjinlei * @url /api/Journal/getFooterArt * @method POST * * @param name:journal_paper_art_id type:int require:1 desc:期刊footer文章id * * @return article:文章内容# */ public function getFooterArt(){ $data = $this->request->post(); $article = $this->journal_paper_art_obj->where('journal_paper_art_id',$data['journal_paper_art_id'])->find(); $re['article'] = $article; return jsonSuccess($re); } }