article_author_obj->field('author_country,COUNT(author_country) sum')
// ->where('article_id','in',$articles)
// ->where('state',0)
// ->group('author_country')
// ->orderRaw('COUNT(author_country) desc')
// ->select();
// $re['countrys'] = $list;
return jsonSuccess($re);
}
/**
* @title 获取onlinefirst文章
* @description 获取onlinefirst文章
* @author wangjinlei
* @url /api/Journal/getOnlineArticle
* @method POST
*
* @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 articlelist:文章列表array#
* @return count:总数
*/
public function getOnlineArticle() {
$data = $this->request->post();
$stages = $this->journal_stage_obj->where('journal_id', $data['journal_id'])->where('is_publish', 0)->where('state', 0)->column('journal_stage_id');
$journal_info = $this->journal_obj->where('journal_id', $data['journal_id'])->find();
$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('j_article.journal_stage_id', 'in', $stages)
->where('j_article.state', 0)
->order('j_article.sort desc')
->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_stage_id', 'in', $stages)
->where('j_article.state', 0)
->count();
//标题斜体
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, '' . $val . '', $cache_title);
}
$list[$k]['title'] = $cache_title;
}
//获取作者
foreach ($list as $k => $v) {
$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'] . '):';
$cite = $v['abbr'] . '. ' . $v['title'] . '. ' . choiseJabbr($v['article_id'],$journal_info['jabbr']) . '. ' . $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]['authortitle'] = $this->getAuthor($v);
}
return json(['code' => 0, 'msg' => 'success', 'data' => ['articlelist' => $list, 'count' => $count]]);
}
/**
* @title 获取news文章
* @description 获取news文章
* @author wangjinlei
* @url /api/Journal/getNewsArticle
* @method POST
*
* @param name:journal_id type:int require:1 desc:期刊id
*
* @return articlelist:文章列表array#
*/
public function getNewsArticle() {
$data = $this->request->post();
$stages = $this->journal_stage_obj->where('journal_id', $data['journal_id'])->where('state', 0)->column('journal_stage_id');
$journal_info = $this->journal_obj->where('journal_id', $data['journal_id'])->find();
$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('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.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) {
$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'] . '):';
$cite = $v['abbr'] . '. ' . $v['title'] . '. ' . choiseJabbr($v['article_id'],$journal_info['jabbr']) . '. ' . $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]['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, '' . $val . '', $cache_title);
}
$list[$k]['title'] = $cache_title;
}
return json(['code' => 0, 'msg' => 'success', 'data' => ['articlelist' => $list]]);
}
/**
* @title 获取top前4条article
* @description 获取top前4条article
* @author wangjinlei
* @url /api/Journal/getTopArticle
* @method POST
*
* @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:文章列表array#
* @return count:总数
*/
public function getTopArticle() {
$data = $this->request->post();
$journal_info = $this->journal_obj->where('journal_id', $data['journal_id'])->find();
$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('j_article.journal_id', $data['journal_id'])
->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')
->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)
->count();
//获取作者
foreach ($list as $k => $v) {
$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'] . '):';
$cite = $v['abbr'] . '. ' . $v['title'] . '. ' . choiseJabbr($v['article_id'],$journal_info['jabbr']) . '. ' . $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]['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, '' . $val . '', $cache_title);
}
$list[$k]['title'] = $cache_title;
}
return jsonSuccess(['articles' => $list, 'count' => $count]);
}
/**
* @title 获取消息列表
* @description 获取消息列表
* @author wangjinlei
* @url /api/Journal/getNotices
* @method POST
*
* @param name:journal_id type:int require:1 desc:期刊id
*
* @return notices:消息列表array#
*/
public function getNotices() {
$data = $this->request->post();
$list = $this->journal_notices_obj->where('journal_id', $data['journal_id'])->where('state', 0)->order('ctime desc')->select();
return jsonSuccess(['notices' => $list]);
}
/**
* @title 获取消息详情
* @description 获取消息详情
* @author wangjinlei
* @url /api/Journal/getNoticesDetail
* @method POST
*
* @param name:journal_notices_id type:int require:1 desc:期刊消息id
*
* @return notices:消息内容#
*/
public function getNoticesDetail() {
$data = $this->request->post();
$notices_info = $this->journal_notices_obj->where('journal_notices_id', $data['journal_notices_id'])->find();
$re['notices'] = $notices_info;
return jsonSuccess($re);
}
/**
* @title 获取highl话题文章
* @description 获取highl话题文章
* @author wangjinlei
* @url /api/Journal/getHighTopicArticle
* @method POST
*
* @param name:journal_id type:int require:1 desc:期刊id
*
* @return topic_info:话题详情
* @return articlelist:文章列表array#
*/
public function getHighTopicArticle() {
$data = $this->request->post();
$topic_info = $this->journal_topic_obj->where('journal_id', $data['journal_id'])->where('position', 'highlights')->where('state', 0)->find();
$journal_info = $this->journal_obj->where('journal_id', $data['journal_id'])->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_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)
->order('j_article.sort desc')
->select();
//获取作者
foreach ($list as $k => $v) {
$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'] . '):';
$cite = $v['abbr'] . '. ' . $v['title'] . '. ' . choiseJabbr($v['article_id'],$journal_info['jabbr']) . '. ' . $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]['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, '' . $val . '', $cache_title);
}
$list[$k]['title'] = $cache_title;
}
return jsonSuccess(['topic_info' => $topic_info, 'articlelist' => $list]);
} else {
return jsonError('no highlights');
}
}
/**
* @title 获取话题列表
* @description 获取话题列表
* @author wangjinlei
* @url /api/Journal/getTopicList
* @method POST
*
* @param name:journal_topic_id type:int require:1 desc:期刊话题id
*
* @return oldJournal:父期刊信息
* @return journalList:话题列表array#
*/
public function getTopicList() {
$data = $this->request->post();
$journal_info = $this->journal_topic_obj->where('journal_topic_id', $data['journal_topic_id'])->find();
$list = $this->journal_topic_obj->where('parent_id', $data['journal_topic_id'])->where('state', 0)->order('sort asc')->select();
$re['oldJournal'] = $journal_info;
$re['journalList'] = $list;
return jsonSuccess($re);
}
/**
* @title 获取期刊cfp
* @description 获取期刊cfp
* @author wangjinlei
* @url /api/Journal/getJournalCfp
* @method POST
*
* @param name:journal_id type:int require:1 desc:期刊id
*
* @return cfps:期刊cfps#
*/
public function getJournalCfp() {
$data = $this->request->post();
$list = $this->journal_cfp_obj->where('journal_id', $data['journal_id'])->where('state', 0)->order('sort desc ,journal_cfp_id asc')->select();
$re['cfps'] = $list;
return jsonSuccess($re);
}
/**
* @title 获取期刊cfp详情
* @description 获取期刊cfp详情
* @author wangjinlei
* @url /api/Journal/getCfpDetail
* @method POST
*
* @param name:journal_cfp_id type:int require:1 desc:期刊cfpid
*
* @return cfp:期刊cfp信息#
*/
public function getCfpDetail() {
$data = $this->request->post();
$cfp_info = $this->journal_cfp_obj->where('journal_cfp_id', $data['journal_cfp_id'])->find();
$re['cfp'] = $cfp_info;
return jsonSuccess($re);
}
/**
* @title 获取期刊footer
* @description 获取期刊footer
* @author wangjinlei
* @url /api/Journal/getFooter
* @method POST
*
* @param name:journal_id type:int require:1 desc:期刊id
*
* @return footers:footers#
*/
public function getFooter() {
$data = $this->request->post();
$papers = $this->journal_paper_obj->where('journal_id', $data['journal_id'])->where('state', 0)->select();
foreach ($papers as $k => $v) {
$cache_list = $this->journal_paper_art_obj->where('journal_paper_id', $v['journal_paper_id'])->where('state', 0)->order('sort desc')->select();
$papers[$k]['articles'] = $cache_list;
}
$re['footers'] = $papers;
return jsonSuccess($re);
}
/**
* @title 获取期刊footer文章
* @description 获取期刊footer文章
* @author wangjinlei
* @url /api/Journal/getFooterArt
* @method POST
*
* @param name:journal_paper_art_id type:int require:1 desc:期刊footer文章id
*
* @return article:文章内容#
*/
public function getFooterArt() {
$data = $this->request->post();
$article = $this->journal_paper_art_obj->where('journal_paper_art_id', $data['journal_paper_art_id'])->find();
$re['article'] = $article;
return jsonSuccess($re);
}
/**
* @title 获取期刊编委信息
* @description 获取期刊编委信息
* @author wangjinlei
* @url /api/Journal/getBoard
* @method POST
*
* @param name:journal_id type:int require:1 desc:期刊id
*
* @return boards:编委array#
*/
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)
->order('j_board_group.board_group_id,j_board.name')
->select();
$frag = [];
foreach ($list as $k => $v) {
if ($v['type'] == 0) {
$frag['main'][] = $v;
} elseif ($v['type'] == 1) {
$frag['remain'][] = $v;
} else {
if ($v['board_group_id'] == 0) {
$frag['member'][] = $v;
} else {
$frag['member'][$v['group_name']][] = $v;
}
}
}
$re['boards'] = $frag;
return jsonSuccess($re);
}
/**
* @title 获取期刊话题列表
* @description 获取期刊话题列表
* @author wangjinlei
* @url /api/Journal/getTopicForSubscribe
* @method POST
*
* @param name:journal_id type:int require:1 desc:期刊id
*
* @return topics:话题列表array#
*/
public function getTopicForSubscribe() {
$data = $this->request->post();
$list = $this->journal_topic_obj->where('journal_id', $data['journal_id'])->where('state', 0)->where('level', 2)->select();
$re['topics'] = $list;
return jsonSuccess($re);
}
public function tttt(){
$host="localhost";//mysql服务器地址
$user='root';
$pass='root';
$dbName='journal';//数据可名称
$charSet='utf8';
$port='3306';
$conn=mysql_connect($host,$user,$padd);
if(!$conn){
echo 'unable to connect to DB '.mysql_error();
exit();
}
query('use '.$db);
$sql = "select * from j_user limit 1";//这里是sql语句
$res = getAll($sql);
echo '';
var_dump($res);
echo '
';
}
/**
* @title 添加期刊订阅
* @description 添加期刊订阅
* @author wangjinlei
* @url /api/Journal/addSubscribeJournal
* @method POST
*
* @param name:journal_id type:int require:1 desc:期刊id
* @param name:email type:string require:1 desc:邮件地址
*/
public function addSubscribeJournal() {
$data = $this->request->post();
//去重
$repeat = $this->subscribe_journal_obj
->where('journal_id', $data['journal_id'])
->where('email', $data['email'])
->where('state', 0)
->find();
if ($repeat) {
return jsonError('repeat subscribe!');
}
$insert['journal_id'] = $data['journal_id'];
$insert['email'] = $data['email'];
$id = $this->subscribe_journal_obj->insertGetId($insert);
$journal_info = $this->journal_obj->where("journal_id",$data['journal_id'])->find();
//发送邮件感谢
$tt = 'Dear Researcher,
';
$tt .= 'Welcome you to the email alert for the latest research and more. Thank you for your interest in our publications and topics.
';
$tt .= 'Unsubscribe
';
$tt .= 'This service is provided by TMR Publishing Group | New Zealand
';
$tt .= 'Telephone: +64 02108293806';
$tt .= 'Email: publisher@tmrjournals.com';
$tt .= 'www.tmrjournals.com';
$maidata['email'] = $data['email'];
$maidata['title'] = $journal_info['title']." ISSN ".$journal_info['issn'];//'Traditional Medicine Research ISSN 2413-3973';
$maidata['content'] = $tt;
$maidata['tmail'] = 'publicrelations@tmrjournals.com';
$maidata['tpassword'] = 'pRWU999999';
Queue::push('app\api\job\mail@fire', $maidata, "mail");
return jsonSuccess([]);
}
/**
* @title 添加期刊订阅通过issn
* @description 添加期刊订阅通过issn
* @author wangjinlei
* @url /api/Journal/addSubscribeByIssn
* @method POST
*
* @param name:issn type:string require:1 desc:issn号
* @param name:email type:string require:1 desc:邮件地址
*/
public function addSubscribeByIssn(){
$data = $this->request->post();
$journal_info = $this->journal_obj->where('issn',$data['issn'])->find();
//去重
$repeat = $this->subscribe_journal_obj
->where('journal_id', $journal_info['journal_id'])
->where('email', $data['email'])
->where('state', 0)
->find();
if ($repeat) {
return jsonError('repeat subscribe!');
}
$insert['journal_id'] = $journal_info['journal_id'];
$insert['email'] = $data['email'];
$id = $this->subscribe_journal_obj->insertGetId($insert);
//发送邮件感谢
$tt = 'Dear Researcher,
';
$tt .= 'Welcome you to the email alert for the latest research and more. Thank you for your interest in our publications and topics.
';
$tt .= 'Unsubscribe
';
$tt .= 'This service is provided by TMR Publishing Group | New Zealand
';
$tt .= 'Telephone: +64 02108293806';
$tt .= 'Email: publisher@tmrjournals.com';
$tt .= 'www.tmrjournals.com';
$maidata['email'] = $data['email'];
$maidata['title'] = $journal_info['title']." ISSN ".$journal_info['issn'];//'Traditional Medicine Research ISSN 2413-3973';
$maidata['content'] = $tt;
$maidata['tmail'] = 'publicrelations@tmrjournals.com';
$maidata['tpassword'] = 'pRWU999999';
Queue::push('app\api\job\mail@fire', $maidata, "mail");
return jsonSuccess([]);
}
public function pushEmail(){
die;
$list = $this->subscribe_journal_obj->where('journal_id',1)->select();
// $a = [];
// $a[] = ['email'=>'751475802@qq.com'];
// $a[] = ['email'=>'13662001490@126.com'];
foreach ($list as $v){
$tt = 'Dear Researcher,
';
$tt .= 'We are so kindly to bring you a notice that we are glad to invite eminent people as the Reviewer for Traditional Medicine Research (ISSN 2413-3973).
';
$tt .= 'Traditional Medicine Research has been included in Emerging Sources Citation Index (ESCI), Embase, DOAJ, ProQuest, J-Gate, EuroPub, WHO-COVID-19 Database, Google Scholar, EBSCO, ect.
';
$tt .= 'TMR is a bimonthly, peer-reviewed open access journal. It is dedicated to report the research of the progress in clinical efficacy, action mechanism and theoretical research in the traditional medicine field. Including traditional medicine, ethnomedicine, herbal medicine, acupuncture and massage, rehabilitation, diet therapy, yoga, and other integrative medicine all over the world.
';
$tt .= 'If you interested in our invitation, please kindly send us your Resume and Photograph a d Email address to our Editorial office.
';
$tt .= 'Thank you for your attention to our invitation. If you have any questions, do not hesitate to contact us at tmr@tmrjournals.com. we look forward to a favorable reply.
';
$tt .= 'Best wishes,
';
$tt .= 'Editorial Office-Traditional Medicine Research
';
$tt .= 'Email: tmr@tmrjournals.com
';
$tt .= 'Traditional Medicine Research (TMR)';
$maidata['email'] = $v['email'];
$maidata['title'] = 'Traditional Medicine Research ISSN 2413-3973';
$maidata['content'] = $tt;
$maidata['tmail'] = 'publicrelations@tmrjournals.com';
$maidata['tpassword'] = 'pRWU999999';
Queue::push('app\api\job\mail@fire', $maidata, "mail");
}
}
/**
* @title 获取期刊主页分期信息
* @description 获取期刊主页分期信息
* @author wangjinlei
* @url /api/Journal/getMainPageStages
* @method POST
*
* @param name:journal_id type:int require:1 desc:期刊id
*
* @return stages:分期信息#
*/
public function getMainPageStages(){
$data = $this->request->post();
$frag=[];
$list = $this->journal_stage_obj->where('journal_id',$data['journal_id'])->where('stage_year', date("Y"))->where('is_publish',1)->where('state',0)->order("stage_no desc")->select();
if(count($list)==0){
$frag = $this->journal_stage_obj->where('journal_id',$data['journal_id'])->where('stage_year', date("Y",strtotime("-1 year")))->where('is_publish',1)->where('state',0)->order("stage_no desc")->select();
}else{
$frag = $list;
}
$re['stages'] = $frag;
return jsonSuccess($re);
}
/**
* @title 添加期刊话题订阅(批量)
* @description 添加期刊话题订阅(批量)
* @author wangjinlei
* @url /api/Journal/addSubscribeTopics
* @method POST
*
* @param name:topic_ids type:string require:1 desc:期刊话题id(1,2,3,4)
* @param name:email type:string require:1 desc:邮箱地址
*/
public function addSubscribeTopics() {
$data = $this->request->post();
// $topics = explode(',', $data['topic_ids']);
$topics = $data['topic_ids'];
$str = '';
foreach ($topics as $k => $v) {
//去重
$repeat = $this->subscribe_topic_obj
->where('topic_id', $v)
->where('email', $data['email'])
->where('state', 0)
->find();
if ($repeat) {
continue;
}
$insert['topic_id'] = $v;
$insert['email'] = $data['email'];
$id = $this->subscribe_topic_obj->insertGetId($insert);
$cache_info = $this->journal_topic_obj->where('journal_topic_id',$v)->find();
$str .= 'Unsubscribe topic->'.$cache_info['title'].'
';
}
if($str==''){
return jsonError('repeat subscribe!');
}
//发送邮件感谢
$tt = 'Dear Researcher,
';
$tt .= 'Welcome you to the email alert for the latest research and more. Thank you for your interest in our publications and topics.
';
$tt .= $str;
$tt .= 'This service is provided by TMR Publishing Group | New Zealand
';
$tt .= 'Telephone: +64 02108293806';
$tt .= 'Email: publisher@tmrjournals.com';
$tt .= 'www.tmrjournals.com';
$maidata['email'] = $data['email'];
$maidata['title'] = 'Thank you for subscribing.';
$maidata['content'] = $tt;
$maidata['tmail'] = 'publicrelations@tmrjournals.com';
$maidata['tpassword'] = 'pRWU999999';
Queue::push('app\api\job\mail@fire', $maidata, "mail");
return jsonSuccess([]);
}
/**
* @title 添加期刊话题订阅
* @description 添加期刊话题订阅
* @author wangjinlei
* @url /api/Journal/addSubscribeTopic
* @method POST
*
* @param name:topic_id type:int require:1 desc:期刊话题id
* @param name:email type:string require:1 desc:邮箱地址
*/
public function addSubscribeTopic() {
$data = $this->request->post();
//去重
$repeat = $this->subscribe_topic_obj
->where('topic_id', $data['topic_id'])
->where('email', $data['email'])
->where('state', 0)
->find();
if ($repeat) {
return jsonError('repeat subscribe!');
}
$insert['topic_id'] = $data['topic_id'];
$insert['email'] = $data['email'];
$id = $this->subscribe_topic_obj->insertGetId($insert);
//发送邮件感谢
$tt = 'Dear Researcher,
';
$tt .= 'Welcome you to the email alert for the latest research and more. Thank you for your interest in our publications and topics.
';
$tt .= 'Unsubscribe
';
$tt .= 'This service is provided by TMR Publishing Group | New Zealand
';
$tt .= 'Telephone: +64 02108293806';
$tt .= 'Email: publisher@tmrjournals.com';
$tt .= 'www.tmrjournals.com';
$maidata['email'] = $data['email'];
$maidata['title'] = 'Thank you for subscribing.';
$maidata['content'] = $tt;
$maidata['tmail'] = 'publicrelations@tmrjournals.com';
$maidata['tpassword'] = 'pRWU999999';
$res = Queue::push('app\api\job\mail@fire', $maidata, "mail");
return jsonSuccess([]);
}
/**
* @title 添加通用话题订阅
* @description 添加通用话题订阅
* @author wangjinlei
* @url /api/Journal/addSubscribeBaseTopic
* @method POST
*
* @param name:base_topic_id type:int require:1 desc:期刊话题id
* @param name:email type:string require:1 desc:邮箱地址
*/
public function addSubscribeBaseTopic(){
$data = $this->request->post();
//去重
$repeat = $this->subscribe_base_topic_obj
->where('base_topic_id', $data['base_topic_id'])
->where('email', $data['email'])
->where('state', 0)
->find();
if ($repeat) {
return jsonError('repeat subscribe!');
}
$insert['base_topic_id'] = $data['base_topic_id'];
$insert['email'] = trim($data['email']);
$id = $this->subscribe_base_topic_obj->insertGetId($insert);
//发送邮件感谢
$tt = 'Dear Researcher,
';
$tt .= 'Welcome you to the email alert for the latest research and more. Thank you for your interest in our publications and topics.
';
$tt .= 'Unsubscribe
';
$tt .= 'This service is provided by TMR Publishing Group | New Zealand
';
$tt .= 'Telephone: +64 02108293806';
$tt .= 'Email: publisher@tmrjournals.com';
$tt .= 'www.tmrjournals.com';
$maidata['email'] = $data['email'];
$maidata['title'] = 'Thank you for subscribing.';
$maidata['content'] = $tt;
$maidata['tmail'] = 'publicrelations@tmrjournals.com';
$maidata['tpassword'] = 'pRWU999999';
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]);
echo 'Unsubscribe successfully!';
}
public function UnsubscribeBaseTopic($snum){
$this->subscribe_base_topic_obj->where('subscribe_base_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]);
echo 'Unsubscribe successfully!';
}
public function testEmail() {
// phpinfo();die;
$tt = '';
$maidata['email'] = '751475802@qq.com';
$maidata['title'] = 'test';
$maidata['content'] = $tt;
$maidata['tmail'] = 'tmr@tmrjournals.com';
$maidata['tpassword'] = 'Wu9999999999';
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 '%" . str_replace("'","''",trim($data['keyword'])) . "%'")->column('article_id');
$list = $this->article_obj
->where('journal_id', $data['journal_id'])
->where('state', 0)
// ->where('article_id', 'in', $arts)
// ->where('title like "%' . str_replace("'","''",trim($data['keyword'])) . '%" or abstract like "%' . str_replace("'","''",trim($data['keyword'])) . '%" or keywords like "%' . str_replace("'","''",trim($data['keyword'])) . '%"')
->where(function($query)use($arts, $data) {
$query->where('article_id', 'in', $arts)
->whereOr("`title` like '%" . str_replace("'","''",trim($data['keyword'])) . "%' or `abstract` like '%" . str_replace("'","''",trim($data['keyword'])) . "%' or `keywords` like '%" . str_replace("'","''",trim($data['keyword'])) . "%'");
})
->orderRaw("(CASE WHEN title LIKE '%" . str_replace("'","''",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', '%' . str_replace("'","''",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'] . '. ' . choiseJabbr($v['article_id'],$journal_info['jabbr']) . '. ' . $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]['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, '' . $val . '', $cache_title);
}
$cache_title = str_replace(trim($data['keyword']), '' . $data['keyword'] . '', $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'] . '. ' . choiseJabbr($v['article_id'],$journal_info['jabbr']) . '. ' . $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]['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, '' . $val . '', $cache_title);
}
$cache_title = str_replace(trim($data['keyword']), '' . $data['keyword'] . '', $cache_title);
$list[$k]['title'] = $cache_title;
}
$re['articles'] = $list;
$re['count'] = $count;
return jsonSuccess($re);
}
/**
* @title 编委国际化
* @description 编委国际化
* @author wangjinlei
* @url /api/Journal/getBWGJH
* @method POST
*
* @param name:journal_id type:int require:1 desc:journal_id
*
* @return country:国家数组#
* @return count:总数
*/
public function getBWGJH() {
$data = $this->request->post();
$list = $this->board_obj->where('journal_id', $data['journal_id'])->where('state', 0)->select();
$frag = [];
foreach ($list as $v) {
if (isset($frag[$v['country']])) {
$frag[$v['country']]++;
} else {
$frag[$v['country']] = 1;
}
}
$re['count'] = count($list);
$re['country'] = $frag;
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'] . '. ' . choiseJabbr($v['article_id'],$journal_info['jabbr']) . '. ' . $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, '' . $val . '', $cache_title);
}
if (isset($data['title'])) {
$cache_title = str_replace(trim($data['title']), '' . $data['title'] . '', $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'] . '. ' . choiseJabbr($v['article_id'],$journal_info['jabbr']) . '. ' . $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]['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, '' . $val . '', $cache_title);
}
if ($data['key1'] == 'title') {
$cache_title = str_replace(trim($data['val1']), '' . $data['val1'] . '', $cache_title);
}
if (isset($data['key2']) && $data['key2'] == 'title') {
$cache_title = str_replace(trim($data['val2']), '' . $data['val2'] . '', $cache_title);
}
$list[$k]['title'] = $cache_title;
}
$re['articles'] = $list;
$re['count'] = $count;
return jsonSuccess($re);
}
}