Explorar el Código

[智价云] 统计推送异步更新

tangyuanwang hace 1 día
padre
commit
e2412abbd5

+ 65 - 0
app/Jobs/Manager/Other/SendEmailJobs.php

@@ -0,0 +1,65 @@
+<?php
+
+namespace App\Jobs\Manager\Other;
+
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldBeUnique;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Queue\SerializesModels;
+use App\Facades\Servers\Logs\Log;
+use App\Servers\Email\VerifyCode as EmailVerifyCode;
+use App\Models\Manager\Process\SubNoticeLog as SubNoticeLogModel;
+
+/**
+ * 发送邮件通知队列
+ * @author    唐远望
+ * @version   1.0
+ * @date      2026-04-16
+ */
+class SendEmailJobs implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+    protected $message_data;
+    protected $company_id;
+    /**
+     * Create a new job instance.
+     *
+     * @return void
+     */
+    public function __construct(array $message_data)
+    {
+        $this->message_data = $message_data;
+    }
+
+    /**
+     * Execute the job.
+     *
+     * @return void
+     */
+    public function handle()
+    {
+        try {
+            $EmailVerifyCode = new EmailVerifyCode();
+            $SubNoticeLogModel = new SubNoticeLogModel();
+            $notice_data_info = $this->message_data['notice_data_info'];
+
+            $email_to = $notice_data_info['email'];
+            $email_content = json_decode($notice_data_info['email_content'], true);
+            $email_title = $email_content['title'];
+            $email_content = $email_content['content'];
+            $res_msg = $EmailVerifyCode->sendSmtpEmail($email_to, $email_title, $email_content);
+            Log::info('job_send_email', '订阅邮件通知推送队列记录', ['email' => $email_to, 'email_content' => $email_content, 'msg' => $res_msg]);
+            $SubNoticeLogModel->where(['id' => $notice_data_info['id']])->update(['email_status' => 0]);
+        } catch (\Exception $e) {
+            Log::info('job_send_email', '发送邮件通知队列失败', ['data' => $this->message_data, 'error' => $e->getMessage()]);
+        }
+    }
+
+
+    public function failed(\Throwable $exception)
+    {
+        Log::info('job_send_email', '发送邮件通知队列完全失败', ['data' => $this->message_data, 'error' => $exception]);
+    }
+}

+ 70 - 0
app/Jobs/Manager/Process/SendAliyunSmsJobs.php

@@ -0,0 +1,70 @@
+<?php
+
+namespace App\Jobs\Manager\Process;
+
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldBeUnique;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Queue\SerializesModels;
+use App\Facades\Servers\Logs\Log;
+use App\Servers\Sms\VerifyCode as SmsVerifyCode;
+use App\Models\Manager\Process\SubNoticeLog as SubNoticeLogModel;
+
+
+/**
+ * 阿里云短信通知队列
+ * @author    唐远望
+ * @version   1.0
+ * @date      2026-04-16
+ */
+class SendAliyunSmsJobs implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+    protected $message_data;
+    protected $company_id;
+    /**
+     * Create a new job instance.
+     *
+     * @return void
+     */
+    public function __construct(array $message_data)
+    {
+        $this->message_data = $message_data;
+    }
+
+    /**
+     * Execute the job.
+     *
+     * @return void
+     */
+    public function handle()
+    {
+        try {
+            $SmsVerifyCode = new SmsVerifyCode();
+            $SubNoticeLogModel = new SubNoticeLogModel();
+            $notice_data_info = $this->message_data['notice_data_info'];
+            
+            $mobile = $notice_data_info['mobile'];
+            $sms_content = json_decode($notice_data_info['mobile_content'], true);
+            $totle_number = $sms_content['totle_number'];
+            $number1 = $sms_content['number1'];
+            $number2 = $sms_content['number2'];
+            $number3 = $sms_content['number3'];
+            $sms_tpl_id = $sms_content['sms_tpl_id'];
+            $res_msg = $SmsVerifyCode->sendContent($mobile, ['totle_number' => $totle_number, 'number1' => $number1, 'number2' => $number2, 'number3' => $number3], $sms_tpl_id);
+            Log::info('job_send_sms', '订阅短信通知推送队列记录', ['email' => $mobile, 'sms_tpl_id' => $sms_tpl_id, 'msg' => $res_msg]);
+            //更新发送状态
+            $SubNoticeLogModel->where(['id' => $notice_data_info['id']])->update(['sms_status' => 0]);
+        } catch (\Exception $e) {
+            Log::info('job_send_sms', '阿里云短信通知队列失败', ['data' => $this->message_data, 'error' => $e->getMessage()]);
+        }
+    }
+
+
+    public function failed(\Throwable $exception)
+    {
+        Log::info('job_send_sms', '阿里云短信通知队列完全失败', ['data' => $this->message_data, 'error' => $exception]);
+    }
+}

