Browse Source

update: reset by next year

tokumeikoi 2 years ago
parent
commit
fe1ab11bbd

+ 18 - 0
app/Console/Commands/ResetTraffic.php

@@ -69,6 +69,9 @@ class ResetTraffic extends Command
                         // no action
                         case 2:
                             break;
+                        // year
+                        case 3:
+                            $this->resetByYear($builder);
                     }
                     break;
                 }
@@ -85,10 +88,25 @@ class ResetTraffic extends Command
                 case ($resetMethod['method'] === 2): {
                     break;
                 }
+                case ($resetMethod['method'] === 3): {
+                    $builder = with(clone($this->builder))->whereIn('plan_id', $planIds);
+                    $this->resetByYear($builder);
+                    break;
+                }
             }
         }
     }
 
+    private function resetByYear($builder):void
+    {
+        if ((string)date('d') === '01' && (string)date('m') === '01') {
+            $builder->update([
+                'u' => 0,
+                'd' => 0
+            ]);
+        }
+    }
+
     private function resetByMonthFirstDay($builder):void
     {
         if ((string)date('d') === '01') {

+ 0 - 1
app/Http/Controllers/Admin/PlanController.php

@@ -16,7 +16,6 @@ class PlanController extends Controller
 {
     public function fetch(Request $request)
     {
-
         $counts = User::select(
             DB::raw("plan_id"),
             DB::raw("count(*) as count")

+ 12 - 3
app/Http/Controllers/User/UserController.php

@@ -189,18 +189,21 @@ class UserController extends Controller
         if ($user->expired_at <= time() || $user->expired_at === NULL) return null;
         // if reset method is not reset
         if (isset($user->plan->reset_traffic_method) && $user->plan->reset_traffic_method === 2) return null;
-        $day = date('d', $user->expired_at);
-        $today = date('d');
-        $lastDay = date('d', strtotime('last day of +0 months'));
 
         if ((int)config('v2board.reset_traffic_method') === 0 ||
             (isset($user->plan->reset_traffic_method) && $user->plan->reset_traffic_method === 0))
         {
+            $day = date('d', $user->expired_at);
+            $today = date('d');
+            $lastDay = date('d', strtotime('last day of +0 months'));
             return $lastDay - $today;
         }
         if ((int)config('v2board.reset_traffic_method') === 1 ||
             (isset($user->plan->reset_traffic_method) && $user->plan->reset_traffic_method === 1))
         {
+            $day = date('d', $user->expired_at);
+            $today = date('d');
+            $lastDay = date('d', strtotime('last day of +0 months'));
             if ((int)$day >= (int)$today && (int)$day >= (int)$lastDay) {
                 return $lastDay - $today;
             }
@@ -210,6 +213,12 @@ class UserController extends Controller
                 return $lastDay - $today + $day;
             }
         }
+        if ((int)config('v2board.reset_traffic_method') === 2 ||
+            (isset($user->plan->reset_traffic_method) && $user->plan->reset_traffic_method === 2))
+        {
+            $nextYear = strtotime(date("Y-01-01", strtotime('+1 year')));
+            return (int)(($nextYear - time()) / 86400);
+        }
         return null;
     }
 

+ 1 - 1
app/Http/Requests/Admin/ConfigSave.php

@@ -48,7 +48,7 @@ class ConfigSave extends FormRequest
         'register_limit_expire' => 'integer',
         // subscribe
         'plan_change_enable' => 'in:0,1',
-        'reset_traffic_method' => 'in:0,1,2',
+        'reset_traffic_method' => 'in:0,1,2,3',
         'surplus_enable' => 'in:0,1',
         'new_order_event_id' => 'in:0,1',
         'renew_order_event_id' => 'in:0,1',

+ 1 - 1
app/Http/Requests/Admin/PlanSave.php

@@ -26,7 +26,7 @@ class PlanSave extends FormRequest
             'three_year_price' => 'nullable|integer',
             'onetime_price' => 'nullable|integer',
             'reset_price' => 'nullable|integer',
-            'reset_traffic_method' => 'nullable|integer|in:0,1,2'
+            'reset_traffic_method' => 'nullable|integer|in:0,1,2,3'
         ];
     }
 

File diff suppressed because it is too large
+ 0 - 0
public/assets/admin/umi.js


Some files were not shown because too many files changed in this diff