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->article_ltai_obj = Db::name('article_ltai'); $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->journal_line_obj = Db::name('journal_line'); $this->article_to_topic_obj = Db::name('article_to_topic'); $this->article_to_line_obj = Db::name('article_to_line'); $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 获取期刊列表byname * @description 获取期刊列表byname * @author wangjinlei * @url /api/Journal/getJournalListByName * @method POST * * * @return journalList:期刊列表@ * @journalList title:标题 issn:issn editorinchief:editorinchief acceptance:acceptance finaldecision:finaldecision apc:apc */ public function getJournalListByName() { $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.title') ->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 relats:关联数组# * @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(); $rearr = $journal_info['relate']==''?[]:explode(',',$journal_info['relate']); $relatelist = $this->journal_obj->where('journal_id','in',$rearr)->where('state',0)->select(); $absList = $this->journal_abs_obj->where('journal_id', $data['journal_id'])->where('state', 0)->order('sort')->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,'relats'=>$relatelist ,'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 获取期刊line * @description 获取期刊line * @author wangjinlei * @url /api/Journal/getJournalLine * @method POST * * @param name:journal_id type:int require:1 desc:期刊id * * @return lines:期刊line数组# */ public function getJournalLine(){ $data = $this->request->post(); $list = $this->journal_line_obj->where('journal_id',$data['journal_id'])->where('state',0)->order('journal_line_id')->select(); $re['lines'] = $list; return jsonSuccess($re); } /** * @title 获取期刊line文章 * @description 获取期刊line文章 * @author wangjinlei * @url /api/Journal/getJournalLineArt * @method POST * * @param name:journal_line_id type:int require:1 desc:期刊lineid * * @return journalLine:期刊时间线信息# * @return articles:期刊line文章数组# */ public function getJournalLineArt(){ $data = $this->request->post(); $journalLine = $this->journal_line_obj->where('journal_line_id',$data['journal_line_id'])->find(); $journal_info = $this->journal_obj->where('journal_id',$journalLine['journal_id'])->find(); $list = $this->article_to_line_obj->field('j_article.*,j_journal_stage.*') ->join([['j_article','j_article_to_line.article_id = j_article.article_id','LEFT'],['j_journal_stage','j_journal_stage.journal_stage_id = j_article.journal_stage_id','LEFT']]) ->where('j_article_to_line.journal_line_id',$data['journal_line_id']) ->where('j_article_to_line.state',0) ->order('j_article.sort desc') ->select(); //标题斜体 foreach ($list as $k => $v) { $caches = $this->article_ltai_obj->where('article_id', $v['article_id'])->where('state', 0)->column('content'); $cache_title = $v['title']; foreach ($caches as $val) { $cache_title = str_replace($val, '' . $val . '', $cache_title); } $list[$k]['title'] = $cache_title; } //获取作者 foreach ($list as $k => $v) { $stage_info = $this->journal_stage_obj->where('journal_stage_id',$v['journal_stage_id'])->find(); //组合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); } // //获取作者 // foreach ($list as $k => $v) { // $list[$k]['authortitle'] = $this->getAuthor($v); // } $re['journalLine'] = $journalLine; $re['articles'] = $list; return jsonSuccess($re); } /** * @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) { $caches = $this->article_ltai_obj->where('article_id', $v['article_id'])->where('state', 0)->column('content'); $cache_title = $v['title']; foreach ($caches as $val) { $cache_title = str_replace($val, '' . $val . '', $cache_title); } $list[$k]['title'] = $cache_title; } //获取作者 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 = $frag == '' ? '' . $v['author_name'] : $frag . ', ' . $v['author_name']; } return $frag; } /** * @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'); $journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find(); $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) ->order('j_article.sort desc') ->select(); //标题斜体 foreach ($list as $k => $v) { $caches = $this->article_ltai_obj->where('article_id', $v['article_id'])->where('state', 0)->column('content'); $cache_title = $v['title']; foreach ($caches as $val) { $cache_title = str_replace($val, '' . $val . '', $cache_title); } $list[$k]['title'] = $cache_title; } //获取作者 foreach ($list as $k => $v) { $stage_info = $this->journal_stage_obj->where('journal_stage_id',$v['journal_stage_id'])->find(); //组合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' => ['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'); $journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find(); $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(); //获取作者 foreach ($list as $k => $v) { $stage_info = $this->journal_stage_obj->where('journal_stage_id',$v['journal_stage_id'])->find(); //组合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); } //标题斜体 foreach ($list as $k => $v) { $caches = $this->article_ltai_obj->where('article_id', $v['article_id'])->where('state', 0)->column('content'); $cache_title = $v['title']; foreach ($caches as $val) { $cache_title = str_replace($val, '' . $val . '', $cache_title); } $list[$k]['title'] = $cache_title; } 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(); $journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find(); $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') ->select(); //获取作者 foreach ($list as $k => $v) { $stage_info = $this->journal_stage_obj->where('journal_stage_id',$v['journal_stage_id'])->find(); //组合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); } //标题斜体 foreach ($list as $k => $v) { $caches = $this->article_ltai_obj->where('article_id', $v['article_id'])->where('state', 0)->column('content'); $cache_title = $v['title']; foreach ($caches as $val) { $cache_title = str_replace($val, '' . $val . '', $cache_title); } $list[$k]['title'] = $cache_title; } 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)->order('ctime desc')->select(); return jsonSuccess(['notices' => $list]); } /** * @title 获取消息详情 * @description 获取消息详情 * @author wangjinlei * @url /api/Journal/getNoticesDetail * @method POST * * @param name:journal_notices_id type:int require:1 desc:期刊消息id * * @return notices:消息内容# */ public function getNoticesDetail() { $data = $this->request->post(); $notices_info = $this->journal_notices_obj->where('journal_notices_id', $data['journal_notices_id'])->find(); $re['notices'] = $notices_info; return jsonSuccess($re); } /** * @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(); $journal_info = $this->journal_obj->where('journal_id', $data['journal_id'])->find(); if ($topic_info) { $list = $this->article_to_topic_obj->field('j_article.*,j_journal_stage.*') ->join(array(['j_article', 'j_article.article_id = j_article_to_topic.article_id', 'LEFT'], ['j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT'])) ->where('j_article_to_topic.topic_id', $topic_info['journal_topic_id']) ->where('j_article_to_topic.state', 0) ->order('j_article.sort desc') ->select(); //获取作者 foreach ($list as $k => $v) { $stage_info = $this->journal_stage_obj->where('journal_stage_id',$v['journal_stage_id'])->find(); //组合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); } //标题斜体 foreach ($list as $k => $v) { $caches = $this->article_ltai_obj->where('article_id', $v['article_id'])->where('state', 0)->column('content'); $cache_title = $v['title']; foreach ($caches as $val) { $cache_title = str_replace($val, '' . $val . '', $cache_title); } $list[$k]['title'] = $cache_title; } 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 获取期刊cfp详情 * @description 获取期刊cfp详情 * @author wangjinlei * @url /api/Journal/getCfpDetail * @method POST * * @param name:journal_cfp_id type:int require:1 desc:期刊cfpid * * @return cfp:期刊cfp信息# */ public function getCfpDetail() { $data = $this->request->post(); $cfp_info = $this->journal_cfp_obj->where('journal_cfp_id', $data['journal_cfp_id'])->find(); $re['cfp'] = $cfp_info; 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); } }