journal_stage_obj->where("journal_stage_id", $journal_stage_id)->find();
$journal_info = $this->journal_obj->where("journal_id", $stage_info["journal_id"])->find();
// 幂等构建整期附件 zip
$zipfile = ROOT_PATH . "public/dataFile/" . $journal_stage_id . '/' . $journal_stage_id . '.zip';
if (!file_exists($zipfile)) {
$this->buildIssueZip($journal_stage_id, $stage_info, $journal_info);
}
// 收件人:渠道配置优先,否则用默认通用收件人
$recipients = !empty($options['recipients']) ? $options['recipients'] : $this->conf('data_recipients', []);
if (empty($recipients)) {
return PushResult::fail('未配置收件人');
}
$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";
foreach ($recipients 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");
}
return PushResult::success('已向 ' . count($recipients) . ' 个收件人加入邮件队列');
}
/**
* 构建整期 zip(Contents.docx + 各文章 PDF + 封面)
*/
private function buildIssueZip($journal_stage_id, $stage_info, $journal_info)
{
$ts_base_url = $this->conf('ts_base_url');
$pdfBase = $this->conf('article_pdf');
$publicBase = $this->conf('public_base');
$url = $ts_base_url . "api/dataApi/createTemplate";
$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)->orderRaw("npp + 0")->select();
foreach ($alist as $v) {
$cache["type"] = $v["type"];
$cache["no"] = $v["npp"];
$cache["title"] = $v["title"];
$cache["author"] = $this->getAuthorNames($v['article_id']);
$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, 0777, true);
}
$zip = new \ZipArchive;
$zip->open($base_dir . '/' . $stage_info["journal_stage_id"] . '.zip', \ZipArchive::CREATE);
copy($ts_base_url . '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 $v) {
copy($pdfBase . $v['file_pdf'], $base_dir . '/' . $v["npp"] . ".pdf");
$zip->addFile($base_dir . '/' . $v["npp"] . ".pdf", $v["npp"] . ".pdf");
}
copy($publicBase . $stage_info["stage_icon"], $base_dir . "/journal.jpg");
$zip->addFile($base_dir . "/journal.jpg", "journal.jpg");
$zip->close();
}
}