This commit is contained in:
wangjinlei
2023-06-12 18:24:41 +08:00
parent 65cda71dc8
commit 46cdd89a06
2 changed files with 135 additions and 1 deletions

View File

@@ -2,7 +2,140 @@
namespace app\api\controller;
class Preaccept
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)->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([]);
}
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 $v){
$ca['p_article_id'] = $production_info['p_article_id'];
$ca['refer_content'] = $v['content'];
$ca['refer_doi'] = $v['doi'];
$ca['ctime'] = time();
$this->production_article_refer_obj->insert($ca);
}
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()]);
}
}
}
}