通常订阅到期就会订阅失败,为此增加订阅到期提醒。

        // 到期或耗尽提醒
        if (!$user['banned']) {
            $serverService = new ServerService();
            $servers = $serverService->getAvailableServers($user);

            $useTraffic = $user['u'] + $user['d'];
            $totalTraffic = $user['transfer_enable'];
            $remainingTraffic = Helper::trafficConvert($totalTraffic - $useTraffic);

            if ($remainingTraffic <= 0) {
                array_unshift($servers, array_merge($servers[0], [
                    'name' => "您的流量已耗尽",
                ]));
            }

            if ($user['expired_at'] <= time()) {
                array_unshift($servers, array_merge($servers[0], [
                    'name' => "您的订阅已过期",
                ]));
            }

            array_unshift($servers, array_merge($servers[0], [
                'name' => "请到 " . admin_setting('app_url') . ' 重置流量或续费',
            ]));

            if ($flag) {
                foreach (array_reverse(glob(app_path('Protocols') . '/*.php')) as $file) {
                    $file = 'App\\Protocols\\' . basename($file, '.php');
                    $class = new $file($user, $servers);
                    if (strpos($flag, $class->flag) !== false) {
                        return $class->handle();
                    }
                }
            }

            $class = new General($user, $servers);
            return $class->handle();
        }

该代码新增在如下函数的的尾部

public function subscribe(Request $request)

并且在首部新增如下

use App\Models\Setting;

v2rayN测试

效果: