From 91803b6a8d11267125e837c9dd7a7d6fd411470a Mon Sep 17 00:00:00 2001 From: chengxl Date: Thu, 5 Jun 2025 17:37:47 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=96=87=E7=AB=A0=E5=8F=91?= =?UTF-8?q?=E9=80=81=E9=98=9F=E5=88=97=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/job/RelatedArticle.php | 61 ++++++++++++ .../api/job/SendRelatedArticleEmail.php | 92 +++++++++++++++++++ 2 files changed, 153 insertions(+) create mode 100644 application/api/job/RelatedArticle.php create mode 100644 application/api/job/SendRelatedArticleEmail.php diff --git a/application/api/job/RelatedArticle.php b/application/api/job/RelatedArticle.php new file mode 100644 index 0000000..7f16614 --- /dev/null +++ b/application/api/job/RelatedArticle.php @@ -0,0 +1,61 @@ +getRawBody())){ + $aJob = json_decode($job->getRawBody(), true); + $aParam = [ + 'job_id' => empty($aJob['id']) ? '' : $aJob['id'], + 'job_class' => get_class($this), + 'status' => 0, + 'create_time' => time(), + 'params' => json_encode($aJob, JSON_UNESCAPED_UNICODE) + ]; + $iLogId = $oQueueJob->addLog($aParam); + // 步骤1:上传素材(图片) + $iArticleId = empty($data['article_id']) ? 0 : $data['article_id']; + if (!empty($iArticleId)) { + //上传素材 + $oJournalArticle = new JournalArticle; + $aResult = json_decode(JournalArticle::get($data),true); + $iStatus = empty($aResult['status']) ? 0 : $aResult['status']; + $sMsg = empty($aResult['msg']) ? '获取相关文章信息失败' : $aResult['msg']; + } + } + $job->delete(); + + //更新任务状态 + $aParam = ['log_id' => $iLogId,'status' => 1,'update_time' => time(),'error' => $sMsg]; + $oQueueJob->updateLog($aParam); + // // 记录日志 + // \think\Log::info("RelatedArticle延迟任务执行成功: ".json_encode($data)); + } catch (\Exception $e) { + + //实例化 + $oQueueJob = new QueueJob; + //更新任务状态 + $sMsg = empty($e->getMessage()) ? '任务出错' : $e->getMessage(); + $aParam = ['log_id' => $iLogId,'status' => 2,'update_time' => time(),'error' => $sMsg]; + $oQueueJob->updateLog($aParam); + $job->delete(); + // // 记录错误日志 + // \think\Log::error("RelatedArticle延迟任务失败: ".$e->getMessage()); + }finally { + gc_collect_cycles(); // 强制垃圾回收 + } + } + +} \ No newline at end of file diff --git a/application/api/job/SendRelatedArticleEmail.php b/application/api/job/SendRelatedArticleEmail.php new file mode 100644 index 0000000..50babc7 --- /dev/null +++ b/application/api/job/SendRelatedArticleEmail.php @@ -0,0 +1,92 @@ +getRawBody())){ + $aJob = json_decode($job->getRawBody(), true); + $aParam = [ + 'job_id' => empty($aJob['id']) ? '' : $aJob['id'], + 'job_class' => get_class($this), + 'status' => 0, + 'create_time' => time(), + 'params' => json_encode($aJob, JSON_UNESCAPED_UNICODE) + ]; + $iLogId = $oQueueJob->addLog($aParam); + + //文章ID + $iArticleId = empty($data['article_id']) ? 0 : $data['article_id']; + //作者邮箱 + $email = empty($data['email']) ? '' : $data['email']; + //邮件主题 + $title = empty($data['title']) ? '' : $data['title']; + //发送来源 + $from_name = empty($data['from_name']) ? '' : $data['from_name']; + //邮件内容 + $content = empty($data['content']) ? '' : $data['content']; + //邮箱 + $memail = empty($data['memail']) ? '' : $data['memail']; + //密码 + $mpassword = empty($data['mpassword']) ? '' : $data['mpassword']; + //文章作者 + $article_author_id = empty($data['article_author_id']) ? 0 : $data['article_author_id']; + //关联文章ID + $related_article_id = empty($data['related_article_id']) ? 0 : $data['related_article_id']; + //期刊ID + $journal_id = empty($data['journal_id']) ? '' : $data['journal_id']; + //期刊issn + $journal_issn = empty($data['journal_issn']) ? '' : $data['journal_issn']; + //发送邮件 + if (!empty($iArticleId) && !empty($email) && !empty($memail) && !empty($mpassword)) { + // $aResult = sendEmail($email,$title,$from_name,$content,$memail,$mpassword); + $iStatus = empty($aResult['status']) ? 1 : $aResult['status']; + $iIsSuccess = 2; + $sMsg = empty($aResult['data']) ? '失败' : $aResult['data']; + if($iStatus == 1){ + $iIsSuccess = 1; + $sMsg = '成功'; + } + + //记录邮件发送日志 + $aEmailLog = ['article_id' => $iArticleId,'article_author_id' => $article_author_id,'related_article_id' => $related_article_id,'email' => $email,'content' => $content,'create_time' => time(),'is_success' => $iIsSuccess,'journal_id' => $journal_id,'journal_issn' => $journal_issn,'msg' => $sMsg]; + //添加邮件发送日志 + $oJournalArticle = new JournalArticle; + $iId = JournalArticle::addLog($aEmailLog); + } + } + $job->delete(); + + //更新任务状态 + $aParam = ['log_id' => $iLogId,'status' => 1,'update_time' => time(),'error' => $sMsg]; + $oQueueJob->updateLog($aParam); + // // 记录日志 + // \think\Log::info("RelatedArticle延迟任务执行成功: ".json_encode($data)); + } catch (\Exception $e) { + + //实例化 + $oQueueJob = new QueueJob; + //更新任务状态 + $sMsg = empty($e->getMessage()) ? '任务出错' : $e->getMessage(); + $aParam = ['log_id' => $iLogId,'status' => 2,'update_time' => time(),'error' => $sMsg]; + $oQueueJob->updateLog($aParam); + $job->delete(); + // // 记录错误日志 + // \think\Log::error("RelatedArticle延迟任务失败: ".$e->getMessage()); + }finally { + gc_collect_cycles(); // 强制垃圾回收 + } + } + +} \ No newline at end of file