Files
journal/application/api/controller/Main.php
wangjinlei 4fedd4147a 20201112
2020-12-16 15:08:18 +08:00

219 lines
7.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace app\api\controller;
use think\Controller;
use think\Db;
/**
* @title 前段web接口
* @description 前段web接口
* @group 前段web接口
*/
class Main extends Controller{
//put your code here
protected $admin_obj = '';
protected $journal_obj = '';
protected $article_obj = '';
protected $article_author_obj = '';
protected $journal_topic_obj = '';
protected $journal_stage_obj = '';
protected $journal_notices_obj = '';
protected $journal_abs_obj = '';
protected $article_to_topic_obj = '';
protected $sys_scient_obj = '';
protected $sys_book_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->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->article_to_topic_obj = Db::name('article_to_topic');
$this->sys_scient_obj = Db::name('system_scient');
$this->sys_book_obj = Db::name('system_books');
}
/**
* @title 获取scients
* @description 获取scients
* @author wangjinlei
* @url /api/Main/getScients
* @method POST
*
* @return scients:array#
*/
public function getScients(){
$list = $this->sys_scient_obj->where('state',0)->select();
$re['scients'] = $list;
return jsonSuccess($re);
}
/**
* @title 获取scients详情
* @description 获取scients详情
* @author wangjinlei
* @url /api/Main/getScientDetail
* @method POST
*
* @param name:system_scient_id type:int require:1 desc:主键id
*
* @return scient:array#
*/
public function getScientDetail(){
$data = $this->request->post();
$info = $this->sys_scient_obj->where('system_scient_id',$data['system_scient_id'])->find();
$re['scient'] = $info;
return jsonSuccess($re);
}
/**
* @title 获取books
* @description 获取books
* @author wangjinlei
* @url /api/Main/getBooks
* @method POST
*
* @return books:array#
*/
public function getBooks(){
$list = $this->sys_book_obj->where('state',0)->select();
$re['books'] = $list;
return jsonSuccess($re);
}
/**
* @title 获取book详情
* @description 获取book详情
* @author wangjinlei
* @url /api/Main/getBookDetail
* @method POST
*
* @param name:system_book_id type:int require:1 desc:主键id
*
* @return book:array#
*/
public function getBookDetail(){
$data = $this->request->post();
$info = $this->sys_book_obj->where('system_book_id',$data['system_book_id'])->find();
$re['book'] = $info;
return jsonSuccess($re);
}
/**
* @title 获取首页Highlights
* @description 获取首页Highlights
* @author wangjinlei
* @url /api/Main/getMainhl
* @method POST
*
* @param name:journal_id type:int require:1 desc:期刊id
*
* @return Highlights:array#
*/
public function getMainhl(){
$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.*,j_journal_stage.*')
->join(array(['j_article','j_article.article_id = j_article_to_topic.article_id','LEFT'],['j_journal_stage','j_journal_stage.journal_stage_id = j_article.journal_stage_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/Main/getJournals
* @method POST
*
* @return journals:array#
*/
public function getJournals(){
$list = $this->journal_obj->where('state',0)->select();
$re['journals'] = $list;
return jsonSuccess($re);
}
/**
* @title 获取查找文章列表
* @description 获取查找文章列表
* @author wangjinlei
* @url /api/Main/getSearchArt
* @method POST
*
* @param name:journals type:string require:1 desc:期刊id(demo:1,2,3)
* @param name:condition1 type:string require:1 desc:条件1title/keywords/abstract
* @param name:condition1_text type:string require:1 desc:条件1字段
* @param name:relation type:string require:2 desc:两条件的链接条件('and/or')
* @param name:condition2 type:string require:2 desc:条件2title/keywords/abstract
* @param name:condition2_text type:string require:2 desc:条件2字段
* @param name:pageIndex type:int require:1 desc:当前页码数
* @param name:pageSize type:int require:1 desc:单页数据条数
*
* @return count:总数
* @return journals:array#
*/
public function getSearchArt(){
$data = $this->request->post();
// $data['journals'] = '1,2,3';
// $data['condition1'] = 'title';
// $data['condition1_text'] = '1';
// $data['relation'] = 'or';
// $data['condition2'] = 'keywords';
// $data['condition2_text'] = '1';
// $data['pageIndex'] = 1;
// $data['pageSize'] = 12;
$where = "j_article.journal_id in (".$data['journals'].")";
if($data['condition2_text']!=''){
if($data['relation']=='and'){
$where .= ' and j_article.'.$data['condition1'] .' like "%'.$data['condition1_text'].'%" and j_article.'.$data['condition2'] .' like "%'.$data['condition2_text'].'%"';
}else{
$where .= ' and (j_article.'.$data['condition1'] .' like "%'.$data['condition1_text'].'%" or j_article.'.$data['condition2'] .' like "%'.$data['condition2_text'].'%")';
}
}else{
$where .= 'and j_article.'.$data['condition1'] .' like "%'.$data['condition1_text'].'%"';
}
$limit_start = ($data['pageIndex'] - 1) * $data['pageSize'];
$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($where)
->order('j_article.article_id')
->limit($limit_start,$data['pageSize'])
->select();
foreach ($list as $k => $v){
$list[$k]['authortitle'] = $this->getAuthor($v);
}
$count = $this->article_obj->where($where)->count();
$re['count'] = $count;
$re['journals'] = $list;
return jsonSuccess($re);
}
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;
}
}