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->article_organ_obj = Db::name('article_organ');
$this->article_ltai_obj = Db::name('article_ltai');
$this->article_cite_obj = Db::name('article_cite');
$this->author_to_organ_obj = Db::name('article_author_to_organ');
$this->article_to_topic_obj = Db::name('article_to_topic');
$this->journal_topic_obj = Db::name('journal_topic');
$this->journal_stage_obj = Db::name('journal_stage');
$this->journal_special_obj = Db::name('journal_special');
$this->country_obj = Db::name('country');
$this->subscribe_journal_obj = Db::name('subscribe_journal');
$this->subscribe_topic_obj = Db::name('subscribe_topic');
$this->base_topic_obj = Db::name('base_topic');
$this->subscribe_base_topic_obj = Db::name('subscribe_base_topic');
$this->medicament_obj = Db::name('medicament');
$this->article_to_medicament_obj = Db::name('ArticleToMedicament');
$this->article_main_obj = Db::name("article_main");
}
/**
* @title 获取期刊和分期
* @description 获取期刊和分期
* @param name:editor_id type:int require:1 desc:编辑id
*
* @return joutaglist:array#
*
* @author wangjinleichang
* @url /master/Article/getJournalAndStage
* @method POST
*
*/
public function getJournalAndStage()
{
$data = $this->request->post();
$journal_list = $this->journal_obj->where('editor_id', $data['editor_id'])->where('state', 0)->select();
$frag = [];
foreach ($journal_list as $v) {
$v['journal_stage_id'] = $v['journal_id'];
$cache_list = $this->journal_stage_obj->where('journal_id', $v['journal_id'])->where('state', 0)->select();
foreach ($cache_list as $k => $vv) {
$cache_list[$k]['title'] = $vv['stage_year'] . ' Vol.' . $vv['stage_vol'] . ' issue.' . $vv['stage_no'] . $vv['stage_pagename'] . $vv['stage_page'];
}
if (count($cache_list) > 0) {
$v['children'] = $cache_list;
} else {
$v['children'] = [];
}
$frag[] = $v;
}
return json(['code' => 0, 'msg' => 'success', 'data' => ['joutaglist' => $frag]]);
}
/**
* @title 添加文章基本信息
* @description 添加文章基本信息
* @param name:journal_id type:int require:1 desc:期刊id
* @param name:journal_stage_id type:int require:1 desc:分期id
* @param name:sort type:int require:1 default:0 desc:权重
* @param name:title type:string require:1 desc:标题
* @author wangjinleichang
* @url /master/Article/addArticleBase
* @method POST
*
*/
public function addArticleBase()
{
$data = $this->request->post();
$insert_data['journal_id'] = $data['journal_id'];
$insert_data['journal_stage_id'] = $data['journal_stage_id'];
$insert_data['title'] = $data['title'];
$insert_data['sort'] = $data['sort'];
$insert_data['ctime'] = time();
$res = $this->article_obj->insert($insert_data);
if ($res) {
return json(['code' => 0, 'msg' => 'success']);
} else {
return json(['code' => 1, 'msg' => 'system error']);
}
}
/**
* @title 删除文章
* @description 删除文章
* @param name:article_id type:int require:1 desc:文章id
* @author wangjinleichang
* @url /master/Article/delArticle
* @method POST
*
*/
public function delArticle()
{
$data = $this->request->post();
$res = $this->article_obj->where('article_id', $data['article_id'])->update(['state' => 1]);
return json(['code' => 0, 'msg' => 'success']);
}
/**
* @title 添加文章作者
* @description 添加文章作者
* @param name:article_id type:int require:1 desc:article_id
* @param name:author_name type:string require:1 desc:作者名字
* @param name:author_country type:string require:1 desc:国家
* @param name:orcid type:string require:0 desc:orcid
* @param name:is_first type:boolean require:1 default:0 desc:是否第一作者(1yes0no)
* @param name:is_report type:boolean require:1 default:0 desc:是否通讯作者(1yes0no)
* @param name:email type:string require:0 desc:邮箱
* @param name:organs type:string require:1 desc:array
*
* @author wangjinleichang
* @url /master/Article/addArticleAuthor
* @method POST
*
*/
public function addArticleAuthor()
{
$data = $this->request->post();
$insert_author['article_id'] = $data['article_id'];
$insert_author['author_name'] = trim($data['author_name']);
//处理名字
$ca = explode(' ', $insert_author['author_name']);
$caf = '';
$cal = '';
if (isset($ca[0])) {
$caf = str_replace('-', '', $ca[0]);
}
if (isset($ca[1])) {
$cal = $ca[1];
}
$insert_author['first_name'] = $caf;
$insert_author['last_name'] = $cal;
$insert_author['orcid'] = isset($data['orcid']) ? $data['orcid'] : '';
$insert_author['author_country'] = $data['author_country'];
$insert_author['is_first'] = $data['is_first'];
$insert_author['is_report'] = $data['is_report'];
$insert_author['email'] = intval($data['is_report']) == 1 ? $data['email'] : '';
Db::startTrans();
$insert_id = $this->article_author_obj->insertGetId($insert_author);
$or_res = true;
if (isset($data['organs']) && is_array($data['organs'])) {
foreach ($data['organs'] as $k => $v) {
$cache_ins['article_id'] = $data['article_id'];
$cache_ins['article_author_id'] = $insert_id;
$cache_ins['article_organ_id'] = $v;
$or_res = $this->author_to_organ_obj->insert($cache_ins) ? true : false;
}
}
if ($insert_id && $or_res) {
Db::commit();
return json(['code' => 0, 'msg' => 'success']);
} else {
Db::rollback();
return json(['code' => 1, 'msg' => 'system error']);
}
}
/**
* @title 编辑文章作者
* @description 编辑文章作者
* @param name:article_author_id type:int require:1 desc:article_id
* @param name:author_name type:string require:1 desc:作者名字
* @param name:orcid type:string require:0 desc:orcid
* @param name:author_country type:string require:1 desc:国家
* @param name:is_first type:boolean require:1 default:0 desc:是否第一作者(1yes0no)
* @param name:is_report type:boolean require:1 default:0 desc:是否通讯作者(1yes0no)
* @param name:email type:string require:0 desc:邮箱
* @param name:organs type:string require:1 desc:array
*
* @author wangjinleichang
* @url /master/Article/editArticleAuthor
* @method POST
*
*/
public function editArticleAuthor()
{
$data = $this->request->post();
// $data['article_author_id'] = 21;
// $data['article_id'] = 38;
// $data['author_name'] = '作者3';
// $data['author_country'] = 'Netherlands';
// $data['is_first'] = 1;
// $data['is_report'] = 1;
// $data['email'] = 'xl37@163.com';
// $data['organs'] = ['1','2','3'];
$old_article_author_info = $this->article_author_obj->where('article_author_id', $data['article_author_id'])->find();
$update_author['author_name'] = trim($data['author_name']);
//处理名字
$ca = explode(' ', $update_author['author_name']);
$caf = '';
$cal = '';
if (isset($ca[0])) {
$caf = str_replace('-', '', $ca[0]);
}
if (isset($ca[1])) {
$cal = $ca[1];
}
$update_author['first_name'] = $caf;
$update_author['last_name'] = $cal;
$update_author['orcid'] = isset($data['orcid']) ? $data['orcid'] : '';
$update_author['author_country'] = $data['author_country'];
$update_author['is_first'] = $data['is_first'];
$update_author['is_report'] = $data['is_report'];
$update_author['email'] = intval($data['is_report']) == 1 ? $data['email'] : '';
$this->article_author_obj->where('article_author_id', $data['article_author_id'])->update($update_author);
if (is_array($data['organs'])) {
$has_ids = [];
foreach ($data['organs'] as $v) {
$cache_one = $this->author_to_organ_obj->where('article_author_id', $data['article_author_id'])->where('article_organ_id', $v)->where('state', 0)->find();
if ($cache_one == null) {
$insert['article_id'] = $old_article_author_info['article_id'];
$insert['article_author_id'] = $data['article_author_id'];
$insert['article_organ_id'] = $v;
$this->author_to_organ_obj->insert($insert);
}
$has_ids[] = intval($v);
}
$this->author_to_organ_obj->where('article_author_id', $data['article_author_id'])->where('state', 0)->where('article_organ_id', 'not in', $has_ids)->update(['state' => 1]);
} else {
$this->author_to_organ_obj->where('article_author_id', $data['article_author_id'])->where('state', 0)->update(['state' => 1]);
}
return json(['code' => 0, 'msg' => 'success']);
}
/**
* @title 删除文章作者
* @description 删除文章作者
* @param name:article_author_id type:int require:1 desc:article_id
*
* @author wangjinleichang
* @url /master/Article/delArticleAuthor
* @method POST
*
*/
public function delArticleAuthor()
{
$data = $this->request->post();
//删除作者和机构的关系
$this->author_to_organ_obj->where('article_author_id', $data['article_author_id'])->update(['state' => 1]);
$this->article_author_obj->where('article_author_id', $data['article_author_id'])->update(['state' => 1]);
return json(['code' => 0, 'msg' => 'success']);
}
/**
* @title 获取文章作者和机构
* @description 获取文章作者和机构
* @param name:article_id type:int require:1 desc:article_id
*
* @return authorList:array#
* @return organList:array#
* @author wangjinleichang
* @url /master/Article/getArticleAuthor
* @method POST
*
*/
public function getArticleAuthor()
{
$data = $this->request->post();
$author_list = $this->article_author_obj->where('article_id', $data['article_id'])->where('state', 0)->select();
foreach ($author_list as $k => $v) {
$cache_to = $this->author_to_organ_obj
->field('j_article_author_to_organ.*,j_article_organ.organ_name')
->join('j_article_organ', 'j_article_organ.article_organ_id = j_article_author_to_organ.article_organ_id')
->where('j_article_author_to_organ.article_author_id', $v['article_author_id'])
->where('j_article_author_to_organ.state', 0)
->select();
$cache_frag = [];
foreach ($cache_to as $vv) {
$cache_frag[] = $vv;
}
$author_list[$k]['organs'] = $cache_frag;
}
$organ_list = $this->article_organ_obj->where('article_id', $data['article_id'])->where('state', 0)->select();
return json(['code' => 0, 'msg' => 'success', 'data' => ['authorList' => $author_list, 'organList' => $organ_list]]);
}
/**
* @title 添加文章作者机构
* @description 添加文章作者机构
* @param name:article_id type:int require:1 desc:article_id
* @param name:organ_name type:string require:1 desc:机构名字
* @author wangjinleichang
* @url /master/Article/addArticleOrgan
* @method POST
*
*/
public function addArticleOrgan()
{
$data = $this->request->post();
$insert_data['article_id'] = $data['article_id'];
$insert_data['organ_name'] = $data['organ_name'];
$res = $this->article_organ_obj->insert($insert_data);
if ($res) {
return json(['code' => 0, 'msg' => 'success']);
} else {
return json(['code' => 1, 'msg' => 'system error']);
}
}
/**
* @title 编辑文章作者机构
* @description 编辑文章作者机构
* @param name:article_organ_id type:int require:1 desc:article_organ_id
* @param name:organ_name type:string require:1 desc:机构名字
* @author wangjinleichang
* @url /master/Article/editArticleOrgan
* @method POST
*
*/
public function editArticleOrgan()
{
$data = $this->request->post();
$this->article_organ_obj->where('article_organ_id', $data['article_organ_id'])->update(['organ_name' => $data['organ_name']]);
return json(['code' => 0, 'msg' => 'success']);
}
/**
* @title 删除文章作者机构
* @description 删除文章作者机构
* @param name:article_organ_id type:int require:1 desc:article_organ_id
* @author wangjinleichang
* @url /master/Article/delArticleOrgan
* @method POST
*
*/
public function delArticleOrgan()
{
$data = $this->request->post();
//删除作者和机构的关系
$this->author_to_organ_obj->where('article_organ_id', $data['article_organ_id'])->update(['state' => 1]);
$this->article_organ_obj->where('article_organ_id', $data['article_organ_id'])->update(['state' => 1]);
return json(['code' => 0, 'msg' => 'success']);
}
/**
* 添加文章通过投稿系统
*/
public function addArticleForSubmission()
{
$data = $this->request->post();
$rule = new Validate([
'title' => 'require',
'journal_stage_id' => 'require',
'issn' => 'require',
'type' => 'require',
'abbr' => 'require',
'doi' => 'require',
'abstract' => 'require',
'file_pdf' => 'require',
'pub_date' => 'require',
'keywords' => 'require',
'npp' => 'require'
]);
if (!$rule->check($data)) {
return jsonError($rule->getError());
}
$journal_info = $this->journal_obj->where('issn', $data['issn'])->find();
if (!is_dir(ROOT_PATH . 'public' . DS . 'articlePDF' . DS . date('Ymd'))) {
mkdir(ROOT_PATH . 'public' . DS . 'articlePDF' . DS . date('Ymd'));
}
$file_name = substr($data['file_pdf'], strripos($data['file_pdf'], '/') + 1);
$co = @copy("http://api.tmrjournals.com/public/" . $data['file_pdf'], ROOT_PATH . 'public' . DS . 'articlePDF' . DS . date('Ymd') . DS . $file_name);
if ($co != 1) {
return jsonError('copy error!');
}
//处理基本信息
$insert['title'] = trim($data['title']);
$insert['journal_id'] = $journal_info['journal_id'];
$insert['journal_stage_id'] = $data['journal_stage_id'];
$insert['type'] = $data['type'];
if (isset($data['icon']) && $data['icon'] != '') {
$cfile_name = substr($data['icon'], strripos($data['icon'], '/') + 1);
if (!is_dir(ROOT_PATH . 'public' . DS . 'articleicon' . DS . date('Ymd'))) {
mkdir(ROOT_PATH . 'public' . DS . 'articleicon' . DS . date('Ymd'));
}
$co = @copy("http://api.tmrjournals.com/public/articleicon/" . $data['icon'], ROOT_PATH . 'public' . DS . 'articleicon' . DS . date('Ymd') . DS . $cfile_name);
$insert['icon'] = date('Ymd') . DS . $cfile_name;
}
if (isset($data['file_sub']) && $data['file_sub'] != '') {
$cfile_name = substr($data['file_sub'], strripos($data['file_sub'], '/') + 1);
if (!is_dir(ROOT_PATH . 'public' . DS . 'articleSUB' . DS . date('Ymd'))) {
mkdir(ROOT_PATH . 'public' . DS . 'articleSUB' . DS . date('Ymd'));
}
$co = @copy("http://api.tmrjournals.com/public/articleSUB/" . $data['file_sub'], ROOT_PATH . 'public' . DS . 'articleSUB' . DS . date('Ymd') . DS . $cfile_name);
$insert['file_sub'] = date('Ymd') . DS . $cfile_name;
}
if (isset($data['file_sub2']) && $data['file_sub2'] != '') {
$cfile_name = substr($data['file_sub2'], strripos($data['file_sub2'], '/') + 1);
if (!is_dir(ROOT_PATH . 'public' . DS . 'articleSUB2' . DS . date('Ymd'))) {
mkdir(ROOT_PATH . 'public' . DS . 'articleSUB2' . DS . date('Ymd'));
}
$co = @copy("http://api.tmrjournals.com/public/articleSUB2/" . $data['file_sub2'], ROOT_PATH . 'public' . DS . 'articleSUB2' . DS . date('Ymd') . DS . $cfile_name);
$insert['file_sub2'] = date('Ymd') . DS . $cfile_name;
}
if (isset($data['file_cdf']) && $data['file_cdf'] != '') {
$cfile_name = substr($data['file_cdf'], strripos($data['file_cdf'], '/') + 1);
if (!is_dir(ROOT_PATH . 'public' . DS . 'articleCDF' . DS . date('Ymd'))) {
mkdir(ROOT_PATH . 'public' . DS . 'articleCDF' . DS . date('Ymd'));
}
$co = @copy("http://api.tmrjournals.com/public/articleCDF/" . $data['file_cdf'], ROOT_PATH . 'public' . DS . 'articleCDF' . DS . date('Ymd') . DS . $cfile_name);
$insert['file_cdf'] = date('Ymd') . DS . $cfile_name;
}
if (isset($data['file_original']) && $data['file_original'] != '') {
$cfile_name = substr($data['file_original'], strripos($data['file_original'], '/') + 1);
if (!is_dir(ROOT_PATH . 'public' . DS . 'articleOriginal' . DS . date('Ymd'))) {
mkdir(ROOT_PATH . 'public' . DS . 'articleOriginal' . DS . date('Ymd'));
}
$co = @copy("http://api.tmrjournals.com/public/articleOriginal/" . $data['file_original'], ROOT_PATH . 'public' . DS . 'articleOriginal' . DS . date('Ymd') . DS . $cfile_name);
$insert['file_original'] = date('Ymd') . DS . $cfile_name;
}
if (isset($data['endnote']) && $data['endnote'] != '') {
$cfile_name = substr($data['endnote'], strripos($data['endnote'], '/') + 1);
if (!is_dir(ROOT_PATH . 'public' . DS . 'endNote' . DS . date('Ymd'))) {
mkdir(ROOT_PATH . 'public' . DS . 'endNote' . DS . date('Ymd'));
}
$co = @copy("http://api.tmrjournals.com/public/endNote/" . $data['endnote'], ROOT_PATH . 'public' . DS . 'endNote' . DS . date('Ymd') . DS . $cfile_name);
$insert['endnote'] = date('Ymd') . DS . $cfile_name;
}
if (isset($data['bibtex']) && $data['bibtex'] != '') {
$cfile_name = substr($data['bibtex'], strripos($data['bibtex'], '/') + 1);
if (!is_dir(ROOT_PATH . 'public' . DS . 'bibTex' . DS . date('Ymd'))) {
mkdir(ROOT_PATH . 'public' . DS . 'bibTex' . DS . date('Ymd'));
}
$co = @copy("http://api.tmrjournals.com/public/bibTex/" . $data['bibtex'], ROOT_PATH . 'public' . DS . 'bibTex' . DS . date('Ymd') . DS . $cfile_name);
$insert['bibtex'] = date('Ymd') . DS . $cfile_name;
}
if(isset($data['lx_online'])&&$data['lx_online']!=''){
$insert['lx_online'] = $data['lx_online'];
}
$insert['doi'] = '10.53388/' . $data['doi'];
$insert['abstract'] = $data['abstract'];
$insert['pub_date'] = $data['pub_date'];
$insert['abbr'] = $data['abbr'];
$insert['tradition_tag'] = isset($data['tradition_tag']) ? $data['tradition_tag'] : '';
$insert['tradition'] = isset($data['tradition']) ? $data['tradition'] : '';
$insert['keywords'] = $data['keywords'];
$insert['npp'] = $data['npp'];
$sort = 0;
if ($journal_info['journal_id'] == 2 || $journal_info['journal_id'] == 17 || $journal_info['journal_id'] == 18) {
$sort = intval(substr($data['npp'], -2));
} else {
$sort = $data['npp'];
}
//处理话题,相关文章
if (isset($data['related'])&&$data['related']!=""){
$insert['related'] = json_encode(object_to_array(json_decode($data['related'])));
}
$insert['sort'] = $sort;
$insert['file_pdf'] = date('Ymd') . DS . $file_name;
$insert['mhoo'] = $data['mhoo'];
$insert['is_public'] = 1;
$insert['html_type']=2;
$insert['ctime'] = time();
Db::startTrans();
$aid = $this->article_obj->insertGetId($insert);
//处理斜体
$ltai_res = true;
if (isset($data['ltai']) && $data['ltai'] != '') {
$ltai = explode(',', $data['ltai']);
$ltai_input = [];
foreach ($ltai as $v) {
$cache_input['article_id'] = $aid;
$cache_input['content'] = $v;
$ltai_input[] = $cache_input;
}
$ltai_res = $this->article_ltai_obj->insertAll($ltai_input);
}
//处理作者
try {
$authors = object_to_array(json_decode($data['authors']));
$organs = object_to_array(json_decode($data['organs']));
$organ_res = true;
foreach ($organs as $v) {
$ca_insert['article_id'] = $aid;
$ca_insert['organ_name'] = $v['organ_name'];
$organ_res = $this->article_organ_obj->insert($ca_insert);
}
$author_res = true;
$ato_res = true;
$ca_au_id = true;
foreach ($authors as $v) {
$insert_author['article_id'] = $aid;
$insert_author['author_name'] = $journal_info['journal_id'] == 22 ? $v['last_name'] . $v['first_name'] : $v['first_name'] . ' ' . $v['last_name'];
$insert_author['first_name'] = $v['first_name'];
$insert_author['last_name'] = $v['last_name'];
$insert_author['author_country'] = $v['author_country'];
$insert_author['is_first'] = $v['is_first'];
$insert_author['is_report'] = $v['is_report'];
$insert_author['orcid'] = $v['orcid'];
$insert_author['email'] = $v['email'];
$ca_au_id = $this->article_author_obj->insertGetId($insert_author);
$cache_organs = $v['organs'];
foreach ($cache_organs as $val) {
$c_organ = $this->article_organ_obj->where('article_id', $aid)->where('organ_name', $val['organ_name'])->find();
if ($c_organ == null) {
return jsonError('organ error!');
}
$insert_orm['article_id'] = $aid;
$insert_orm['article_author_id'] = $ca_au_id;
$insert_orm['article_organ_id'] = $c_organ['article_organ_id'];
$ato_res = $this->author_to_organ_obj->insert($insert_orm);
}
}
} catch (Exception $e) {
Db::rollback();
return jsonError($e->getMessage());
}
//处理话题,相关文章
if (isset($data['topics'])&&$data['topics']!=""){
$ll = object_to_array(json_decode($data['topics']));
foreach ($ll as $v){
$cac_topic['article_id'] = $aid;
$cac_topic['topic_id'] = $v;
$this->article_to_topic_obj->insert($cac_topic);
}
}
if ($aid && $organ_res && $ltai_res && $author_res && $ato_res && $ca_au_id) {
Db::commit();
$this->pushDoiToCrossref($data['doi'], $aid);
$this->pushEmailToAuthor($aid);
// $this->addArticleMain($aid,$data['p_article_id']);
return jsonSuccess(['article_id' => $aid]);
} else {
Db::rollback();
return jsonError('system error');
}
}
// public function addArticleMainForSubmission(){
// $data = $this->request->post();
// $rule = new Validate([
// "article_id"=>"require",
// "p_article_id"=>"require"
// ]);
// if(!$rule->check($data)){
// return jsonError($rule->getError());
// }
// $check = $this->article_main_obj->where('article_id',$data['article_id'])->where('state',0)->find();
// if($check){
// return jsonError("Repeated submission");
// }
// $this->addArticleMain($data['article_id'],$data['p_article_id']);
//
// }
// private function addArticleMain($now_id,$p_id){
// $url = "http://api.tmrjournals.com/public/index.php/api/Production/getProductionMains";
// $pra['p_article_id'] = $p_id;
// $res = object_to_array(json_decode(myPost($url,$pra)));
// $mains = $res['data']['mains'];
// if(count($mains)==0){
// return ;
// }
// foreach ($mains as $k => $v){
// $insert['article_id'] = $now_id;
// $insert['width'] = isset($v['width'])?$v['width']:0;
// $insert['content'] = $v['content'];
// $insert['note'] = isset($v['note'])?$v['note']:'';
// $this->article_main_obj->insert($insert);
// }
// }
private function pushDoiToCrossref($doi, $article_id)
{
$url = 'https://doi.crossref.org/servlet/deposit';
$file = ROOT_PATH . 'public' . DS . 'xml' . DS . $article_id . '.xml';
$d['doi_num'] = $doi;
$d['article_id'] = $article_id;
$this->crossRef($d);
//发送请求
$par['login_id'] = 'books@tmrjournals.com/tmrp';
$par['login_passwd'] = '849192806pnX';
$par['fname'] = new \CURLFile($file);
$res = $this->myPost($url, $par);
return $res;
}
// public function testp(){
// $this->pushEmailToAuthor(2551);
// }
private function pushEmailToAuthor($article_id)
{
$article_info = $this->article_obj->where('article_id', $article_id)->find();
$journal_info = $this->journal_obj->where('journal_id', $article_info['journal_id'])->find();
$stage_info = $this->journal_stage_obj->where('journal_stage_id', $article_info['journal_stage_id'])->find();
$authors = $this->article_author_obj->where('article_id', $article_id)->where('state', 0)->select();
foreach ($authors as $v) {
if ($v['email'] == '') {
continue;
}
$tt = "Dear " . $v['author_name'] . ",
";
$tt .= "We are delighted to inform you that your article has been published online in " . $journal_info['title'] . ". Congratulations on this significant accomplishment! Your article can be found in Vol. " . $stage_info['stage_vol'] . " Issue " . $stage_info['stage_no'] . " article link.
";
$tt .= "We appreciate your decision to choose " . $journal_info['title'] . " for publishing your research, and we hope that it has been a fulfilling experience for you. We believe that your work will be of great value to the scientific community and will contribute to the advancement of knowledge in your field.
";
$tt .= "To help your research reach a broader audience, we recommend utilizing the following channels: ResearchGate, Academia.edu, Twitter, LinkedIn, and Facebook. By sharing your work on these platforms, you can ensure that it receives the attention it deserves.
";
$tt .= "https://www.researchgate.net
https://www.academia.edu
https://twitter.com
https://www.linkedin.com
https://www.facebook.com
";
$tt .= "Once again, congratulations on your publication, and we look forward to receiving more manuscripts from you in the future.";
$maidata['email'] = $v['email'];
$maidata['title'] = $journal_info['title'] . "–" . $article_info['title'];
$maidata['content'] = $tt;
$maidata['tmail'] = $journal_info['email'];
$maidata['tpassword'] = $journal_info['epassword'];
// dump($maidata);
Queue::push('app\api\job\mail@fire', $maidata, "mail");
}
}
public function getArticleDetail(){
$data = $this->request->post();
$rule = new Validate([
"article_id"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$detail = $this->article_obj->where("article_id",$data['article_id'])->find();
$detail['has_html'] = hasHtml($data['article_id']);
$re['detail'] = $detail;
return jsonSuccess($re);
}
public function changeArticleType2(){
$data = $this->request->post();
$rule = new Validate([
"article_id"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$this->article_obj->where("article_id",$data['article_id'])->update(['html_type'=>2]);
return jsonSuccess([]);
}
/**
* 获取online文章列表
*/
public function getOnlineArticleForSubmit()
{
$data = $this->request->post();
$rule = new Validate([
'issn' => 'require'
]);
if (!$rule->check($data)) {
return jsonError($rule->getError());
}
$journal_info = $this->journal_obj->where('issn', $data['issn'])->find();
$stages = $this->journal_stage_obj->where('is_publish', 0)->where('journal_id', $journal_info['journal_id'])->where('state', 0)->select();
foreach ($stages as $k => $v) {
$cache = $this->article_obj->where('journal_stage_id', $v['journal_stage_id'])->where('state', 0)->orderRaw('npp+0')->select();
foreach ($cache as $key=>$val){
$cache[$key]['has_html'] = hasHtml($val['article_id']);
}
$stages[$k]['articles'] = $cache;
}
$re['stages'] = $stages;
return jsonSuccess($re);
}
/**
* 获取public文章
*/
public function getArticleForSubmit()
{
$data = $this->request->post();
$rule = new Validate([
'issn' => 'require'
]);
if (!$rule->check($data)) {
return jsonError($rule->getError());
}
$journal_info = $this->journal_obj->where('issn', $data['issn'])->find();
$stages = $this->journal_stage_obj->where('journal_id', $journal_info['journal_id'])->where('state', 0)->select();
foreach ($stages as $k => $v) {
$cache = $this->article_obj->where('journal_stage_id', $v['journal_stage_id'])->where('state', 0)->orderRaw('npp+0')->select();
$stages[$k]['articles'] = $cache;
}
$re['stages'] = $stages;
return jsonSuccess($re);
}
public function getArticleCitesForSubmit(){
$data = $this->request->post();
$rule = new Validate([
"article_id"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$list = $this->article_cite_obj->where("article_id",$data['article_id'])->where("state",1)->select();
$re['list'] = $list;
return jsonSuccess($re);
}
/**
* 获取所有分期
*/
public function getAllStagesForSubmit()
{
$data = $this->request->post();
$rule = new Validate([
'issn' => 'require'
]);
if (!$rule->check($data)) {
return jsonError($rule->getError());
}
$journal_info = $this->journal_obj->where('issn', $data['issn'])->find();
$stages = $this->journal_stage_obj->where('journal_id', $journal_info['journal_id'])->where('state', 0)->select();
$re['stages'] = $stages;
return jsonSuccess($re);
}
/**
* 编辑文章信息
*/
public function changeArticleForSubmit()
{
$data = $this->request->post();
$rule = new Validate([
'article_id' => 'require',
'sort' => 'require'
]);
if (!$rule->check($data)) {
return jsonError($rule->getError());
}
$this->article_obj->where('article_id', $data['article_id'])->update(['sort' => $data['sort']]);
return jsonSuccess([]);
}
/**
* 更改文章客座
*/
public function changeArticleSpecialForSubmit()
{
$data = $this->request->post();
$rule = new Validate([
'article_id' => 'require',
'journal_special_id' => 'require'
]);
if (!$rule->check($data)) {
return jsonError($rule->getError());
}
$this->article_obj->where('article_id', $data['article_id'])->update(['journal_special_id' => $data['journal_special_id']]);
return jsonSuccess([]);
}
// public function authortest(){
// $str = "[{\"art_aut_id\":6474,\"article_id\":2065,\"firstname\":\"Tadele\",\"lastname\":\"Yadesa\",\"orcid\":\"https:\\/\\/orcid.org\\/ 0000-0001-5151-2610\",\"company\":\"Mbarara University of Science and Technology\",\"department\":\"Pharmacy\",\"email\":\"maatiikoo4@gmail.com\",\"author_title\":\"Ph.D.\",\"country\":\"Uganda\",\"address\":\"Mbarara University of Science and Technology P.O.BOX 1410\",\"is_super\":1,\"is_report\":1,\"state\":0},{\"art_aut_id\":6475,\"article_id\":2065,\"firstname\":\"Oliver\",\"lastname\":\"Kushemererwa\",\"orcid\":\"\",\"company\":\"Mbarara University of Science and Technology\",\"department\":\"Pharmacy\",\"email\":\"Kusholiver@gmail.com\",\"author_title\":\"Others\",\"country\":\"Uganda\",\"address\":\"\",\"is_super\":0,\"is_report\":0,\"state\":0},{\"art_aut_id\":6476,\"article_id\":2065,\"firstname\":\"Joshua\",\"lastname\":\"Kiptoo\",\"orcid\":\"\",\"company\":\"Mbarara University of Science and Technology\",\"department\":\"Pharmacy\",\"email\":\"KIPTOOKWALIA@gmail.com\",\"author_title\":\"Others\",\"country\":\"Uganda\",\"address\":\"\",\"is_super\":0,\"is_report\":0,\"state\":0},{\"art_aut_id\":6477,\"article_id\":2065,\"firstname\":\"John\",\"lastname\":\"Isiiko\",\"orcid\":\"\",\"company\":\"Mbarara University of Science and Technology\",\"department\":\"Pharmacy\",\"email\":\"isiikojohn@gmail.com\",\"author_title\":\"Others\",\"country\":\"Uganda\",\"address\":\"\",\"is_super\":0,\"is_report\":0,\"state\":0},{\"art_aut_id\":6478,\"article_id\":2065,\"firstname\":\"Bonny\",\"lastname\":\"Luzze\",\"orcid\":\"\",\"company\":\"Mbarara University of Science and Technology\",\"department\":\"Pharmacy\",\"email\":\"tottojrlz@gmail.com\",\"author_title\":\"Others\",\"country\":\"Uganda\",\"address\":\"\",\"is_super\":0,\"is_report\":0,\"state\":0},{\"art_aut_id\":6479,\"article_id\":2065,\"firstname\":\"Jacinta\",\"lastname\":\"Ojia\",\"orcid\":\"\",\"company\":\"Mbarara University of Science and Technology\",\"department\":\"Internal medicine\",\"email\":\"ambark21@yahoo.com\",\"author_title\":\"Others\",\"country\":\"Uganda\",\"address\":\"\",\"is_super\":0,\"is_report\":0,\"state\":0},{\"art_aut_id\":6480,\"article_id\":2065,\"firstname\":\"Mohamed\",\"lastname\":\"Abdirahman\",\"orcid\":\"\",\"company\":\"Mbarara University of Science and Technology\",\"department\":\"Internal medicine\",\"email\":\"dr.mma001838@gmail.com\",\"author_title\":\"Others\",\"country\":\"Uganda\",\"address\":\"\",\"is_super\":1,\"is_report\":0,\"state\":0}]";
// $authors = object_to_array(json_decode($str));
// $o = [];
// $orgs = [];
// foreach($authors as $k => $v){
// if(in_array($v['company'],$orgs)){
// continue;
// }
// $orgs[] = $v['company'];
// }
// foreach($orgs as $v){
// $insert['article_id'] = 8888;
// $insert['organ_name'] = $v;
// $ca_id = $this->article_organ_obj->insertGetId($insert);
// $o[$v] = $ca_id;
// }
// foreach($authors as $v){
// $insert_author['article_id'] = 8888;
// $insert_author['author_name'] = $v['firstname'].' '.$v['lastname'];
// $insert_author['first_name'] = $v['firstname'];
// $insert_author['last_name'] = $v['lastname'];
// $insert_author['author_country'] = $v['country'];
// $insert_author['is_first'] = $v['is_super'];
// $insert_author['is_report'] = $v['is_report'];
// $insert_author['email'] = $v['email'];
// $ca_au_id = $this->article_author_obj->insertGetId($insert_author);
// $insert_orm['article_id'] = 8888;
// $insert_orm['article_author_id'] = $ca_au_id;
// $insert_orm['article_organ_id'] = $o[$v['company']];
// $this->author_to_organ_obj->insert($insert_orm);
// }
// echo 'ok';
// }
/**
* @title 获取文章基本信息
* @description 获取文章基本信息
* @param name:article_id type:int require:1 desc:文章id
*
* @return journal:期刊信息#
* @return articleInfo:文章详情@
* @articleInfo icon:图片
* @articleInfo tradition_tag:封皮标签
* @articleInfo tradition:封皮简介
* @articleInfo doi:doi
* @articleInfo abstract:简介
* @articleInfo keywords:关键字
* @articleInfo fund:fund
* @articleInfo file_html:html文件
* @articleInfo sort:权重
* @articleInfo pub_date:发表日期
*
* @return files:文件列表#
* @author wangjinleichang
* @url /master/Article/getArticleBase
* @method POST
*
*/
public function getArticleBase()
{
$data = $this->request->post();
$article_info = $this->article_obj->where('article_id', $data['article_id'])->find();
$ltais = $this->article_ltai_obj->where('article_id', $article_info['article_id'])->where('state', 0)->column('content');
$article_info['ltai'] = implode(',', $ltais);
$journal_info = $this->journal_obj->where('journal_id', $article_info['journal_id'])->find();
$list = scandir(ROOT_PATH . 'public/articleHTML/' . trim($journal_info['sx']));
$frag = [];
foreach ($list as $k => $v) {
if ($k > 1) {
$frag[] = ['val' => $v];
}
}
$re['journal'] = $journal_info;
$re['articleInfo'] = $article_info;
$re['files'] = $frag;
return jsonSuccess($re);
// return json(['code'=>0,'msg'=>'success','data'=>$article_info]);
}
public function getHtmlFiles()
{
$data = $this->request->post();
$article_info = $this->article_obj->where('article_id', $data['article_id'])->find();
$journal_info = $this->journal_obj->where('journal_id', $article_info['journal_id'])->find();
$list = scandir(ROOT_PATH . 'public/articleHTML/' . $journal_info['sx']);
$frag = [];
foreach ($list as $k => $v) {
if ($k > 1) {
$frag[] = $v;
}
}
return jsonSuccess($data);
// $list = scandir(ROOT_PATH.'public/articleHTML/TMR');
// echo '
'; // var_dump($list); // echo ''; // die; } /** * @title 编辑文章基本信息 * @description 编辑文章基本信息 * @param name:article_id type:int require:1 desc:文章id * @param name:title type:string require:1 desc:标题 * @param name:subtitle type:string require:0 desc:副标题 * @param name:rotation type:string require:0 desc:轮播图 * @param name:icon type:string require:1 desc:图片 * @param name:tradition_tag type:string require:1 desc:封皮标签 * @param name:tradition type:string require:1 desc:封皮简介 * @param name:mhoo type:string require:1 desc:Medical history of objective * @param name:journal_stage_id type:int require:1 desc:期刊分期id * @param name:journal_special_id type:int require:1 desc:客座期刊id * @param name:doi type:string require:1 desc:doi * @param name:abstract type:string require:1 desc:简介 * @param name:keywords type:string require:1 desc:关键字 * @param name:ltai type:string require:0 desc:标题斜体(demo1,demo2) * @param name:npp type:strng require:1 desc:文章页码 * @param name:is_public type:int require:1 desc:0不显示1显示 * @param name:type type:string require:1 desc:类型 * @param name:cited type:int require:1 desc:引用数 * @param name:abbr type:string require:0 desc:作者简称 * @param name:sort type:int require:1 desc:权重 * @param name:other_state type:int require:1 desc:附加状态0默认1Being questioned被质疑2Withdrawal被撤回 * @param name:file_html type:string require:0 desc:html文件 * @param name:fund type:string require:1 desc:fund * @param name:pub_date type:string require:1 desc:发表日期 * * @author wangjinleichang * @url /master/Article/editArticleBase * @method POST * */ public function editArticleBase() { $data = $this->request->post(); if (isset($data['ltai'])) { $this->editArticleLtai($data['ltai'], $data['article_id']); } $updata['icon'] = $data['icon']; $updata['title'] = trim($data['title']); $updata['subtitle'] = isset($data['subtitle']) ? trim($data['subtitle']) : ''; $updata['rotation'] = isset($data['rotation']) ? $data['rotation'] : ''; $updata['journal_stage_id'] = $data['journal_stage_id']; $updata['journal_special_id'] = $data['journal_special_id']; $updata['tradition_tag'] = $data['tradition_tag']; $updata['tradition'] = $data['tradition']; $updata['mhoo'] = $data['mhoo']; $updata['doi'] = $data['doi']; $updata['abstract'] = $data['abstract']; $updata['keywords'] = $data['keywords']; // $updata['abs_num'] = $data['abs_num']; // $updata['pdf_num'] = $data['pdf_num']; // $updata['html_num'] = $data['html_num']; $updata['npp'] = $data['npp']; $updata['is_public'] = $data['is_public']; $updata['type'] = $data['type']; $updata['cited'] = $data['cited']; $updata['abbr'] = $data['abbr']; $updata['fund'] = $data['fund']; $updata['other_state'] = $data['other_state']; $updata['file_html'] = $data['file_html']; $updata['sort'] = $data['sort']; $updata['pub_date'] = $data['pub_date']; $res = $this->article_obj->where('article_id', $data['article_id'])->update($updata); // if($res){ return json(['code' => 0, 'msg' => 'success']); // }else{ // return json(['code'=>1,'msg'=>'system error']); // } } private function editArticleLtai($ltai, $article_id) { $list = explode(',', $ltai); $has = $this->article_ltai_obj->where('article_id', $article_id)->where('state', 0)->select(); foreach ($has as $val) { if (in_array($val['content'], $list)) { foreach ($list as $k => $v) { if ($val['content'] == $v) { unset($list[$k]); } } } else { //删除 $this->article_ltai_obj->where('article_ltai_id', $val['article_ltai_id'])->update(['state' => 1]); } } //增加 foreach ($list as $value) { $cache['article_id'] = $article_id; $cache['content'] = $value; $this->article_ltai_obj->insert($cache); } } /** * 获取关键词文章 */ public function getKeywordArticleOrderJournalForSubmit() { $data = $this->request->post(); $rule = new Validate([ 'keyword' => 'require' ]); if (!$rule->check($data)) { return jsonError($rule->getError()); } $articles = $this->article_obj ->field('j_article.*,j_journal.title journal_title') ->join('j_journal', 'j_journal.journal_id = j_article.journal_id', 'left') ->where('j_article.title|j_article.abstract|j_article.keywords', 'like', "%" . $data['keyword'] . "%") ->where('j_article.state', 0)->order('journal_id') ->select(); $journals = []; foreach ($articles as $v) { if (!isset($journals[$v['journal_title']])) { $cache_journal = $this->journal_obj->where('journal_id', $v['journal_id'])->find(); $journals[$cache_journal['title']] = $cache_journal; $journals[$cache_journal['title']]['articles'] = []; } $journals[$v['journal_title']]['articles'][] = $v; } $re['journals'] = array_values($journals); return jsonSuccess($re); } /** * @title 编辑文章文件信息 * @description 编辑文章文件信息 * @param name:article_id type:int require:1 desc:文章id * @param name:filetype type:string require:1 desc:文件类型(PDF/HTML/SUB/SUB2/endNote/bibTex/CDF) * @param name:fileURL type:string require:1 desc:文件地址 * * @author wangjinleichang * @url /master/Article/editArticleFile * @method POST * */ public function editArticleFile() { $data = $this->request->post(); if ($data['filetype'] == 'PDF') { $updata['file_pdf'] = $data['fileURL']; } elseif ($data['filetype'] == 'HTML') { $updata['file_html'] = $data['fileURL']; } elseif ($data['filetype'] == 'SUB') { $updata['file_sub'] = $data['fileURL']; } elseif ($data['filetype'] == 'SUB2') { $updata['file_sub2'] = $data['fileURL']; } elseif ($data['filetype'] == 'endNote') { $updata['endnote'] = $data['fileURL']; } elseif ($data['filetype'] == 'bibTex') { $updata['bibtex'] = $data['fileURL']; } elseif ($data['filetype'] == 'CDF') { $updata['file_cdf'] = $data['fileURL']; } $this->article_obj->where('article_id', $data['article_id'])->update($updata); return json(['code' => 0, 'msg' => 'success']); } /** * @title 获取文章列表 * @description 获取文章列表 * @param name:journal_id type:int default:0 require:1 desc:主键 * @param name:journal_stage_id type:int default:0 require:1 desc:主键 * @param name:editor_id type:int require:1 desc:编辑id * @param name:seach type:string require:0 desc:关键词 * @param name:pageIndex type:int require:1 desc:当前页码数 * @param name:pageSize type:int require:1 desc:单页数据条数 * * @return count:总数据数 * @return articleList:array# * @author wangjinleichang * @url /master/Article/getArticleList * @method POST * */ public function getArticleList() { $data = $this->request->post(); $where['j_article.state'] = 0; if (intval($data['journal_id']) !== 0) { $where['j_article.journal_id'] = $data['journal_id']; } else { $journals = []; if (isset($data['editor_id']) && $data['editor_id'] != '') { $journals = $this->journal_obj->where('editor_id', $data['editor_id'])->column('journal_id'); } else { $journals = $this->journal_obj->where('state', 0)->column('journal_id'); } $where['j_article.journal_id'] = ['in', $journals]; } if (intval($data['journal_stage_id']) !== 0) { $where['j_article.journal_stage_id'] = $data['journal_stage_id']; } if (isset($data['seach']) && $data['seach'] != '') { $where['j_article.title'] = ['like', '%' . $data['seach'] . '%']; } $limit_start = ($data['pageIndex'] - 1) * $data['pageSize']; $article_list = $this->article_obj->field('j_article.*,j_journal_stage.*,j_journal.title journal_title')->join(array(['j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT'], ['j_journal', 'j_journal.journal_id=j_article.journal_id', 'LEFT']))->where($where)->order(['j_article.sort desc', 'j_article.article_id'])->limit($limit_start, $data['pageSize'])->select(); foreach ($article_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); } $article_list[$k]['title'] = $cache_title; //获取药剂信息 $atm = $this->article_to_medicament_obj->where('article_id', $v['article_id'])->where('atm_state', 0)->find(); if ($atm) { $med_info = $this->medicament_obj->where('med_id', $atm['med_id'])->where('med_state', 0)->find(); $article_list[$k]['med_title'] = $med_info['med_title']; $article_list[$k]['med_ename'] = $med_info['med_ename']; } else { $article_list[$k]['med_title'] = ''; $article_list[$k]['med_ename'] = ''; } } $count = $this->article_obj->where($where)->count(); return json(['code' => 0, 'msg' => 'success', 'data' => ['count' => $count, 'articleList' => $article_list]]); } public function getArticleListForSubmit() { $data = $this->request->post(); $where['j_article.state'] = 0; $journal_info = $this->journal_obj->where('issn', $data['issn'])->find(); $where['j_article.journal_id'] = $journal_info['journal_id']; if (isset($data['journal_stage_id'])&&intval($data['journal_stage_id']) !== 0) { $where['j_article.journal_stage_id'] = $data['journal_stage_id']; } if (isset($data['seach']) && $data['seach'] != '') { $where['j_article.title'] = ['like', '%' . $data['seach'] . '%']; } $where['j_journal_stage.is_publish'] = 1; $limit_start = ($data['pageIndex'] - 1) * $data['pageSize']; $article_list = $this->article_obj->field('j_article.*,j_journal_stage.*,j_journal.title journal_title') ->join(array(['j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT'], ['j_journal', 'j_journal.journal_id=j_article.journal_id', 'LEFT'])) ->where($where) ->order('j_journal_stage.journal_stage_id desc') ->orderRaw('j_article.npp+0') ->limit($limit_start, $data['pageSize']) ->select(); foreach ($article_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); } $article_list[$k]['title'] = $cache_title; //获取药剂信息 $atm = $this->article_to_medicament_obj->where('article_id', $v['article_id'])->where('atm_state', 0)->find(); if ($atm) { $med_info = $this->medicament_obj->where('med_id', $atm['med_id'])->where('med_state', 0)->find(); $article_list[$k]['med_title'] = $med_info['med_title']; $article_list[$k]['med_ename'] = $med_info['med_ename']; } else { $article_list[$k]['med_title'] = ''; $article_list[$k]['med_ename'] = ''; } $cm = $this->article_main_obj->where('article_id',$v['article_id'])->where('state',0)->find(); $article_list[$k]['mains'] = $cm?1:0; $article_list[$k]["cite_num"] = $this->article_cite_obj->where("article_id",$v['article_id'])->where("state",1)->select(); $article_list[$k]['has_html'] = hasHtml($v['article_id']); } $count = $this->article_obj ->join(array(['j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT'], ['j_journal', 'j_journal.journal_id=j_article.journal_id', 'LEFT'])) ->where($where)->count(); return json(['code' => 0, 'msg' => 'success', 'data' => ['count' => $count, 'articleList' => $article_list]]); } public function getArticleMainsForSubmit(){ $data = $this->request->post(); $rule = new Validate([ "article_id"=>'require' ]); if(!$rule->check($data)){ return jsonError($rule->getError()); } $mains = getArticleMains($data['article_id']); $re['mains'] = $mains; return jsonSuccess($re); } public function refreshCiteForSubmission(){ $data = $this->request->post(); $rule = new Validate([ "article_id"=>"require" ]); if(!$rule->check($data)){ return jsonError($rule->getError()); } $res = grabCiteFromCrossref($data['article_id'],"sx"); return jsonSuccess($res); } public function addArticleCiteNew(){ $data = $this->request->post(); $rule = new Validate([ "article_id" => "require", "journal_id" => "require", "doi" => "require", "journal_name" => "require", "article_name" => "require", "author"=>"require", "vol"=>"require" ]); if(!$rule->check($data)){ return jsonError($rule->getError()); } $entity["article_id"] = $data['article_id']; $entity['journal_id'] = $data['journal_id']; $entity['doi'] = trim($data['doi']); $entity['journal_name'] = $data['journal_name']; $entity['article_name'] = $data['article_name']; $entity['ctime'] = time(); $entity['state'] = 1; $entity['author'] = $data['author']; $entity['vol'] = $data['vol']; $entity['factor'] = isset($data['factor'])?$data['factor']:0; $entity['is_china'] = isset($data['is_china'])?$data['is_china']:0; $entity['is_wos'] = isset($data['is_wos'])?$data['is_wos']:0; $this->article_cite_obj->insert($entity); return jsonSuccess([]); } public function editArticleCite(){ $data = $this->request->post(); $rule = new Validate([ "article_cite_id"=>"require", "factor"=>"require", "is_china"=>"require", "is_wos"=>"require" ]); if(!$rule->check($data)){ return jsonError($rule->getError()); } $this->article_cite_obj->where("article_cite_id",$data['article_cite_id'])->update($data); return jsonSuccess([]); } public function delArticleCiteForSubmission(){ $data = $this->request->post(); $rule = new Validate([ "article_cite_id" => "require" ]); if(!$rule->check($data)){ return jsonError($rule->getError()); } $re = $this->article_cite_obj->where("article_cite_id",$data['article_cite_id'])->update(["state"=>2]); return jsonSuccess(); } public function getArticleMainsForSubmission(){ $data = $this->request->post(); $rule = new Validate([ "article_id"=>"require" ]); if(!$rule->check($data)){ return jsonError($rule->getError()); } $article_info = $this->article_obj->where('article_id',$data['article_id'])->find(); $mains = getArticleMains($data['article_id']); $re['article'] = $article_info; $re['mains'] = $mains; return jsonSuccess($re); } public function delArticleMainForSubmission(){ $data = $this->request->post(); $rule = new Validate([ "article_main_id"=>"require" ]); if(!$rule->check($data)){ return jsonError($rule->getError()); } $this->delArticleMain($data['article_main_id']); return jsonSuccess([]); } public function delArticleMainsForSubmission(){ $data = $this->request->post(); $rule = new Validate([ "ids"=>"require" ]); if(!$rule->check($data)){ return jsonError($rule->getError()); } $ids = json_decode($data['ids']); foreach ($ids as $v){ $this->delArticleMain($v); } return jsonSuccess([]); } private function delArticleMain($article_main_id){ $main_info = $this->article_main_obj->where('article_main_id',$article_main_id)->find(); $next = $this->article_main_obj->where('pre_id',$article_main_id)->where('state',0)->find(); if($next){ //找到目标删除点的上位节点 if($main_info['pre_id']>0){ $pre_id = $main_info['pre_id']; }else{ $pre = $this->article_main_obj ->where('article_main_id','<',$main_info['article_main_id']) ->where("state",0) ->order("article_main_id desc") ->limit(1)->select(); $pre_id = $pre[0]['article_main_id']; //查询上一个节点是否有附加节点 $find_add = true; while ($find_add){ $fi = $this->article_main_obj->where('pre_id',$pre_id)->where('state',0)->find(); if($fi){ $pre_id = $fi['article_main_id']; }else{ $find_add = false; } } } $this->article_main_obj->where('article_main_id',$next['article_main_id'])->update(['pre_id'=>$pre_id]); } $this->article_main_obj->where('article_main_id',$article_main_id)->update(['state'=>1]); } public function editArticleMainForSubmission(){ $data = $this->request->post(); $rule = new Validate([ "article_main_id"=>"require", "type"=>"require", "content"=>"require", ]); if(!$rule->check($data)){ return jsonError($rule->getError()); } if($data['type']=="img"){ $update['content'] = $data['content']; $update['width'] = $data['width']; $update['note'] = $data['note']; }else{ $update['content'] = trim($data['content']); if(isset($data['is_title'])){ $update['is_title'] = $data['is_title']; } } $this->article_main_obj->where('article_main_id',$data['article_main_id'])->update($update); return jsonSuccess([]); } // public function addArticleMainAddForSubmission(){ // $data = $this->request->post(); // $rule = new Validate([ // "article_id"=>'require', // "pre_id"=>"require", // "type"=>"require", // "content"=>"require" // ]); // if(!$rule->check($data)){ // return jsonError($rule->getError()); // } // $pre_info = $this->article_main_obj->where('article_main_id',$data['pre_id'])->find(); // $next_info = $this->article_main_obj->where('pre_id',$pre_info['article_main_id'])->where('state',0)->find(); // $insert['article_id'] = $data['article_id']; // $insert['pre_id'] = $data['pre_id']; // $insert['is_add'] = 1; // $insert['content'] = trim($data['content']); // if($data['type']=="img"){ // $insert['width'] = $data['width']; // $insert['note'] = trim($data['note']); // } // $now_id = $this->article_main_obj->insertGetId($insert); // if($next_info){//如果原节点的下级存在,那么要变换下个节点的父节点 // $this->article_main_obj->where('article_main_id',$next_info['article_main_id'])->update(['pre_id'=>$now_id]); // } // return jsonSuccess([]); // } public function clearArticleMainForSubmission(){ $data = $this->request->post(); $rule = new Validate([ "article_id"=>"require" ]); if(!$rule->check($data)){ return jsonError($rule->getError()); } $this->article_main_obj->where('article_id',$data['article_id'])->update(['state'=>1]); return jsonSuccess([]); } // public function addArticleMainsAddForSubmission(){ // $data = $this->request->post(); // $rule = new Validate([ // "article_id"=>'require', // "pre_id"=>"require", // "contents"=>"require" // ]); // if(!$rule->check($data)){ // return jsonError($rule->getError()); // } // $pre_id = $data['pre_id']; // $next_info = $this->article_main_obj->where('pre_id',$pre_id)->where('state',0)->find(); // $contents = json_decode($data['contents']); // foreach ($contents as $k => $v){ // $insert['article_id'] = $data['article_id']; // $insert['pre_id'] = $pre_id; // $insert['is_add'] = 1; // $insert['content'] = trim($v); // $pre_id=$this->article_main_obj->insertGetId($insert); // } // if ($next_info){ // $this->article_main_obj->where('article_main_id',$next_info['article_main_id'])->update(['pre_id'=>$pre_id]); // } // return jsonSuccess($contents); // } // public function addArticleMainAddEmptyForSubmission(){ // $data = $this->request->post(); // $rule = new Validate([ // "article_id"=>'require', // "pre_id"=>"require" // ]); // if(!$rule->check($data)){ // return jsonError($rule->getError()); // } // $pre_info = $this->article_main_obj->where('article_main_id',$data['pre_id'])->find(); // $next_info = $this->article_main_obj->where('pre_id',$pre_info['article_main_id'])->where('state',0)->find(); // $insert['article_id'] = $data['article_id']; // $insert['pre_id'] = $data['pre_id']; // $insert['is_add'] = 1; // $insert['content'] = ""; // $now_id = $this->article_main_obj->insertGetId($insert); // if($next_info){//如果原节点的下级存在,那么要变换下个节点的父节点 // $this->article_main_obj->where('article_main_id',$next_info['article_main_id'])->update(['pre_id'=>$now_id]); // } // return jsonSuccess([]); // } /** * @title 获取文章对应期刊话题 * @description 获取文章对应期刊话题 * @param name:article_id type:int require:1 desc:期刊id * * @return topics:array# * @return nowtopic:array# * @author wangjinlei * @url /master/Article/getTopicByArticle * @method POST * */ public function getTopicByArticle() { $data = $this->request->post(); $article_info = $this->article_obj->where('article_id', $data['article_id'])->find(); $topic_res = $this->journal_topic_obj->where('journal_id', $article_info['journal_id'])->where('state', 0)->select(); $frag = []; foreach ($topic_res as $v) { if ($v['is_final'] == 1) { $frag[] = $v; } } foreach ($frag as $k => $val) { $frag[$k]['tname'] = $this->getTname($val, $topic_res); } //获取初始话题 $now_list = $this->article_to_topic_obj->where('article_id', $data['article_id'])->where('state', 0)->select(); return json(['code' => 0, 'msg' => 'success', 'data' => ['nowtopic' => $now_list, 'topics' => $frag]]); } public function getTopicByIssn(){ $data = $this->request->post(); $rule = new Validate([ "issn"=>"require" ]); if(!$rule->check($data)){ return jsonError($rule->getError()); } $journal = $this->journal_obj->where("issn",$data['issn'])->find(); $topic_res = $this->journal_topic_obj->where('journal_id', $journal['journal_id'])->where('state', 0)->select(); $frag = []; foreach ($topic_res as $v) { if ($v['is_final'] == 1) { $frag[] = $v; } } foreach ($frag as $k => $val) { $frag[$k]['tname'] = $this->getTname($val, $topic_res); } $re['list']=$frag; return jsonSuccess($re); } public function getArticlesForSubmission(){ $data = $this->request->post(); $rule = new Validate([ "ids"=>"require" ]); if(!$rule->check($data)){ return jsonError($rule->getError()); } $res = $this->article_obj ->field("j_article.*,j_journal.title journal_title") ->join("j_journal","j_journal.journal_id = j_article.journal_id","left") ->whereIn("j_article.article_id",json_decode($data['ids']))->select(); $re['list'] = $res; return jsonSuccess($re); } private function getTname($now, $arr) { if ($now['parent_id'] == 0) { return $now['title']; } else { $frag = '>' . $now['title']; foreach ($arr as $v) { if ($v['journal_topic_id'] == $now['parent_id']) { $frag = $this->getTname($v, $arr) . $frag; } } return $frag; } } /** * @title 增加文章话题 * @description 增加文章话题 * @param name:article_id type:int require:1 desc:期刊id * @param name:topic_id type:int require:1 desc:话题id * * @author wangjinlei * @url /master/Article/addTopicByArticle * @method POST * */ public function addTopicByArticle() { $data = $this->request->post(); $insert['article_id'] = $data['article_id']; $insert['topic_id'] = $data['topic_id']; $res = $this->article_to_topic_obj->insert($insert); // $this->msg_subscript_topic($data['topic_id'], $data['article_id']); // $this->msg_subscribe_base_topic($data['topic_id'], $data['article_id']); if ($res) { return json(['code' => 0, 'msg' => 'success']); } else { return json(['code' => 1, 'msg' => 'system error']); } } private function msg_subscribe_base_topic($topic_id, $article_id) { $article_info = $this->article_obj->where('article_id', $article_id)->find(); $topic_info = $this->journal_topic_obj->where('journal_topic_id', $topic_id)->find(); $base_topic_info = $this->base_topic_obj->where('title', $topic_info['title'])->find(); $journal_info = $this->journal_obj->where('journal_id', $article_info['journal_id'])->find(); if ($base_topic_info == null) { return; } $list = $this->subscribe_base_topic_obj->where('base_topic_id', $base_topic_info['base_topic_id'])->where('state', 0)->select(); $title = 'These new articles included in TMRDE database are available online.'; $tt = 'Dear Researcher,
'; // var_dump($rst); // echo ''; // echo '
'; // var_dump($err); // echo ''; // die; // die; } // public function cccc(){ // die; // $data = $this->request->post(); // $rule = new Validate([ // 'num'=>'require' // ]); // if(!$rule->check($data)){ // return jsonError($rule->getError()); // } // $limit_start = ($data['num'] - 1) * 20; // $list = $this->article_obj->where('doi','like',"10.12032%")->where('state',0)->limit($limit_start,20)->select(); // foreach($list as $v){ // $c = explode('/',$v['doi']); // $author = $this->article_author_obj->where('article_id', $v['article_id'])->where('state', 0)->find(); // if ($author == null) { // continue; // } // $article_info = $this->article_obj->where('article_id', $v['article_id'])->find(); // if ($article_info['npp'] == '') { // continue; // } // $url = 'https://doi.crossref.org/servlet/deposit'; // $file = ROOT_PATH . 'public' . DS . 'xml' . DS . $v['article_id'] . '.xml'; // $d['article_id'] = $v['article_id']; // $d['doi_num'] = $c[1]; // $this->crossRef($d); // //存储 // $this->article_obj->where('article_id', $v['article_id'])->update(['doi' => '10.53388/' . $c[1]]); // //发送请求 // $par['login_id'] = 'books@tmrjournals.com/tmrp'; // $par['login_passwd'] = '849192806pnX'; // $par['fname'] = new \CURLFile($file); // $this->myPost($url, $par); // // echo '10.53388/'.$c[1]; // // echo '
'; // var_dump($result); // echo ''; // die; // } }