From c3b93c9d65bb16b14a2a8152584444f099c7e8c6 Mon Sep 17 00:00:00 2001 From: wangjinlei <751475802@qq.com> Date: Mon, 8 Aug 2022 17:10:48 +0800 Subject: [PATCH] 1 --- application/api/controller/Typeset.php | 96 +++++++++++++++++++------- application/common.php | 12 +++- 2 files changed, 82 insertions(+), 26 deletions(-) diff --git a/application/api/controller/Typeset.php b/application/api/controller/Typeset.php index ce251e7..900737e 100644 --- a/application/api/controller/Typeset.php +++ b/application/api/controller/Typeset.php @@ -184,7 +184,22 @@ class Typeset extends Controller if(!$rule->check($data)){ return jsonError($rule->getError()); } - $this->ts_refer_obj->where('ts_refer_id',$data['ts_refer_id'])->update(['refer_frag'=>$data['refer_frag']]); + $this->ts_refer_obj->where('ts_refer_id',$data['ts_refer_id'])->update(['refer_frag'=>$data['refer_frag'],'cs'=>1]); + return jsonSuccess([]); + } + + /** + * 改成可修改状态 + */ + public function beginEdit(){ + $data = $this->request->post(); + $rule = new Validate([ + 'ts_refer_id'=>'require' + ]); + if(!$rule->check($data)){ + return jsonError($rule->getError()); + } + $this->ts_refer_obj->where('ts_refer_id',$data['ts_refer_id'])->update(['cs'=>0]); return jsonSuccess([]); } @@ -209,17 +224,17 @@ class Typeset extends Controller /** * 参考文献识别doi */ - public function referToDoi() + public function referToDoi($article_id) { - $data = $this->request->post(); - // 验证规则 - $rule = new Validate([ - 'article_id' => 'require|number' - ]); - if (!$rule->check($data)) { - return jsonError($rule->getError()); - } - $ts_info = $this->ts_obj->where('article_id', $data['article_id'])->where('ts_state',0)->find(); + // $data = $this->request->post(); + // // 验证规则 + // $rule = new Validate([ + // 'article_id' => 'require|number' + // ]); + // if (!$rule->check($data)) { + // return jsonError($rule->getError()); + // } + $ts_info = $this->ts_obj->where('article_id', $article_id)->where('ts_state',0)->find(); $refers = $this->ts_refer_obj->where('ts_id', $ts_info['ts_id'])->where('refer_state', 0)->select(); foreach ($refers as $v) { //处理doi if (strpos($v['refer_content'], 'doi:') == false && strpos($v['refer_content'], 'doi.org/') == false) { @@ -249,20 +264,20 @@ class Typeset extends Controller /** * doi获取格式化的参考文献信息 */ - public function doiTofrag() + public function doiTofrag($article_id) { - $data = $this->request->post(); - // 验证规则 - $rule = new Validate([ - 'article_id' => 'require|number' - ]); - if (!$rule->check($data)) { - return jsonError($rule->getError()); - } - $ts_info = $this->ts_obj->where('article_id', $data['article_id'])->where('ts_state',0)->find(); + // $data = $this->request->post(); + // // 验证规则 + // $rule = new Validate([ + // 'article_id' => 'require|number' + // ]); + // if (!$rule->check($data)) { + // return jsonError($rule->getError()); + // } + $ts_info = $this->ts_obj->where('article_id', $article_id)->where('ts_state',0)->find(); $refers = $this->ts_refer_obj->where('ts_id', $ts_info['ts_id'])->where('refer_state', 0)->select(); //清空frag,百分比用,重新生成 - $this->ts_refer_obj->where('ts_id', $ts_info['ts_id'])->where('refer_doi', '<>', '')->update(['refer_frag' => '']); + // $this->ts_refer_obj->where('ts_id', $ts_info['ts_id'])->where('refer_doi', '<>', '')->update(['refer_frag' => '']); foreach ($refers as $v) { if($v['refer_doi']==''){ $this->ts_refer_obj->where('ts_refer_id',$v['ts_refer_id'])->update(['refer_frag'=>$v['refer_content']]); @@ -274,6 +289,36 @@ class Typeset extends Controller } + /** + * 验证参考文献是否全部通过 + */ + public function checkRefer(){ + $data = $this->request->post(); + $rule = new Validate([ + 'ts_id'=>'require' + ]); + if(!$rule->check($data)){ + return jsonError($rule->getError()); + } + $list = $this->ts_refer_obj->where('ts_id',$data['ts_id'])->where('refer_state',0)->select(); + if(!$list){ + return jsonError('references error'); + } + $frag = 1; + foreach($list as $v){ + if($v['cs']==0){ + $frag = 0; + break; + } + } + if($frag==0){ + return jsonError('references check error'); + }else{ + return jsonSuccess([]); + } + } + + public function getFragBF() { $data = $this->request->post(); @@ -428,7 +473,6 @@ class Typeset extends Controller 'acknowledgment' => 'require', 'abbreviation' => 'require', 'ts_doi' => 'require', - 'trdition' => 'require', 'ts_topic' => 'require', 'ts_main' => 'require' ]); @@ -572,7 +616,8 @@ class Typeset extends Controller $cache_insert['refer_ctime'] = time(); $insert_all[] = $cache_insert; } - $res_refer = $this->ts_refer_obj->insertAll($insert_all); + //暂时撤掉自动存储引用文献 + // $res_refer = $this->ts_refer_obj->insertAll($insert_all); } if ($ts_id && $res_refer) { Db::commit(); @@ -652,6 +697,9 @@ class Typeset extends Controller $this->ts_refer_obj->insert($cache_insert); } + $this->referToDoi($data['article_id']); + $this->doiTofrag($data['article_id']); + return jsonSuccess([]); } private function authorFormate($article_id) diff --git a/application/common.php b/application/common.php index e35d563..976dd48 100644 --- a/application/common.php +++ b/application/common.php @@ -241,8 +241,16 @@ function my_doiToFrag($data){ $url = "https://citation.crosscite.org/format?doi=$doi&style=american-veterinary-medical-association&lang=en-US"; $res = myGet($url); $frag = trim(substr($res,strpos($res,'.')+1)); - $frag1 = $frag==""?"none":$frag; - $ts_refer_obj->where('ts_refer_id',$data['ts_refer_id'])->update(['refer_frag'=>$frag1]); + $f = ''; + $cs = 0; + if($frag==""){ + $f = $data['refer_content']; + }else{ + $c_frag = rtrim($frag,'.'); + $f = substr_replace($c_frag,PHP_EOL,strripos($c_frag,"http"),0); + $cs = 1; + } + $ts_refer_obj->where('ts_refer_id',$data['ts_refer_id'])->update(['refer_frag'=>$f,"cs"=>$cs]); }