From 707182700ba6ca88f0dd3163ec942e6a11f9a0dc Mon Sep 17 00:00:00 2001 From: chengxl Date: Fri, 26 Sep 2025 10:46:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=9C=E8=80=85=E9=82=AE=E7=AE=B1=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/common/JournalArticle.php | 29 ++++++++------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/application/common/JournalArticle.php b/application/common/JournalArticle.php index 9c57235..68bd258 100644 --- a/application/common/JournalArticle.php +++ b/application/common/JournalArticle.php @@ -92,21 +92,6 @@ class JournalArticle return json_encode(['status' => 5,'msg' => '未查询到引用文章作者数据']); } - //查询关联关系 - $aArticleId = array_unique(array_column($aAuthor,'article_id')); - $aWhere = ['w_article_id' => ['in',$aArticleId]];//,'state' => ['in',[0,2]] - $aProductionArticle = Db::name('production_article')->where($aWhere)->column('article_id,w_article_id'); - if(empty($aProductionArticle)){ - return json_encode(['status' => 6,'msg' => 'production_article is null']); - } - //获取作者信息 - $aArticleId = array_keys($aProductionArticle); - $aWhere = ['article_id' => ['in',$aArticleId],'state' => 0,'email' => ['<>','']]; - $aAuthor = Db::name('article_author')->field('article_id,firstname,lastname,art_aut_id as article_author_id,email')->where($aWhere)->order('article_id asc')->select(); - if(empty($aAuthor)){ - return json_encode(['status' => 6,'msg' => 'No author information found for the article']); - } - //查询邮件发送日志 $aWhere = ['article_id' => $iArticleId,'is_success' => 1]; $aEmailLog = Db::name('email_related_article')->field('related_article_id,email')->where($aWhere)->select(); @@ -122,6 +107,8 @@ class JournalArticle //数据处理 $aEmailLog = []; $sErrorMsg = ''; + $aSendEmail = [];//['2101' => ['mohammadalipour_z@yahoo.com']]; + foreach ($aAuthor as $key => $value) { //作者邮箱-发送信息 @@ -129,14 +116,11 @@ class JournalArticle if(empty($email)){ continue; } - //文章ID转换 - $value['article_id'] = empty($aProductionArticle[$value['article_id']]) ? 0 : $aProductionArticle[$value['article_id']]; - if(empty($value['article_id'])){ + + //判断同一个邮箱是否重复发送 + if(!empty($aSendEmail[$value['article_id']]) && in_array($email, $aSendEmail[$value['article_id']])){ continue; } - //发件人姓名拼接 - $value['author_name'] = empty($value['lastname']) ? '' : $value['lastname']; - $value['author_name'] .= empty($value['firstname']) ? '' : ' ' .$value['firstname']; //判断是否发送过邮件 $aEmailLogInfo = empty($aLog[$value['article_id']]) ? [] : $aLog[$value['article_id']];//邮件日志 @@ -210,6 +194,9 @@ class JournalArticle $sMsg = '成功'; } $aEmailParam = ['article_id' => $iArticleId,'article_author_id' =>$value['article_author_id'],'related_article_id' => $value['article_id'],'email' => $email,'content' => $content,'create_time' => time(),'journal_id' => $aJournalInfo['journal_id'],'journal_issn' => $aJournalInfo['issn'],'email' => $email,'title' => $title,'from_name' => $from_name,'memail' => $memail,'mpassword' => $mpassword]; + + //邮件发送记录 + $aSendEmail[$value['article_id']][] = $email; //调用邮件发送队列 Queue::push('app\api\job\SendRelatedArticleEmail@fire', $aEmailParam, 'SendRelatedArticleEmail'); }