Files
tougao/application/api/controller/Preaccept.php
wangjinlei 3bd136071d 1
2023-06-16 16:48:11 +08:00

265 lines
10 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");
}
}
// 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()]);
}
}
}
}