329 lines
13 KiB
PHP
329 lines
13 KiB
PHP
<?php
|
|
|
|
namespace app\api\controller;
|
|
|
|
use think\Db;
|
|
use think\Queue;
|
|
use think\Validate;
|
|
|
|
class Preaccept extends Base
|
|
{
|
|
public function __construct(\think\Request $request = null)
|
|
{
|
|
parent::__construct($request);
|
|
}
|
|
|
|
|
|
/**获取文章参考文献列表
|
|
* @return \think\response\Json
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
* @throws \think\exception\DbException
|
|
*/
|
|
public function getArticleReferences(){
|
|
$data = $this->request->post();
|
|
$rule = new Validate([
|
|
"article_id"=>"require"
|
|
]);
|
|
if(!$rule->check($data)){
|
|
return jsonError($rule->getError());
|
|
}
|
|
$production_info = $this->production_article_obj->where('article_id',$data['article_id'])->find();
|
|
if($production_info==null){
|
|
return jsonError("Object is null");
|
|
}
|
|
$list = $this->production_article_refer_obj->where("p_article_id",$production_info['p_article_id'])->where('state',0)->order("index")->select();
|
|
|
|
$re["refers"] = $list;
|
|
return jsonSuccess($re);
|
|
}
|
|
|
|
/**清空引用文献
|
|
* @return \think\response\Json
|
|
* @throws \think\Exception
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
* @throws \think\exception\DbException
|
|
* @throws \think\exception\PDOException
|
|
*/
|
|
public function discardRefers(){
|
|
$data = $this->request->post();
|
|
$rule = new Validate([
|
|
"article_id"=>"require"
|
|
]);
|
|
if(!$rule->check($data)){
|
|
return jsonError($rule->getError());
|
|
}
|
|
$production_info = $this->production_article_obj->where('article_id',$data['article_id'])->find();
|
|
$this->production_article_refer_obj->where('p_article_id',$production_info['p_article_id'])->update(['state'=>1]);
|
|
return jsonSuccess([]);
|
|
}
|
|
|
|
/**添加refer
|
|
* @return \think\response\Json
|
|
* @throws \think\Exception
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
* @throws \think\exception\DbException
|
|
*/
|
|
public function addRefer(){
|
|
$data = $this->request->post();
|
|
$rule = new Validate([
|
|
"article_id"=>"require",
|
|
"pre_p_refer_id"=>"require",
|
|
"doi"=>"require"
|
|
]);
|
|
if(!$rule->check($data)){
|
|
return jsonError($rule->getError());
|
|
}
|
|
$p_info = $this->production_article_obj->where('article_id',$data['article_id'])->where('state',0)->find();
|
|
$pre_refer = $this->production_article_refer_obj->where('p_refer_id',$data['pre_p_refer_id'])->find();
|
|
$insert['p_article_id'] = $p_info['p_article_id'];
|
|
$insert['refer_doi'] = $data['doi'];
|
|
$insert['index'] = $pre_refer['index']+1;
|
|
$insert['ctime'] = time();
|
|
$adId = $this->production_article_refer_obj->insertGetId($insert);
|
|
my_doiToFrag2($this->production_article_refer_obj->where('p_refer_id',$adId)->find());
|
|
//判断是否合法
|
|
$check = $this->production_article_refer_obj->where('p_refer_id',$adId)->find();
|
|
if($check['author']){//合法
|
|
$this->production_article_refer_obj->where('p_article_id',$p_info['p_article_id'])->where("p_refer_id","<>",$adId)->where("index",">",$pre_refer['index'])->where('state',0)->setInc('index');
|
|
return jsonSuccess([]);
|
|
}else{//非法
|
|
$this->production_article_refer_obj->where('p_refer_id',$adId)->update(['state'=>1]);
|
|
return jsonError("Doi error");
|
|
}
|
|
}
|
|
|
|
/**非doi形式添加refer节点
|
|
* @return void
|
|
*/
|
|
public function addReferNotdoi(){
|
|
$data = $this->request->post();
|
|
$rule = new Validate([
|
|
"article_id"=>"require",
|
|
"pre_p_refer_id"=>"require",
|
|
"author"=>"require",
|
|
"title"=>"require",
|
|
"joura"=>"require",
|
|
"dateno"=>"require",
|
|
"doilink"=>"require"
|
|
]);
|
|
if(!$rule->check($data)){
|
|
return jsonError($rule->getError());
|
|
}
|
|
$p_info = $this->production_article_obj->where('article_id',$data['article_id'])->where('state',0)->find();
|
|
$pre_refer = $this->production_article_refer_obj->where('p_refer_id',$data['pre_p_refer_id'])->find();
|
|
$insert['p_article_id'] = $p_info['p_article_id'];
|
|
$insert['index'] = $pre_refer['index']+1;
|
|
$insert['author'] = trim($data['author']);
|
|
$insert['title'] = trim($data['title']);
|
|
$insert['joura'] = trim($data['joura']);
|
|
$insert['dateno'] = trim($data['dateno']);
|
|
$insert['doilink'] = trim($data['doilink']);
|
|
$insert['refer_doi'] = trim($data['doilink']);
|
|
$insert['is_web'] = 1;
|
|
$insert['cs'] = 1;
|
|
$adId = $this->production_article_refer_obj->insertGetId($insert);
|
|
$this->production_article_refer_obj->where('p_article_id',$p_info['p_article_id'])->where("p_refer_id","<>",$adId)->where("index",">",$pre_refer['index'])->where('state',0)->setInc('index');
|
|
return jsonSuccess([]);
|
|
}
|
|
|
|
public function editReferNotdoi(){
|
|
$data = $this->request->post();
|
|
$rule = new Validate([
|
|
"p_refer_id"=>"require",
|
|
"author"=>"require",
|
|
"title"=>"require",
|
|
"joura"=>"require",
|
|
"dateno"=>"require",
|
|
"doilink"=>"require"
|
|
]);
|
|
if(!$rule->check($data)){
|
|
return jsonError($rule->getError());
|
|
}
|
|
$update['author'] = trim($data['author']);
|
|
$update['title'] = trim($data['title']);
|
|
$update['joura'] = trim($data['joura']);
|
|
$update['dateno'] = trim($data['dateno']);
|
|
$update['doilink'] = trim($data['doilink']);
|
|
$update['refer_doi'] = trim($data['doilink']);
|
|
$this->production_article_refer_obj->where('p_refer_id',$data['p_refer_id'])->update($update);
|
|
return jsonSuccess([]);
|
|
}
|
|
|
|
// public function aaa(){
|
|
// $list = $this->production_article_refer_obj->where('p_article_id',423)->where('state',0)->where('index',">",0)->setInc('index');
|
|
// dump($list);
|
|
// }
|
|
|
|
/**删除refer
|
|
* @return \think\response\Json
|
|
* @throws \think\Exception
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
* @throws \think\exception\DbException
|
|
* @throws \think\exception\PDOException
|
|
*/
|
|
public function delRefer(){
|
|
$data = $this->request->post();
|
|
$rule = new Validate([
|
|
"p_refer_id"=>"require"
|
|
]);
|
|
if(!$rule->check($data)){
|
|
return jsonError($rule->getError());
|
|
}
|
|
$refer_info = $this->production_article_refer_obj->where('p_refer_id',$data['p_refer_id'])->find();
|
|
$this->production_article_refer_obj->where('p_article_id',$refer_info['p_article_id'])->where('index',">",$refer_info['index'])->where('state',0)->setDec('index');
|
|
$this->production_article_refer_obj->where('p_refer_id',$data['p_refer_id'])->update(['state'=>1]);
|
|
return jsonSuccess([]);
|
|
}
|
|
|
|
/**编辑refer
|
|
* @return \think\response\Json
|
|
* @throws \think\Exception
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
* @throws \think\exception\DbException
|
|
* @throws \think\exception\PDOException
|
|
*/
|
|
public function editRefer(){
|
|
$data = $this->request->post();
|
|
$rule = new Validate([
|
|
"p_refer_id"=>"require",
|
|
"doi"=>"require"
|
|
]);
|
|
if(!$rule->check($data)){
|
|
return jsonError($rule->getError());
|
|
}
|
|
$doi = trim($data['doi']);
|
|
$url = "https://citation.crosscite.org/format?doi=$doi&style=cancer-translational-medicine&lang=en-US";
|
|
$res = myGet($url);
|
|
$frag = trim(substr($res, strpos($res, '.') + 1));
|
|
if ($frag == "") {
|
|
return jsonError("doi error");
|
|
}
|
|
$this->production_article_refer_obj->where('p_refer_id',$data['p_refer_id'])->update(['refer_doi'=>$data['doi']]);
|
|
my_doiToFrag2($this->production_article_refer_obj->where('p_refer_id',$data['p_refer_id'])->find());
|
|
return jsonSuccess([]);
|
|
}
|
|
|
|
/**调整refer排序
|
|
* @return \think\response\Json
|
|
* @throws \think\Exception
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
* @throws \think\exception\DbException
|
|
*/
|
|
public function sortRefer(){
|
|
$data = $this->request->post();
|
|
$rule = new Validate([
|
|
"p_refer_id"=>"require",
|
|
"act"=>"require"
|
|
]);
|
|
if(!$rule->check($data)){
|
|
return jsonError($rule->getError());
|
|
}
|
|
$refer_info = $this->production_article_refer_obj->where('p_refer_id',$data['p_refer_id'])->find();
|
|
if($data['act']=="up"){
|
|
$up_info = $this->production_article_refer_obj->where('p_article_id',$refer_info['p_article_id'])->where('index',$refer_info['index']-1)->where('state',0)->find();
|
|
if(!$up_info){
|
|
return jsonError("system error");
|
|
}
|
|
$this->production_article_refer_obj->where('p_refer_id',$up_info['p_refer_id'])->setInc("index");
|
|
$this->production_article_refer_obj->where('p_refer_id',$refer_info['p_refer_id'])->setDec("index");
|
|
}else{
|
|
$down_info = $this->production_article_refer_obj->where('p_article_id',$refer_info['p_article_id'])->where('index',$refer_info['index']+1)->where('state',0)->find();
|
|
if(!$down_info){
|
|
return jsonError("system error");
|
|
}
|
|
$this->production_article_refer_obj->where('p_refer_id',$refer_info['p_refer_id'])->setInc("index");
|
|
$this->production_article_refer_obj->where('p_refer_id',$down_info['p_refer_id'])->setDec("index");
|
|
}
|
|
return jsonSuccess([]);
|
|
}
|
|
|
|
|
|
|
|
public function addRefersByExcel(){
|
|
$data = $this->request->post();
|
|
$rule = new Validate([
|
|
"article_id"=>"require",
|
|
"referFile" => "require"
|
|
]);
|
|
if(!$rule->check($data)){
|
|
return jsonError($rule->getError());
|
|
}
|
|
$production_info = $this->production_article_obj->where('article_id',$data['article_id'])->where("state",0)->find();
|
|
if(!$production_info){
|
|
return jsonError("Object is null");
|
|
}
|
|
$file = ROOT_PATH . 'public' . DS . "referFile".DS.$data['referFile'];
|
|
$list = $this->readRefersExcel($file);
|
|
foreach ($list as $k=> $v){
|
|
$ca['p_article_id'] = $production_info['p_article_id'];
|
|
$ca['refer_content'] = $v['content'];
|
|
$ca['refer_doi'] = $v['doi'];
|
|
$ca['index'] = $k;
|
|
$ca['ctime'] = time();
|
|
$adId=$this->production_article_refer_obj->insertGetId($ca);
|
|
my_doiToFrag2($this->production_article_refer_obj->where('p_refer_id',$adId)->find());
|
|
}
|
|
return jsonSuccess([]);
|
|
}
|
|
|
|
/**读取excel文件获取refer列表
|
|
* @param $afile
|
|
* @return array
|
|
* @throws \PHPExcel_Exception
|
|
* @throws \PHPExcel_Reader_Exception
|
|
*/
|
|
public function readRefersExcel($afile){
|
|
$extension = substr($afile, strrpos($afile, '.') + 1);
|
|
vendor("PHPExcel.PHPExcel");
|
|
if ($extension == 'xlsx') {
|
|
$objReader = new \PHPExcel_Reader_Excel2007();
|
|
$objPHPExcel = $objReader->load($afile);
|
|
} else if ($extension == 'xls') {
|
|
$objReader = new \PHPExcel_Reader_Excel5();
|
|
$objPHPExcel = $objReader->load($afile);
|
|
}
|
|
$sheet = $objPHPExcel->getSheet(0);
|
|
$highestRow = $sheet->getHighestRow();
|
|
$frag = [];
|
|
for ($i = 2; $i <= $highestRow; $i++) {
|
|
if($objPHPExcel->getActiveSheet()->getCell("A" . $i)->getValue()==''){
|
|
continue ;
|
|
}
|
|
$aa['content'] = $objPHPExcel->getActiveSheet()->getCell("A" . $i)->getValue();
|
|
$aa['doi'] = $objPHPExcel->getActiveSheet()->getCell("B" . $i)->getValue();
|
|
$frag[] = $aa;
|
|
|
|
}
|
|
return $frag;
|
|
}
|
|
|
|
|
|
|
|
/**上传引用文献文件,并返回读取到的内容
|
|
* @return \think\response\Json|void
|
|
*/
|
|
public function up_refer_file(){
|
|
$file = request()->file("referFile");
|
|
if ($file) {
|
|
$info = $file->move(ROOT_PATH . 'public' . DS . "referFile");
|
|
if ($info) {
|
|
$file = ROOT_PATH . 'public' . DS . "referFile".DS.str_replace("\\", "/", $info->getSaveName());
|
|
$re["refers"] = $this->readRefersExcel($file);
|
|
$re["upurl"] = str_replace("\\", "/", $info->getSaveName());
|
|
$re['code'] =0;
|
|
return json($re);
|
|
} else {
|
|
return json(['code' => 1, 'msg' => $file->getError()]);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
} |