where('expired_at', '>', time()); $resetTrafficMethod = config('v2board.reset_traffic_method', 0); switch ((int)$resetTrafficMethod) { // 1 a month case 0: $this->resetByMonthFirstDay($user); break; // expire day case 1: $this->resetByExpireDay($user); break; } } private function resetByMonthFirstDay($user):void { if ((string)date('d') === '01') { $user->update([ 'u' => 0, 'd' => 0 ]); } } private function resetByExpireDay($user):void { $lastDay = date('d', strtotime('last day of +0 months')); foreach ($user->get() as $item) { $expireDay = date('d', $item->expired_at); if ($expireDay === date('d') || (string)$lastDay === '29' || (string)$lastDay === '30') { $item->u = 0; $item->d = 0; $item->save(); } } } }