admin_obj = Db::name('admin'); $this->journal_obj = Db::name('journal'); $this->article_obj = Db::name('article'); $this->journal_topic_obj = Db::name('journal_topic'); $this->article_author_obj = Db::name('article_author'); $this->journal_stage_obj = Db::name('journal_stage'); $this->journal_line_obj = Db::name('journal_line'); $this->journal_notices_obj = Db::name('journal_notices'); $this->journal_abs_obj = Db::name('journal_abstracting'); $this->article_to_topic_obj = Db::name('article_to_topic'); $this->article_to_line_obj = Db::name('article_to_line'); $this->journal_cfp_obj = Db::name('journal_cfp'); $this->journal_paper_obj = Db::name('journal_paper'); $this->journal_paper_art_obj = Db::name('journal_paper_art'); $this->db_obj = Db::name('db'); $this->db_data_obj = Db::name('db_data'); } /** * @title 增加数据库 * @description 增加数据库 * @author wangjinlei * @url /master/Datebase/addDb * @method POST * * @param name:name type:string require:1 desc:数据库名字 * @param name:intro type:string require:1 desc:简介 */ public function addDb(){ $data = $this->request->post(); $insert['name'] = $data['name']; $insert['intro'] = $data['intro']; $insert['ctime'] = time(); $this->db_obj->insert($insert); return jsonSuccess([]); } /** * @title 删除数据库 * @description 删除数据库 * @author wangjinlei * @url /master/Datebase/delDb * @method POST * * @param name:db_id type:int require:1 desc:数据库id */ public function delDb(){ $data = $this->request->post(); $this->db_obj->where('db_id',$data['db_id'])->update(['state'=>1]); return jsonSuccess([]); } /** * @title 获取数据库 * @description 获取数据库 * @author wangjinlei * @url /master/Datebase/getDbs * @method POST * * @return dblist:数据库列表array# */ public function getDbs(){ $list = $this->db_obj->where('state',0)->select(); $re['dblist'] = $list; return jsonSuccess($re); } /** * @title 获取数据库主页 * @description 获取数据库主页 * @author wangjinlei * @url /master/Datebase/getDbMain * @method POST * * @param name:db_id type:int require:1 desc:数据库id * @param name:journal_id type:int require:1 desc:期刊id * * @return dbInfo:数据库信息# */ public function getDbMain(){ $data = $this->request->post(); $info = $this->db_obj->where('db_id',$data['db_id'])->find(); //获取数据库完成情况(预留) $re['dbInfo'] = $info; return jsonSuccess($re); } /** * @title 增加数据库资料 * @description 增加数据库资料 * @author wangjinlei * @url /master/Datebase/addData * @method POST * * @param name:db_id type:int require:1 desc:数据库id * @param name:name type:string require:1 desc:资料名称 * @param name:url type:string require:1 desc:资料地址 */ public function addData(){ $data = $this->request->post(); $insert['db_id'] = $data['db_id']; $insert['title'] = $data['name']; $insert['url'] = $data['url']; $insert['ctime'] = time(); $this->db_data_obj->insert($insert); return jsonSuccess([]); } /** * @title 删除数据库资料 * @description 删除数据库资料 * @author wangjinlei * @url /master/Datebase/delData * @method POST * * @param name:db_data_id type:int require:1 desc:数据库资料id */ public function delData(){ $data = $this->request->post(); $this->db_data_obj->where('db_data_id',$data['db_data_id'])->update(['state'=>1]); return jsonSuccess([]); } /** * @title 获取数据库资料 * @description 获取数据库资料 * @author wangjinlei * @url /master/Datebase/getDatas * @method POST * * @param name:db_id type:int require:1 desc:数据库id * @param name:pageIndex type:int require:1 desc:当前页码数 * @param name:pageSize type:int require:1 desc:单页数据条数 * * @return dbinfo:数据库信息# * @return count:总数据数 * @return dataList:array# */ public function getDatas(){ $data = $this->request->post(); $db_info = $this->db_obj->where('db_id',$data['db_id'])->find(); $limit_start = ($data['pageIndex'] - 1) * $data['pageSize']; $list = $this->db_data_obj->where('db_id',$data['db_id'])->where('state',0)->limit($limit_start,$data['pageSize'])->select(); $count = $this->db_data_obj->where('db_id',$data['db_id'])->count(); $re['dbinfo'] = $db_info; $re['dataList'] = $list; $re['count'] = $count; return jsonSuccess($re); } /** * @title 图片上传 * @description 图片上传 * @author wangjinlei * @url /master/Datebase/up_file * @method POST * * @param name:name type:string require:1 default:dbdata desc:文件域名称 * * @return upurl:图片地址 */ public function up_file() { $file = request()->file('dbdata'); if ($file) { $info = $file->move(ROOT_PATH . 'public' . DS . 'dbdata'); if ($info) { return json(['code'=>0 , 'msg'=>'success', 'upurl' => str_replace("\\", "/", $info->getSaveName())]); } else { return json(['code' => 1, 'msg' => $file->getError()]); } } } /** * @title 提交数据库 * @description 提交数据库 * @author wangjinlei * @url /master/Datebase/dataPush * @method POST * * @param name:journal_stage_id type:int require:1 desc:分期id * */ public function dataPush(){ $data = $this->request->post(); // $data["journal_stage_id"] = 305; $stage_info = $this->journal_stage_obj->where("journal_stage_id",$data["journal_stage_id"])->find(); $this->createEmailFile($data["journal_stage_id"]); // 发送ftp $this->createFtpFileInfo($data["journal_stage_id"]); $journal_info = $this->journal_obj->where("journal_id",$stage_info["journal_id"])->find(); $zipfile = ROOT_PATH."public/dataFile/".$data["journal_stage_id"].'/'.$data["journal_stage_id"].'.zip'; $tt = "Dear Database,

"; $tt .= "Please find the PDF files in attachment of published issue (Vol. ".$stage_info['stage_vol'].", No.".$stage_info['stage_no'].") of ".$journal_info['title'].".

"; $tt .= "Yours Sincerely
"; $tt .= "Dan Chen
"; $tt .= "Manager
"; $tt .= "TMR Publishing Group | Editorial Office | New Zealand
"; $tt .= "Telephone: +64 02108293806
"; $tt .= "Email: publisher@tmrjournals.com
"; $tt .= "Website:www.tmrjournals.com"; $elist = []; $elist[] = "jgatelicensing@informaticsglobal.com"; $elist[] = "3601240974@qq.com"; if($journal_info["journal_id"]==1){ $elist[] = "958518573@qq.com"; $elist[] = "swyy2@wanfangdata.com.cn"; } $elist[] = "3097953993@qq.com"; $elist[] = "849192806@qq.com";//皮皮 $elist[] = "751475802@qq.com";//我 $elist[] = "ELD@dia.govt.nz"; foreach ($elist as $v){ $cdata['email'] = $v; $cdata['title'] = "Data submitted-TMR Publishing Group"; $cdata["fromname"] = "Data submitted-TMR Publishing Group"; $cdata["content"] = $tt; $cdata["temail"] = $journal_info['email']; $cdata["tpassword"] = $journal_info['epassword']; $cdata["fj"] = $zipfile; Queue::push('app\api\job\mail@puchAndFJ', $cdata, "mail"); // sendEmail_data($v, "Data submitted-TMR Publishing Group", "Data submitted-TMR Publishing Group", $tt, $journal_info['email'], $journal_info['epassword'],$zipfile); } return jsonSuccess([]); } public function mycreat(){ $data = $this->request->post(); $this->createEmailFile($data['stage_id']); echo 'ok'; } private function createEmailFile($journal_stage_id){ $url = "http://ts.tmrjournals.com/api/dataApi/createTemplate"; //查找分期信息 $stage_info = $this->journal_stage_obj->where("journal_stage_id",$journal_stage_id)->find(); $journal_info = $this->journal_obj->where("journal_id",$stage_info["journal_id"])->find(); $re['issue'] = $stage_info['issue_date'].", Volume ".$stage_info['stage_vol']." Issue ".$stage_info["stage_no"]; $adate = []; $alist = $this->article_obj->where("journal_stage_id",$journal_stage_id)->where("state",0)->order("npp")->select(); foreach ($alist as $k => $v){ $cache["type"] = $v["type"]; $cache["npp"] = $v["npp"]; $cache["title"] = $v["title"]; $cache["author"] = $this->getAuthor($v); $adate[] = $cache; } $re["date_list"] = json_encode($adate); $res = myPost($url, $re); $r = object_to_array(json_decode($res)); $file = $r['data']["file"]; //创建目录加压缩操作 $base_dir = ROOT_PATH."public/dataFile/".$stage_info["journal_stage_id"]; if(!is_dir($base_dir)){ @mkdir($base_dir); } $zip = new \ZipArchive; $zip->open($base_dir.'/'.$stage_info["journal_stage_id"].'.zip', \ZipArchive::CREATE); copy('http://ts.tmrjournals.com/upload/'.$file,$base_dir.'/'.$stage_info["journal_stage_id"].".docx"); $zip->addFile($base_dir.'/'.$stage_info["journal_stage_id"].".docx","Contents.docx"); foreach ($alist as $k=>$v){ copy("https://www.tmrjournals.com/public/articlePDF/".$v['file_pdf'],$base_dir.'/'.$v["npp"].".pdf"); $zip->addFile($base_dir.'/'.$v["npp"].".pdf",$v["npp"].".pdf"); } //添加封面图片 copy("https://www.tmrjournals.com/public/journalicon/".$journal_info["icon"],$base_dir."/journal.jpg"); $zip->addFile($base_dir."/journal.jpg","journal.jpg"); $zip->close(); } private function createFtpFileInfo($journal_stage_id){ //查找分期信息 $stage_info = $this->journal_stage_obj->where("journal_stage_id",$journal_stage_id)->find(); $journalInfo = $this->journal_obj->where('journal_id',$stage_info['journal_id'])->find(); //获取分期文章 $articles = $this->article_obj->where(['journal_stage_id'=>$journal_stage_id,'state'=>0])->field('title as articleTitle,abbr as author,pub_date as date,keywords as keyWords,doi,abstract,file_pdf as pdf,article_id,journal_id')->select(); foreach ($articles as $k=>$v){ $articles[$k]['abstract'] = strip_tags($v['abstract']); $articles[$k]['journalTitle'] = $journalInfo['title']; $articles[$k]['issn'] = $journalInfo['title']; $articles[$k]['vol'] = $stage_info['stage_vol']; $articles[$k]['issue'] = $stage_info['stage_no']; $articles[$k]['pdf'] = 'https://www.tmrjournals.cn/public/articlePDF/'.$v['pdf']; $articles[$k]['linkToAbstract'] = 'https://www.tmrjournals.cn/article.html?J_num='.$v['journal_id'].'&a_id='.$v['article_id']; $articles[$k]['publisher'] = 'TMR publishing group'; $articles[$k]['reference'] = ''; $articles[$k]['eissn'] = ''; } $baseDir = ROOT_PATH.'public' . DS . 'ftpFile' . DS . '/'; $outfileTitle = $journalInfo['title']."-".$stage_info['stage_vol']."卷".$stage_info['stage_no']."期"; // 生成zip $res= $this->createZip($articles,$baseDir,$outfileTitle); $resJosn = json_decode($res,true); // zip生成成功后发送ftp if($resJosn['code'] == 0){ $url = $baseDir.$outfileTitle.".zip"; // 发送ftp $this->sendFtp($url,$outfileTitle); } } private function getAuthor($article) { $where['article_id'] = $article['article_id']; $where['state'] = 0; $list = $this->article_author_obj->where($where)->select(); $frag = ''; foreach ($list as $k => $v) { $frag = $frag == '' ? '' . $v['author_name'] : $frag . ', ' . $v['author_name']; } return $frag; } // 先生成excel - 再压缩zip - 删除excel private function createZip($articles,$baseDir,$outfileTitle){ Vendor('PHPExcel.PHPExcel');//调用类库,路径是基于vendor文件夹的 Vendor('PHPExcel.PHPExcel.Worksheet.Drawing'); Vendor('PHPExcel.PHPExcel.Writer.Excel2007'); $objExcel = new \PHPExcel(); //set document Property $objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007'); $objActSheet = $objExcel->getActiveSheet(); $key = ord("A"); $letter =explode(',',"A,B,C,D,E,F,G,H,I,J,K,L,M,N,O"); $arrHeader = array('Article Title','Author','Publishing Date','Key Words','Journal Title','ISSN','EISSN','Volume','Issue','Link to Full-Text Articles (PDF)','Abstract','DOI','Link to Abstract','Publisher','Reference'); //填充表头信息 $lenth = count($arrHeader); for($i = 0;$i < $lenth;$i++) { $objActSheet->setCellValue("$letter[$i]1","$arrHeader[$i]"); // 设置表头高度 $objActSheet->getRowDimension('1')->setRowHeight(25); }; //填充表格信息 foreach($articles as $k=>$v){ $k +=2; $objActSheet->setCellValue('A'.$k,$v['articleTitle']); $objActSheet->setCellValue('B'.$k, $v['author']); $objActSheet->setCellValue('C'.$k, $v['date']); $objActSheet->setCellValue('D'.$k, $v['keyWords']); $objActSheet->setCellValue('E'.$k, $v['journalTitle']); $objActSheet->setCellValue('F'.$k, $v['issn']); $objActSheet->setCellValue('G'.$k, $v['eissn']); $objActSheet->setCellValue('H'.$k, $v['vol']); $objActSheet->setCellValue('I'.$k, $v['issue']); $objActSheet->setCellValue('J'.$k, $v['pdf']); $objActSheet->setCellValue('K'.$k, $v['abstract']); $objActSheet->setCellValue('L'.$k, $v['doi']); $objActSheet->setCellValue('M'.$k, $v['linkToAbstract']); $objActSheet->setCellValue('N'.$k, $v['publisher']); $objActSheet->setCellValue('O'.$k, $v['reference']); // 表格高度 $objActSheet->getRowDimension($k)->setRowHeight(25); } $width = array(10,15,20,25,30); //设置表格的宽度 $objActSheet->getColumnDimension('A')->setWidth($width[4]); $objActSheet->getColumnDimension('B')->setWidth($width[2]); $objActSheet->getColumnDimension('C')->setWidth($width[1]); $objActSheet->getColumnDimension('D')->setWidth($width[4]); $objActSheet->getColumnDimension('E')->setWidth($width[4]); $objActSheet->getColumnDimension('F')->setWidth($width[2]); $objActSheet->getColumnDimension('G')->setWidth($width[3]); $objActSheet->getColumnDimension('H')->setWidth($width[1]); $objActSheet->getColumnDimension('I')->setWidth($width[1]); $objActSheet->getColumnDimension('J')->setWidth($width[4]); $objActSheet->getColumnDimension('K')->setWidth($width[3]); $objActSheet->getColumnDimension('L')->setWidth($width[3]); $objActSheet->getColumnDimension('M')->setWidth($width[4]); $objActSheet->getColumnDimension('N')->setWidth($width[2]); $objActSheet->getColumnDimension('O')->setWidth($width[1]); if(!is_dir($baseDir)){ @mkdir($baseDir); } $res = $objWriter->save($baseDir.$outfileTitle.".xlsx"); // 生成zip $path = $baseDir.$outfileTitle.".xlsx"; $fileName = $outfileTitle.".zip"; $zip = new \ZipArchive; $zip->open($baseDir.$fileName,\ZipArchive::CREATE); $zip->addFile($path,basename($path)); $zip->close(); unlink($baseDir.$outfileTitle.".xlsx"); if (!file_exists($baseDir.$fileName)) { return json_encode(['code'=>1,'msg'=>'无法找到文件']); } return json_encode(['code'=>0,'msg'=>'成功','data'=>$baseDir.$fileName]); } // 连接ftp private function sendFtp($url,$title){ $ftp=[ 'server'=>'FTP.cnki.net', 'user'=>'glo616cnki', 'pass'=>'glo616cnki' ]; $con = ftp_connect($ftp['server']); $res = ftp_login($con, $ftp['user'], $ftp['pass']); if(!$res){ //连接失败 exit('连接失败'); } $name = iconv("UTF-8","GBK",$title.'.zip'); $data = ftp_put($con,'/'.$name,$url,FTP_BINARY); if(!$data){ // 上传失败 exit('上传失败'); } ftp_close($con); } }