root 5 years ago
parent
commit
5070c851ed
4 changed files with 43 additions and 6 deletions
  1. 12 5
      app/Console/Commands/SendRemindMail.php
  2. 8 0
      app/Jobs/SendEmail.php
  3. 12 0
      app/Models/MailLog.php
  4. 11 1
      update.sql

+ 12 - 5
app/Console/Commands/SendRemindMail.php

@@ -41,23 +41,30 @@ class SendRemindMail extends Command
     {
         $users = User::all();
         foreach ($users as $user) {
-            if ($user->remind_expire) {
-                $this->remindExpire($user);
-            }
+            if ($user->remind_expire) $this->remindExpire($user);
+            if ($user->remind_traffic) $this->remindTraffic($user);
         }
     }
     
     private function remindExpire ($user) {
         if (($user->expired_at - 86400) < time() && $user->expired_at > time()) {
-            $this->dispatch(new SendEmail([
+            SendEmail::dispatch([
                 'email' => $user->email,
                 'subject' => '在' . config('v2board.app_name', 'V2board') . '的服务即将到期',
                 'template_name' => 'mail.sendRemindExpire',
                 'template_value' => [
                     'name' => config('v2board.app_name', 'V2Board')
                 ]
-            ]));
+            ]);
         }
     }
 
+    private function remindTraffic ($user) {
+        if ((($user->u + $user->d) / $user->transfer_enable * 100) >= 80) {
+            
+        }
+    }
+
+
+
 }

+ 8 - 0
app/Jobs/SendEmail.php

@@ -8,6 +8,7 @@ use Illuminate\Foundation\Bus\Dispatchable;
 use Illuminate\Queue\InteractsWithQueue;
 use Illuminate\Queue\SerializesModels;
 use Illuminate\Support\Facades\Mail;
+use App\Models\MailLog;
 
 class SendEmail implements ShouldQueue
 {
@@ -40,5 +41,12 @@ class SendEmail implements ShouldQueue
                 $message->to($email)->subject($subject); 
             }
         );
+
+        MailLog::create([
+            'email' => $params['email'],
+            'subject' => $params['subject'],
+            'template_name' => $params['template_name'],
+            'error' => count(Mail::failures()) > 0 ? Mail::failures()[0] : NULL
+        ]);
     }
 }

+ 12 - 0
app/Models/MailLog.php

@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class MailLog extends Model
+{
+    protected $table = 'v2_mail_log';
+    protected $dateFormat = 'U';
+    protected $guarded = ['id'];
+}

+ 11 - 1
update.sql

@@ -79,4 +79,14 @@ CHANGE `half_year_price` `half_year_price` int(11) NULL DEFAULT '0' AFTER `quart
 CHANGE `year_price` `year_price` int(11) NULL DEFAULT '0' AFTER `half_year_price`;
 
 ALTER TABLE `v2_server`
-ADD `parent_id` int(11) NULL AFTER `group_id`;
+ADD `parent_id` int(11) NULL AFTER `group_id`;
+
+CREATE TABLE `v2_mail_log` (
+  `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
+  `email` varchar(64) NOT NULL,
+  `subject` varchar(255) NOT NULL,
+  `template_name` varchar(255) NOT NULL,
+  `error` varchar(255) DEFAULT NULL,
+  `created_at` int(11) NOT NULL,
+  `updated_at` int(11) NOT NULL
+);