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)){
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)

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";
$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]);
}