20201112
This commit is contained in:
@@ -141,14 +141,14 @@ class Journal extends Controller {
|
||||
$p_res = $this->journal_topic_obj
|
||||
->where('journal_id', $data['journal_id'])
|
||||
->where('state', 0)
|
||||
->where('parent_id',0)
|
||||
->where('parent_id', 0)
|
||||
->order('sort')
|
||||
->select();
|
||||
|
||||
|
||||
$res = $this->journal_topic_obj
|
||||
->where('journal_id', $data['journal_id'])
|
||||
->where('state', 0)
|
||||
->where('parent_id','>',0)
|
||||
->where('parent_id', '>', 0)
|
||||
->order('sort asc,journal_topic_id asc')
|
||||
->select();
|
||||
//处理数组
|
||||
@@ -332,7 +332,7 @@ class Journal extends Controller {
|
||||
->where('j_article.journal_stage_id', 'in', $stages)
|
||||
->where('j_article.state', 0)
|
||||
->order('j_article.sort desc')
|
||||
->limit($limit_start,$data['pageSize'])
|
||||
->limit($limit_start, $data['pageSize'])
|
||||
->select();
|
||||
$count = $this->article_obj
|
||||
->join('j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
|
||||
@@ -359,7 +359,7 @@ class Journal extends Controller {
|
||||
$list[$k]['authortitle'] = $this->getAuthor($v);
|
||||
}
|
||||
|
||||
return json(['code' => 0, 'msg' => 'success', 'data' => ['articlelist' => $list,'count'=>$count]]);
|
||||
return json(['code' => 0, 'msg' => 'success', 'data' => ['articlelist' => $list, 'count' => $count]]);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -382,7 +382,7 @@ 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_journal_stage.stage_year', '>', '2018')
|
||||
->where('j_article.type', ['like', 'News'], ['like', 'Comment'], 'or')
|
||||
->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();
|
||||
@@ -430,16 +430,16 @@ class Journal extends Controller {
|
||||
->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)
|
||||
->where('j_journal_stage.is_publish',1)
|
||||
->where('j_journal_stage.is_publish', 1)
|
||||
->orderRaw('j_article.cited+j_article.abs_num+j_article.pdf_num desc')
|
||||
->limit($limit_start,$data['pageSize'])
|
||||
->limit($limit_start, $data['pageSize'])
|
||||
->select();
|
||||
|
||||
|
||||
$count = $this->article_obj
|
||||
->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)
|
||||
->where('j_journal_stage.is_publish',1)
|
||||
->where('j_journal_stage.is_publish', 1)
|
||||
->count();
|
||||
|
||||
//获取作者
|
||||
@@ -461,7 +461,7 @@ class Journal extends Controller {
|
||||
}
|
||||
$list[$k]['title'] = $cache_title;
|
||||
}
|
||||
return jsonSuccess(['articles' => $list,'count'=>$count]);
|
||||
return jsonSuccess(['articles' => $list, 'count' => $count]);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -521,7 +521,7 @@ class Journal extends Controller {
|
||||
->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)
|
||||
->where('j_journal_stage.is_publish',1)
|
||||
->where('j_journal_stage.is_publish', 1)
|
||||
->order('j_article.sort desc')
|
||||
->select();
|
||||
|
||||
@@ -651,7 +651,7 @@ class Journal extends Controller {
|
||||
$re['article'] = $article;
|
||||
return jsonSuccess($re);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @title 获取期刊编委信息
|
||||
* @description 获取期刊编委信息
|
||||
@@ -663,25 +663,25 @@ class Journal extends Controller {
|
||||
*
|
||||
* @return boards:编委array#
|
||||
*/
|
||||
public function getBoard(){
|
||||
public function getBoard() {
|
||||
$data = $this->request->post();
|
||||
$list = $this->board_obj
|
||||
->field('j_board.*,j_board_group.group_name')
|
||||
->join('j_board_group','j_board.board_group_id = j_board_group.board_group_id','left')
|
||||
->where('j_board.journal_id',$data['journal_id'])
|
||||
->where('j_board.state',0)
|
||||
->join('j_board_group', 'j_board.board_group_id = j_board_group.board_group_id', 'left')
|
||||
->where('j_board.journal_id', $data['journal_id'])
|
||||
->where('j_board.state', 0)
|
||||
->order('j_board_group.board_group_id,j_board.name')
|
||||
->select();
|
||||
$frag = [];
|
||||
foreach ($list as $k => $v){
|
||||
if($v['type']==0){
|
||||
foreach ($list as $k => $v) {
|
||||
if ($v['type'] == 0) {
|
||||
$frag['main'][] = $v;
|
||||
}elseif($v['type']==1){
|
||||
} elseif ($v['type'] == 1) {
|
||||
$frag['remain'][] = $v;
|
||||
}else{
|
||||
if($v['board_group_id']==0){
|
||||
} else {
|
||||
if ($v['board_group_id'] == 0) {
|
||||
$frag['member'][] = $v;
|
||||
}else{
|
||||
} else {
|
||||
$frag['member'][$v['group_name']][] = $v;
|
||||
}
|
||||
}
|
||||
@@ -725,7 +725,7 @@ class Journal extends Controller {
|
||||
$repeat = $this->subscribe_journal_obj
|
||||
->where('journal_id', $data['journal_id'])
|
||||
->where('email', $data['email'])
|
||||
->where('state',0)
|
||||
->where('state', 0)
|
||||
->find();
|
||||
if ($repeat) {
|
||||
return jsonError('repeat subscribe!');
|
||||
@@ -736,7 +736,7 @@ class Journal extends Controller {
|
||||
//发送邮件感谢
|
||||
$tt = 'Dear Researcher,<br><br>';
|
||||
$tt .= 'Welcome you to the email alert for the latest research and more. Thank you for your interest in our publications and topics.<br>';
|
||||
$tt .= '<a href="http://journalapi.tmrjournals.com/public/index.php/api/Journal/UnsubscribeJournal/snum/'.$id.'">Unsubscribe</a><br>';
|
||||
$tt .= '<a href="http://journalapi.tmrjournals.com/public/index.php/api/Journal/UnsubscribeJournal/snum/' . $id . '">Unsubscribe</a><br>';
|
||||
$tt .= 'This service is provided by TMR Publishing Group | New Zealand<br>';
|
||||
$tt .= 'Telephone: +64 02108293806';
|
||||
$tt .= 'Email: publisher@tmrjournals.com';
|
||||
@@ -747,7 +747,7 @@ class Journal extends Controller {
|
||||
$maidata['tmail'] = 'publicrelations@tmrjournals.com';
|
||||
$maidata['tpassword'] = 'pRWU999999';
|
||||
Queue::push('app\api\job\mail@fire', $maidata, "mail");
|
||||
|
||||
|
||||
return jsonSuccess([]);
|
||||
}
|
||||
|
||||
@@ -767,7 +767,7 @@ class Journal extends Controller {
|
||||
$repeat = $this->subscribe_topic_obj
|
||||
->where('topic_id', $data['topic_id'])
|
||||
->where('email', $data['email'])
|
||||
->where('state',0)
|
||||
->where('state', 0)
|
||||
->find();
|
||||
if ($repeat) {
|
||||
return jsonError('repeat subscribe!');
|
||||
@@ -778,7 +778,7 @@ class Journal extends Controller {
|
||||
//发送邮件感谢
|
||||
$tt = 'Dear Researcher,<br><br>';
|
||||
$tt .= 'Welcome you to the email alert for the latest research and more. Thank you for your interest in our publications and topics.<br>';
|
||||
$tt .= '<a href="http://journalapi.tmrjournals.com/public/index.php/api/Journal/UnsubscribeTopic/snum/'.$id.'">Unsubscribe</a><br>';
|
||||
$tt .= '<a href="http://journalapi.tmrjournals.com/public/index.php/api/Journal/UnsubscribeTopic/snum/' . $id . '">Unsubscribe</a><br>';
|
||||
$tt .= 'This service is provided by TMR Publishing Group | New Zealand<br>';
|
||||
$tt .= 'Telephone: +64 02108293806';
|
||||
$tt .= 'Email: publisher@tmrjournals.com';
|
||||
@@ -791,20 +791,21 @@ class Journal extends Controller {
|
||||
Queue::push('app\api\job\mail@fire', $maidata, "mail");
|
||||
return jsonSuccess([]);
|
||||
}
|
||||
|
||||
public function UnsubscribeTopic($snum){
|
||||
$this->subscribe_topic_obj->where('subscribe_topic_id',$snum)->update(['state'=>1]);
|
||||
|
||||
public function UnsubscribeTopic($snum) {
|
||||
$this->subscribe_topic_obj->where('subscribe_topic_id', $snum)->update(['state' => 1]);
|
||||
echo 'Unsubscribe successfully!';
|
||||
}
|
||||
public function UnsubscribeJournal($snum){
|
||||
$this->subscribe_journal_obj->where('subscribe_journal_id',$snum)->update(['state'=>1]);
|
||||
|
||||
public function UnsubscribeJournal($snum) {
|
||||
$this->subscribe_journal_obj->where('subscribe_journal_id', $snum)->update(['state' => 1]);
|
||||
echo 'Unsubscribe successfully!';
|
||||
}
|
||||
|
||||
public function testEmail() {
|
||||
// phpinfo();die;
|
||||
|
||||
|
||||
|
||||
|
||||
$tt = 'mytestemail.';
|
||||
$maidata['email'] = '751475802@qq.com';
|
||||
$maidata['title'] = '测试邮件1';
|
||||
@@ -814,4 +815,336 @@ class Journal extends Controller {
|
||||
Queue::push('app\api\job\mail@fire', $maidata, "mail");
|
||||
}
|
||||
|
||||
/**
|
||||
* @title 查找文章
|
||||
* @description 查找文章
|
||||
* @author wangjinlei
|
||||
* @url /api/Journal/searchArticle
|
||||
* @method POST
|
||||
*
|
||||
* @param name:keyword type:string require:1 desc:关键词
|
||||
* @param name:journal_id type:int require:1 desc:期刊id
|
||||
* @param name:pageIndex type:int require:1 desc:当前页码数
|
||||
* @param name:pageSize type:int require:1 desc:单页数据条数
|
||||
*
|
||||
* @return articles:文章信息#
|
||||
* @return count:总数
|
||||
*/
|
||||
public function searchArticle() {
|
||||
$data = $this->request->post();
|
||||
$limit_start = ($data['pageIndex'] - 1) * $data['pageSize'];
|
||||
$arts = $this->article_author_obj->where('state', 0)->where('author_name', 'like', '%' . trim($data['keyword']) . '%')->column('article_id');
|
||||
$list = $this->article_obj
|
||||
->where('journal_id', $data['journal_id'])
|
||||
->where('state', 0)
|
||||
->where(function($query)use($arts, $data) {
|
||||
$query->where('article_id', 'in', $arts)
|
||||
->whereOr('title|abstract|keywords', 'like', '%' . trim($data['keyword']) . '%');
|
||||
})
|
||||
->orderRaw("(CASE WHEN title LIKE '%" . trim($data['keyword']) . "%' THEN 1 ELSE 0 END) desc")
|
||||
->limit($limit_start, $data['pageSize'])
|
||||
->select();
|
||||
$count = $this->article_obj
|
||||
->where('journal_id', $data['journal_id'])
|
||||
->where('state', 0)
|
||||
->where(function($query)use($arts, $data) {
|
||||
$query->where('article_id', 'in', $arts)
|
||||
->whereOr('title|abstract|keywords', 'like', '%' . trim($data['keyword']) . '%');
|
||||
})
|
||||
->count();
|
||||
|
||||
$has_list = []; //title含有关键字
|
||||
$no_list = []; //title不含关键字
|
||||
//补全信息,分期,作者
|
||||
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();
|
||||
$list[$k]['stage'] = $stage_info;
|
||||
//组合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);
|
||||
|
||||
//斜体变红
|
||||
$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);
|
||||
}
|
||||
$cache_title = str_replace(trim($data['keyword']), '<b style="color:#c00">' . $data['keyword'] . '</b>', $cache_title);
|
||||
$list[$k]['title'] = $cache_title;
|
||||
}
|
||||
$re['articles'] = $list;
|
||||
$re['count'] = $count;
|
||||
return jsonSuccess($re);
|
||||
}
|
||||
|
||||
/**
|
||||
* @title 查找文章出版集团
|
||||
* @description 查找文章出版集团
|
||||
* @author wangjinlei
|
||||
* @url /api/Journal/searchArticleAll
|
||||
* @method POST
|
||||
*
|
||||
* @param name:keyword type:string require:1 desc:关键词
|
||||
* @param name:pageIndex type:int require:1 desc:当前页码数
|
||||
* @param name:pageSize type:int require:1 desc:单页数据条数
|
||||
*
|
||||
* @return articles:文章信息#
|
||||
* @return count:总数
|
||||
*/
|
||||
public function searchArticleAll() {
|
||||
$data = $this->request->post();
|
||||
$limit_start = ($data['pageIndex'] - 1) * $data['pageSize'];
|
||||
$arts = $this->article_author_obj->where('state', 0)->where('author_name', 'like', '%' . trim($data['keyword']) . '%')->column('article_id');
|
||||
$list = $this->article_obj
|
||||
->where(function($query)use($arts, $data) {
|
||||
$query->where('article_id', 'in', $arts)
|
||||
->whereOr('title|abstract|keywords', 'like', '%' . trim($data['keyword']) . '%');
|
||||
})
|
||||
->orderRaw("(CASE WHEN title LIKE '%" . trim($data['keyword']) . "%' THEN 1 ELSE 0 END) desc")
|
||||
->limit($limit_start, $data['pageSize'])
|
||||
->select();
|
||||
$count = $this->article_obj
|
||||
->where(function($query)use($arts, $data) {
|
||||
$query->where('article_id', 'in', $arts)
|
||||
->whereOr('title|abstract|keywords', 'like', '%' . trim($data['keyword']) . '%');
|
||||
})
|
||||
->count();
|
||||
|
||||
//补全信息,分期,作者
|
||||
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();
|
||||
$list[$k]['stage'] = $stage_info;
|
||||
$list[$k]['journal'] = $journal_info;
|
||||
//组合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);
|
||||
//斜体变红
|
||||
$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);
|
||||
}
|
||||
$cache_title = str_replace(trim($data['keyword']), '<b style="color:#c00">' . $data['keyword'] . '</b>', $cache_title);
|
||||
$list[$k]['title'] = $cache_title;
|
||||
}
|
||||
$re['articles'] = $list;
|
||||
$re['count'] = $count;
|
||||
return jsonSuccess($re);
|
||||
}
|
||||
|
||||
/**
|
||||
* @title 查找文章精确查找
|
||||
* @description 查找文章精确查找
|
||||
* @author wangjinlei
|
||||
* @url /api/Journal/searchDetail
|
||||
* @method POST
|
||||
*
|
||||
* @param name:term type:string require:0 desc:关键词
|
||||
* @param name:author type:string require:0 desc:作者
|
||||
* @param name:title type:string require:0 desc:标题
|
||||
* @param name:start_date type:string require:0 desc:开始时间
|
||||
* @param name:end_date type:string require:0 desc:结束时间
|
||||
* @param name:journal_id type:int require:1 desc:journal_id(如果不限期刊请填0)
|
||||
* @param name:pageIndex type:int require:1 desc:当前页码数
|
||||
* @param name:pageSize type:int require:1 desc:单页数据条数
|
||||
*
|
||||
* @return articles:文章信息#
|
||||
* @return count:总数
|
||||
*/
|
||||
public function searchDetail() {
|
||||
$data = $this->request->post();
|
||||
$limit_start = ($data['pageIndex'] - 1) * $data['pageSize'];
|
||||
|
||||
//判断时间
|
||||
$stages = [];
|
||||
if (isset($data['start_date']) && $data['start_date'] != '') {
|
||||
$date_where['stage_year'] = [['>=', $data['start_date']], ['<=', $data['end_date']]];
|
||||
if ($data['journal_id'] != 0) {
|
||||
$date_where['journal_id'] = $data['journal_id'];
|
||||
}
|
||||
$stages = $this->journal_stage_obj->where($date_where)->column('journal_stage_id');
|
||||
|
||||
if (count($stages) == 0) {
|
||||
$re['articles'] = [];
|
||||
$re['count'] = 0;
|
||||
return jsonSuccess($re);
|
||||
}
|
||||
}
|
||||
//组装作者
|
||||
$arts = [];
|
||||
if(isset($data['author']) && $data['author'] != ''){
|
||||
$arts = $this->article_author_obj->where('state', 0)->where('author_name', 'like', '%' . trim($data['author']) . '%')->column('article_id');
|
||||
if (count($arts) == 0) {
|
||||
$re['articles'] = [];
|
||||
$re['count'] = 0;
|
||||
return jsonSuccess($re);
|
||||
}
|
||||
}
|
||||
|
||||
//构造查询语句
|
||||
$where_str = '';
|
||||
if (isset($data['term']) && $data['term'] != '') {
|
||||
$where_str .= 'keywords like "%' . trim($data['term']) . '%" or abstract like "%' . trim($data['term']) . '%"';
|
||||
}
|
||||
if (isset($data['title']) && $data['title'] != '') {
|
||||
$where_str .= $where_str == '' ? 'title like "%' . trim($data['title']) . '%"' : 'or title like "%' . trim($data['title']) . '%"';
|
||||
}
|
||||
if ($data['journal_id'] != 0) {
|
||||
$where_str = $where_str == '' ? 'journal_id = ' . $data['journal_id'] : 'journal_id = ' . $data['journal_id'] . ' and (' . $where_str . ')';
|
||||
}
|
||||
if (count($stages) > 0) {
|
||||
$c_str = '(' . implode(',', $stages) . ')';
|
||||
$where_str = $where_str == '' ? 'journal_stage_id in ' . $c_str : 'journal_stage_id in ' . $c_str . ' and ' . $where_str;
|
||||
}
|
||||
|
||||
if (count($arts) > 0) {
|
||||
$a_str = '(' . implode(',', $arts) . ')';
|
||||
$where_str = $where_str == '' ? 'article_id in ' . $a_str : 'article_id in ' . $a_str . ' and ' . $where_str;
|
||||
}
|
||||
$where_str = $where_str == '' ? 'state = 0' : 'state = 0 and ' . $where_str;
|
||||
|
||||
$list = $this->article_obj
|
||||
->where($where_str)
|
||||
->limit($limit_start, $data['pageSize'])
|
||||
->select();
|
||||
$count = $this->article_obj
|
||||
->where($where_str)
|
||||
->count();
|
||||
//补全信息,分期,作者
|
||||
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();
|
||||
$list[$k]['stage'] = $stage_info;
|
||||
$list[$k]['journal'] = $journal_info;
|
||||
//组合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);
|
||||
//斜体变红
|
||||
$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);
|
||||
}
|
||||
if (isset($data['title'])) {
|
||||
$cache_title = str_replace(trim($data['title']), '<b style="color:#c00">' . $data['title'] . '</b>', $cache_title);
|
||||
}
|
||||
$list[$k]['title'] = $cache_title;
|
||||
}
|
||||
|
||||
$re['articles'] = $list;
|
||||
$re['count'] = $count;
|
||||
return jsonSuccess($re);
|
||||
}
|
||||
|
||||
/**
|
||||
* @title 查找文章精确查找(新)
|
||||
* @description 查找文章精确查找(新)
|
||||
* @author wangjinlei
|
||||
* @url /api/Journal/searchArticleMenu
|
||||
* @method POST
|
||||
*
|
||||
* @param name:key1 type:string require:1 desc:第一个条件(title,abstract,keywords,author)
|
||||
* @param name:val1 type:string require:1 desc:第一个值
|
||||
* @param name:oper type:string require:0 desc:运算符(and\or)
|
||||
* @param name:key2 type:string require:0 desc:第二个条件(title,abstract,keywords,author)
|
||||
* @param name:val2 type:string require:0 desc:第二个值
|
||||
* @param name:journal_id type:int require:1 desc:journal_id(demo:1,2,3)
|
||||
* @param name:pageIndex type:int require:1 desc:当前页码数
|
||||
* @param name:pageSize type:int require:1 desc:单页数据条数
|
||||
*
|
||||
* @return articles:文章信息#
|
||||
* @return count:总数
|
||||
*/
|
||||
public function searchArticleMenu(){
|
||||
$data = $this->request->post();
|
||||
$limit_start = ($data['pageIndex'] - 1) * $data['pageSize'];
|
||||
|
||||
//组合where语句
|
||||
$where_str = '';
|
||||
|
||||
if($data['key1'] == 'author'){
|
||||
$arts = $this->article_author_obj->where('state', 0)->where('author_name', 'like', '%' . trim($data['val1']) . '%')->column('article_id');
|
||||
$a_str = '(' . implode(',', $arts) . ')';
|
||||
$where_str = '(article_id in '. $a_str;
|
||||
}else{
|
||||
$where_str = '('.$data['key1'].' like "%'.$data['val1'].'%"';
|
||||
}
|
||||
if(isset($data['key2'])&&$data['key2']!=''){
|
||||
if($data['oper'] == 'and'){
|
||||
$where_str = $where_str . ' and ';
|
||||
}else{
|
||||
$where_str = $where_str . ' or ';
|
||||
}
|
||||
if($data['key2'] == 'author'){
|
||||
$arts = $this->article_author_obj->where('state', 0)->where('author_name', 'like', '%' . trim($data['val2']) . '%')->column('article_id');
|
||||
$a_str = '(' . implode(',', $arts) . ')';
|
||||
$where_str = $where_str.' article_id in '. $a_str;
|
||||
}else{
|
||||
$where_str = $where_str.' '.$data['key2'].' like "%'.$data['val2'].'%"';
|
||||
}
|
||||
}
|
||||
//处理journal_id
|
||||
$where_str = $where_str . ') and journal_id in ('.trim($data['journal_id']).') and state = 0 ';
|
||||
//处理order
|
||||
$order_str = '';
|
||||
if($data['key1']=='title'&&(isset($data['key2'])&&$data['key2']=='title')){
|
||||
$order_str = "((CASE WHEN title LIKE '%" . trim($data['val1']) . "%' THEN 1 ELSE 0 END) + (CASE WHEN title LIKE '%" . trim($data['val2']) . "%' THEN 1 ELSE 0 END)) desc";
|
||||
}elseif($data['key1']=='title'||(isset($data['key2'])&&$data['key2']=='title')){
|
||||
if($data['key1']=='title'){
|
||||
$order_str = "(CASE WHEN title LIKE '%" . trim($data['val1']) . "%' THEN 1 ELSE 0 END) desc";
|
||||
}else{
|
||||
$order_str = "(CASE WHEN title LIKE '%" . trim($data['val2']) . "%' THEN 1 ELSE 0 END) desc";
|
||||
}
|
||||
}else{
|
||||
$order_str = "article_id desc";
|
||||
}
|
||||
|
||||
$list = $this->article_obj
|
||||
->where($where_str)
|
||||
->orderRaw($order_str)
|
||||
->limit($limit_start,$data['pageSize'])
|
||||
->select();
|
||||
$count = $this->article_obj
|
||||
->where($where_str)
|
||||
->count();
|
||||
//补全信息,分期,作者
|
||||
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();
|
||||
$list[$k]['stage'] = $stage_info;
|
||||
$list[$k]['journal'] = $journal_info;
|
||||
//组合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);
|
||||
//斜体变红
|
||||
$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);
|
||||
}
|
||||
if ($data['key1']=='title') {
|
||||
$cache_title = str_replace(trim($data['val1']), '<b style="color:#c00">' . $data['val1'] . '</b>', $cache_title);
|
||||
}
|
||||
if (isset($data['key2'])&&$data['key2']=='title') {
|
||||
$cache_title = str_replace(trim($data['val2']), '<b style="color:#c00">' . $data['val2'] . '</b>', $cache_title);
|
||||
}
|
||||
$list[$k]['title'] = $cache_title;
|
||||
}
|
||||
|
||||
$re['articles'] = $list;
|
||||
$re['count'] = $count;
|
||||
return jsonSuccess($re);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user