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([]);
}
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){
$name = $baseDir.$outfileTitle.".zip";
// 发送ftp
$this->sendFtp($name);
}
}
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($name,$url){
$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('连接失败');
}
$data = ftp_put($con,ROOT_PATH,$url,FTP_ASCII);
if(!$data){ // 上传失败
exit('上传失败');
}
ftp_close($con);
}
}