Browse Source

fix: remind traffic

Tokumeikoi 4 years ago
parent
commit
ac48f90678
2 changed files with 11 additions and 5 deletions
  1. 9 4
      app/Services/MailService.php
  2. 2 1
      app/Utils/CacheKey.php

+ 9 - 4
app/Services/MailService.php

@@ -4,15 +4,18 @@ namespace App\Services;
 
 use App\Jobs\SendEmailJob;
 use App\Models\User;
+use App\Utils\CacheKey;
+use Illuminate\Support\Facades\Cache;
 
 class MailService
 {
     public function remindTraffic (User $user)
     {
         if (!$user->remind_traffic) return;
-        if (!$this->remindTrafficIsWarnValue(($user->u + $user->d), $user->transfer_enable)) {
-            return;
-        }
+        if (!$this->remindTrafficIsWarnValue(($user->u + $user->d), $user->transfer_enable)) return;
+        $flag = CacheKey::get('LAST_SEND_EMAIL_REMIND_TRAFFIC', $user->id);
+        if (Cache::get($flag)) return;
+        if (!Cache::put($flag, 1, 24 * 3600)) return;
         SendEmailJob::dispatch([
             'email' => $user->email,
             'subject' => '在' . config('v2board.app_name', 'V2board') . '的流量使用已达到80%',
@@ -27,7 +30,9 @@ class MailService
     private function remindTrafficIsWarnValue($ud, $transfer_enable)
     {
         if ($ud <= 0) return false;
-        if (($ud / $transfer_enable * 100) < 80) return false;
+        $percentage = $ud / $transfer_enable * 100;
+        if ($percentage < 80) return false;
+        if ($percentage >= 100) return false;
         return true;
     }
 }

+ 2 - 1
app/Utils/CacheKey.php

@@ -11,7 +11,8 @@ class CacheKey
         'SERVER_V2RAY_LAST_CHECK_AT' => '节点最后检查时间',
         'SERVER_TROJAN_ONLINE_USER' => 'trojan节点在线用户',
         'SERVER_TROJAN_LAST_CHECK_AT' => 'trojan节点最后检查时间',
-        'TEMP_TOKEN' => '临时令牌'
+        'TEMP_TOKEN' => '临时令牌',
+        'LAST_SEND_EMAIL_REMIND_TRAFFIC'
     ];
 
     public static function get(string $key, $uniqueValue)