This commit is contained in:
wangjinlei
2021-02-22 16:56:45 +08:00
parent c6e41c6035
commit 846b42ba83
5 changed files with 278 additions and 8 deletions

View File

@@ -138,6 +138,7 @@ class Article extends Controller {
->join(array(['j_article', 'j_article_to_topic.article_id = j_article.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', $data['topic_id'])
->where('j_article_to_topic.state', 0)
->order('j_article.journal_stage_id desc , j_article.article_id desc')
->limit($limit_start,$data['pageSize'])
->select();
$count = $this->article_to_topic_obj

View File

@@ -369,8 +369,9 @@ class Journal extends Controller {
->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_journal_stage.stage_year','>','2018')
->where('j_article.type', ['like', 'News'], ['like', 'Comment'], 'or')
->order('j_journal_stage.journal_stage_id desc')
->order('j_journal_stage.stage_year desc,j_journal_stage.stage_vol desc,j_journal_stage.stage_no desc,j_article.article_id desc')
->select();
//获取作者
foreach ($list as $k => $v) {

View File

@@ -24,6 +24,7 @@ class Main extends Controller {
protected $article_to_topic_obj = '';
protected $sys_scient_obj = '';
protected $sys_book_obj = '';
protected $article_ltai_obj = '';
public function __construct(\think\Request $request = null) {
parent::__construct($request);
@@ -38,6 +39,7 @@ class Main extends Controller {
$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');
$this->article_ltai_obj = Db::name('article_ltai');
}
/**
@@ -107,6 +109,208 @@ class Main extends Controller {
$re['book'] = $info;
return jsonSuccess($re);
}
/**
* @title 获取首页文章列表
* @description 获取首页文章列表
* @author wangjinlei
* @url /api/Main/getMainArticles
* @method POST
*
* @return articles:文章信息array#
*/
public function getMainArticles(){
$list_tmr = $this->article_obj->field('j_article.*,j_journal_stage.*,j_journal.title journal_title,j_journal.jabbr journal_short')->join(array(['j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT'],['j_journal','j_article.journal_id = j_journal.journal_id','LEFT']))->where('j_article.journal_id',1)->where('j_journal_stage.is_publish',1)->where('j_article.state',0)->order('j_article.article_id desc')->limit(3)->select();
$list_zh = $this->article_obj->field('j_article.*,j_journal_stage.*,j_journal.title journal_title,j_journal.jabbr journal_short')->join(array(['j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT'],['j_journal','j_article.journal_id = j_journal.journal_id','LEFT']))->where('j_article.journal_id',17)->where('j_journal_stage.is_publish',1)->where('j_article.state',0)->order('j_article.article_id desc')->limit(1)->select();
$list_life = $this->article_obj->field('j_article.*,j_journal_stage.*,j_journal.title journal_title,j_journal.jabbr journal_short')->join(array(['j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT'],['j_journal','j_article.journal_id = j_journal.journal_id','LEFT']))->where('j_article.journal_id',14)->where('j_journal_stage.is_publish',1)->where('j_article.state',0)->order('j_article.article_id desc')->limit(1)->select();
$list_fyw = $this->article_obj->field('j_article.*,j_journal_stage.*,j_journal.title journal_title,j_journal.jabbr journal_short')->join(array(['j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT'],['j_journal','j_article.journal_id = j_journal.journal_id','LEFT']))->where('j_article.journal_id',20)->where('j_journal_stage.is_publish',1)->where('j_article.state',0)->order('j_article.article_id desc')->limit(1)->select();
$list_ywlh = $this->article_obj->field('j_article.*,j_journal_stage.*,j_journal.title journal_title,j_journal.jabbr journal_short')->join(array(['j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT'],['j_journal','j_article.journal_id = j_journal.journal_id','LEFT']))->where('j_article.journal_id',6)->where('j_journal_stage.is_publish',1)->where('j_article.state',0)->order('j_article.article_id desc')->limit(1)->select();
$list_zy = $this->article_obj->field('j_article.*,j_journal_stage.*,j_journal.title journal_title,j_journal.jabbr journal_short')->join(array(['j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT'],['j_journal','j_article.journal_id = j_journal.journal_id','LEFT']))->where('j_article.journal_id',18)->where('j_journal_stage.is_publish',1)->where('j_article.state',0)->order('j_article.article_id desc')->limit(1)->select();
$list = $list_tmr;
$list[] = $list_zh[0];
$list[] = $list_life[0];
$list[] = $list_fyw[0];
$list[] = $list_ywlh[0];
$list[] = $list_zy[0];
foreach ($list as $k => $v) {
$list[$k]['authortitle'] = $this->getAuthor($v);
}
$re['articles'] = $list;
return jsonSuccess($re);
}
/**
* @title 获取文章more列表
* @description 获取文章more列表
* @author wangjinlei
* @url /api/Main/getMoreArticles
* @method POST
*
* @return articles:文章信息array#
*/
public function getMoreArticles(){
$sql = "select a.* from (select MAX(article_id) aid from j_article WHERE state = 0 GROUP BY journal_id) c left join j_article a on a.article_id = c.aid";
$list = Db::query($sql);
//获取作者
foreach ($list as $k => $v) {
$stage_info = $this->journal_stage_obj->where('journal_stage_id', $v['journal_stage_id'])->find();
$journal_info = $this->journal_obj->where('journal_id', $v['journal_id'])->find();
//组合cite信息
$no = $stage_info['stage_no'] == 0 ? ':' : '(' . $stage_info['stage_no'] . '):';
$cite = $v['abbr'] . '. ' . $v['title'] . '. <i>' . $journal_info['jabbr'] . '</i>. ' . $stage_info['stage_year'] . ';' . $stage_info['stage_vol'] . $no . $v['npp'] . '. doi:' . $v['doi'];
$list[$k]['cite'] = $cite;
$list[$k]['authortitle'] = $this->getAuthor($v);
$list[$k] = array_merge($list[$k],$stage_info);
$list[$k]['journal_title'] = $journal_info['title'];
$list[$k]['journal_short'] = $journal_info['jabbr'];
}
//标题斜体
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) {
// $list[$k]['authortitle'] = $this->getAuthor($v);
// }
$re['articles'] = $list;
return jsonSuccess($re);
}
/**
* @title 获取onlinefirst文章列表
* @description 获取onlinefirst文章列表
* @author wangjinlei
* @url /api/Main/getOnlineFirstArticles
* @method POST
*
* @return articles:文章信息array#
*/
public function getOnlineFirstArticles(){
$list = $this->article_obj
->field('j_article.*,j_journal_stage.*,j_journal.title journal_title,j_journal.jabbr journal_short')
->join(array(['j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT'],['j_journal','j_article.journal_id = j_journal.journal_id','LEFT']))
->where('j_article.state',0)
->where('j_journal_stage.is_publish',0)
->where('j_article.journal_id','in','1,10,6,14,11,15,17,20,21,22')
->order('j_article.article_id desc')->select();
foreach ($list as $k => $v) {
$list[$k]['authortitle'] = $this->getAuthor($v);
}
$re['articles'] = $list;
return jsonSuccess($re);
}
/**
* @title 获取news/commons文章列表
* @description 获取news/commons文章列表
* @author wangjinlei
* @url /api/Main/getNewsArticles
* @method POST
*
* @param name:type require:1 type:string desc:(News/Comment)
*
* @return articles:文章信息array#
*/
public function getNewsArticles(){
$data = $this->request->post();
if($data['type']=='News'){
$type = 'News';
}else{
$type = 'Comment';
}
$list = $this->article_obj
->field('j_article.*,j_journal_stage.*,j_journal.title journal_title,j_journal.jabbr journal_short')
->join(array(['j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT'],['j_journal','j_article.journal_id = j_journal.journal_id','LEFT']))
->where('j_article.state',0)
->where('j_journal_stage.is_publish',1)
->where('j_article.journal_id','in','1,10,6,14,11,15,17,20,21,22')
->where('j_article.type', $type)
->order('j_article.article_id desc')
->select();
//获取作者
foreach ($list as $k => $v) {
$stage_info = $this->journal_stage_obj->where('journal_stage_id', $v['journal_stage_id'])->find();
$journal_info = $this->journal_obj->where('journal_id', $v['journal_id'])->find();
//组合cite信息
$no = $stage_info['stage_no'] == 0 ? ':' : '(' . $stage_info['stage_no'] . '):';
$cite = $v['abbr'] . '. ' . $v['title'] . '. <i>' . $journal_info['jabbr'] . '</i>. ' . $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, '<i>' . $val . '</i>', $cache_title);
}
$list[$k]['title'] = $cache_title;
}
$re['articles'] = $list;
return jsonSuccess($re);
}
/**
* @title 获取3top文章列表
* @description 获取3top文章列表
* @author wangjinlei
* @url /api/Main/getThireTopArticles
* @method POST
*
* @param name:type require:1 type:string desc:类型(cite/read/download)
*
* @return articles:文章信息array#
*/
public function getThireTopArticles(){
$data = $this->request->post();
if($data['type'] == 'cite'){
$order = 'j_article.cited desc';
}else if($data['type'] == 'read'){
$order = 'j_article.abs_num desc';
}else if($data['type'] == 'download'){
$order = 'j_article.pdf_num desc';
}else{
return jsonError('Please make sure type in "cite/read/download"');
}
$list = $this->article_obj->field('j_article.*,j_journal_stage.*,j_journal.title journal_title,j_journal.jabbr journal_short')
->join(array(['j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT'],['j_journal','j_article.journal_id = j_journal.journal_id','LEFT']))
->where('j_article.state', 0)
->where('j_journal_stage.is_publish',1)
// ->orderRaw('j_article.cited+j_article.abs_num+j_article.pdf_num desc')
->order($order)
->limit(20)
->select();
//获取作者
foreach ($list as $k => $v) {
$stage_info = $this->journal_stage_obj->where('journal_stage_id', $v['journal_stage_id'])->find();
$journal_info = $this->journal_obj->where('journal_id', $v['journal_id'])->find();
//组合cite信息
$no = $stage_info['stage_no'] == 0 ? ':' : '(' . $stage_info['stage_no'] . '):';
$cite = $v['abbr'] . '. ' . $v['title'] . '. <i>' . $journal_info['jabbr'] . '</i>. ' . $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, '<i>' . $val . '</i>', $cache_title);
}
$list[$k]['title'] = $cache_title;
}
return jsonSuccess(['articles' => $list]);
}
/**
* @title 获取首页Highlights