This commit is contained in:
wangjinlei
2022-08-08 17:10:48 +08:00
parent 32079bbf37
commit c3b93c9d65
2 changed files with 82 additions and 26 deletions

View File

@@ -184,7 +184,22 @@ class Typeset extends Controller
if(!$rule->check($data)){ if(!$rule->check($data)){
return jsonError($rule->getError()); 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([]); return jsonSuccess([]);
} }
@@ -209,17 +224,17 @@ class Typeset extends Controller
/** /**
* 参考文献识别doi * 参考文献识别doi
*/ */
public function referToDoi() public function referToDoi($article_id)
{ {
$data = $this->request->post(); // $data = $this->request->post();
// 验证规则 // // 验证规则
$rule = new Validate([ // $rule = new Validate([
'article_id' => 'require|number' // 'article_id' => 'require|number'
]); // ]);
if (!$rule->check($data)) { // if (!$rule->check($data)) {
return jsonError($rule->getError()); // return jsonError($rule->getError());
} // }
$ts_info = $this->ts_obj->where('article_id', $data['article_id'])->where('ts_state',0)->find(); $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(); $refers = $this->ts_refer_obj->where('ts_id', $ts_info['ts_id'])->where('refer_state', 0)->select();
foreach ($refers as $v) { //处理doi foreach ($refers as $v) { //处理doi
if (strpos($v['refer_content'], 'doi:') == false && strpos($v['refer_content'], 'doi.org/') == false) { if (strpos($v['refer_content'], 'doi:') == false && strpos($v['refer_content'], 'doi.org/') == false) {
@@ -249,20 +264,20 @@ class Typeset extends Controller
/** /**
* doi获取格式化的参考文献信息 * doi获取格式化的参考文献信息
*/ */
public function doiTofrag() public function doiTofrag($article_id)
{ {
$data = $this->request->post(); // $data = $this->request->post();
// 验证规则 // // 验证规则
$rule = new Validate([ // $rule = new Validate([
'article_id' => 'require|number' // 'article_id' => 'require|number'
]); // ]);
if (!$rule->check($data)) { // if (!$rule->check($data)) {
return jsonError($rule->getError()); // return jsonError($rule->getError());
} // }
$ts_info = $this->ts_obj->where('article_id', $data['article_id'])->where('ts_state',0)->find(); $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(); $refers = $this->ts_refer_obj->where('ts_id', $ts_info['ts_id'])->where('refer_state', 0)->select();
//清空frag百分比用重新生成 //清空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) { foreach ($refers as $v) {
if($v['refer_doi']==''){ if($v['refer_doi']==''){
$this->ts_refer_obj->where('ts_refer_id',$v['ts_refer_id'])->update(['refer_frag'=>$v['refer_content']]); $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() public function getFragBF()
{ {
$data = $this->request->post(); $data = $this->request->post();
@@ -428,7 +473,6 @@ class Typeset extends Controller
'acknowledgment' => 'require', 'acknowledgment' => 'require',
'abbreviation' => 'require', 'abbreviation' => 'require',
'ts_doi' => 'require', 'ts_doi' => 'require',
'trdition' => 'require',
'ts_topic' => 'require', 'ts_topic' => 'require',
'ts_main' => 'require' 'ts_main' => 'require'
]); ]);
@@ -572,7 +616,8 @@ class Typeset extends Controller
$cache_insert['refer_ctime'] = time(); $cache_insert['refer_ctime'] = time();
$insert_all[] = $cache_insert; $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) { if ($ts_id && $res_refer) {
Db::commit(); Db::commit();
@@ -652,6 +697,9 @@ class Typeset extends Controller
$this->ts_refer_obj->insert($cache_insert); $this->ts_refer_obj->insert($cache_insert);
} }
$this->referToDoi($data['article_id']);
$this->doiTofrag($data['article_id']);
return jsonSuccess([]);
} }
private function authorFormate($article_id) private function authorFormate($article_id)

View File

@@ -241,8 +241,16 @@ function my_doiToFrag($data){
$url = "https://citation.crosscite.org/format?doi=$doi&style=american-veterinary-medical-association&lang=en-US"; $url = "https://citation.crosscite.org/format?doi=$doi&style=american-veterinary-medical-association&lang=en-US";
$res = myGet($url); $res = myGet($url);
$frag = trim(substr($res,strpos($res,'.')+1)); $frag = trim(substr($res,strpos($res,'.')+1));
$frag1 = $frag==""?"none":$frag; $f = '';
$ts_refer_obj->where('ts_refer_id',$data['ts_refer_id'])->update(['refer_frag'=>$frag1]); $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]);
} }