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