+ 24 - 17
app/Jobs/Manager/Process/SendNoticeJobs.php

@@ -14,6 +14,9 @@ use App\Models\Manager\Process\StatisticsNotices as StatisticsNoticesModel;
 use App\Servers\Email\VerifyCode as EmailVerifyCode;
 use App\Servers\Sms\VerifyCode as SmsVerifyCode;
 use Illuminate\Support\Facades\DB;
+use App\Jobs\Manager\Other\SendEmailJobs;
+use App\Jobs\Manager\Process\SendAliyunSmsJobs;
+
 
 /**
  * 发送订阅通知
@@ -127,13 +130,15 @@ class SendNoticeJobs implements ShouldQueue
                 $SubNoticeLogModel->where(['id' => $value['id']])->update(['email_status' => 0]);
                 continue;
             }
-            $email_content = json_decode($value['email_content'], true);
-            $email_title = $email_content['title'];
-            $email_content = $email_content['content'];
-            $res_msg = $EmailVerifyCode->sendSmtpEmail($email_to, $email_title, $email_content);
-            Log::info('job_send_email', '订阅邮件通知推送队列记录', ['email' => $email_to, 'email_content' => $email_content, 'msg' => $res_msg]);
-            //更新发送状态
-            $SubNoticeLogModel->where(['id' => $value['id']])->update(['email_status' => 0]);
+            SendEmailJobs::dispatch(['notice_data_info'=> $value]);
+            // SendEmailJobs::dispatchSync(['notice_data_info'=> $value]);
+            // $email_content = json_decode($value['email_content'], true);
+            // $email_title = $email_content['title'];
+            // $email_content = $email_content['content'];
+            // $res_msg = $EmailVerifyCode->sendSmtpEmail($email_to, $email_title, $email_content);
+            // Log::info('job_send_email', '订阅邮件通知推送队列记录', ['email' => $email_to, 'email_content' => $email_content, 'msg' => $res_msg]);
+            // //更新发送状态
+            // $SubNoticeLogModel->where(['id' => $value['id']])->update(['email_status' => 0]);
         }
         return true;
     }
@@ -159,16 +164,18 @@ class SendNoticeJobs implements ShouldQueue
                 $SubNoticeLogModel->where(['id' => $value['id']])->update(['status' => 0]);
                 continue;
             }
-            $sms_content = json_decode($value['mobile_content'], true);
-            $totle_number = $sms_content['totle_number'];
-            $number1 = $sms_content['number1'];
-            $number2 = $sms_content['number2'];
-            $number3 = $sms_content['number3'];
-            $sms_tpl_id = $sms_content['sms_tpl_id'];
-            $res_msg = $SmsVerifyCode->sendContent($mobile, ['totle_number' => $totle_number, 'number1' => $number1, 'number2' => $number2, 'number3' => $number3], $sms_tpl_id);
-            Log::info('job_send_sms', '订阅短信通知推送队列记录', ['email' => $mobile, 'sms_tpl_id' => $sms_tpl_id, 'msg' => $res_msg]);
-            //更新发送状态
-            $SubNoticeLogModel->where(['id' => $value['id']])->update(['sms_status' => 0]);
+            SendAliyunSmsJobs::dispatch(['notice_data_info'=> $value]);
+            // SendAliyunSmsJobs::dispatchSync(['notice_data_info'=> $value]);
+            // $sms_content = json_decode($value['mobile_content'], true);
+            // $totle_number = $sms_content['totle_number'];
+            // $number1 = $sms_content['number1'];
+            // $number2 = $sms_content['number2'];
+            // $number3 = $sms_content['number3'];
+            // $sms_tpl_id = $sms_content['sms_tpl_id'];
+            // $res_msg = $SmsVerifyCode->sendContent($mobile, ['totle_number' => $totle_number, 'number1' => $number1, 'number2' => $number2, 'number3' => $number3], $sms_tpl_id);
+            // Log::info('job_send_sms', '订阅短信通知推送队列记录', ['email' => $mobile, 'sms_tpl_id' => $sms_tpl_id, 'msg' => $res_msg]);
+            // //更新发送状态
+            // $SubNoticeLogModel->where(['id' => $value['id']])->update(['sms_status' => 0]);
         }
         return true;
     }