217 lines
7.4 KiB
PHP
217 lines
7.4 KiB
PHP
<?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:条件1(title/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:条件2(title/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();
|
||
$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;
|
||
}
|
||
|
||
public function test() {
|
||
echo md5('123456');
|
||
}
|
||
|
||
}
|