From 12025a6dbc1801905597867c255b3c3bce70e11b Mon Sep 17 00:00:00 2001 From: wangjinlei <751475802@qq.com> Date: Fri, 2 Jun 2023 10:12:22 +0800 Subject: [PATCH] 1 --- application/api/controller/Article.php | 22 ++++ application/api/controller/Production.php | 142 +++++++++++++++++++++- 2 files changed, 159 insertions(+), 5 deletions(-) diff --git a/application/api/controller/Article.php b/application/api/controller/Article.php index 57e04dd..fcf2eeb 100644 --- a/application/api/controller/Article.php +++ b/application/api/controller/Article.php @@ -1877,6 +1877,7 @@ class Article extends Base $inset_data['keywords'] = isset($data['keyWords']) ? $data['keyWords'] : ''; $inset_data['fund'] = isset($data['fund']) ? trim($data['fund']) : ''; $inset_data['accept_sn'] = getArticleSN($journal_info['abbr'], $data['type']); + $inset_data['topics'] = isset($data["topics"])?json_encode($data['topics']):""; $inset_data['type'] = $data['type']; $inset_data['major_id'] = $data['major']; $inset_data['ctime'] = time(); @@ -1895,6 +1896,7 @@ class Article extends Base $up['title'] = trim($data['title']); $up['abstrart'] = trim($data['abstrart']); $up['keywords'] = isset($data['keyWords']) ? $data['keyWords'] : ''; + $up['topics'] = isset($data["topics"])?json_encode($data['topics']):""; $up['fund'] = isset($data['fund']) ? trim($data['fund']) : ''; $up['type'] = $data['type']; $up['major_id'] = $data['major']; @@ -1904,6 +1906,26 @@ class Article extends Base return jsonSuccess(['article_id' => $article_id]); } + /**获取期刊话题 + * @return void + */ + public function getJournalTopics(){ + $data = $this->request->post(); + $rule = new Validate([ + 'journal_id' => "require" + ]); + if(!$rule->check($data)){ + return jsonError($rule->getError()); + } + $journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find(); + $url = "http://journalapi.tmrjournals.com/public/index.php/master/Submision/getTopicsByIssn"; + $pro['issn'] = $journal_info['issn']; + $res = object_to_array(json_decode(myPost($url,$pro))); + $topics = $res['data']['topics']; + $re['topics'] = $topics; + return jsonSuccess($re); + } + /** * 保存文章作者 */ diff --git a/application/api/controller/Production.php b/application/api/controller/Production.php index a3f2ab6..d9e3809 100644 --- a/application/api/controller/Production.php +++ b/application/api/controller/Production.php @@ -101,12 +101,24 @@ class Production extends Base foreach($frag['main'] as $v){ $ca['p_article_id'] = $p_article_id; $ca['content'] = $v; + $ca['content_g'] = ''; $ca['ctime'] = time(); $this->production_article_main_obj->insert($ca); } return jsonSuccess([]); } + public function getWebMains(){ + $data = $this->request->post(); + $rule = new Validate([ + "article_id"=>"require" + ]); + if(!$rule->check($data)){ + return jsonError($rule->getError()); + } + $url = "http://journalapi.tmrjournals.com/public/index.php/master/"; + } + /** * 获取全部生成实例的main内容 * @return \think\response\Json|void @@ -121,7 +133,43 @@ class Production extends Base return jsonError($rule->getError()); } $p_info = $this->production_article_obj->where('p_article_id',$data['p_article_id'])->find(); - $mains = $this->production_article_main_obj->where('p_article_id',$data['p_article_id'])->where('state',0)->select(); + $frag = $this->getProductionMainImgs($data['p_article_id']); + if(count($frag)==0){ + return jsonError("create error"); + } + $re['mains'] = $frag; + $re['production'] = $p_info; + return jsonSuccess($re); + } + + /** + * @return void + */ + public function getProductionMainsByDoi(){ + $data = $this->request->post(); + $rule = new Validate([ + 'doi'=>'require' + ]); + if(!$rule->check($data)){ + return jsonError($rule->getError()); + } + $a = explode('/',$data['doi']); + $pro_info = $this->production_article_obj->where('doi',$a[1])->where('state',2)->find(); + $frag = $this->getProductionMainImgs($pro_info['p_article_id']); + if(count($frag)==0){ + return jsonError("create error"); + } + $re['mains'] = $frag; + $re['production'] = $pro_info; + return jsonSuccess($re); + } + + private function getProductionMainImgs($p_article_id){ + $mains = $this->production_article_main_obj->where('p_article_id',$p_article_id)->where('state',0)->select(); + if(count($mains)==0){ + $this->creatMainData($p_article_id); + $mains = $this->production_article_main_obj->where('p_article_id',$p_article_id)->where('state',0)->select(); + } $frag = []; foreach ($mains as $v){ $frag[] = $v; @@ -140,9 +188,68 @@ class Production extends Base } } } - $re['mains'] = $frag; - $re['production'] = $p_info; - return jsonSuccess($re); + return $frag; + } + + private function creatMainData($p_article_id){ + $p_info = $this->production_article_obj->where('p_article_id',$p_article_id)->find(); + $article_info = $this->article_obj->where('article_id', $p_info['article_id'])->find(); + $files = $this->article_file_obj + ->where('article_id', $article_info['article_id']) + ->where('type_name', 'manuscirpt') + ->order('ctime desc') + ->limit(1) + ->select(); + if (count($files) == 0) { + return jsonError('No Manuscript'); + } + $url = "http://ts.tmrjournals.com/api/typeset/webReaddoc"; + $program['fileRoute'] = "https://submission.tmrjournals.com/public/" . $files[0]['file_url']; + $res = object_to_array(json_decode(myPost($url, $program))); + + $file_runs = $res['data']; + + //整理信息 + $frag = []; + $aa = []; + $frag['title'] = $article_info['title']; + $start_refer = false; + foreach ($file_runs as $k => $v) { + if ($start_refer && $v != '') { + if (strlen($v) > 500) { + $start_refer = false; + $frag['main'][] = $v; + continue; + } + $frag['references'][] = $v; + continue; + } + $g_val = trim(preg_replace('/\<.*?\>/', '', $v)); + $aa[] = $g_val; + + if ((strpos(strtolower(trim($g_val)), "keyword") == 0 || strpos(strtolower(trim($g_val)), "keyword") == 1) && !isset($frag['keywords'])) { + $frag['keywords'] = $v; + continue; + } + if (strtolower($g_val) == 'reference:' || strtolower($g_val) == 'references:' || strtolower($g_val) == 'references' || strtolower($g_val) == 'reference') { + $start_refer = true; + continue; + } + $frag['main'][] = $v; + } + if(!isset($frag['main'])){ + return jsonError("manuscript file error!"); + } + + + //将主体内容写入数据库 + foreach($frag['main'] as $v){ + $ca['p_article_id'] = $p_article_id; + $ca['content'] = $v; + $ca['content_g'] = ''; + $ca['ctime'] = time(); + $this->production_article_main_obj->insert($ca); + } } /** @@ -255,6 +362,26 @@ class Production extends Base return jsonSuccess([]); } + + public function pushMainToWeb(){ + $data = $this->request->post(); + $rule = new Validate([ + 'article_id'=>"require", + "p_article_id"=>"require" + ]); + if(!$rule->check($data)){ + return jsonError($rule->getError()); + } + $url = "http://journalapi.tmrjournals.com/public/index.php/master/Article/addArticleMainForSubmission"; + $pro['article_id'] = $data['article_id']; + $pro['p_article_id'] = $data['p_article_id']; + $res = object_to_array(json_decode(myPost($url,$pro))); +// if($res['code']==1){ +// return jsonError("Repeated submission"); +// } + return jsonSuccess([]); + } + /**main内容gpt程序校对 * @return void * @@ -277,6 +404,10 @@ class Production extends Base return jsonSuccess($re); } + public function getPublicMains(){ + + } + /** * 删除生产实例 */ @@ -543,6 +674,7 @@ class Production extends Base // $url = "http://www.journal.com/master/Article/addArticleForSubmission"; $url = 'http://journalapi.tmrjournals.com/public/index.php/master/Article/addArticleForSubmission'; $pra = []; + $pra['p_article_id'] = $data['p_article_id']; $pra['title'] = $p_info['title']; $pra['journal_stage_id'] = $p_info['journal_stage_id']; $pra['issn'] = $journal_info['issn']; @@ -579,7 +711,7 @@ class Production extends Base $res = object_to_array(json_decode(myPost($url, $pra))); if ($res['code'] == 0) { - $this->production_article_obj->where('p_article_id', $data['p_article_id'])->update(['state' => 2]); + $this->production_article_obj->where('p_article_id', $data['p_article_id'])->update(['state' => 2,"w_article_id"=>$res['date']['article_id']]); foreach($report_authors as $v){ $iua['user_id'] = $v['user_id']; $iua['w_article_id'] = $res['date']['article_id'];