172 lines
6.6 KiB
PHP
172 lines
6.6 KiB
PHP
<?php
|
|
|
|
namespace app\master\controller;
|
|
|
|
use Exception;
|
|
use think\Controller;
|
|
use think\Db;
|
|
use think\Queue;
|
|
use think\Validate;
|
|
|
|
/**
|
|
* @title 文章接口
|
|
* @description 文章相关操作
|
|
* @group 文章相关
|
|
*/
|
|
class Submision extends Controller {
|
|
|
|
//put your code here
|
|
protected $admin_obj = '';
|
|
protected $journal_obj = '';
|
|
protected $article_obj = '';
|
|
protected $article_author_obj = '';
|
|
protected $article_organ_obj = '';
|
|
protected $article_ltai_obj = '';
|
|
protected $article_cite_obj = '';
|
|
protected $author_to_organ_obj = '';
|
|
protected $article_to_topic_obj = '';
|
|
protected $journal_topic_obj = '';
|
|
protected $journal_stage_obj = '';
|
|
protected $journal_special_obj = '';
|
|
protected $country_obj = '';
|
|
protected $subscribe_journal_obj = '';
|
|
protected $subscribe_topic_obj = '';
|
|
protected $base_topic_obj = '';
|
|
protected $subscribe_base_topic_obj = '';
|
|
protected $medicament_obj = '';
|
|
protected $article_to_medicament_obj = '';
|
|
protected $article_main_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->article_author_obj = Db::name('article_author');
|
|
$this->article_organ_obj = Db::name('article_organ');
|
|
$this->article_ltai_obj = Db::name('article_ltai');
|
|
$this->article_cite_obj = Db::name('article_cite');
|
|
$this->author_to_organ_obj = Db::name('article_author_to_organ');
|
|
$this->article_to_topic_obj = Db::name('article_to_topic');
|
|
$this->journal_topic_obj = Db::name('journal_topic');
|
|
$this->journal_stage_obj = Db::name('journal_stage');
|
|
$this->journal_special_obj = Db::name('journal_special');
|
|
$this->country_obj = Db::name('country');
|
|
$this->subscribe_journal_obj = Db::name('subscribe_journal');
|
|
$this->subscribe_topic_obj = Db::name('subscribe_topic');
|
|
$this->base_topic_obj = Db::name('base_topic');
|
|
$this->subscribe_base_topic_obj = Db::name('subscribe_base_topic');
|
|
$this->medicament_obj = Db::name('medicament');
|
|
$this->article_to_medicament_obj = Db::name('ArticleToMedicament');
|
|
$this->article_main_obj = Db::name("article_main");
|
|
}
|
|
|
|
public function getJournalStages(){
|
|
$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();
|
|
$list = $this->journal_stage_obj->where('journal_id',$journal_info['journal_id'])->where('state',0)->select();
|
|
$re['stages'] = $list;
|
|
return jsonSuccess($re);
|
|
}
|
|
|
|
|
|
public function getArticlesByStage(){
|
|
$data = $this->request->post();
|
|
$rule = new Validate([
|
|
"journal_stage_id"=>"require"
|
|
]);
|
|
if(!$rule->check($data)){
|
|
return jsonError($rule->getError());
|
|
}
|
|
$list = $this->article_obj->where('journal_stage_id',$data['journal_stage_id'])->where('state',0)->order('sort')->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, '<i>' . $val . '</i>', $cache_title);
|
|
}
|
|
$list[$k]['title'] = $cache_title;
|
|
}
|
|
|
|
//获取作者
|
|
foreach ($list as $k => $v) {
|
|
$journal_info = $this->journal_obj->where('journal_id',$v['journal_id'])->find();
|
|
$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'] . '):';
|
|
if ($journal_info['journal_id'] == 22) {
|
|
$cite = $v['abbr'] . '. ' . $v['title'] . '[J]. ' . $journal_info['jabbr'] . ',' . $stage_info['stage_year'] . ',' . $stage_info['stage_vol'] . $no . $v['npp'] . '. doi:' . $v['doi'];
|
|
} else {
|
|
$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();
|
|
|
|
$list[$k]['topic'] = $cache_topic;
|
|
$list[$k]['cite'] = $cite;
|
|
$list[$k]['journal_title'] = choiseti1($v['article_id'],$journal_info['title']);
|
|
$list[$k]['authortitle'] = $this->getAuthor($v);
|
|
}
|
|
$re['articles'] = $list;
|
|
return jsonSuccess($re);
|
|
}
|
|
|
|
public function getTopicsByIssn(){
|
|
$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();
|
|
$res = $this->journal_topic_obj
|
|
->where('journal_id', $journal_info['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);
|
|
}
|
|
$re['topics'] = $frag;
|
|
return jsonSuccess($re);
|
|
}
|
|
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;
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
|
|
}
|