Browse Source

no message

BF-202205051124\Administrator 2 years ago
commit
2b159b6d13
100 changed files with 27623 additions and 0 deletions
  1. 69 0
      .env_backups
  2. 6 0
      .gitignore
  3. 18114 0
      _ide_helper.php
  4. 108 0
      app/Console/Commands/TestCommand.php
  5. 49 0
      app/Console/Commands/TronAnalyze.php
  6. 57 0
      app/Console/Kernel.php
  7. 16 0
      app/Exceptions/FrequencyException.php
  8. 90 0
      app/Exceptions/Handler.php
  9. 10 0
      app/Exceptions/MemberAuthException.php
  10. 16 0
      app/Exceptions/PurchasesException.php
  11. 10 0
      app/Exceptions/ShopAuthException.php
  12. 19 0
      app/Exceptions/Sign/AuthException.php
  13. 19 0
      app/Exceptions/Sign/DownException.php
  14. 21 0
      app/Exceptions/Sign/SendTypeException.php
  15. 21 0
      app/Exceptions/Sign/SignException.php
  16. 10 0
      app/Exceptions/WapException.php
  17. 351 0
      app/Http/Controllers/Admin/IndexController.php
  18. 384 0
      app/Http/Controllers/AdminBaseController.php
  19. 82 0
      app/Http/Controllers/AdminLog/AdminLogsController.php
  20. 270 0
      app/Http/Controllers/Api/CommonController.php
  21. 404 0
      app/Http/Controllers/Api/MemberController.php
  22. 97 0
      app/Http/Controllers/Api/MoneyController.php
  23. 87 0
      app/Http/Controllers/Api/NewsController.php
  24. 111 0
      app/Http/Controllers/Api/WithdrawController.php
  25. 486 0
      app/Http/Controllers/ApiJsonController.php
  26. 202 0
      app/Http/Controllers/Area/AreasController.php
  27. 32 0
      app/Http/Controllers/Auth/ForgotPasswordController.php
  28. 301 0
      app/Http/Controllers/Auth/Front/AuthController.php
  29. 51 0
      app/Http/Controllers/Auth/Front/ForgotPasswordController.php
  30. 15 0
      app/Http/Controllers/Auth/Front/LoginController.php
  31. 314 0
      app/Http/Controllers/Auth/Front/RegisterController.php
  32. 45 0
      app/Http/Controllers/Auth/LoginController.php
  33. 72 0
      app/Http/Controllers/Auth/RegisterController.php
  34. 39 0
      app/Http/Controllers/Auth/ResetPasswordController.php
  35. 41 0
      app/Http/Controllers/Auth/VerificationController.php
  36. 194 0
      app/Http/Controllers/Banner/BannersController.php
  37. 49 0
      app/Http/Controllers/Banner/Front/BannerNotTokenController.php
  38. 36 0
      app/Http/Controllers/Banner/Front/BannersController.php
  39. 38 0
      app/Http/Controllers/BaseController.php
  40. 166 0
      app/Http/Controllers/Config/ConfigsController.php
  41. 13 0
      app/Http/Controllers/Controller.php
  42. 29 0
      app/Http/Controllers/FrontController.php
  43. 46 0
      app/Http/Controllers/HomeController.php
  44. 82 0
      app/Http/Controllers/IndentNum/IndentNumsController.php
  45. 82 0
      app/Http/Controllers/InviteCode/InviteCodesController.php
  46. 562 0
      app/Http/Controllers/Member/Front/MembersController.php
  47. 97 0
      app/Http/Controllers/Member/MembersController.php
  48. 82 0
      app/Http/Controllers/MemberClan/MemberClansController.php
  49. 82 0
      app/Http/Controllers/MemberLog/MemberLogsController.php
  50. 309 0
      app/Http/Controllers/Menu/MenusController.php
  51. 176 0
      app/Http/Controllers/MenuUrl/MenuUrlsController.php
  52. 78 0
      app/Http/Controllers/MoneyDetail/Front/MoneyDetailsController.php
  53. 107 0
      app/Http/Controllers/MoneyDetail/MoneyDetailsController.php
  54. 19 0
      app/Http/Controllers/Notice/Front/NoticesController.php
  55. 118 0
      app/Http/Controllers/Notice/Front/NoticesNotTokenController.php
  56. 82 0
      app/Http/Controllers/Notice/NoticesController.php
  57. 82 0
      app/Http/Controllers/NoticeRead/NoticeReadsController.php
  58. 188 0
      app/Http/Controllers/Permission/PermissionsController.php
  59. 82 0
      app/Http/Controllers/Region/RegionsController.php
  60. 156 0
      app/Http/Controllers/Role/RolesController.php
  61. 62 0
      app/Http/Controllers/Traits/ApiResponseTrait.php
  62. 200 0
      app/Http/Controllers/Traits/AuthUserTrait.php
  63. 242 0
      app/Http/Controllers/User/UsersController.php
  64. 149 0
      app/Http/Controllers/Wap/MemberController.php
  65. 165 0
      app/Http/Controllers/Wap/NotifyController.php
  66. 195 0
      app/Http/Controllers/Withdraw/WithdrawsController.php
  67. 86 0
      app/Http/Controllers/WithdrawConfig/WithdrawConfigsController.php
  68. 104 0
      app/Http/Kernel.php
  69. 54 0
      app/Http/Middleware/AdminAuthMiddleware.php
  70. 23 0
      app/Http/Middleware/AdminLogMiddleware.php
  71. 47 0
      app/Http/Middleware/ApiTokenMiddleware.php
  72. 21 0
      app/Http/Middleware/Authenticate.php
  73. 17 0
      app/Http/Middleware/CheckForMaintenanceMode.php
  74. 17 0
      app/Http/Middleware/EncryptCookies.php
  75. 24 0
      app/Http/Middleware/HomeAuth.php
  76. 83 0
      app/Http/Middleware/MemberAuthMiddleware.php
  77. 26 0
      app/Http/Middleware/MemberLogMiddleware.php
  78. 89 0
      app/Http/Middleware/Mobile.php
  79. 61 0
      app/Http/Middleware/Permission/Permission.php
  80. 44 0
      app/Http/Middleware/PermissionMiddleware.php
  81. 26 0
      app/Http/Middleware/RedirectIfAuthenticated.php
  82. 18 0
      app/Http/Middleware/TrimStrings.php
  83. 23 0
      app/Http/Middleware/TrustProxies.php
  84. 37 0
      app/Http/Middleware/VerifyCsrfToken.php
  85. 47 0
      app/Http/Middleware/WapAuthMiddleware.php
  86. 35 0
      app/Http/Requests/Admin/CreateRequest.php
  87. 35 0
      app/Http/Requests/Admin/UpdateRequest.php
  88. 45 0
      app/Models/AdminLog.php
  89. 68 0
      app/Models/Banner.php
  90. 41 0
      app/Models/Config.php
  91. 41 0
      app/Models/ErrorRecord.php
  92. 51 0
      app/Models/IndentNum.php
  93. 39 0
      app/Models/InviteCode.php
  94. 96 0
      app/Models/Member.php
  95. 53 0
      app/Models/MemberClan.php
  96. 53 0
      app/Models/MemberClans.php
  97. 45 0
      app/Models/MemberLog.php
  98. 87 0
      app/Models/Members.php
  99. 53 0
      app/Models/Menu.php
  100. 47 0
      app/Models/MenuUrl.php

+ 69 - 0
.env_backups

@@ -0,0 +1,69 @@
+APP_NAME=Laravel
+APP_ENV=local
+APP_KEY=base64:G9DyQ0hG3GrKWOyyjVuul62gI6tBeAOWRJ+xYzVq3w4=
+APP_DEBUG=true
+APP_URL=http://admin.test.cc
+APP_HOST=admin.test.cc
+APP_HOST_API=api.test.cc
+
+
+#企业宝短信配置
+QYB_USERNAME=
+QYB_PASSWORD=
+SIGN_TEXT=
+IS_CURRENT=true
+
+TEST_SERVE=true
+LOG_CHANNEL=stack
+
+DB_CONNECTION=mysql
+DB_HOST=127.0.0.1
+DB_PORT=3306
+DB_DATABASE=wh_admin
+DB_USERNAME=wh_admin
+DB_PASSWORD=8YAA83eHNipmtJ7F
+
+BROADCAST_DRIVER=log
+CACHE_DRIVER=file
+QUEUE_CONNECTION=sync
+SESSION_DRIVER=file
+SESSION_LIFETIME=120
+
+REDIS_HOST=127.0.0.1
+REDIS_PASSWORD=
+REDIS_PORT=6379
+
+MAIL_DRIVER=smtp
+MAIL_HOST=smtp.mailtrap.io
+MAIL_PORT=2525
+MAIL_USERNAME=null
+MAIL_PASSWORD=null
+MAIL_ENCRYPTION=null
+
+AWS_ACCESS_KEY_ID=
+AWS_SECRET_ACCESS_KEY=
+AWS_DEFAULT_REGION=us-east-1
+AWS_BUCKET=
+
+PUSHER_APP_ID=
+PUSHER_APP_KEY=
+PUSHER_APP_SECRET=
+PUSHER_APP_CLUSTER=mt1
+
+MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
+MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
+
+#腾讯云配置
+TXY_OSS_ACCESS_ID=AKIDznLdfQv96nDMFsFLBk22lEQLyLZZIlyu
+TXY_OSS_ACCESS_KEY=g7HAm6AxSgKhoeCdojMjpeBSSAbmhLin
+COSV5_APP_ID=1257406827
+COSV5_REGION=ap-beijing
+COSV5_BUCKET=wealfavor-1257406827
+
+
+
+
+
+
+
+

+ 6 - 0
.gitignore

@@ -0,0 +1,6 @@
+l_admin.sql
+vendor/
+.idea/
+.env
+public/.user.ini
+public/.htaccess

+ 18114 - 0
_ide_helper.php

@@ -0,0 +1,18114 @@
+<?php
+// @formatter:off
+
+/**
+ * A helper file for Laravel, to provide autocomplete information to your IDE
+ * Generated for Laravel 5.8.38.
+ *
+ * This file should not be included in your code, only analyzed by your IDE!
+ *
+ * @author Barry vd. Heuvel <barryvdh@gmail.com>
+ * @see https://github.com/barryvdh/laravel-ide-helper
+ */
+
+    namespace Illuminate\Support\Facades { 
+            /**
+     * 
+     *
+     * @see \Illuminate\Contracts\Foundation\Application
+     */ 
+        class App {
+                    /**
+         * Get the version number of the application.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function version()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->version();
+        }
+                    /**
+         * Run the given array of bootstrap classes.
+         *
+         * @param string[] $bootstrappers
+         * @return void 
+         * @static 
+         */ 
+        public static function bootstrapWith($bootstrappers)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->bootstrapWith($bootstrappers);
+        }
+                    /**
+         * Register a callback to run after loading the environment.
+         *
+         * @param \Closure $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function afterLoadingEnvironment($callback)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->afterLoadingEnvironment($callback);
+        }
+                    /**
+         * Register a callback to run before a bootstrapper.
+         *
+         * @param string $bootstrapper
+         * @param \Closure $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function beforeBootstrapping($bootstrapper, $callback)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->beforeBootstrapping($bootstrapper, $callback);
+        }
+                    /**
+         * Register a callback to run after a bootstrapper.
+         *
+         * @param string $bootstrapper
+         * @param \Closure $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function afterBootstrapping($bootstrapper, $callback)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->afterBootstrapping($bootstrapper, $callback);
+        }
+                    /**
+         * Determine if the application has been bootstrapped before.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasBeenBootstrapped()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->hasBeenBootstrapped();
+        }
+                    /**
+         * Set the base path for the application.
+         *
+         * @param string $basePath
+         * @return \Illuminate\Foundation\Application 
+         * @static 
+         */ 
+        public static function setBasePath($basePath)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->setBasePath($basePath);
+        }
+                    /**
+         * Get the path to the application "app" directory.
+         *
+         * @param string $path
+         * @return string 
+         * @static 
+         */ 
+        public static function path($path = '')
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->path($path);
+        }
+                    /**
+         * Set the application directory.
+         *
+         * @param string $path
+         * @return \Illuminate\Foundation\Application 
+         * @static 
+         */ 
+        public static function useAppPath($path)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->useAppPath($path);
+        }
+                    /**
+         * Get the base path of the Laravel installation.
+         *
+         * @param string $path Optionally, a path to append to the base path
+         * @return string 
+         * @static 
+         */ 
+        public static function basePath($path = '')
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->basePath($path);
+        }
+                    /**
+         * Get the path to the bootstrap directory.
+         *
+         * @param string $path Optionally, a path to append to the bootstrap path
+         * @return string 
+         * @static 
+         */ 
+        public static function bootstrapPath($path = '')
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->bootstrapPath($path);
+        }
+                    /**
+         * Get the path to the application configuration files.
+         *
+         * @param string $path Optionally, a path to append to the config path
+         * @return string 
+         * @static 
+         */ 
+        public static function configPath($path = '')
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->configPath($path);
+        }
+                    /**
+         * Get the path to the database directory.
+         *
+         * @param string $path Optionally, a path to append to the database path
+         * @return string 
+         * @static 
+         */ 
+        public static function databasePath($path = '')
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->databasePath($path);
+        }
+                    /**
+         * Set the database directory.
+         *
+         * @param string $path
+         * @return \Illuminate\Foundation\Application 
+         * @static 
+         */ 
+        public static function useDatabasePath($path)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->useDatabasePath($path);
+        }
+                    /**
+         * Get the path to the language files.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function langPath()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->langPath();
+        }
+                    /**
+         * Get the path to the public / web directory.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function publicPath()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->publicPath();
+        }
+                    /**
+         * Get the path to the storage directory.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function storagePath()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->storagePath();
+        }
+                    /**
+         * Set the storage directory.
+         *
+         * @param string $path
+         * @return \Illuminate\Foundation\Application 
+         * @static 
+         */ 
+        public static function useStoragePath($path)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->useStoragePath($path);
+        }
+                    /**
+         * Get the path to the resources directory.
+         *
+         * @param string $path
+         * @return string 
+         * @static 
+         */ 
+        public static function resourcePath($path = '')
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->resourcePath($path);
+        }
+                    /**
+         * Get the path to the environment file directory.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function environmentPath()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->environmentPath();
+        }
+                    /**
+         * Set the directory for the environment file.
+         *
+         * @param string $path
+         * @return \Illuminate\Foundation\Application 
+         * @static 
+         */ 
+        public static function useEnvironmentPath($path)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->useEnvironmentPath($path);
+        }
+                    /**
+         * Set the environment file to be loaded during bootstrapping.
+         *
+         * @param string $file
+         * @return \Illuminate\Foundation\Application 
+         * @static 
+         */ 
+        public static function loadEnvironmentFrom($file)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->loadEnvironmentFrom($file);
+        }
+                    /**
+         * Get the environment file the application is using.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function environmentFile()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->environmentFile();
+        }
+                    /**
+         * Get the fully qualified path to the environment file.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function environmentFilePath()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->environmentFilePath();
+        }
+                    /**
+         * Get or check the current application environment.
+         *
+         * @param string|array $environments
+         * @return string|bool 
+         * @static 
+         */ 
+        public static function environment(...$environments)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->environment(...$environments);
+        }
+                    /**
+         * Determine if application is in local environment.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function isLocal()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->isLocal();
+        }
+                    /**
+         * Determine if application is in production environment.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function isProduction()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->isProduction();
+        }
+                    /**
+         * Detect the application's current environment.
+         *
+         * @param \Closure $callback
+         * @return string 
+         * @static 
+         */ 
+        public static function detectEnvironment($callback)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->detectEnvironment($callback);
+        }
+                    /**
+         * Determine if the application is running in the console.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function runningInConsole()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->runningInConsole();
+        }
+                    /**
+         * Determine if the application is running unit tests.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function runningUnitTests()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->runningUnitTests();
+        }
+                    /**
+         * Register all of the configured providers.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function registerConfiguredProviders()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->registerConfiguredProviders();
+        }
+                    /**
+         * Register a service provider with the application.
+         *
+         * @param \Illuminate\Support\ServiceProvider|string $provider
+         * @param bool $force
+         * @return \Illuminate\Support\ServiceProvider 
+         * @static 
+         */ 
+        public static function register($provider, $force = false)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->register($provider, $force);
+        }
+                    /**
+         * Get the registered service provider instance if it exists.
+         *
+         * @param \Illuminate\Support\ServiceProvider|string $provider
+         * @return \Illuminate\Support\ServiceProvider|null 
+         * @static 
+         */ 
+        public static function getProvider($provider)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->getProvider($provider);
+        }
+                    /**
+         * Get the registered service provider instances if any exist.
+         *
+         * @param \Illuminate\Support\ServiceProvider|string $provider
+         * @return array 
+         * @static 
+         */ 
+        public static function getProviders($provider)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->getProviders($provider);
+        }
+                    /**
+         * Resolve a service provider instance from the class name.
+         *
+         * @param string $provider
+         * @return \Illuminate\Support\ServiceProvider 
+         * @static 
+         */ 
+        public static function resolveProvider($provider)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->resolveProvider($provider);
+        }
+                    /**
+         * Load and boot all of the remaining deferred providers.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function loadDeferredProviders()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->loadDeferredProviders();
+        }
+                    /**
+         * Load the provider for a deferred service.
+         *
+         * @param string $service
+         * @return void 
+         * @static 
+         */ 
+        public static function loadDeferredProvider($service)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->loadDeferredProvider($service);
+        }
+                    /**
+         * Register a deferred provider and service.
+         *
+         * @param string $provider
+         * @param string|null $service
+         * @return void 
+         * @static 
+         */ 
+        public static function registerDeferredProvider($provider, $service = null)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->registerDeferredProvider($provider, $service);
+        }
+                    /**
+         * Resolve the given type from the container.
+         * 
+         * (Overriding Container::make)
+         *
+         * @param string $abstract
+         * @param array $parameters
+         * @return mixed 
+         * @static 
+         */ 
+        public static function make($abstract, $parameters = [])
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->make($abstract, $parameters);
+        }
+                    /**
+         * Determine if the given abstract type has been bound.
+         * 
+         * (Overriding Container::bound)
+         *
+         * @param string $abstract
+         * @return bool 
+         * @static 
+         */ 
+        public static function bound($abstract)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->bound($abstract);
+        }
+                    /**
+         * Determine if the application has booted.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function isBooted()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->isBooted();
+        }
+                    /**
+         * Boot the application's service providers.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function boot()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->boot();
+        }
+                    /**
+         * Register a new boot listener.
+         *
+         * @param callable $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function booting($callback)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->booting($callback);
+        }
+                    /**
+         * Register a new "booted" listener.
+         *
+         * @param callable $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function booted($callback)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->booted($callback);
+        }
+                    /**
+         * {@inheritdoc}
+         *
+         * @static 
+         */ 
+        public static function handle($request, $type = 1, $catch = true)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->handle($request, $type, $catch);
+        }
+                    /**
+         * Determine if middleware has been disabled for the application.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function shouldSkipMiddleware()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->shouldSkipMiddleware();
+        }
+                    /**
+         * Get the path to the cached services.php file.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getCachedServicesPath()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->getCachedServicesPath();
+        }
+                    /**
+         * Get the path to the cached packages.php file.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getCachedPackagesPath()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->getCachedPackagesPath();
+        }
+                    /**
+         * Determine if the application configuration is cached.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function configurationIsCached()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->configurationIsCached();
+        }
+                    /**
+         * Get the path to the configuration cache file.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getCachedConfigPath()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->getCachedConfigPath();
+        }
+                    /**
+         * Determine if the application routes are cached.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function routesAreCached()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->routesAreCached();
+        }
+                    /**
+         * Get the path to the routes cache file.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getCachedRoutesPath()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->getCachedRoutesPath();
+        }
+                    /**
+         * Determine if the application events are cached.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function eventsAreCached()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->eventsAreCached();
+        }
+                    /**
+         * Get the path to the events cache file.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getCachedEventsPath()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->getCachedEventsPath();
+        }
+                    /**
+         * Determine if the application is currently down for maintenance.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function isDownForMaintenance()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->isDownForMaintenance();
+        }
+                    /**
+         * Throw an HttpException with the given data.
+         *
+         * @param int $code
+         * @param string $message
+         * @param array $headers
+         * @return void 
+         * @throws \Symfony\Component\HttpKernel\Exception\HttpException
+         * @static 
+         */ 
+        public static function abort($code, $message = '', $headers = [])
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->abort($code, $message, $headers);
+        }
+                    /**
+         * Register a terminating callback with the application.
+         *
+         * @param callable|string $callback
+         * @return \Illuminate\Foundation\Application 
+         * @static 
+         */ 
+        public static function terminating($callback)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->terminating($callback);
+        }
+                    /**
+         * Terminate the application.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function terminate()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->terminate();
+        }
+                    /**
+         * Get the service providers that have been loaded.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getLoadedProviders()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->getLoadedProviders();
+        }
+                    /**
+         * Get the application's deferred services.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getDeferredServices()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->getDeferredServices();
+        }
+                    /**
+         * Set the application's deferred services.
+         *
+         * @param array $services
+         * @return void 
+         * @static 
+         */ 
+        public static function setDeferredServices($services)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->setDeferredServices($services);
+        }
+                    /**
+         * Add an array of services to the application's deferred services.
+         *
+         * @param array $services
+         * @return void 
+         * @static 
+         */ 
+        public static function addDeferredServices($services)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->addDeferredServices($services);
+        }
+                    /**
+         * Determine if the given service is a deferred service.
+         *
+         * @param string $service
+         * @return bool 
+         * @static 
+         */ 
+        public static function isDeferredService($service)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->isDeferredService($service);
+        }
+                    /**
+         * Configure the real-time facade namespace.
+         *
+         * @param string $namespace
+         * @return void 
+         * @static 
+         */ 
+        public static function provideFacades($namespace)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->provideFacades($namespace);
+        }
+                    /**
+         * Get the current application locale.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getLocale()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->getLocale();
+        }
+                    /**
+         * Set the current application locale.
+         *
+         * @param string $locale
+         * @return void 
+         * @static 
+         */ 
+        public static function setLocale($locale)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->setLocale($locale);
+        }
+                    /**
+         * Determine if application locale is the given locale.
+         *
+         * @param string $locale
+         * @return bool 
+         * @static 
+         */ 
+        public static function isLocale($locale)
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->isLocale($locale);
+        }
+                    /**
+         * Register the core class aliases in the container.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function registerCoreContainerAliases()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->registerCoreContainerAliases();
+        }
+                    /**
+         * Flush the container of all bindings and resolved instances.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function flush()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->flush();
+        }
+                    /**
+         * Get the application namespace.
+         *
+         * @return string 
+         * @throws \RuntimeException
+         * @static 
+         */ 
+        public static function getNamespace()
+        {
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->getNamespace();
+        }
+                    /**
+         * Define a contextual binding.
+         *
+         * @param array|string $concrete
+         * @return \Illuminate\Contracts\Container\ContextualBindingBuilder 
+         * @static 
+         */ 
+        public static function when($concrete)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->when($concrete);
+        }
+                    /**
+         * Returns true if the container can return an entry for the given identifier.
+         * 
+         * Returns false otherwise.
+         * 
+         * `has($id)` returning true does not mean that `get($id)` will not throw an exception.
+         * It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`.
+         *
+         * @param string $id Identifier of the entry to look for.
+         * @return bool 
+         * @static 
+         */ 
+        public static function has($id)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->has($id);
+        }
+                    /**
+         * Determine if the given abstract type has been resolved.
+         *
+         * @param string $abstract
+         * @return bool 
+         * @static 
+         */ 
+        public static function resolved($abstract)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->resolved($abstract);
+        }
+                    /**
+         * Determine if a given type is shared.
+         *
+         * @param string $abstract
+         * @return bool 
+         * @static 
+         */ 
+        public static function isShared($abstract)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->isShared($abstract);
+        }
+                    /**
+         * Determine if a given string is an alias.
+         *
+         * @param string $name
+         * @return bool 
+         * @static 
+         */ 
+        public static function isAlias($name)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->isAlias($name);
+        }
+                    /**
+         * Register a binding with the container.
+         *
+         * @param string $abstract
+         * @param \Closure|string|null $concrete
+         * @param bool $shared
+         * @return void 
+         * @static 
+         */ 
+        public static function bind($abstract, $concrete = null, $shared = false)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->bind($abstract, $concrete, $shared);
+        }
+                    /**
+         * Determine if the container has a method binding.
+         *
+         * @param string $method
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasMethodBinding($method)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->hasMethodBinding($method);
+        }
+                    /**
+         * Bind a callback to resolve with Container::call.
+         *
+         * @param array|string $method
+         * @param \Closure $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function bindMethod($method, $callback)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->bindMethod($method, $callback);
+        }
+                    /**
+         * Get the method binding for the given method.
+         *
+         * @param string $method
+         * @param mixed $instance
+         * @return mixed 
+         * @static 
+         */ 
+        public static function callMethodBinding($method, $instance)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->callMethodBinding($method, $instance);
+        }
+                    /**
+         * Add a contextual binding to the container.
+         *
+         * @param string $concrete
+         * @param string $abstract
+         * @param \Closure|string $implementation
+         * @return void 
+         * @static 
+         */ 
+        public static function addContextualBinding($concrete, $abstract, $implementation)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->addContextualBinding($concrete, $abstract, $implementation);
+        }
+                    /**
+         * Register a binding if it hasn't already been registered.
+         *
+         * @param string $abstract
+         * @param \Closure|string|null $concrete
+         * @param bool $shared
+         * @return void 
+         * @static 
+         */ 
+        public static function bindIf($abstract, $concrete = null, $shared = false)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->bindIf($abstract, $concrete, $shared);
+        }
+                    /**
+         * Register a shared binding in the container.
+         *
+         * @param string $abstract
+         * @param \Closure|string|null $concrete
+         * @return void 
+         * @static 
+         */ 
+        public static function singleton($abstract, $concrete = null)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->singleton($abstract, $concrete);
+        }
+                    /**
+         * "Extend" an abstract type in the container.
+         *
+         * @param string $abstract
+         * @param \Closure $closure
+         * @return void 
+         * @throws \InvalidArgumentException
+         * @static 
+         */ 
+        public static function extend($abstract, $closure)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->extend($abstract, $closure);
+        }
+                    /**
+         * Register an existing instance as shared in the container.
+         *
+         * @param string $abstract
+         * @param mixed $instance
+         * @return mixed 
+         * @static 
+         */ 
+        public static function instance($abstract, $instance)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->instance($abstract, $instance);
+        }
+                    /**
+         * Assign a set of tags to a given binding.
+         *
+         * @param array|string $abstracts
+         * @param array|mixed $tags
+         * @return void 
+         * @static 
+         */ 
+        public static function tag($abstracts, $tags)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->tag($abstracts, $tags);
+        }
+                    /**
+         * Resolve all of the bindings for a given tag.
+         *
+         * @param string $tag
+         * @return \Illuminate\Container\iterable 
+         * @static 
+         */ 
+        public static function tagged($tag)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->tagged($tag);
+        }
+                    /**
+         * Alias a type to a different name.
+         *
+         * @param string $abstract
+         * @param string $alias
+         * @return void 
+         * @throws \LogicException
+         * @static 
+         */ 
+        public static function alias($abstract, $alias)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->alias($abstract, $alias);
+        }
+                    /**
+         * Bind a new callback to an abstract's rebind event.
+         *
+         * @param string $abstract
+         * @param \Closure $callback
+         * @return mixed 
+         * @static 
+         */ 
+        public static function rebinding($abstract, $callback)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->rebinding($abstract, $callback);
+        }
+                    /**
+         * Refresh an instance on the given target and method.
+         *
+         * @param string $abstract
+         * @param mixed $target
+         * @param string $method
+         * @return mixed 
+         * @static 
+         */ 
+        public static function refresh($abstract, $target, $method)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->refresh($abstract, $target, $method);
+        }
+                    /**
+         * Wrap the given closure such that its dependencies will be injected when executed.
+         *
+         * @param \Closure $callback
+         * @param array $parameters
+         * @return \Closure 
+         * @static 
+         */ 
+        public static function wrap($callback, $parameters = [])
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->wrap($callback, $parameters);
+        }
+                    /**
+         * Call the given Closure / class@method and inject its dependencies.
+         *
+         * @param callable|string $callback
+         * @param array $parameters
+         * @param string|null $defaultMethod
+         * @return mixed 
+         * @static 
+         */ 
+        public static function call($callback, $parameters = [], $defaultMethod = null)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->call($callback, $parameters, $defaultMethod);
+        }
+                    /**
+         * Get a closure to resolve the given type from the container.
+         *
+         * @param string $abstract
+         * @return \Closure 
+         * @static 
+         */ 
+        public static function factory($abstract)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->factory($abstract);
+        }
+                    /**
+         * An alias function name for make().
+         *
+         * @param string $abstract
+         * @param array $parameters
+         * @return mixed 
+         * @static 
+         */ 
+        public static function makeWith($abstract, $parameters = [])
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->makeWith($abstract, $parameters);
+        }
+                    /**
+         * Finds an entry of the container by its identifier and returns it.
+         *
+         * @param string $id Identifier of the entry to look for.
+         * @throws NotFoundExceptionInterface  No entry was found for **this** identifier.
+         * @throws ContainerExceptionInterface Error while retrieving the entry.
+         * @return mixed Entry.
+         * @static 
+         */ 
+        public static function get($id)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->get($id);
+        }
+                    /**
+         * Instantiate a concrete instance of the given type.
+         *
+         * @param string $concrete
+         * @return mixed 
+         * @throws \Illuminate\Contracts\Container\BindingResolutionException
+         * @static 
+         */ 
+        public static function build($concrete)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->build($concrete);
+        }
+                    /**
+         * Register a new resolving callback.
+         *
+         * @param \Closure|string $abstract
+         * @param \Closure|null $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function resolving($abstract, $callback = null)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->resolving($abstract, $callback);
+        }
+                    /**
+         * Register a new after resolving callback for all types.
+         *
+         * @param \Closure|string $abstract
+         * @param \Closure|null $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function afterResolving($abstract, $callback = null)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->afterResolving($abstract, $callback);
+        }
+                    /**
+         * Get the container's bindings.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getBindings()
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->getBindings();
+        }
+                    /**
+         * Get the alias for an abstract if available.
+         *
+         * @param string $abstract
+         * @return string 
+         * @static 
+         */ 
+        public static function getAlias($abstract)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->getAlias($abstract);
+        }
+                    /**
+         * Remove all of the extender callbacks for a given type.
+         *
+         * @param string $abstract
+         * @return void 
+         * @static 
+         */ 
+        public static function forgetExtenders($abstract)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->forgetExtenders($abstract);
+        }
+                    /**
+         * Remove a resolved instance from the instance cache.
+         *
+         * @param string $abstract
+         * @return void 
+         * @static 
+         */ 
+        public static function forgetInstance($abstract)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->forgetInstance($abstract);
+        }
+                    /**
+         * Clear all of the instances from the container.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function forgetInstances()
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->forgetInstances();
+        }
+                    /**
+         * Get the globally available instance of the container.
+         *
+         * @return static 
+         * @static 
+         */ 
+        public static function getInstance()
+        {            //Method inherited from \Illuminate\Container\Container         
+                        return \Illuminate\Foundation\Application::getInstance();
+        }
+                    /**
+         * Set the shared instance of the container.
+         *
+         * @param \Illuminate\Contracts\Container\Container|null $container
+         * @return \Illuminate\Contracts\Container\Container|static 
+         * @static 
+         */ 
+        public static function setInstance($container = null)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        return \Illuminate\Foundation\Application::setInstance($container);
+        }
+                    /**
+         * Determine if a given offset exists.
+         *
+         * @param string $key
+         * @return bool 
+         * @static 
+         */ 
+        public static function offsetExists($key)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->offsetExists($key);
+        }
+                    /**
+         * Get the value at a given offset.
+         *
+         * @param string $key
+         * @return mixed 
+         * @static 
+         */ 
+        public static function offsetGet($key)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        return $instance->offsetGet($key);
+        }
+                    /**
+         * Set the value at a given offset.
+         *
+         * @param string $key
+         * @param mixed $value
+         * @return void 
+         * @static 
+         */ 
+        public static function offsetSet($key, $value)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->offsetSet($key, $value);
+        }
+                    /**
+         * Unset the value at a given offset.
+         *
+         * @param string $key
+         * @return void 
+         * @static 
+         */ 
+        public static function offsetUnset($key)
+        {            //Method inherited from \Illuminate\Container\Container         
+                        /** @var \Illuminate\Foundation\Application $instance */
+                        $instance->offsetUnset($key);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Contracts\Console\Kernel
+     */ 
+        class Artisan {
+                    /**
+         * Run the console application.
+         *
+         * @param \Symfony\Component\Console\Input\InputInterface $input
+         * @param \Symfony\Component\Console\Output\OutputInterface|null $output
+         * @return int 
+         * @static 
+         */ 
+        public static function handle($input, $output = null)
+        {            //Method inherited from \Illuminate\Foundation\Console\Kernel         
+                        /** @var \App\Console\Kernel $instance */
+                        return $instance->handle($input, $output);
+        }
+                    /**
+         * Terminate the application.
+         *
+         * @param \Symfony\Component\Console\Input\InputInterface $input
+         * @param int $status
+         * @return void 
+         * @static 
+         */ 
+        public static function terminate($input, $status)
+        {            //Method inherited from \Illuminate\Foundation\Console\Kernel         
+                        /** @var \App\Console\Kernel $instance */
+                        $instance->terminate($input, $status);
+        }
+                    /**
+         * Register a Closure based command with the application.
+         *
+         * @param string $signature
+         * @param \Closure $callback
+         * @return \Illuminate\Foundation\Console\ClosureCommand 
+         * @static 
+         */ 
+        public static function command($signature, $callback)
+        {            //Method inherited from \Illuminate\Foundation\Console\Kernel         
+                        /** @var \App\Console\Kernel $instance */
+                        return $instance->command($signature, $callback);
+        }
+                    /**
+         * Register the given command with the console application.
+         *
+         * @param \Symfony\Component\Console\Command\Command $command
+         * @return void 
+         * @static 
+         */ 
+        public static function registerCommand($command)
+        {            //Method inherited from \Illuminate\Foundation\Console\Kernel         
+                        /** @var \App\Console\Kernel $instance */
+                        $instance->registerCommand($command);
+        }
+                    /**
+         * Run an Artisan console command by name.
+         *
+         * @param string $command
+         * @param array $parameters
+         * @param \Symfony\Component\Console\Output\OutputInterface|null $outputBuffer
+         * @return int 
+         * @throws \Symfony\Component\Console\Exception\CommandNotFoundException
+         * @static 
+         */ 
+        public static function call($command, $parameters = [], $outputBuffer = null)
+        {            //Method inherited from \Illuminate\Foundation\Console\Kernel         
+                        /** @var \App\Console\Kernel $instance */
+                        return $instance->call($command, $parameters, $outputBuffer);
+        }
+                    /**
+         * Queue the given console command.
+         *
+         * @param string $command
+         * @param array $parameters
+         * @return \Illuminate\Foundation\Bus\PendingDispatch 
+         * @static 
+         */ 
+        public static function queue($command, $parameters = [])
+        {            //Method inherited from \Illuminate\Foundation\Console\Kernel         
+                        /** @var \App\Console\Kernel $instance */
+                        return $instance->queue($command, $parameters);
+        }
+                    /**
+         * Get all of the commands registered with the console.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function all()
+        {            //Method inherited from \Illuminate\Foundation\Console\Kernel         
+                        /** @var \App\Console\Kernel $instance */
+                        return $instance->all();
+        }
+                    /**
+         * Get the output for the last run command.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function output()
+        {            //Method inherited from \Illuminate\Foundation\Console\Kernel         
+                        /** @var \App\Console\Kernel $instance */
+                        return $instance->output();
+        }
+                    /**
+         * Bootstrap the application for artisan commands.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function bootstrap()
+        {            //Method inherited from \Illuminate\Foundation\Console\Kernel         
+                        /** @var \App\Console\Kernel $instance */
+                        $instance->bootstrap();
+        }
+                    /**
+         * Set the Artisan application instance.
+         *
+         * @param \Illuminate\Console\Application $artisan
+         * @return void 
+         * @static 
+         */ 
+        public static function setArtisan($artisan)
+        {            //Method inherited from \Illuminate\Foundation\Console\Kernel         
+                        /** @var \App\Console\Kernel $instance */
+                        $instance->setArtisan($artisan);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Auth\AuthManager
+     * @see \Illuminate\Contracts\Auth\Factory
+     * @see \Illuminate\Contracts\Auth\Guard
+     * @see \Illuminate\Contracts\Auth\StatefulGuard
+     */ 
+        class Auth {
+                    /**
+         * Attempt to get the guard from the local cache.
+         *
+         * @param string|null $name
+         * @return \Illuminate\Contracts\Auth\Guard|\Illuminate\Contracts\Auth\StatefulGuard 
+         * @static 
+         */ 
+        public static function guard($name = null)
+        {
+                        /** @var \Illuminate\Auth\AuthManager $instance */
+                        return $instance->guard($name);
+        }
+                    /**
+         * Create a session based authentication guard.
+         *
+         * @param string $name
+         * @param array $config
+         * @return \Illuminate\Auth\SessionGuard 
+         * @static 
+         */ 
+        public static function createSessionDriver($name, $config)
+        {
+                        /** @var \Illuminate\Auth\AuthManager $instance */
+                        return $instance->createSessionDriver($name, $config);
+        }
+                    /**
+         * Create a token based authentication guard.
+         *
+         * @param string $name
+         * @param array $config
+         * @return \Illuminate\Auth\TokenGuard 
+         * @static 
+         */ 
+        public static function createTokenDriver($name, $config)
+        {
+                        /** @var \Illuminate\Auth\AuthManager $instance */
+                        return $instance->createTokenDriver($name, $config);
+        }
+                    /**
+         * Get the default authentication driver name.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getDefaultDriver()
+        {
+                        /** @var \Illuminate\Auth\AuthManager $instance */
+                        return $instance->getDefaultDriver();
+        }
+                    /**
+         * Set the default guard driver the factory should serve.
+         *
+         * @param string $name
+         * @return void 
+         * @static 
+         */ 
+        public static function shouldUse($name)
+        {
+                        /** @var \Illuminate\Auth\AuthManager $instance */
+                        $instance->shouldUse($name);
+        }
+                    /**
+         * Set the default authentication driver name.
+         *
+         * @param string $name
+         * @return void 
+         * @static 
+         */ 
+        public static function setDefaultDriver($name)
+        {
+                        /** @var \Illuminate\Auth\AuthManager $instance */
+                        $instance->setDefaultDriver($name);
+        }
+                    /**
+         * Register a new callback based request guard.
+         *
+         * @param string $driver
+         * @param callable $callback
+         * @return \Illuminate\Auth\AuthManager 
+         * @static 
+         */ 
+        public static function viaRequest($driver, $callback)
+        {
+                        /** @var \Illuminate\Auth\AuthManager $instance */
+                        return $instance->viaRequest($driver, $callback);
+        }
+                    /**
+         * Get the user resolver callback.
+         *
+         * @return \Closure 
+         * @static 
+         */ 
+        public static function userResolver()
+        {
+                        /** @var \Illuminate\Auth\AuthManager $instance */
+                        return $instance->userResolver();
+        }
+                    /**
+         * Set the callback to be used to resolve users.
+         *
+         * @param \Closure $userResolver
+         * @return \Illuminate\Auth\AuthManager 
+         * @static 
+         */ 
+        public static function resolveUsersUsing($userResolver)
+        {
+                        /** @var \Illuminate\Auth\AuthManager $instance */
+                        return $instance->resolveUsersUsing($userResolver);
+        }
+                    /**
+         * Register a custom driver creator Closure.
+         *
+         * @param string $driver
+         * @param \Closure $callback
+         * @return \Illuminate\Auth\AuthManager 
+         * @static 
+         */ 
+        public static function extend($driver, $callback)
+        {
+                        /** @var \Illuminate\Auth\AuthManager $instance */
+                        return $instance->extend($driver, $callback);
+        }
+                    /**
+         * Register a custom provider creator Closure.
+         *
+         * @param string $name
+         * @param \Closure $callback
+         * @return \Illuminate\Auth\AuthManager 
+         * @static 
+         */ 
+        public static function provider($name, $callback)
+        {
+                        /** @var \Illuminate\Auth\AuthManager $instance */
+                        return $instance->provider($name, $callback);
+        }
+                    /**
+         * Create the user provider implementation for the driver.
+         *
+         * @param string|null $provider
+         * @return \Illuminate\Contracts\Auth\UserProvider|null 
+         * @throws \InvalidArgumentException
+         * @static 
+         */ 
+        public static function createUserProvider($provider = null)
+        {
+                        /** @var \Illuminate\Auth\AuthManager $instance */
+                        return $instance->createUserProvider($provider);
+        }
+                    /**
+         * Get the default user provider name.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getDefaultUserProvider()
+        {
+                        /** @var \Illuminate\Auth\AuthManager $instance */
+                        return $instance->getDefaultUserProvider();
+        }
+                    /**
+         * Get the currently authenticated user.
+         *
+         * @return \App\User|null 
+         * @static 
+         */ 
+        public static function user()
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->user();
+        }
+                    /**
+         * Get the ID for the currently authenticated user.
+         *
+         * @return int|null 
+         * @static 
+         */ 
+        public static function id()
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->id();
+        }
+                    /**
+         * Log a user into the application without sessions or cookies.
+         *
+         * @param array $credentials
+         * @return bool 
+         * @static 
+         */ 
+        public static function once($credentials = [])
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->once($credentials);
+        }
+                    /**
+         * Log the given user ID into the application without sessions or cookies.
+         *
+         * @param mixed $id
+         * @return \App\User|false 
+         * @static 
+         */ 
+        public static function onceUsingId($id)
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->onceUsingId($id);
+        }
+                    /**
+         * Validate a user's credentials.
+         *
+         * @param array $credentials
+         * @return bool 
+         * @static 
+         */ 
+        public static function validate($credentials = [])
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->validate($credentials);
+        }
+                    /**
+         * Attempt to authenticate using HTTP Basic Auth.
+         *
+         * @param string $field
+         * @param array $extraConditions
+         * @return \Symfony\Component\HttpFoundation\Response|null 
+         * @static 
+         */ 
+        public static function basic($field = 'email', $extraConditions = [])
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->basic($field, $extraConditions);
+        }
+                    /**
+         * Perform a stateless HTTP Basic login attempt.
+         *
+         * @param string $field
+         * @param array $extraConditions
+         * @return \Symfony\Component\HttpFoundation\Response|null 
+         * @static 
+         */ 
+        public static function onceBasic($field = 'email', $extraConditions = [])
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->onceBasic($field, $extraConditions);
+        }
+                    /**
+         * Attempt to authenticate a user using the given credentials.
+         *
+         * @param array $credentials
+         * @param bool $remember
+         * @return bool 
+         * @static 
+         */ 
+        public static function attempt($credentials = [], $remember = false)
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->attempt($credentials, $remember);
+        }
+                    /**
+         * Log the given user ID into the application.
+         *
+         * @param mixed $id
+         * @param bool $remember
+         * @return \App\User|false 
+         * @static 
+         */ 
+        public static function loginUsingId($id, $remember = false)
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->loginUsingId($id, $remember);
+        }
+                    /**
+         * Log a user into the application.
+         *
+         * @param \Illuminate\Contracts\Auth\Authenticatable $user
+         * @param bool $remember
+         * @return void 
+         * @static 
+         */ 
+        public static function login($user, $remember = false)
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        $instance->login($user, $remember);
+        }
+                    /**
+         * Log the user out of the application.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function logout()
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        $instance->logout();
+        }
+                    /**
+         * Invalidate other sessions for the current user.
+         * 
+         * The application must be using the AuthenticateSession middleware.
+         *
+         * @param string $password
+         * @param string $attribute
+         * @return bool|null 
+         * @static 
+         */ 
+        public static function logoutOtherDevices($password, $attribute = 'password')
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->logoutOtherDevices($password, $attribute);
+        }
+                    /**
+         * Register an authentication attempt event listener.
+         *
+         * @param mixed $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function attempting($callback)
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        $instance->attempting($callback);
+        }
+                    /**
+         * Get the last user we attempted to authenticate.
+         *
+         * @return \App\User 
+         * @static 
+         */ 
+        public static function getLastAttempted()
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->getLastAttempted();
+        }
+                    /**
+         * Get a unique identifier for the auth session value.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getName()
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->getName();
+        }
+                    /**
+         * Get the name of the cookie used to store the "recaller".
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getRecallerName()
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->getRecallerName();
+        }
+                    /**
+         * Determine if the user was authenticated via "remember me" cookie.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function viaRemember()
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->viaRemember();
+        }
+                    /**
+         * Get the cookie creator instance used by the guard.
+         *
+         * @return \Illuminate\Contracts\Cookie\QueueingFactory 
+         * @throws \RuntimeException
+         * @static 
+         */ 
+        public static function getCookieJar()
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->getCookieJar();
+        }
+                    /**
+         * Set the cookie creator instance used by the guard.
+         *
+         * @param \Illuminate\Contracts\Cookie\QueueingFactory $cookie
+         * @return void 
+         * @static 
+         */ 
+        public static function setCookieJar($cookie)
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        $instance->setCookieJar($cookie);
+        }
+                    /**
+         * Get the event dispatcher instance.
+         *
+         * @return \Illuminate\Contracts\Events\Dispatcher 
+         * @static 
+         */ 
+        public static function getDispatcher()
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->getDispatcher();
+        }
+                    /**
+         * Set the event dispatcher instance.
+         *
+         * @param \Illuminate\Contracts\Events\Dispatcher $events
+         * @return void 
+         * @static 
+         */ 
+        public static function setDispatcher($events)
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        $instance->setDispatcher($events);
+        }
+                    /**
+         * Get the session store used by the guard.
+         *
+         * @return \Illuminate\Contracts\Session\Session 
+         * @static 
+         */ 
+        public static function getSession()
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->getSession();
+        }
+                    /**
+         * Return the currently cached user.
+         *
+         * @return \App\User|null 
+         * @static 
+         */ 
+        public static function getUser()
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->getUser();
+        }
+                    /**
+         * Set the current user.
+         *
+         * @param \Illuminate\Contracts\Auth\Authenticatable $user
+         * @return \Illuminate\Auth\SessionGuard 
+         * @static 
+         */ 
+        public static function setUser($user)
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->setUser($user);
+        }
+                    /**
+         * Get the current request instance.
+         *
+         * @return \Symfony\Component\HttpFoundation\Request 
+         * @static 
+         */ 
+        public static function getRequest()
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->getRequest();
+        }
+                    /**
+         * Set the current request instance.
+         *
+         * @param \Symfony\Component\HttpFoundation\Request $request
+         * @return \Illuminate\Auth\SessionGuard 
+         * @static 
+         */ 
+        public static function setRequest($request)
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->setRequest($request);
+        }
+                    /**
+         * Determine if current user is authenticated. If not, throw an exception.
+         *
+         * @return \App\User 
+         * @throws \Illuminate\Auth\AuthenticationException
+         * @static 
+         */ 
+        public static function authenticate()
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->authenticate();
+        }
+                    /**
+         * Determine if the guard has a user instance.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasUser()
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->hasUser();
+        }
+                    /**
+         * Determine if the current user is authenticated.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function check()
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->check();
+        }
+                    /**
+         * Determine if the current user is a guest.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function guest()
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->guest();
+        }
+                    /**
+         * Get the user provider used by the guard.
+         *
+         * @return \Illuminate\Contracts\Auth\UserProvider 
+         * @static 
+         */ 
+        public static function getProvider()
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        return $instance->getProvider();
+        }
+                    /**
+         * Set the user provider used by the guard.
+         *
+         * @param \Illuminate\Contracts\Auth\UserProvider $provider
+         * @return void 
+         * @static 
+         */ 
+        public static function setProvider($provider)
+        {
+                        /** @var \Illuminate\Auth\SessionGuard $instance */
+                        $instance->setProvider($provider);
+        }
+                    /**
+         * Register a custom macro.
+         *
+         * @param string $name
+         * @param object|callable $macro
+         * @return void 
+         * @static 
+         */ 
+        public static function macro($name, $macro)
+        {
+                        \Illuminate\Auth\SessionGuard::macro($name, $macro);
+        }
+                    /**
+         * Mix another object into the class.
+         *
+         * @param object $mixin
+         * @param bool $replace
+         * @return void 
+         * @throws \ReflectionException
+         * @static 
+         */ 
+        public static function mixin($mixin, $replace = true)
+        {
+                        \Illuminate\Auth\SessionGuard::mixin($mixin, $replace);
+        }
+                    /**
+         * Checks if macro is registered.
+         *
+         * @param string $name
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasMacro($name)
+        {
+                        return \Illuminate\Auth\SessionGuard::hasMacro($name);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\View\Compilers\BladeCompiler
+     */ 
+        class Blade {
+                    /**
+         * Compile the view at the given path.
+         *
+         * @param string|null $path
+         * @return void 
+         * @static 
+         */ 
+        public static function compile($path = null)
+        {
+                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
+                        $instance->compile($path);
+        }
+                    /**
+         * Get the path currently being compiled.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getPath()
+        {
+                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
+                        return $instance->getPath();
+        }
+                    /**
+         * Set the path currently being compiled.
+         *
+         * @param string $path
+         * @return void 
+         * @static 
+         */ 
+        public static function setPath($path)
+        {
+                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
+                        $instance->setPath($path);
+        }
+                    /**
+         * Compile the given Blade template contents.
+         *
+         * @param string $value
+         * @return string 
+         * @static 
+         */ 
+        public static function compileString($value)
+        {
+                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
+                        return $instance->compileString($value);
+        }
+                    /**
+         * Strip the parentheses from the given expression.
+         *
+         * @param string $expression
+         * @return string 
+         * @static 
+         */ 
+        public static function stripParentheses($expression)
+        {
+                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
+                        return $instance->stripParentheses($expression);
+        }
+                    /**
+         * Register a custom Blade compiler.
+         *
+         * @param callable $compiler
+         * @return void 
+         * @static 
+         */ 
+        public static function extend($compiler)
+        {
+                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
+                        $instance->extend($compiler);
+        }
+                    /**
+         * Get the extensions used by the compiler.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getExtensions()
+        {
+                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
+                        return $instance->getExtensions();
+        }
+                    /**
+         * Register an "if" statement directive.
+         *
+         * @param string $name
+         * @param callable $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function if($name, $callback)
+        {
+                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
+                        $instance->if($name, $callback);
+        }
+                    /**
+         * Check the result of a condition.
+         *
+         * @param string $name
+         * @param array $parameters
+         * @return bool 
+         * @static 
+         */ 
+        public static function check($name, ...$parameters)
+        {
+                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
+                        return $instance->check($name, ...$parameters);
+        }
+                    /**
+         * Register a component alias directive.
+         *
+         * @param string $path
+         * @param string|null $alias
+         * @return void 
+         * @static 
+         */ 
+        public static function component($path, $alias = null)
+        {
+                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
+                        $instance->component($path, $alias);
+        }
+                    /**
+         * Register an include alias directive.
+         *
+         * @param string $path
+         * @param string|null $alias
+         * @return void 
+         * @static 
+         */ 
+        public static function include($path, $alias = null)
+        {
+                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
+                        $instance->include($path, $alias);
+        }
+                    /**
+         * Register a handler for custom directives.
+         *
+         * @param string $name
+         * @param callable $handler
+         * @return void 
+         * @static 
+         */ 
+        public static function directive($name, $handler)
+        {
+                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
+                        $instance->directive($name, $handler);
+        }
+                    /**
+         * Get the list of custom directives.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getCustomDirectives()
+        {
+                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
+                        return $instance->getCustomDirectives();
+        }
+                    /**
+         * Set the echo format to be used by the compiler.
+         *
+         * @param string $format
+         * @return void 
+         * @static 
+         */ 
+        public static function setEchoFormat($format)
+        {
+                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
+                        $instance->setEchoFormat($format);
+        }
+                    /**
+         * Set the "echo" format to double encode entities.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function withDoubleEncoding()
+        {
+                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
+                        $instance->withDoubleEncoding();
+        }
+                    /**
+         * Set the "echo" format to not double encode entities.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function withoutDoubleEncoding()
+        {
+                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
+                        $instance->withoutDoubleEncoding();
+        }
+                    /**
+         * Get the path to the compiled version of a view.
+         *
+         * @param string $path
+         * @return string 
+         * @static 
+         */ 
+        public static function getCompiledPath($path)
+        {            //Method inherited from \Illuminate\View\Compilers\Compiler         
+                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
+                        return $instance->getCompiledPath($path);
+        }
+                    /**
+         * Determine if the view at the given path is expired.
+         *
+         * @param string $path
+         * @return bool 
+         * @static 
+         */ 
+        public static function isExpired($path)
+        {            //Method inherited from \Illuminate\View\Compilers\Compiler         
+                        /** @var \Illuminate\View\Compilers\BladeCompiler $instance */
+                        return $instance->isExpired($path);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @method static \Illuminate\Broadcasting\Broadcasters\Broadcaster channel(string $channel, callable|string  $callback)
+     * @method static mixed auth(\Illuminate\Http\Request $request)
+     * @see \Illuminate\Contracts\Broadcasting\Factory
+     */ 
+        class Broadcast {
+                    /**
+         * Register the routes for handling broadcast authentication and sockets.
+         *
+         * @param array|null $attributes
+         * @return void 
+         * @static 
+         */ 
+        public static function routes($attributes = null)
+        {
+                        /** @var \Illuminate\Broadcasting\BroadcastManager $instance */
+                        $instance->routes($attributes);
+        }
+                    /**
+         * Get the socket ID for the given request.
+         *
+         * @param \Illuminate\Http\Request|null $request
+         * @return string|null 
+         * @static 
+         */ 
+        public static function socket($request = null)
+        {
+                        /** @var \Illuminate\Broadcasting\BroadcastManager $instance */
+                        return $instance->socket($request);
+        }
+                    /**
+         * Begin broadcasting an event.
+         *
+         * @param mixed|null $event
+         * @return \Illuminate\Broadcasting\PendingBroadcast|void 
+         * @static 
+         */ 
+        public static function event($event = null)
+        {
+                        /** @var \Illuminate\Broadcasting\BroadcastManager $instance */
+                        return $instance->event($event);
+        }
+                    /**
+         * Queue the given event for broadcast.
+         *
+         * @param mixed $event
+         * @return void 
+         * @static 
+         */ 
+        public static function queue($event)
+        {
+                        /** @var \Illuminate\Broadcasting\BroadcastManager $instance */
+                        $instance->queue($event);
+        }
+                    /**
+         * Get a driver instance.
+         *
+         * @param string|null $driver
+         * @return mixed 
+         * @static 
+         */ 
+        public static function connection($driver = null)
+        {
+                        /** @var \Illuminate\Broadcasting\BroadcastManager $instance */
+                        return $instance->connection($driver);
+        }
+                    /**
+         * Get a driver instance.
+         *
+         * @param string|null $name
+         * @return mixed 
+         * @static 
+         */ 
+        public static function driver($name = null)
+        {
+                        /** @var \Illuminate\Broadcasting\BroadcastManager $instance */
+                        return $instance->driver($name);
+        }
+                    /**
+         * Get the default driver name.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getDefaultDriver()
+        {
+                        /** @var \Illuminate\Broadcasting\BroadcastManager $instance */
+                        return $instance->getDefaultDriver();
+        }
+                    /**
+         * Set the default driver name.
+         *
+         * @param string $name
+         * @return void 
+         * @static 
+         */ 
+        public static function setDefaultDriver($name)
+        {
+                        /** @var \Illuminate\Broadcasting\BroadcastManager $instance */
+                        $instance->setDefaultDriver($name);
+        }
+                    /**
+         * Register a custom driver creator Closure.
+         *
+         * @param string $driver
+         * @param \Closure $callback
+         * @return \Illuminate\Broadcasting\BroadcastManager 
+         * @static 
+         */ 
+        public static function extend($driver, $callback)
+        {
+                        /** @var \Illuminate\Broadcasting\BroadcastManager $instance */
+                        return $instance->extend($driver, $callback);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Contracts\Bus\Dispatcher
+     */ 
+        class Bus {
+                    /**
+         * Dispatch a command to its appropriate handler.
+         *
+         * @param mixed $command
+         * @return mixed 
+         * @static 
+         */ 
+        public static function dispatch($command)
+        {
+                        /** @var \Illuminate\Bus\Dispatcher $instance */
+                        return $instance->dispatch($command);
+        }
+                    /**
+         * Dispatch a command to its appropriate handler in the current process.
+         *
+         * @param mixed $command
+         * @param mixed $handler
+         * @return mixed 
+         * @static 
+         */ 
+        public static function dispatchNow($command, $handler = null)
+        {
+                        /** @var \Illuminate\Bus\Dispatcher $instance */
+                        return $instance->dispatchNow($command, $handler);
+        }
+                    /**
+         * Determine if the given command has a handler.
+         *
+         * @param mixed $command
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasCommandHandler($command)
+        {
+                        /** @var \Illuminate\Bus\Dispatcher $instance */
+                        return $instance->hasCommandHandler($command);
+        }
+                    /**
+         * Retrieve the handler for a command.
+         *
+         * @param mixed $command
+         * @return bool|mixed 
+         * @static 
+         */ 
+        public static function getCommandHandler($command)
+        {
+                        /** @var \Illuminate\Bus\Dispatcher $instance */
+                        return $instance->getCommandHandler($command);
+        }
+                    /**
+         * Dispatch a command to its appropriate handler behind a queue.
+         *
+         * @param mixed $command
+         * @return mixed 
+         * @throws \RuntimeException
+         * @static 
+         */ 
+        public static function dispatchToQueue($command)
+        {
+                        /** @var \Illuminate\Bus\Dispatcher $instance */
+                        return $instance->dispatchToQueue($command);
+        }
+                    /**
+         * Set the pipes through which commands should be piped before dispatching.
+         *
+         * @param array $pipes
+         * @return \Illuminate\Bus\Dispatcher 
+         * @static 
+         */ 
+        public static function pipeThrough($pipes)
+        {
+                        /** @var \Illuminate\Bus\Dispatcher $instance */
+                        return $instance->pipeThrough($pipes);
+        }
+                    /**
+         * Map a command to a handler.
+         *
+         * @param array $map
+         * @return \Illuminate\Bus\Dispatcher 
+         * @static 
+         */ 
+        public static function map($map)
+        {
+                        /** @var \Illuminate\Bus\Dispatcher $instance */
+                        return $instance->map($map);
+        }
+                    /**
+         * Assert if a job was dispatched based on a truth-test callback.
+         *
+         * @param string $command
+         * @param callable|int|null $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function assertDispatched($command, $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */
+                        $instance->assertDispatched($command, $callback);
+        }
+                    /**
+         * Determine if a job was dispatched based on a truth-test callback.
+         *
+         * @param string $command
+         * @param callable|null $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function assertNotDispatched($command, $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */
+                        $instance->assertNotDispatched($command, $callback);
+        }
+                    /**
+         * Get all of the jobs matching a truth-test callback.
+         *
+         * @param string $command
+         * @param callable|null $callback
+         * @return \Illuminate\Support\Collection 
+         * @static 
+         */ 
+        public static function dispatched($command, $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */
+                        return $instance->dispatched($command, $callback);
+        }
+                    /**
+         * Determine if there are any stored commands for a given class.
+         *
+         * @param string $command
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasDispatched($command)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */
+                        return $instance->hasDispatched($command);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Cache\CacheManager
+     * @see \Illuminate\Cache\Repository
+     */ 
+        class Cache {
+                    /**
+         * Get a cache store instance by name, wrapped in a repository.
+         *
+         * @param string|null $name
+         * @return \Illuminate\Contracts\Cache\Repository 
+         * @static 
+         */ 
+        public static function store($name = null)
+        {
+                        /** @var \Illuminate\Cache\CacheManager $instance */
+                        return $instance->store($name);
+        }
+                    /**
+         * Get a cache driver instance.
+         *
+         * @param string|null $driver
+         * @return \Illuminate\Contracts\Cache\Repository 
+         * @static 
+         */ 
+        public static function driver($driver = null)
+        {
+                        /** @var \Illuminate\Cache\CacheManager $instance */
+                        return $instance->driver($driver);
+        }
+                    /**
+         * Create a new cache repository with the given implementation.
+         *
+         * @param \Illuminate\Contracts\Cache\Store $store
+         * @return \Illuminate\Cache\Repository 
+         * @static 
+         */ 
+        public static function repository($store)
+        {
+                        /** @var \Illuminate\Cache\CacheManager $instance */
+                        return $instance->repository($store);
+        }
+                    /**
+         * Get the default cache driver name.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getDefaultDriver()
+        {
+                        /** @var \Illuminate\Cache\CacheManager $instance */
+                        return $instance->getDefaultDriver();
+        }
+                    /**
+         * Set the default cache driver name.
+         *
+         * @param string $name
+         * @return void 
+         * @static 
+         */ 
+        public static function setDefaultDriver($name)
+        {
+                        /** @var \Illuminate\Cache\CacheManager $instance */
+                        $instance->setDefaultDriver($name);
+        }
+                    /**
+         * Unset the given driver instances.
+         *
+         * @param array|string|null $name
+         * @return \Illuminate\Cache\CacheManager 
+         * @static 
+         */ 
+        public static function forgetDriver($name = null)
+        {
+                        /** @var \Illuminate\Cache\CacheManager $instance */
+                        return $instance->forgetDriver($name);
+        }
+                    /**
+         * Register a custom driver creator Closure.
+         *
+         * @param string $driver
+         * @param \Closure $callback
+         * @return \Illuminate\Cache\CacheManager 
+         * @static 
+         */ 
+        public static function extend($driver, $callback)
+        {
+                        /** @var \Illuminate\Cache\CacheManager $instance */
+                        return $instance->extend($driver, $callback);
+        }
+                    /**
+         * Determine if an item exists in the cache.
+         *
+         * @param string $key
+         * @return bool 
+         * @static 
+         */ 
+        public static function has($key)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->has($key);
+        }
+                    /**
+         * Determine if an item doesn't exist in the cache.
+         *
+         * @param string $key
+         * @return bool 
+         * @static 
+         */ 
+        public static function missing($key)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->missing($key);
+        }
+                    /**
+         * Retrieve an item from the cache by key.
+         *
+         * @param string $key
+         * @param mixed $default
+         * @return mixed 
+         * @static 
+         */ 
+        public static function get($key, $default = null)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->get($key, $default);
+        }
+                    /**
+         * Retrieve multiple items from the cache by key.
+         * 
+         * Items not found in the cache will have a null value.
+         *
+         * @param array $keys
+         * @return array 
+         * @static 
+         */ 
+        public static function many($keys)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->many($keys);
+        }
+                    /**
+         * Obtains multiple cache items by their unique keys.
+         *
+         * @param \Psr\SimpleCache\iterable $keys A list of keys that can obtained in a single operation.
+         * @param mixed $default Default value to return for keys that do not exist.
+         * @return \Psr\SimpleCache\iterable A list of key => value pairs. Cache keys that do not exist or are stale will have $default as value.
+         * @throws \Psr\SimpleCache\InvalidArgumentException
+         *   MUST be thrown if $keys is neither an array nor a Traversable,
+         *   or if any of the $keys are not a legal value.
+         * @static 
+         */ 
+        public static function getMultiple($keys, $default = null)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->getMultiple($keys, $default);
+        }
+                    /**
+         * Retrieve an item from the cache and delete it.
+         *
+         * @param string $key
+         * @param mixed $default
+         * @return mixed 
+         * @static 
+         */ 
+        public static function pull($key, $default = null)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->pull($key, $default);
+        }
+                    /**
+         * Store an item in the cache.
+         *
+         * @param string $key
+         * @param mixed $value
+         * @param \DateTimeInterface|\DateInterval|int|null $ttl
+         * @return bool 
+         * @static 
+         */ 
+        public static function put($key, $value, $ttl = null)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->put($key, $value, $ttl);
+        }
+                    /**
+         * Persists data in the cache, uniquely referenced by a key with an optional expiration TTL time.
+         *
+         * @param string $key The key of the item to store.
+         * @param mixed $value The value of the item to store, must be serializable.
+         * @param null|int|\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and
+         *                                      the driver supports TTL then the library may set a default value
+         *                                      for it or let the driver take care of that.
+         * @return bool True on success and false on failure.
+         * @throws \Psr\SimpleCache\InvalidArgumentException
+         *   MUST be thrown if the $key string is not a legal value.
+         * @static 
+         */ 
+        public static function set($key, $value, $ttl = null)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->set($key, $value, $ttl);
+        }
+                    /**
+         * Store multiple items in the cache for a given number of seconds.
+         *
+         * @param array $values
+         * @param \DateTimeInterface|\DateInterval|int|null $ttl
+         * @return bool 
+         * @static 
+         */ 
+        public static function putMany($values, $ttl = null)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->putMany($values, $ttl);
+        }
+                    /**
+         * Persists a set of key => value pairs in the cache, with an optional TTL.
+         *
+         * @param \Psr\SimpleCache\iterable $values A list of key => value pairs for a multiple-set operation.
+         * @param null|int|\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and
+         *                                       the driver supports TTL then the library may set a default value
+         *                                       for it or let the driver take care of that.
+         * @return bool True on success and false on failure.
+         * @throws \Psr\SimpleCache\InvalidArgumentException
+         *   MUST be thrown if $values is neither an array nor a Traversable,
+         *   or if any of the $values are not a legal value.
+         * @static 
+         */ 
+        public static function setMultiple($values, $ttl = null)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->setMultiple($values, $ttl);
+        }
+                    /**
+         * Store an item in the cache if the key does not exist.
+         *
+         * @param string $key
+         * @param mixed $value
+         * @param \DateTimeInterface|\DateInterval|int|null $ttl
+         * @return bool 
+         * @static 
+         */ 
+        public static function add($key, $value, $ttl = null)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->add($key, $value, $ttl);
+        }
+                    /**
+         * Increment the value of an item in the cache.
+         *
+         * @param string $key
+         * @param mixed $value
+         * @return int|bool 
+         * @static 
+         */ 
+        public static function increment($key, $value = 1)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->increment($key, $value);
+        }
+                    /**
+         * Decrement the value of an item in the cache.
+         *
+         * @param string $key
+         * @param mixed $value
+         * @return int|bool 
+         * @static 
+         */ 
+        public static function decrement($key, $value = 1)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->decrement($key, $value);
+        }
+                    /**
+         * Store an item in the cache indefinitely.
+         *
+         * @param string $key
+         * @param mixed $value
+         * @return bool 
+         * @static 
+         */ 
+        public static function forever($key, $value)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->forever($key, $value);
+        }
+                    /**
+         * Get an item from the cache, or execute the given Closure and store the result.
+         *
+         * @param string $key
+         * @param \DateTimeInterface|\DateInterval|int|null $ttl
+         * @param \Closure $callback
+         * @return mixed 
+         * @static 
+         */ 
+        public static function remember($key, $ttl, $callback)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->remember($key, $ttl, $callback);
+        }
+                    /**
+         * Get an item from the cache, or execute the given Closure and store the result forever.
+         *
+         * @param string $key
+         * @param \Closure $callback
+         * @return mixed 
+         * @static 
+         */ 
+        public static function sear($key, $callback)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->sear($key, $callback);
+        }
+                    /**
+         * Get an item from the cache, or execute the given Closure and store the result forever.
+         *
+         * @param string $key
+         * @param \Closure $callback
+         * @return mixed 
+         * @static 
+         */ 
+        public static function rememberForever($key, $callback)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->rememberForever($key, $callback);
+        }
+                    /**
+         * Remove an item from the cache.
+         *
+         * @param string $key
+         * @return bool 
+         * @static 
+         */ 
+        public static function forget($key)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->forget($key);
+        }
+                    /**
+         * Delete an item from the cache by its unique key.
+         *
+         * @param string $key The unique cache key of the item to delete.
+         * @return bool True if the item was successfully removed. False if there was an error.
+         * @throws \Psr\SimpleCache\InvalidArgumentException
+         *   MUST be thrown if the $key string is not a legal value.
+         * @static 
+         */ 
+        public static function delete($key)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->delete($key);
+        }
+                    /**
+         * Deletes multiple cache items in a single operation.
+         *
+         * @param \Psr\SimpleCache\iterable $keys A list of string-based keys to be deleted.
+         * @return bool True if the items were successfully removed. False if there was an error.
+         * @throws \Psr\SimpleCache\InvalidArgumentException
+         *   MUST be thrown if $keys is neither an array nor a Traversable,
+         *   or if any of the $keys are not a legal value.
+         * @static 
+         */ 
+        public static function deleteMultiple($keys)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->deleteMultiple($keys);
+        }
+                    /**
+         * Wipes clean the entire cache's keys.
+         *
+         * @return bool True on success and false on failure.
+         * @static 
+         */ 
+        public static function clear()
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->clear();
+        }
+                    /**
+         * Begin executing a new tags operation if the store supports it.
+         *
+         * @param array|mixed $names
+         * @return \Illuminate\Cache\TaggedCache 
+         * @throws \BadMethodCallException
+         * @static 
+         */ 
+        public static function tags($names)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->tags($names);
+        }
+                    /**
+         * Get the default cache time.
+         *
+         * @return int 
+         * @static 
+         */ 
+        public static function getDefaultCacheTime()
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->getDefaultCacheTime();
+        }
+                    /**
+         * Set the default cache time in seconds.
+         *
+         * @param int|null $seconds
+         * @return \Illuminate\Cache\Repository 
+         * @static 
+         */ 
+        public static function setDefaultCacheTime($seconds)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->setDefaultCacheTime($seconds);
+        }
+                    /**
+         * Get the cache store implementation.
+         *
+         * @return \Illuminate\Contracts\Cache\Store 
+         * @static 
+         */ 
+        public static function getStore()
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->getStore();
+        }
+                    /**
+         * Set the event dispatcher instance.
+         *
+         * @param \Illuminate\Contracts\Events\Dispatcher $events
+         * @return void 
+         * @static 
+         */ 
+        public static function setEventDispatcher($events)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        $instance->setEventDispatcher($events);
+        }
+                    /**
+         * Determine if a cached value exists.
+         *
+         * @param string $key
+         * @return bool 
+         * @static 
+         */ 
+        public static function offsetExists($key)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->offsetExists($key);
+        }
+                    /**
+         * Retrieve an item from the cache by key.
+         *
+         * @param string $key
+         * @return mixed 
+         * @static 
+         */ 
+        public static function offsetGet($key)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->offsetGet($key);
+        }
+                    /**
+         * Store an item in the cache for the default time.
+         *
+         * @param string $key
+         * @param mixed $value
+         * @return void 
+         * @static 
+         */ 
+        public static function offsetSet($key, $value)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        $instance->offsetSet($key, $value);
+        }
+                    /**
+         * Remove an item from the cache.
+         *
+         * @param string $key
+         * @return void 
+         * @static 
+         */ 
+        public static function offsetUnset($key)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        $instance->offsetUnset($key);
+        }
+                    /**
+         * Register a custom macro.
+         *
+         * @param string $name
+         * @param object|callable $macro
+         * @return void 
+         * @static 
+         */ 
+        public static function macro($name, $macro)
+        {
+                        \Illuminate\Cache\Repository::macro($name, $macro);
+        }
+                    /**
+         * Mix another object into the class.
+         *
+         * @param object $mixin
+         * @param bool $replace
+         * @return void 
+         * @throws \ReflectionException
+         * @static 
+         */ 
+        public static function mixin($mixin, $replace = true)
+        {
+                        \Illuminate\Cache\Repository::mixin($mixin, $replace);
+        }
+                    /**
+         * Checks if macro is registered.
+         *
+         * @param string $name
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasMacro($name)
+        {
+                        return \Illuminate\Cache\Repository::hasMacro($name);
+        }
+                    /**
+         * Dynamically handle calls to the class.
+         *
+         * @param string $method
+         * @param array $parameters
+         * @return mixed 
+         * @throws \BadMethodCallException
+         * @static 
+         */ 
+        public static function macroCall($method, $parameters)
+        {
+                        /** @var \Illuminate\Cache\Repository $instance */
+                        return $instance->macroCall($method, $parameters);
+        }
+                    /**
+         * Remove all items from the cache.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function flush()
+        {
+                        /** @var \Illuminate\Cache\FileStore $instance */
+                        return $instance->flush();
+        }
+                    /**
+         * Get the Filesystem instance.
+         *
+         * @return \Illuminate\Filesystem\Filesystem 
+         * @static 
+         */ 
+        public static function getFilesystem()
+        {
+                        /** @var \Illuminate\Cache\FileStore $instance */
+                        return $instance->getFilesystem();
+        }
+                    /**
+         * Get the working directory of the cache.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getDirectory()
+        {
+                        /** @var \Illuminate\Cache\FileStore $instance */
+                        return $instance->getDirectory();
+        }
+                    /**
+         * Get the cache key prefix.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getPrefix()
+        {
+                        /** @var \Illuminate\Cache\FileStore $instance */
+                        return $instance->getPrefix();
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Config\Repository
+     */ 
+        class Config {
+                    /**
+         * Determine if the given configuration value exists.
+         *
+         * @param string $key
+         * @return bool 
+         * @static 
+         */ 
+        public static function has($key)
+        {
+                        /** @var \Illuminate\Config\Repository $instance */
+                        return $instance->has($key);
+        }
+                    /**
+         * Get the specified configuration value.
+         *
+         * @param array|string $key
+         * @param mixed $default
+         * @return mixed 
+         * @static 
+         */ 
+        public static function get($key, $default = null)
+        {
+                        /** @var \Illuminate\Config\Repository $instance */
+                        return $instance->get($key, $default);
+        }
+                    /**
+         * Get many configuration values.
+         *
+         * @param array $keys
+         * @return array 
+         * @static 
+         */ 
+        public static function getMany($keys)
+        {
+                        /** @var \Illuminate\Config\Repository $instance */
+                        return $instance->getMany($keys);
+        }
+                    /**
+         * Set a given configuration value.
+         *
+         * @param array|string $key
+         * @param mixed $value
+         * @return void 
+         * @static 
+         */ 
+        public static function set($key, $value = null)
+        {
+                        /** @var \Illuminate\Config\Repository $instance */
+                        $instance->set($key, $value);
+        }
+                    /**
+         * Prepend a value onto an array configuration value.
+         *
+         * @param string $key
+         * @param mixed $value
+         * @return void 
+         * @static 
+         */ 
+        public static function prepend($key, $value)
+        {
+                        /** @var \Illuminate\Config\Repository $instance */
+                        $instance->prepend($key, $value);
+        }
+                    /**
+         * Push a value onto an array configuration value.
+         *
+         * @param string $key
+         * @param mixed $value
+         * @return void 
+         * @static 
+         */ 
+        public static function push($key, $value)
+        {
+                        /** @var \Illuminate\Config\Repository $instance */
+                        $instance->push($key, $value);
+        }
+                    /**
+         * Get all of the configuration items for the application.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function all()
+        {
+                        /** @var \Illuminate\Config\Repository $instance */
+                        return $instance->all();
+        }
+                    /**
+         * Determine if the given configuration option exists.
+         *
+         * @param string $key
+         * @return bool 
+         * @static 
+         */ 
+        public static function offsetExists($key)
+        {
+                        /** @var \Illuminate\Config\Repository $instance */
+                        return $instance->offsetExists($key);
+        }
+                    /**
+         * Get a configuration option.
+         *
+         * @param string $key
+         * @return mixed 
+         * @static 
+         */ 
+        public static function offsetGet($key)
+        {
+                        /** @var \Illuminate\Config\Repository $instance */
+                        return $instance->offsetGet($key);
+        }
+                    /**
+         * Set a configuration option.
+         *
+         * @param string $key
+         * @param mixed $value
+         * @return void 
+         * @static 
+         */ 
+        public static function offsetSet($key, $value)
+        {
+                        /** @var \Illuminate\Config\Repository $instance */
+                        $instance->offsetSet($key, $value);
+        }
+                    /**
+         * Unset a configuration option.
+         *
+         * @param string $key
+         * @return void 
+         * @static 
+         */ 
+        public static function offsetUnset($key)
+        {
+                        /** @var \Illuminate\Config\Repository $instance */
+                        $instance->offsetUnset($key);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Cookie\CookieJar
+     */ 
+        class Cookie {
+                    /**
+         * Create a new cookie instance.
+         *
+         * @param string $name
+         * @param string $value
+         * @param int $minutes
+         * @param string|null $path
+         * @param string|null $domain
+         * @param bool|null $secure
+         * @param bool $httpOnly
+         * @param bool $raw
+         * @param string|null $sameSite
+         * @return \Symfony\Component\HttpFoundation\Cookie 
+         * @static 
+         */ 
+        public static function make($name, $value, $minutes = 0, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null)
+        {
+                        /** @var \Illuminate\Cookie\CookieJar $instance */
+                        return $instance->make($name, $value, $minutes, $path, $domain, $secure, $httpOnly, $raw, $sameSite);
+        }
+                    /**
+         * Create a cookie that lasts "forever" (five years).
+         *
+         * @param string $name
+         * @param string $value
+         * @param string|null $path
+         * @param string|null $domain
+         * @param bool|null $secure
+         * @param bool $httpOnly
+         * @param bool $raw
+         * @param string|null $sameSite
+         * @return \Symfony\Component\HttpFoundation\Cookie 
+         * @static 
+         */ 
+        public static function forever($name, $value, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null)
+        {
+                        /** @var \Illuminate\Cookie\CookieJar $instance */
+                        return $instance->forever($name, $value, $path, $domain, $secure, $httpOnly, $raw, $sameSite);
+        }
+                    /**
+         * Expire the given cookie.
+         *
+         * @param string $name
+         * @param string|null $path
+         * @param string|null $domain
+         * @return \Symfony\Component\HttpFoundation\Cookie 
+         * @static 
+         */ 
+        public static function forget($name, $path = null, $domain = null)
+        {
+                        /** @var \Illuminate\Cookie\CookieJar $instance */
+                        return $instance->forget($name, $path, $domain);
+        }
+                    /**
+         * Determine if a cookie has been queued.
+         *
+         * @param string $key
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasQueued($key)
+        {
+                        /** @var \Illuminate\Cookie\CookieJar $instance */
+                        return $instance->hasQueued($key);
+        }
+                    /**
+         * Get a queued cookie instance.
+         *
+         * @param string $key
+         * @param mixed $default
+         * @return \Symfony\Component\HttpFoundation\Cookie 
+         * @static 
+         */ 
+        public static function queued($key, $default = null)
+        {
+                        /** @var \Illuminate\Cookie\CookieJar $instance */
+                        return $instance->queued($key, $default);
+        }
+                    /**
+         * Queue a cookie to send with the next response.
+         *
+         * @param array $parameters
+         * @return void 
+         * @static 
+         */ 
+        public static function queue(...$parameters)
+        {
+                        /** @var \Illuminate\Cookie\CookieJar $instance */
+                        $instance->queue(...$parameters);
+        }
+                    /**
+         * Remove a cookie from the queue.
+         *
+         * @param string $name
+         * @return void 
+         * @static 
+         */ 
+        public static function unqueue($name)
+        {
+                        /** @var \Illuminate\Cookie\CookieJar $instance */
+                        $instance->unqueue($name);
+        }
+                    /**
+         * Set the default path and domain for the jar.
+         *
+         * @param string $path
+         * @param string $domain
+         * @param bool $secure
+         * @param string|null $sameSite
+         * @return \Illuminate\Cookie\CookieJar 
+         * @static 
+         */ 
+        public static function setDefaultPathAndDomain($path, $domain, $secure = false, $sameSite = null)
+        {
+                        /** @var \Illuminate\Cookie\CookieJar $instance */
+                        return $instance->setDefaultPathAndDomain($path, $domain, $secure, $sameSite);
+        }
+                    /**
+         * Get the cookies which have been queued for the next request.
+         *
+         * @return \Symfony\Component\HttpFoundation\Cookie[] 
+         * @static 
+         */ 
+        public static function getQueuedCookies()
+        {
+                        /** @var \Illuminate\Cookie\CookieJar $instance */
+                        return $instance->getQueuedCookies();
+        }
+                    /**
+         * Register a custom macro.
+         *
+         * @param string $name
+         * @param object|callable $macro
+         * @return void 
+         * @static 
+         */ 
+        public static function macro($name, $macro)
+        {
+                        \Illuminate\Cookie\CookieJar::macro($name, $macro);
+        }
+                    /**
+         * Mix another object into the class.
+         *
+         * @param object $mixin
+         * @param bool $replace
+         * @return void 
+         * @throws \ReflectionException
+         * @static 
+         */ 
+        public static function mixin($mixin, $replace = true)
+        {
+                        \Illuminate\Cookie\CookieJar::mixin($mixin, $replace);
+        }
+                    /**
+         * Checks if macro is registered.
+         *
+         * @param string $name
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasMacro($name)
+        {
+                        return \Illuminate\Cookie\CookieJar::hasMacro($name);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Encryption\Encrypter
+     */ 
+        class Crypt {
+                    /**
+         * Determine if the given key and cipher combination is valid.
+         *
+         * @param string $key
+         * @param string $cipher
+         * @return bool 
+         * @static 
+         */ 
+        public static function supported($key, $cipher)
+        {
+                        return \Illuminate\Encryption\Encrypter::supported($key, $cipher);
+        }
+                    /**
+         * Create a new encryption key for the given cipher.
+         *
+         * @param string $cipher
+         * @return string 
+         * @static 
+         */ 
+        public static function generateKey($cipher)
+        {
+                        return \Illuminate\Encryption\Encrypter::generateKey($cipher);
+        }
+                    /**
+         * Encrypt the given value.
+         *
+         * @param mixed $value
+         * @param bool $serialize
+         * @return string 
+         * @throws \Illuminate\Contracts\Encryption\EncryptException
+         * @static 
+         */ 
+        public static function encrypt($value, $serialize = true)
+        {
+                        /** @var \Illuminate\Encryption\Encrypter $instance */
+                        return $instance->encrypt($value, $serialize);
+        }
+                    /**
+         * Encrypt a string without serialization.
+         *
+         * @param string $value
+         * @return string 
+         * @throws \Illuminate\Contracts\Encryption\EncryptException
+         * @static 
+         */ 
+        public static function encryptString($value)
+        {
+                        /** @var \Illuminate\Encryption\Encrypter $instance */
+                        return $instance->encryptString($value);
+        }
+                    /**
+         * Decrypt the given value.
+         *
+         * @param string $payload
+         * @param bool $unserialize
+         * @return mixed 
+         * @throws \Illuminate\Contracts\Encryption\DecryptException
+         * @static 
+         */ 
+        public static function decrypt($payload, $unserialize = true)
+        {
+                        /** @var \Illuminate\Encryption\Encrypter $instance */
+                        return $instance->decrypt($payload, $unserialize);
+        }
+                    /**
+         * Decrypt the given string without unserialization.
+         *
+         * @param string $payload
+         * @return string 
+         * @throws \Illuminate\Contracts\Encryption\DecryptException
+         * @static 
+         */ 
+        public static function decryptString($payload)
+        {
+                        /** @var \Illuminate\Encryption\Encrypter $instance */
+                        return $instance->decryptString($payload);
+        }
+                    /**
+         * Get the encryption key.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getKey()
+        {
+                        /** @var \Illuminate\Encryption\Encrypter $instance */
+                        return $instance->getKey();
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Database\DatabaseManager
+     * @see \Illuminate\Database\Connection
+     */ 
+        class DB {
+                    /**
+         * Get a database connection instance.
+         *
+         * @param string|null $name
+         * @return \Illuminate\Database\Connection 
+         * @static 
+         */ 
+        public static function connection($name = null)
+        {
+                        /** @var \Illuminate\Database\DatabaseManager $instance */
+                        return $instance->connection($name);
+        }
+                    /**
+         * Disconnect from the given database and remove from local cache.
+         *
+         * @param string|null $name
+         * @return void 
+         * @static 
+         */ 
+        public static function purge($name = null)
+        {
+                        /** @var \Illuminate\Database\DatabaseManager $instance */
+                        $instance->purge($name);
+        }
+                    /**
+         * Disconnect from the given database.
+         *
+         * @param string|null $name
+         * @return void 
+         * @static 
+         */ 
+        public static function disconnect($name = null)
+        {
+                        /** @var \Illuminate\Database\DatabaseManager $instance */
+                        $instance->disconnect($name);
+        }
+                    /**
+         * Reconnect to the given database.
+         *
+         * @param string|null $name
+         * @return \Illuminate\Database\Connection 
+         * @static 
+         */ 
+        public static function reconnect($name = null)
+        {
+                        /** @var \Illuminate\Database\DatabaseManager $instance */
+                        return $instance->reconnect($name);
+        }
+                    /**
+         * Get the default connection name.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getDefaultConnection()
+        {
+                        /** @var \Illuminate\Database\DatabaseManager $instance */
+                        return $instance->getDefaultConnection();
+        }
+                    /**
+         * Set the default connection name.
+         *
+         * @param string $name
+         * @return void 
+         * @static 
+         */ 
+        public static function setDefaultConnection($name)
+        {
+                        /** @var \Illuminate\Database\DatabaseManager $instance */
+                        $instance->setDefaultConnection($name);
+        }
+                    /**
+         * Get all of the support drivers.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function supportedDrivers()
+        {
+                        /** @var \Illuminate\Database\DatabaseManager $instance */
+                        return $instance->supportedDrivers();
+        }
+                    /**
+         * Get all of the drivers that are actually available.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function availableDrivers()
+        {
+                        /** @var \Illuminate\Database\DatabaseManager $instance */
+                        return $instance->availableDrivers();
+        }
+                    /**
+         * Register an extension connection resolver.
+         *
+         * @param string $name
+         * @param callable $resolver
+         * @return void 
+         * @static 
+         */ 
+        public static function extend($name, $resolver)
+        {
+                        /** @var \Illuminate\Database\DatabaseManager $instance */
+                        $instance->extend($name, $resolver);
+        }
+                    /**
+         * Return all of the created connections.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getConnections()
+        {
+                        /** @var \Illuminate\Database\DatabaseManager $instance */
+                        return $instance->getConnections();
+        }
+                    /**
+         * Set the database reconnector callback.
+         *
+         * @param callable $reconnector
+         * @return void 
+         * @static 
+         */ 
+        public static function setReconnector($reconnector)
+        {
+                        /** @var \Illuminate\Database\DatabaseManager $instance */
+                        $instance->setReconnector($reconnector);
+        }
+                    /**
+         * Get a schema builder instance for the connection.
+         *
+         * @return \Illuminate\Database\Schema\MySqlBuilder 
+         * @static 
+         */ 
+        public static function getSchemaBuilder()
+        {
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->getSchemaBuilder();
+        }
+                    /**
+         * Bind values to their parameters in the given statement.
+         *
+         * @param \PDOStatement $statement
+         * @param array $bindings
+         * @return void 
+         * @static 
+         */ 
+        public static function bindValues($statement, $bindings)
+        {
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        $instance->bindValues($statement, $bindings);
+        }
+                    /**
+         * Set the query grammar to the default implementation.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function useDefaultQueryGrammar()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        $instance->useDefaultQueryGrammar();
+        }
+                    /**
+         * Set the schema grammar to the default implementation.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function useDefaultSchemaGrammar()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        $instance->useDefaultSchemaGrammar();
+        }
+                    /**
+         * Set the query post processor to the default implementation.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function useDefaultPostProcessor()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        $instance->useDefaultPostProcessor();
+        }
+                    /**
+         * Begin a fluent query against a database table.
+         *
+         * @param string $table
+         * @return \Illuminate\Database\Query\Builder 
+         * @static 
+         */ 
+        public static function table($table)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->table($table);
+        }
+                    /**
+         * Get a new query builder instance.
+         *
+         * @return \Illuminate\Database\Query\Builder 
+         * @static 
+         */ 
+        public static function query()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->query();
+        }
+                    /**
+         * Run a select statement and return a single result.
+         *
+         * @param string $query
+         * @param array $bindings
+         * @param bool $useReadPdo
+         * @return mixed 
+         * @static 
+         */ 
+        public static function selectOne($query, $bindings = [], $useReadPdo = true)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->selectOne($query, $bindings, $useReadPdo);
+        }
+                    /**
+         * Run a select statement against the database.
+         *
+         * @param string $query
+         * @param array $bindings
+         * @return array 
+         * @static 
+         */ 
+        public static function selectFromWriteConnection($query, $bindings = [])
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->selectFromWriteConnection($query, $bindings);
+        }
+                    /**
+         * Run a select statement against the database.
+         *
+         * @param string $query
+         * @param array $bindings
+         * @param bool $useReadPdo
+         * @return array 
+         * @static 
+         */ 
+        public static function select($query, $bindings = [], $useReadPdo = true)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->select($query, $bindings, $useReadPdo);
+        }
+                    /**
+         * Run a select statement against the database and returns a generator.
+         *
+         * @param string $query
+         * @param array $bindings
+         * @param bool $useReadPdo
+         * @return \Generator 
+         * @static 
+         */ 
+        public static function cursor($query, $bindings = [], $useReadPdo = true)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->cursor($query, $bindings, $useReadPdo);
+        }
+                    /**
+         * Run an insert statement against the database.
+         *
+         * @param string $query
+         * @param array $bindings
+         * @return bool 
+         * @static 
+         */ 
+        public static function insert($query, $bindings = [])
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->insert($query, $bindings);
+        }
+                    /**
+         * Run an update statement against the database.
+         *
+         * @param string $query
+         * @param array $bindings
+         * @return int 
+         * @static 
+         */ 
+        public static function update($query, $bindings = [])
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->update($query, $bindings);
+        }
+                    /**
+         * Run a delete statement against the database.
+         *
+         * @param string $query
+         * @param array $bindings
+         * @return int 
+         * @static 
+         */ 
+        public static function delete($query, $bindings = [])
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->delete($query, $bindings);
+        }
+                    /**
+         * Execute an SQL statement and return the boolean result.
+         *
+         * @param string $query
+         * @param array $bindings
+         * @return bool 
+         * @static 
+         */ 
+        public static function statement($query, $bindings = [])
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->statement($query, $bindings);
+        }
+                    /**
+         * Run an SQL statement and get the number of rows affected.
+         *
+         * @param string $query
+         * @param array $bindings
+         * @return int 
+         * @static 
+         */ 
+        public static function affectingStatement($query, $bindings = [])
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->affectingStatement($query, $bindings);
+        }
+                    /**
+         * Run a raw, unprepared query against the PDO connection.
+         *
+         * @param string $query
+         * @return bool 
+         * @static 
+         */ 
+        public static function unprepared($query)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->unprepared($query);
+        }
+                    /**
+         * Execute the given callback in "dry run" mode.
+         *
+         * @param \Closure $callback
+         * @return array 
+         * @static 
+         */ 
+        public static function pretend($callback)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->pretend($callback);
+        }
+                    /**
+         * Prepare the query bindings for execution.
+         *
+         * @param array $bindings
+         * @return array 
+         * @static 
+         */ 
+        public static function prepareBindings($bindings)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->prepareBindings($bindings);
+        }
+                    /**
+         * Log a query in the connection's query log.
+         *
+         * @param string $query
+         * @param array $bindings
+         * @param float|null $time
+         * @return void 
+         * @static 
+         */ 
+        public static function logQuery($query, $bindings, $time = null)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        $instance->logQuery($query, $bindings, $time);
+        }
+                    /**
+         * Register a database query listener with the connection.
+         *
+         * @param \Closure $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function listen($callback)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        $instance->listen($callback);
+        }
+                    /**
+         * Get a new raw query expression.
+         *
+         * @param mixed $value
+         * @return \Illuminate\Database\Query\Expression 
+         * @static 
+         */ 
+        public static function raw($value)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->raw($value);
+        }
+                    /**
+         * Indicate if any records have been modified.
+         *
+         * @param bool $value
+         * @return void 
+         * @static 
+         */ 
+        public static function recordsHaveBeenModified($value = true)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        $instance->recordsHaveBeenModified($value);
+        }
+                    /**
+         * Is Doctrine available?
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function isDoctrineAvailable()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->isDoctrineAvailable();
+        }
+                    /**
+         * Get a Doctrine Schema Column instance.
+         *
+         * @param string $table
+         * @param string $column
+         * @return \Doctrine\DBAL\Schema\Column 
+         * @static 
+         */ 
+        public static function getDoctrineColumn($table, $column)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->getDoctrineColumn($table, $column);
+        }
+                    /**
+         * Get the Doctrine DBAL schema manager for the connection.
+         *
+         * @return \Doctrine\DBAL\Schema\AbstractSchemaManager 
+         * @static 
+         */ 
+        public static function getDoctrineSchemaManager()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->getDoctrineSchemaManager();
+        }
+                    /**
+         * Get the Doctrine DBAL database connection instance.
+         *
+         * @return \Doctrine\DBAL\Connection 
+         * @static 
+         */ 
+        public static function getDoctrineConnection()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->getDoctrineConnection();
+        }
+                    /**
+         * Get the current PDO connection.
+         *
+         * @return \PDO 
+         * @static 
+         */ 
+        public static function getPdo()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->getPdo();
+        }
+                    /**
+         * Get the current PDO connection used for reading.
+         *
+         * @return \PDO 
+         * @static 
+         */ 
+        public static function getReadPdo()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->getReadPdo();
+        }
+                    /**
+         * Set the PDO connection.
+         *
+         * @param \PDO|\Closure|null $pdo
+         * @return \Illuminate\Database\MySqlConnection 
+         * @static 
+         */ 
+        public static function setPdo($pdo)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->setPdo($pdo);
+        }
+                    /**
+         * Set the PDO connection used for reading.
+         *
+         * @param \PDO|\Closure|null $pdo
+         * @return \Illuminate\Database\MySqlConnection 
+         * @static 
+         */ 
+        public static function setReadPdo($pdo)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->setReadPdo($pdo);
+        }
+                    /**
+         * Get the database connection name.
+         *
+         * @return string|null 
+         * @static 
+         */ 
+        public static function getName()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->getName();
+        }
+                    /**
+         * Get an option from the configuration options.
+         *
+         * @param string|null $option
+         * @return mixed 
+         * @static 
+         */ 
+        public static function getConfig($option = null)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->getConfig($option);
+        }
+                    /**
+         * Get the PDO driver name.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getDriverName()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->getDriverName();
+        }
+                    /**
+         * Get the query grammar used by the connection.
+         *
+         * @return \Illuminate\Database\Query\Grammars\Grammar 
+         * @static 
+         */ 
+        public static function getQueryGrammar()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->getQueryGrammar();
+        }
+                    /**
+         * Set the query grammar used by the connection.
+         *
+         * @param \Illuminate\Database\Query\Grammars\Grammar $grammar
+         * @return \Illuminate\Database\MySqlConnection 
+         * @static 
+         */ 
+        public static function setQueryGrammar($grammar)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->setQueryGrammar($grammar);
+        }
+                    /**
+         * Get the schema grammar used by the connection.
+         *
+         * @return \Illuminate\Database\Schema\Grammars\Grammar 
+         * @static 
+         */ 
+        public static function getSchemaGrammar()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->getSchemaGrammar();
+        }
+                    /**
+         * Set the schema grammar used by the connection.
+         *
+         * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar
+         * @return \Illuminate\Database\MySqlConnection 
+         * @static 
+         */ 
+        public static function setSchemaGrammar($grammar)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->setSchemaGrammar($grammar);
+        }
+                    /**
+         * Get the query post processor used by the connection.
+         *
+         * @return \Illuminate\Database\Query\Processors\Processor 
+         * @static 
+         */ 
+        public static function getPostProcessor()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->getPostProcessor();
+        }
+                    /**
+         * Set the query post processor used by the connection.
+         *
+         * @param \Illuminate\Database\Query\Processors\Processor $processor
+         * @return \Illuminate\Database\MySqlConnection 
+         * @static 
+         */ 
+        public static function setPostProcessor($processor)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->setPostProcessor($processor);
+        }
+                    /**
+         * Get the event dispatcher used by the connection.
+         *
+         * @return \Illuminate\Contracts\Events\Dispatcher 
+         * @static 
+         */ 
+        public static function getEventDispatcher()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->getEventDispatcher();
+        }
+                    /**
+         * Set the event dispatcher instance on the connection.
+         *
+         * @param \Illuminate\Contracts\Events\Dispatcher $events
+         * @return \Illuminate\Database\MySqlConnection 
+         * @static 
+         */ 
+        public static function setEventDispatcher($events)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->setEventDispatcher($events);
+        }
+                    /**
+         * Unset the event dispatcher for this connection.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function unsetEventDispatcher()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        $instance->unsetEventDispatcher();
+        }
+                    /**
+         * Determine if the connection is in a "dry run".
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function pretending()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->pretending();
+        }
+                    /**
+         * Get the connection query log.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getQueryLog()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->getQueryLog();
+        }
+                    /**
+         * Clear the query log.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function flushQueryLog()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        $instance->flushQueryLog();
+        }
+                    /**
+         * Enable the query log on the connection.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function enableQueryLog()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        $instance->enableQueryLog();
+        }
+                    /**
+         * Disable the query log on the connection.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function disableQueryLog()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        $instance->disableQueryLog();
+        }
+                    /**
+         * Determine whether we're logging queries.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function logging()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->logging();
+        }
+                    /**
+         * Get the name of the connected database.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getDatabaseName()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->getDatabaseName();
+        }
+                    /**
+         * Set the name of the connected database.
+         *
+         * @param string $database
+         * @return \Illuminate\Database\MySqlConnection 
+         * @static 
+         */ 
+        public static function setDatabaseName($database)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->setDatabaseName($database);
+        }
+                    /**
+         * Get the table prefix for the connection.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getTablePrefix()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->getTablePrefix();
+        }
+                    /**
+         * Set the table prefix in use by the connection.
+         *
+         * @param string $prefix
+         * @return \Illuminate\Database\MySqlConnection 
+         * @static 
+         */ 
+        public static function setTablePrefix($prefix)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->setTablePrefix($prefix);
+        }
+                    /**
+         * Set the table prefix and return the grammar.
+         *
+         * @param \Illuminate\Database\Grammar $grammar
+         * @return \Illuminate\Database\Grammar 
+         * @static 
+         */ 
+        public static function withTablePrefix($grammar)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->withTablePrefix($grammar);
+        }
+                    /**
+         * Register a connection resolver.
+         *
+         * @param string $driver
+         * @param \Closure $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function resolverFor($driver, $callback)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        \Illuminate\Database\MySqlConnection::resolverFor($driver, $callback);
+        }
+                    /**
+         * Get the connection resolver for the given driver.
+         *
+         * @param string $driver
+         * @return mixed 
+         * @static 
+         */ 
+        public static function getResolver($driver)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        return \Illuminate\Database\MySqlConnection::getResolver($driver);
+        }
+                    /**
+         * Execute a Closure within a transaction.
+         *
+         * @param \Closure $callback
+         * @param int $attempts
+         * @return mixed 
+         * @throws \Exception|\Throwable
+         * @static 
+         */ 
+        public static function transaction($callback, $attempts = 1)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->transaction($callback, $attempts);
+        }
+                    /**
+         * Start a new database transaction.
+         *
+         * @return void 
+         * @throws \Exception
+         * @static 
+         */ 
+        public static function beginTransaction()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        $instance->beginTransaction();
+        }
+                    /**
+         * Commit the active database transaction.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function commit()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        $instance->commit();
+        }
+                    /**
+         * Rollback the active database transaction.
+         *
+         * @param int|null $toLevel
+         * @return void 
+         * @throws \Exception
+         * @static 
+         */ 
+        public static function rollBack($toLevel = null)
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        $instance->rollBack($toLevel);
+        }
+                    /**
+         * Get the number of active transactions.
+         *
+         * @return int 
+         * @static 
+         */ 
+        public static function transactionLevel()
+        {            //Method inherited from \Illuminate\Database\Connection         
+                        /** @var \Illuminate\Database\MySqlConnection $instance */
+                        return $instance->transactionLevel();
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Events\Dispatcher
+     */ 
+        class Event {
+                    /**
+         * Register an event listener with the dispatcher.
+         *
+         * @param string|array $events
+         * @param mixed $listener
+         * @return void 
+         * @static 
+         */ 
+        public static function listen($events, $listener)
+        {
+                        /** @var \Illuminate\Events\Dispatcher $instance */
+                        $instance->listen($events, $listener);
+        }
+                    /**
+         * Determine if a given event has listeners.
+         *
+         * @param string $eventName
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasListeners($eventName)
+        {
+                        /** @var \Illuminate\Events\Dispatcher $instance */
+                        return $instance->hasListeners($eventName);
+        }
+                    /**
+         * Register an event and payload to be fired later.
+         *
+         * @param string $event
+         * @param array $payload
+         * @return void 
+         * @static 
+         */ 
+        public static function push($event, $payload = [])
+        {
+                        /** @var \Illuminate\Events\Dispatcher $instance */
+                        $instance->push($event, $payload);
+        }
+                    /**
+         * Flush a set of pushed events.
+         *
+         * @param string $event
+         * @return void 
+         * @static 
+         */ 
+        public static function flush($event)
+        {
+                        /** @var \Illuminate\Events\Dispatcher $instance */
+                        $instance->flush($event);
+        }
+                    /**
+         * Register an event subscriber with the dispatcher.
+         *
+         * @param object|string $subscriber
+         * @return void 
+         * @static 
+         */ 
+        public static function subscribe($subscriber)
+        {
+                        /** @var \Illuminate\Events\Dispatcher $instance */
+                        $instance->subscribe($subscriber);
+        }
+                    /**
+         * Fire an event until the first non-null response is returned.
+         *
+         * @param string|object $event
+         * @param mixed $payload
+         * @return array|null 
+         * @static 
+         */ 
+        public static function until($event, $payload = [])
+        {
+                        /** @var \Illuminate\Events\Dispatcher $instance */
+                        return $instance->until($event, $payload);
+        }
+                    /**
+         * Fire an event and call the listeners.
+         *
+         * @param string|object $event
+         * @param mixed $payload
+         * @param bool $halt
+         * @return array|null 
+         * @static 
+         */ 
+        public static function dispatch($event, $payload = [], $halt = false)
+        {
+                        /** @var \Illuminate\Events\Dispatcher $instance */
+                        return $instance->dispatch($event, $payload, $halt);
+        }
+                    /**
+         * Get all of the listeners for a given event name.
+         *
+         * @param string $eventName
+         * @return array 
+         * @static 
+         */ 
+        public static function getListeners($eventName)
+        {
+                        /** @var \Illuminate\Events\Dispatcher $instance */
+                        return $instance->getListeners($eventName);
+        }
+                    /**
+         * Register an event listener with the dispatcher.
+         *
+         * @param \Closure|string $listener
+         * @param bool $wildcard
+         * @return \Closure 
+         * @static 
+         */ 
+        public static function makeListener($listener, $wildcard = false)
+        {
+                        /** @var \Illuminate\Events\Dispatcher $instance */
+                        return $instance->makeListener($listener, $wildcard);
+        }
+                    /**
+         * Create a class based listener using the IoC container.
+         *
+         * @param string $listener
+         * @param bool $wildcard
+         * @return \Closure 
+         * @static 
+         */ 
+        public static function createClassListener($listener, $wildcard = false)
+        {
+                        /** @var \Illuminate\Events\Dispatcher $instance */
+                        return $instance->createClassListener($listener, $wildcard);
+        }
+                    /**
+         * Remove a set of listeners from the dispatcher.
+         *
+         * @param string $event
+         * @return void 
+         * @static 
+         */ 
+        public static function forget($event)
+        {
+                        /** @var \Illuminate\Events\Dispatcher $instance */
+                        $instance->forget($event);
+        }
+                    /**
+         * Forget all of the pushed listeners.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function forgetPushed()
+        {
+                        /** @var \Illuminate\Events\Dispatcher $instance */
+                        $instance->forgetPushed();
+        }
+                    /**
+         * Set the queue resolver implementation.
+         *
+         * @param callable $resolver
+         * @return \Illuminate\Events\Dispatcher 
+         * @static 
+         */ 
+        public static function setQueueResolver($resolver)
+        {
+                        /** @var \Illuminate\Events\Dispatcher $instance */
+                        return $instance->setQueueResolver($resolver);
+        }
+                    /**
+         * Assert if an event was dispatched based on a truth-test callback.
+         *
+         * @param string $event
+         * @param callable|int|null $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function assertDispatched($event, $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */
+                        $instance->assertDispatched($event, $callback);
+        }
+                    /**
+         * Assert if a event was dispatched a number of times.
+         *
+         * @param string $event
+         * @param int $times
+         * @return void 
+         * @static 
+         */ 
+        public static function assertDispatchedTimes($event, $times = 1)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */
+                        $instance->assertDispatchedTimes($event, $times);
+        }
+                    /**
+         * Determine if an event was dispatched based on a truth-test callback.
+         *
+         * @param string $event
+         * @param callable|null $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function assertNotDispatched($event, $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */
+                        $instance->assertNotDispatched($event, $callback);
+        }
+                    /**
+         * Get all of the events matching a truth-test callback.
+         *
+         * @param string $event
+         * @param callable|null $callback
+         * @return \Illuminate\Support\Collection 
+         * @static 
+         */ 
+        public static function dispatched($event, $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */
+                        return $instance->dispatched($event, $callback);
+        }
+                    /**
+         * Determine if the given event has been dispatched.
+         *
+         * @param string $event
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasDispatched($event)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */
+                        return $instance->hasDispatched($event);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Filesystem\Filesystem
+     */ 
+        class File {
+                    /**
+         * Determine if a file or directory exists.
+         *
+         * @param string $path
+         * @return bool 
+         * @static 
+         */ 
+        public static function exists($path)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->exists($path);
+        }
+                    /**
+         * Get the contents of a file.
+         *
+         * @param string $path
+         * @param bool $lock
+         * @return string 
+         * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
+         * @static 
+         */ 
+        public static function get($path, $lock = false)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->get($path, $lock);
+        }
+                    /**
+         * Get contents of a file with shared access.
+         *
+         * @param string $path
+         * @return string 
+         * @static 
+         */ 
+        public static function sharedGet($path)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->sharedGet($path);
+        }
+                    /**
+         * Get the returned value of a file.
+         *
+         * @param string $path
+         * @return mixed 
+         * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
+         * @static 
+         */ 
+        public static function getRequire($path)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->getRequire($path);
+        }
+                    /**
+         * Require the given file once.
+         *
+         * @param string $file
+         * @return mixed 
+         * @static 
+         */ 
+        public static function requireOnce($file)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->requireOnce($file);
+        }
+                    /**
+         * Get the MD5 hash of the file at the given path.
+         *
+         * @param string $path
+         * @return string 
+         * @static 
+         */ 
+        public static function hash($path)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->hash($path);
+        }
+                    /**
+         * Write the contents of a file.
+         *
+         * @param string $path
+         * @param string $contents
+         * @param bool $lock
+         * @return int|bool 
+         * @static 
+         */ 
+        public static function put($path, $contents, $lock = false)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->put($path, $contents, $lock);
+        }
+                    /**
+         * Write the contents of a file, replacing it atomically if it already exists.
+         *
+         * @param string $path
+         * @param string $content
+         * @return void 
+         * @static 
+         */ 
+        public static function replace($path, $content)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        $instance->replace($path, $content);
+        }
+                    /**
+         * Prepend to a file.
+         *
+         * @param string $path
+         * @param string $data
+         * @return int 
+         * @static 
+         */ 
+        public static function prepend($path, $data)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->prepend($path, $data);
+        }
+                    /**
+         * Append to a file.
+         *
+         * @param string $path
+         * @param string $data
+         * @return int 
+         * @static 
+         */ 
+        public static function append($path, $data)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->append($path, $data);
+        }
+                    /**
+         * Get or set UNIX mode of a file or directory.
+         *
+         * @param string $path
+         * @param int|null $mode
+         * @return mixed 
+         * @static 
+         */ 
+        public static function chmod($path, $mode = null)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->chmod($path, $mode);
+        }
+                    /**
+         * Delete the file at a given path.
+         *
+         * @param string|array $paths
+         * @return bool 
+         * @static 
+         */ 
+        public static function delete($paths)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->delete($paths);
+        }
+                    /**
+         * Move a file to a new location.
+         *
+         * @param string $path
+         * @param string $target
+         * @return bool 
+         * @static 
+         */ 
+        public static function move($path, $target)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->move($path, $target);
+        }
+                    /**
+         * Copy a file to a new location.
+         *
+         * @param string $path
+         * @param string $target
+         * @return bool 
+         * @static 
+         */ 
+        public static function copy($path, $target)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->copy($path, $target);
+        }
+                    /**
+         * Create a hard link to the target file or directory.
+         *
+         * @param string $target
+         * @param string $link
+         * @return void 
+         * @static 
+         */ 
+        public static function link($target, $link)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        $instance->link($target, $link);
+        }
+                    /**
+         * Extract the file name from a file path.
+         *
+         * @param string $path
+         * @return string 
+         * @static 
+         */ 
+        public static function name($path)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->name($path);
+        }
+                    /**
+         * Extract the trailing name component from a file path.
+         *
+         * @param string $path
+         * @return string 
+         * @static 
+         */ 
+        public static function basename($path)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->basename($path);
+        }
+                    /**
+         * Extract the parent directory from a file path.
+         *
+         * @param string $path
+         * @return string 
+         * @static 
+         */ 
+        public static function dirname($path)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->dirname($path);
+        }
+                    /**
+         * Extract the file extension from a file path.
+         *
+         * @param string $path
+         * @return string 
+         * @static 
+         */ 
+        public static function extension($path)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->extension($path);
+        }
+                    /**
+         * Get the file type of a given file.
+         *
+         * @param string $path
+         * @return string 
+         * @static 
+         */ 
+        public static function type($path)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->type($path);
+        }
+                    /**
+         * Get the mime-type of a given file.
+         *
+         * @param string $path
+         * @return string|false 
+         * @static 
+         */ 
+        public static function mimeType($path)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->mimeType($path);
+        }
+                    /**
+         * Get the file size of a given file.
+         *
+         * @param string $path
+         * @return int 
+         * @static 
+         */ 
+        public static function size($path)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->size($path);
+        }
+                    /**
+         * Get the file's last modification time.
+         *
+         * @param string $path
+         * @return int 
+         * @static 
+         */ 
+        public static function lastModified($path)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->lastModified($path);
+        }
+                    /**
+         * Determine if the given path is a directory.
+         *
+         * @param string $directory
+         * @return bool 
+         * @static 
+         */ 
+        public static function isDirectory($directory)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->isDirectory($directory);
+        }
+                    /**
+         * Determine if the given path is readable.
+         *
+         * @param string $path
+         * @return bool 
+         * @static 
+         */ 
+        public static function isReadable($path)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->isReadable($path);
+        }
+                    /**
+         * Determine if the given path is writable.
+         *
+         * @param string $path
+         * @return bool 
+         * @static 
+         */ 
+        public static function isWritable($path)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->isWritable($path);
+        }
+                    /**
+         * Determine if the given path is a file.
+         *
+         * @param string $file
+         * @return bool 
+         * @static 
+         */ 
+        public static function isFile($file)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->isFile($file);
+        }
+                    /**
+         * Find path names matching a given pattern.
+         *
+         * @param string $pattern
+         * @param int $flags
+         * @return array 
+         * @static 
+         */ 
+        public static function glob($pattern, $flags = 0)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->glob($pattern, $flags);
+        }
+                    /**
+         * Get an array of all files in a directory.
+         *
+         * @param string $directory
+         * @param bool $hidden
+         * @return \Symfony\Component\Finder\SplFileInfo[] 
+         * @static 
+         */ 
+        public static function files($directory, $hidden = false)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->files($directory, $hidden);
+        }
+                    /**
+         * Get all of the files from the given directory (recursive).
+         *
+         * @param string $directory
+         * @param bool $hidden
+         * @return \Symfony\Component\Finder\SplFileInfo[] 
+         * @static 
+         */ 
+        public static function allFiles($directory, $hidden = false)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->allFiles($directory, $hidden);
+        }
+                    /**
+         * Get all of the directories within a given directory.
+         *
+         * @param string $directory
+         * @return array 
+         * @static 
+         */ 
+        public static function directories($directory)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->directories($directory);
+        }
+                    /**
+         * Create a directory.
+         *
+         * @param string $path
+         * @param int $mode
+         * @param bool $recursive
+         * @param bool $force
+         * @return bool 
+         * @static 
+         */ 
+        public static function makeDirectory($path, $mode = 493, $recursive = false, $force = false)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->makeDirectory($path, $mode, $recursive, $force);
+        }
+                    /**
+         * Move a directory.
+         *
+         * @param string $from
+         * @param string $to
+         * @param bool $overwrite
+         * @return bool 
+         * @static 
+         */ 
+        public static function moveDirectory($from, $to, $overwrite = false)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->moveDirectory($from, $to, $overwrite);
+        }
+                    /**
+         * Copy a directory from one location to another.
+         *
+         * @param string $directory
+         * @param string $destination
+         * @param int|null $options
+         * @return bool 
+         * @static 
+         */ 
+        public static function copyDirectory($directory, $destination, $options = null)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->copyDirectory($directory, $destination, $options);
+        }
+                    /**
+         * Recursively delete a directory.
+         * 
+         * The directory itself may be optionally preserved.
+         *
+         * @param string $directory
+         * @param bool $preserve
+         * @return bool 
+         * @static 
+         */ 
+        public static function deleteDirectory($directory, $preserve = false)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->deleteDirectory($directory, $preserve);
+        }
+                    /**
+         * Remove all of the directories within a given directory.
+         *
+         * @param string $directory
+         * @return bool 
+         * @static 
+         */ 
+        public static function deleteDirectories($directory)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->deleteDirectories($directory);
+        }
+                    /**
+         * Empty the specified directory of all files and folders.
+         *
+         * @param string $directory
+         * @return bool 
+         * @static 
+         */ 
+        public static function cleanDirectory($directory)
+        {
+                        /** @var \Illuminate\Filesystem\Filesystem $instance */
+                        return $instance->cleanDirectory($directory);
+        }
+                    /**
+         * Register a custom macro.
+         *
+         * @param string $name
+         * @param object|callable $macro
+         * @return void 
+         * @static 
+         */ 
+        public static function macro($name, $macro)
+        {
+                        \Illuminate\Filesystem\Filesystem::macro($name, $macro);
+        }
+                    /**
+         * Mix another object into the class.
+         *
+         * @param object $mixin
+         * @param bool $replace
+         * @return void 
+         * @throws \ReflectionException
+         * @static 
+         */ 
+        public static function mixin($mixin, $replace = true)
+        {
+                        \Illuminate\Filesystem\Filesystem::mixin($mixin, $replace);
+        }
+                    /**
+         * Checks if macro is registered.
+         *
+         * @param string $name
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasMacro($name)
+        {
+                        return \Illuminate\Filesystem\Filesystem::hasMacro($name);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Contracts\Auth\Access\Gate
+     */ 
+        class Gate {
+                    /**
+         * Determine if a given ability has been defined.
+         *
+         * @param string|array $ability
+         * @return bool 
+         * @static 
+         */ 
+        public static function has($ability)
+        {
+                        /** @var \Illuminate\Auth\Access\Gate $instance */
+                        return $instance->has($ability);
+        }
+                    /**
+         * Define a new ability.
+         *
+         * @param string $ability
+         * @param callable|string $callback
+         * @return \Illuminate\Auth\Access\Gate 
+         * @throws \InvalidArgumentException
+         * @static 
+         */ 
+        public static function define($ability, $callback)
+        {
+                        /** @var \Illuminate\Auth\Access\Gate $instance */
+                        return $instance->define($ability, $callback);
+        }
+                    /**
+         * Define abilities for a resource.
+         *
+         * @param string $name
+         * @param string $class
+         * @param array|null $abilities
+         * @return \Illuminate\Auth\Access\Gate 
+         * @static 
+         */ 
+        public static function resource($name, $class, $abilities = null)
+        {
+                        /** @var \Illuminate\Auth\Access\Gate $instance */
+                        return $instance->resource($name, $class, $abilities);
+        }
+                    /**
+         * Define a policy class for a given class type.
+         *
+         * @param string $class
+         * @param string $policy
+         * @return \Illuminate\Auth\Access\Gate 
+         * @static 
+         */ 
+        public static function policy($class, $policy)
+        {
+                        /** @var \Illuminate\Auth\Access\Gate $instance */
+                        return $instance->policy($class, $policy);
+        }
+                    /**
+         * Register a callback to run before all Gate checks.
+         *
+         * @param callable $callback
+         * @return \Illuminate\Auth\Access\Gate 
+         * @static 
+         */ 
+        public static function before($callback)
+        {
+                        /** @var \Illuminate\Auth\Access\Gate $instance */
+                        return $instance->before($callback);
+        }
+                    /**
+         * Register a callback to run after all Gate checks.
+         *
+         * @param callable $callback
+         * @return \Illuminate\Auth\Access\Gate 
+         * @static 
+         */ 
+        public static function after($callback)
+        {
+                        /** @var \Illuminate\Auth\Access\Gate $instance */
+                        return $instance->after($callback);
+        }
+                    /**
+         * Determine if the given ability should be granted for the current user.
+         *
+         * @param string $ability
+         * @param array|mixed $arguments
+         * @return bool 
+         * @static 
+         */ 
+        public static function allows($ability, $arguments = [])
+        {
+                        /** @var \Illuminate\Auth\Access\Gate $instance */
+                        return $instance->allows($ability, $arguments);
+        }
+                    /**
+         * Determine if the given ability should be denied for the current user.
+         *
+         * @param string $ability
+         * @param array|mixed $arguments
+         * @return bool 
+         * @static 
+         */ 
+        public static function denies($ability, $arguments = [])
+        {
+                        /** @var \Illuminate\Auth\Access\Gate $instance */
+                        return $instance->denies($ability, $arguments);
+        }
+                    /**
+         * Determine if all of the given abilities should be granted for the current user.
+         *
+         * @param \Illuminate\Auth\Access\iterable|string $abilities
+         * @param array|mixed $arguments
+         * @return bool 
+         * @static 
+         */ 
+        public static function check($abilities, $arguments = [])
+        {
+                        /** @var \Illuminate\Auth\Access\Gate $instance */
+                        return $instance->check($abilities, $arguments);
+        }
+                    /**
+         * Determine if any one of the given abilities should be granted for the current user.
+         *
+         * @param \Illuminate\Auth\Access\iterable|string $abilities
+         * @param array|mixed $arguments
+         * @return bool 
+         * @static 
+         */ 
+        public static function any($abilities, $arguments = [])
+        {
+                        /** @var \Illuminate\Auth\Access\Gate $instance */
+                        return $instance->any($abilities, $arguments);
+        }
+                    /**
+         * Determine if all of the given abilities should be denied for the current user.
+         *
+         * @param \Illuminate\Auth\Access\iterable|string $abilities
+         * @param array|mixed $arguments
+         * @return bool 
+         * @static 
+         */ 
+        public static function none($abilities, $arguments = [])
+        {
+                        /** @var \Illuminate\Auth\Access\Gate $instance */
+                        return $instance->none($abilities, $arguments);
+        }
+                    /**
+         * Determine if the given ability should be granted for the current user.
+         *
+         * @param string $ability
+         * @param array|mixed $arguments
+         * @return \Illuminate\Auth\Access\Response 
+         * @throws \Illuminate\Auth\Access\AuthorizationException
+         * @static 
+         */ 
+        public static function authorize($ability, $arguments = [])
+        {
+                        /** @var \Illuminate\Auth\Access\Gate $instance */
+                        return $instance->authorize($ability, $arguments);
+        }
+                    /**
+         * Get the raw result from the authorization callback.
+         *
+         * @param string $ability
+         * @param array|mixed $arguments
+         * @return mixed 
+         * @static 
+         */ 
+        public static function raw($ability, $arguments = [])
+        {
+                        /** @var \Illuminate\Auth\Access\Gate $instance */
+                        return $instance->raw($ability, $arguments);
+        }
+                    /**
+         * Get a policy instance for a given class.
+         *
+         * @param object|string $class
+         * @return mixed 
+         * @static 
+         */ 
+        public static function getPolicyFor($class)
+        {
+                        /** @var \Illuminate\Auth\Access\Gate $instance */
+                        return $instance->getPolicyFor($class);
+        }
+                    /**
+         * Specify a callback to be used to guess policy names.
+         *
+         * @param callable $callback
+         * @return \Illuminate\Auth\Access\Gate 
+         * @static 
+         */ 
+        public static function guessPolicyNamesUsing($callback)
+        {
+                        /** @var \Illuminate\Auth\Access\Gate $instance */
+                        return $instance->guessPolicyNamesUsing($callback);
+        }
+                    /**
+         * Build a policy class instance of the given type.
+         *
+         * @param object|string $class
+         * @return mixed 
+         * @throws \Illuminate\Contracts\Container\BindingResolutionException
+         * @static 
+         */ 
+        public static function resolvePolicy($class)
+        {
+                        /** @var \Illuminate\Auth\Access\Gate $instance */
+                        return $instance->resolvePolicy($class);
+        }
+                    /**
+         * Get a gate instance for the given user.
+         *
+         * @param \Illuminate\Contracts\Auth\Authenticatable|mixed $user
+         * @return static 
+         * @static 
+         */ 
+        public static function forUser($user)
+        {
+                        /** @var \Illuminate\Auth\Access\Gate $instance */
+                        return $instance->forUser($user);
+        }
+                    /**
+         * Get all of the defined abilities.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function abilities()
+        {
+                        /** @var \Illuminate\Auth\Access\Gate $instance */
+                        return $instance->abilities();
+        }
+                    /**
+         * Get all of the defined policies.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function policies()
+        {
+                        /** @var \Illuminate\Auth\Access\Gate $instance */
+                        return $instance->policies();
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Hashing\HashManager
+     */ 
+        class Hash {
+                    /**
+         * Create an instance of the Bcrypt hash Driver.
+         *
+         * @return \Illuminate\Hashing\BcryptHasher 
+         * @static 
+         */ 
+        public static function createBcryptDriver()
+        {
+                        /** @var \Illuminate\Hashing\HashManager $instance */
+                        return $instance->createBcryptDriver();
+        }
+                    /**
+         * Create an instance of the Argon2i hash Driver.
+         *
+         * @return \Illuminate\Hashing\ArgonHasher 
+         * @static 
+         */ 
+        public static function createArgonDriver()
+        {
+                        /** @var \Illuminate\Hashing\HashManager $instance */
+                        return $instance->createArgonDriver();
+        }
+                    /**
+         * Create an instance of the Argon2id hash Driver.
+         *
+         * @return \Illuminate\Hashing\Argon2IdHasher 
+         * @static 
+         */ 
+        public static function createArgon2idDriver()
+        {
+                        /** @var \Illuminate\Hashing\HashManager $instance */
+                        return $instance->createArgon2idDriver();
+        }
+                    /**
+         * Get information about the given hashed value.
+         *
+         * @param string $hashedValue
+         * @return array 
+         * @static 
+         */ 
+        public static function info($hashedValue)
+        {
+                        /** @var \Illuminate\Hashing\HashManager $instance */
+                        return $instance->info($hashedValue);
+        }
+                    /**
+         * Hash the given value.
+         *
+         * @param string $value
+         * @param array $options
+         * @return string 
+         * @static 
+         */ 
+        public static function make($value, $options = [])
+        {
+                        /** @var \Illuminate\Hashing\HashManager $instance */
+                        return $instance->make($value, $options);
+        }
+                    /**
+         * Check the given plain value against a hash.
+         *
+         * @param string $value
+         * @param string $hashedValue
+         * @param array $options
+         * @return bool 
+         * @static 
+         */ 
+        public static function check($value, $hashedValue, $options = [])
+        {
+                        /** @var \Illuminate\Hashing\HashManager $instance */
+                        return $instance->check($value, $hashedValue, $options);
+        }
+                    /**
+         * Check if the given hash has been hashed using the given options.
+         *
+         * @param string $hashedValue
+         * @param array $options
+         * @return bool 
+         * @static 
+         */ 
+        public static function needsRehash($hashedValue, $options = [])
+        {
+                        /** @var \Illuminate\Hashing\HashManager $instance */
+                        return $instance->needsRehash($hashedValue, $options);
+        }
+                    /**
+         * Get the default driver name.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getDefaultDriver()
+        {
+                        /** @var \Illuminate\Hashing\HashManager $instance */
+                        return $instance->getDefaultDriver();
+        }
+                    /**
+         * Get a driver instance.
+         *
+         * @param string $driver
+         * @return mixed 
+         * @throws \InvalidArgumentException
+         * @static 
+         */ 
+        public static function driver($driver = null)
+        {            //Method inherited from \Illuminate\Support\Manager         
+                        /** @var \Illuminate\Hashing\HashManager $instance */
+                        return $instance->driver($driver);
+        }
+                    /**
+         * Register a custom driver creator Closure.
+         *
+         * @param string $driver
+         * @param \Closure $callback
+         * @return \Illuminate\Hashing\HashManager 
+         * @static 
+         */ 
+        public static function extend($driver, $callback)
+        {            //Method inherited from \Illuminate\Support\Manager         
+                        /** @var \Illuminate\Hashing\HashManager $instance */
+                        return $instance->extend($driver, $callback);
+        }
+                    /**
+         * Get all of the created "drivers".
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getDrivers()
+        {            //Method inherited from \Illuminate\Support\Manager         
+                        /** @var \Illuminate\Hashing\HashManager $instance */
+                        return $instance->getDrivers();
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Translation\Translator
+     */ 
+        class Lang {
+                    /**
+         * Determine if a translation exists for a given locale.
+         *
+         * @param string $key
+         * @param string|null $locale
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasForLocale($key, $locale = null)
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        return $instance->hasForLocale($key, $locale);
+        }
+                    /**
+         * Determine if a translation exists.
+         *
+         * @param string $key
+         * @param string|null $locale
+         * @param bool $fallback
+         * @return bool 
+         * @static 
+         */ 
+        public static function has($key, $locale = null, $fallback = true)
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        return $instance->has($key, $locale, $fallback);
+        }
+                    /**
+         * Get the translation for a given key.
+         *
+         * @param string $key
+         * @param array $replace
+         * @param string|null $locale
+         * @return string|array 
+         * @static 
+         */ 
+        public static function trans($key, $replace = [], $locale = null)
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        return $instance->trans($key, $replace, $locale);
+        }
+                    /**
+         * Get the translation for the given key.
+         *
+         * @param string $key
+         * @param array $replace
+         * @param string|null $locale
+         * @param bool $fallback
+         * @return string|array 
+         * @static 
+         */ 
+        public static function get($key, $replace = [], $locale = null, $fallback = true)
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        return $instance->get($key, $replace, $locale, $fallback);
+        }
+                    /**
+         * Get the translation for a given key from the JSON translation files.
+         *
+         * @param string $key
+         * @param array $replace
+         * @param string|null $locale
+         * @return string|array 
+         * @static 
+         */ 
+        public static function getFromJson($key, $replace = [], $locale = null)
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        return $instance->getFromJson($key, $replace, $locale);
+        }
+                    /**
+         * Get a translation according to an integer value.
+         *
+         * @param string $key
+         * @param int|array|\Countable $number
+         * @param array $replace
+         * @param string|null $locale
+         * @return string 
+         * @static 
+         */ 
+        public static function transChoice($key, $number, $replace = [], $locale = null)
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        return $instance->transChoice($key, $number, $replace, $locale);
+        }
+                    /**
+         * Get a translation according to an integer value.
+         *
+         * @param string $key
+         * @param int|array|\Countable $number
+         * @param array $replace
+         * @param string|null $locale
+         * @return string 
+         * @static 
+         */ 
+        public static function choice($key, $number, $replace = [], $locale = null)
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        return $instance->choice($key, $number, $replace, $locale);
+        }
+                    /**
+         * Add translation lines to the given locale.
+         *
+         * @param array $lines
+         * @param string $locale
+         * @param string $namespace
+         * @return void 
+         * @static 
+         */ 
+        public static function addLines($lines, $locale, $namespace = '*')
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        $instance->addLines($lines, $locale, $namespace);
+        }
+                    /**
+         * Load the specified language group.
+         *
+         * @param string $namespace
+         * @param string $group
+         * @param string $locale
+         * @return void 
+         * @static 
+         */ 
+        public static function load($namespace, $group, $locale)
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        $instance->load($namespace, $group, $locale);
+        }
+                    /**
+         * Add a new namespace to the loader.
+         *
+         * @param string $namespace
+         * @param string $hint
+         * @return void 
+         * @static 
+         */ 
+        public static function addNamespace($namespace, $hint)
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        $instance->addNamespace($namespace, $hint);
+        }
+                    /**
+         * Add a new JSON path to the loader.
+         *
+         * @param string $path
+         * @return void 
+         * @static 
+         */ 
+        public static function addJsonPath($path)
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        $instance->addJsonPath($path);
+        }
+                    /**
+         * Parse a key into namespace, group, and item.
+         *
+         * @param string $key
+         * @return array 
+         * @static 
+         */ 
+        public static function parseKey($key)
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        return $instance->parseKey($key);
+        }
+                    /**
+         * Get the message selector instance.
+         *
+         * @return \Illuminate\Translation\MessageSelector 
+         * @static 
+         */ 
+        public static function getSelector()
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        return $instance->getSelector();
+        }
+                    /**
+         * Set the message selector instance.
+         *
+         * @param \Illuminate\Translation\MessageSelector $selector
+         * @return void 
+         * @static 
+         */ 
+        public static function setSelector($selector)
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        $instance->setSelector($selector);
+        }
+                    /**
+         * Get the language line loader implementation.
+         *
+         * @return \Illuminate\Contracts\Translation\Loader 
+         * @static 
+         */ 
+        public static function getLoader()
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        return $instance->getLoader();
+        }
+                    /**
+         * Get the default locale being used.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function locale()
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        return $instance->locale();
+        }
+                    /**
+         * Get the default locale being used.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getLocale()
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        return $instance->getLocale();
+        }
+                    /**
+         * Set the default locale.
+         *
+         * @param string $locale
+         * @return void 
+         * @static 
+         */ 
+        public static function setLocale($locale)
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        $instance->setLocale($locale);
+        }
+                    /**
+         * Get the fallback locale being used.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getFallback()
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        return $instance->getFallback();
+        }
+                    /**
+         * Set the fallback locale being used.
+         *
+         * @param string $fallback
+         * @return void 
+         * @static 
+         */ 
+        public static function setFallback($fallback)
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        $instance->setFallback($fallback);
+        }
+                    /**
+         * Set the loaded translation groups.
+         *
+         * @param array $loaded
+         * @return void 
+         * @static 
+         */ 
+        public static function setLoaded($loaded)
+        {
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        $instance->setLoaded($loaded);
+        }
+                    /**
+         * Set the parsed value of a key.
+         *
+         * @param string $key
+         * @param array $parsed
+         * @return void 
+         * @static 
+         */ 
+        public static function setParsedKey($key, $parsed)
+        {            //Method inherited from \Illuminate\Support\NamespacedItemResolver         
+                        /** @var \Illuminate\Translation\Translator $instance */
+                        $instance->setParsedKey($key, $parsed);
+        }
+                    /**
+         * Register a custom macro.
+         *
+         * @param string $name
+         * @param object|callable $macro
+         * @return void 
+         * @static 
+         */ 
+        public static function macro($name, $macro)
+        {
+                        \Illuminate\Translation\Translator::macro($name, $macro);
+        }
+                    /**
+         * Mix another object into the class.
+         *
+         * @param object $mixin
+         * @param bool $replace
+         * @return void 
+         * @throws \ReflectionException
+         * @static 
+         */ 
+        public static function mixin($mixin, $replace = true)
+        {
+                        \Illuminate\Translation\Translator::mixin($mixin, $replace);
+        }
+                    /**
+         * Checks if macro is registered.
+         *
+         * @param string $name
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasMacro($name)
+        {
+                        return \Illuminate\Translation\Translator::hasMacro($name);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Log\Logger
+     */ 
+        class Log {
+                    /**
+         * Create a new, on-demand aggregate logger instance.
+         *
+         * @param array $channels
+         * @param string|null $channel
+         * @return \Psr\Log\LoggerInterface 
+         * @static 
+         */ 
+        public static function stack($channels, $channel = null)
+        {
+                        /** @var \Illuminate\Log\LogManager $instance */
+                        return $instance->stack($channels, $channel);
+        }
+                    /**
+         * Get a log channel instance.
+         *
+         * @param string|null $channel
+         * @return mixed 
+         * @static 
+         */ 
+        public static function channel($channel = null)
+        {
+                        /** @var \Illuminate\Log\LogManager $instance */
+                        return $instance->channel($channel);
+        }
+                    /**
+         * Get a log driver instance.
+         *
+         * @param string|null $driver
+         * @return mixed 
+         * @static 
+         */ 
+        public static function driver($driver = null)
+        {
+                        /** @var \Illuminate\Log\LogManager $instance */
+                        return $instance->driver($driver);
+        }
+                    /**
+         * Get the default log driver name.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getDefaultDriver()
+        {
+                        /** @var \Illuminate\Log\LogManager $instance */
+                        return $instance->getDefaultDriver();
+        }
+                    /**
+         * Set the default log driver name.
+         *
+         * @param string $name
+         * @return void 
+         * @static 
+         */ 
+        public static function setDefaultDriver($name)
+        {
+                        /** @var \Illuminate\Log\LogManager $instance */
+                        $instance->setDefaultDriver($name);
+        }
+                    /**
+         * Register a custom driver creator Closure.
+         *
+         * @param string $driver
+         * @param \Closure $callback
+         * @return \Illuminate\Log\LogManager 
+         * @static 
+         */ 
+        public static function extend($driver, $callback)
+        {
+                        /** @var \Illuminate\Log\LogManager $instance */
+                        return $instance->extend($driver, $callback);
+        }
+                    /**
+         * System is unusable.
+         *
+         * @param string $message
+         * @param array $context
+         * @return void 
+         * @static 
+         */ 
+        public static function emergency($message, $context = [])
+        {
+                        /** @var \Illuminate\Log\LogManager $instance */
+                        $instance->emergency($message, $context);
+        }
+                    /**
+         * Action must be taken immediately.
+         * 
+         * Example: Entire website down, database unavailable, etc. This should
+         * trigger the SMS alerts and wake you up.
+         *
+         * @param string $message
+         * @param array $context
+         * @return void 
+         * @static 
+         */ 
+        public static function alert($message, $context = [])
+        {
+                        /** @var \Illuminate\Log\LogManager $instance */
+                        $instance->alert($message, $context);
+        }
+                    /**
+         * Critical conditions.
+         * 
+         * Example: Application component unavailable, unexpected exception.
+         *
+         * @param string $message
+         * @param array $context
+         * @return void 
+         * @static 
+         */ 
+        public static function critical($message, $context = [])
+        {
+                        /** @var \Illuminate\Log\LogManager $instance */
+                        $instance->critical($message, $context);
+        }
+                    /**
+         * Runtime errors that do not require immediate action but should typically
+         * be logged and monitored.
+         *
+         * @param string $message
+         * @param array $context
+         * @return void 
+         * @static 
+         */ 
+        public static function error($message, $context = [])
+        {
+                        /** @var \Illuminate\Log\LogManager $instance */
+                        $instance->error($message, $context);
+        }
+                    /**
+         * Exceptional occurrences that are not errors.
+         * 
+         * Example: Use of deprecated APIs, poor use of an API, undesirable things
+         * that are not necessarily wrong.
+         *
+         * @param string $message
+         * @param array $context
+         * @return void 
+         * @static 
+         */ 
+        public static function warning($message, $context = [])
+        {
+                        /** @var \Illuminate\Log\LogManager $instance */
+                        $instance->warning($message, $context);
+        }
+                    /**
+         * Normal but significant events.
+         *
+         * @param string $message
+         * @param array $context
+         * @return void 
+         * @static 
+         */ 
+        public static function notice($message, $context = [])
+        {
+                        /** @var \Illuminate\Log\LogManager $instance */
+                        $instance->notice($message, $context);
+        }
+                    /**
+         * Interesting events.
+         * 
+         * Example: User logs in, SQL logs.
+         *
+         * @param string $message
+         * @param array $context
+         * @return void 
+         * @static 
+         */ 
+        public static function info($message, $context = [])
+        {
+                        /** @var \Illuminate\Log\LogManager $instance */
+                        $instance->info($message, $context);
+        }
+                    /**
+         * Detailed debug information.
+         *
+         * @param string $message
+         * @param array $context
+         * @return void 
+         * @static 
+         */ 
+        public static function debug($message, $context = [])
+        {
+                        /** @var \Illuminate\Log\LogManager $instance */
+                        $instance->debug($message, $context);
+        }
+                    /**
+         * Logs with an arbitrary level.
+         *
+         * @param mixed $level
+         * @param string $message
+         * @param array $context
+         * @return void 
+         * @static 
+         */ 
+        public static function log($level, $message, $context = [])
+        {
+                        /** @var \Illuminate\Log\LogManager $instance */
+                        $instance->log($level, $message, $context);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Mail\Mailer
+     * @see \Illuminate\Support\Testing\Fakes\MailFake
+     */ 
+        class Mail {
+                    /**
+         * Set the global from address and name.
+         *
+         * @param string $address
+         * @param string|null $name
+         * @return void 
+         * @static 
+         */ 
+        public static function alwaysFrom($address, $name = null)
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        $instance->alwaysFrom($address, $name);
+        }
+                    /**
+         * Set the global reply-to address and name.
+         *
+         * @param string $address
+         * @param string|null $name
+         * @return void 
+         * @static 
+         */ 
+        public static function alwaysReplyTo($address, $name = null)
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        $instance->alwaysReplyTo($address, $name);
+        }
+                    /**
+         * Set the global to address and name.
+         *
+         * @param string $address
+         * @param string|null $name
+         * @return void 
+         * @static 
+         */ 
+        public static function alwaysTo($address, $name = null)
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        $instance->alwaysTo($address, $name);
+        }
+                    /**
+         * Begin the process of mailing a mailable class instance.
+         *
+         * @param mixed $users
+         * @return \Illuminate\Mail\PendingMail 
+         * @static 
+         */ 
+        public static function to($users)
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        return $instance->to($users);
+        }
+                    /**
+         * Begin the process of mailing a mailable class instance.
+         *
+         * @param mixed $users
+         * @return \Illuminate\Mail\PendingMail 
+         * @static 
+         */ 
+        public static function cc($users)
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        return $instance->cc($users);
+        }
+                    /**
+         * Begin the process of mailing a mailable class instance.
+         *
+         * @param mixed $users
+         * @return \Illuminate\Mail\PendingMail 
+         * @static 
+         */ 
+        public static function bcc($users)
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        return $instance->bcc($users);
+        }
+                    /**
+         * Send a new message with only an HTML part.
+         *
+         * @param string $html
+         * @param mixed $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function html($html, $callback)
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        $instance->html($html, $callback);
+        }
+                    /**
+         * Send a new message with only a raw text part.
+         *
+         * @param string $text
+         * @param mixed $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function raw($text, $callback)
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        $instance->raw($text, $callback);
+        }
+                    /**
+         * Send a new message with only a plain part.
+         *
+         * @param string $view
+         * @param array $data
+         * @param mixed $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function plain($view, $data, $callback)
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        $instance->plain($view, $data, $callback);
+        }
+                    /**
+         * Render the given message as a view.
+         *
+         * @param string|array $view
+         * @param array $data
+         * @return string 
+         * @static 
+         */ 
+        public static function render($view, $data = [])
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        return $instance->render($view, $data);
+        }
+                    /**
+         * Send a new message using a view.
+         *
+         * @param string|array|\Illuminate\Contracts\Mail\Mailable $view
+         * @param array $data
+         * @param \Closure|string|null $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function send($view, $data = [], $callback = null)
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        $instance->send($view, $data, $callback);
+        }
+                    /**
+         * Queue a new e-mail message for sending.
+         *
+         * @param \Illuminate\Contracts\Mail\Mailable $view
+         * @param string|null $queue
+         * @return mixed 
+         * @throws \InvalidArgumentException
+         * @static 
+         */ 
+        public static function queue($view, $queue = null)
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        return $instance->queue($view, $queue);
+        }
+                    /**
+         * Queue a new e-mail message for sending on the given queue.
+         *
+         * @param string $queue
+         * @param \Illuminate\Contracts\Mail\Mailable $view
+         * @return mixed 
+         * @static 
+         */ 
+        public static function onQueue($queue, $view)
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        return $instance->onQueue($queue, $view);
+        }
+                    /**
+         * Queue a new e-mail message for sending on the given queue.
+         * 
+         * This method didn't match rest of framework's "onQueue" phrasing. Added "onQueue".
+         *
+         * @param string $queue
+         * @param \Illuminate\Contracts\Mail\Mailable $view
+         * @return mixed 
+         * @static 
+         */ 
+        public static function queueOn($queue, $view)
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        return $instance->queueOn($queue, $view);
+        }
+                    /**
+         * Queue a new e-mail message for sending after (n) seconds.
+         *
+         * @param \DateTimeInterface|\DateInterval|int $delay
+         * @param \Illuminate\Contracts\Mail\Mailable $view
+         * @param string|null $queue
+         * @return mixed 
+         * @throws \InvalidArgumentException
+         * @static 
+         */ 
+        public static function later($delay, $view, $queue = null)
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        return $instance->later($delay, $view, $queue);
+        }
+                    /**
+         * Queue a new e-mail message for sending after (n) seconds on the given queue.
+         *
+         * @param string $queue
+         * @param \DateTimeInterface|\DateInterval|int $delay
+         * @param \Illuminate\Contracts\Mail\Mailable $view
+         * @return mixed 
+         * @static 
+         */ 
+        public static function laterOn($queue, $delay, $view)
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        return $instance->laterOn($queue, $delay, $view);
+        }
+                    /**
+         * Get the array of failed recipients.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function failures()
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        return $instance->failures();
+        }
+                    /**
+         * Get the Swift Mailer instance.
+         *
+         * @return \Swift_Mailer 
+         * @static 
+         */ 
+        public static function getSwiftMailer()
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        return $instance->getSwiftMailer();
+        }
+                    /**
+         * Get the view factory instance.
+         *
+         * @return \Illuminate\Contracts\View\Factory 
+         * @static 
+         */ 
+        public static function getViewFactory()
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        return $instance->getViewFactory();
+        }
+                    /**
+         * Set the Swift Mailer instance.
+         *
+         * @param \Swift_Mailer $swift
+         * @return void 
+         * @static 
+         */ 
+        public static function setSwiftMailer($swift)
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        $instance->setSwiftMailer($swift);
+        }
+                    /**
+         * Set the queue manager instance.
+         *
+         * @param \Illuminate\Contracts\Queue\Factory $queue
+         * @return \Illuminate\Mail\Mailer 
+         * @static 
+         */ 
+        public static function setQueue($queue)
+        {
+                        /** @var \Illuminate\Mail\Mailer $instance */
+                        return $instance->setQueue($queue);
+        }
+                    /**
+         * Register a custom macro.
+         *
+         * @param string $name
+         * @param object|callable $macro
+         * @return void 
+         * @static 
+         */ 
+        public static function macro($name, $macro)
+        {
+                        \Illuminate\Mail\Mailer::macro($name, $macro);
+        }
+                    /**
+         * Mix another object into the class.
+         *
+         * @param object $mixin
+         * @param bool $replace
+         * @return void 
+         * @throws \ReflectionException
+         * @static 
+         */ 
+        public static function mixin($mixin, $replace = true)
+        {
+                        \Illuminate\Mail\Mailer::mixin($mixin, $replace);
+        }
+                    /**
+         * Checks if macro is registered.
+         *
+         * @param string $name
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasMacro($name)
+        {
+                        return \Illuminate\Mail\Mailer::hasMacro($name);
+        }
+                    /**
+         * Assert if a mailable was sent based on a truth-test callback.
+         *
+         * @param string $mailable
+         * @param callable|int|null $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function assertSent($mailable, $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
+                        $instance->assertSent($mailable, $callback);
+        }
+                    /**
+         * Determine if a mailable was not sent based on a truth-test callback.
+         *
+         * @param string $mailable
+         * @param callable|null $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function assertNotSent($mailable, $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
+                        $instance->assertNotSent($mailable, $callback);
+        }
+                    /**
+         * Assert that no mailables were sent.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function assertNothingSent()
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
+                        $instance->assertNothingSent();
+        }
+                    /**
+         * Assert if a mailable was queued based on a truth-test callback.
+         *
+         * @param string $mailable
+         * @param callable|int|null $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function assertQueued($mailable, $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
+                        $instance->assertQueued($mailable, $callback);
+        }
+                    /**
+         * Determine if a mailable was not queued based on a truth-test callback.
+         *
+         * @param string $mailable
+         * @param callable|null $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function assertNotQueued($mailable, $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
+                        $instance->assertNotQueued($mailable, $callback);
+        }
+                    /**
+         * Assert that no mailables were queued.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function assertNothingQueued()
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
+                        $instance->assertNothingQueued();
+        }
+                    /**
+         * Get all of the mailables matching a truth-test callback.
+         *
+         * @param string $mailable
+         * @param callable|null $callback
+         * @return \Illuminate\Support\Collection 
+         * @static 
+         */ 
+        public static function sent($mailable, $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
+                        return $instance->sent($mailable, $callback);
+        }
+                    /**
+         * Determine if the given mailable has been sent.
+         *
+         * @param string $mailable
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasSent($mailable)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
+                        return $instance->hasSent($mailable);
+        }
+                    /**
+         * Get all of the queued mailables matching a truth-test callback.
+         *
+         * @param string $mailable
+         * @param callable|null $callback
+         * @return \Illuminate\Support\Collection 
+         * @static 
+         */ 
+        public static function queued($mailable, $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
+                        return $instance->queued($mailable, $callback);
+        }
+                    /**
+         * Determine if the given mailable has been queued.
+         *
+         * @param string $mailable
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasQueued($mailable)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */
+                        return $instance->hasQueued($mailable);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Notifications\ChannelManager
+     */ 
+        class Notification {
+                    /**
+         * Send the given notification to the given notifiable entities.
+         *
+         * @param \Illuminate\Support\Collection|array|mixed $notifiables
+         * @param mixed $notification
+         * @return void 
+         * @static 
+         */ 
+        public static function send($notifiables, $notification)
+        {
+                        /** @var \Illuminate\Notifications\ChannelManager $instance */
+                        $instance->send($notifiables, $notification);
+        }
+                    /**
+         * Send the given notification immediately.
+         *
+         * @param \Illuminate\Support\Collection|array|mixed $notifiables
+         * @param mixed $notification
+         * @param array|null $channels
+         * @return void 
+         * @static 
+         */ 
+        public static function sendNow($notifiables, $notification, $channels = null)
+        {
+                        /** @var \Illuminate\Notifications\ChannelManager $instance */
+                        $instance->sendNow($notifiables, $notification, $channels);
+        }
+                    /**
+         * Get a channel instance.
+         *
+         * @param string|null $name
+         * @return mixed 
+         * @static 
+         */ 
+        public static function channel($name = null)
+        {
+                        /** @var \Illuminate\Notifications\ChannelManager $instance */
+                        return $instance->channel($name);
+        }
+                    /**
+         * Get the default channel driver name.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getDefaultDriver()
+        {
+                        /** @var \Illuminate\Notifications\ChannelManager $instance */
+                        return $instance->getDefaultDriver();
+        }
+                    /**
+         * Get the default channel driver name.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function deliversVia()
+        {
+                        /** @var \Illuminate\Notifications\ChannelManager $instance */
+                        return $instance->deliversVia();
+        }
+                    /**
+         * Set the default channel driver name.
+         *
+         * @param string $channel
+         * @return void 
+         * @static 
+         */ 
+        public static function deliverVia($channel)
+        {
+                        /** @var \Illuminate\Notifications\ChannelManager $instance */
+                        $instance->deliverVia($channel);
+        }
+                    /**
+         * Set the locale of notifications.
+         *
+         * @param string $locale
+         * @return \Illuminate\Notifications\ChannelManager 
+         * @static 
+         */ 
+        public static function locale($locale)
+        {
+                        /** @var \Illuminate\Notifications\ChannelManager $instance */
+                        return $instance->locale($locale);
+        }
+                    /**
+         * Get a driver instance.
+         *
+         * @param string $driver
+         * @return mixed 
+         * @throws \InvalidArgumentException
+         * @static 
+         */ 
+        public static function driver($driver = null)
+        {            //Method inherited from \Illuminate\Support\Manager         
+                        /** @var \Illuminate\Notifications\ChannelManager $instance */
+                        return $instance->driver($driver);
+        }
+                    /**
+         * Register a custom driver creator Closure.
+         *
+         * @param string $driver
+         * @param \Closure $callback
+         * @return \Illuminate\Notifications\ChannelManager 
+         * @static 
+         */ 
+        public static function extend($driver, $callback)
+        {            //Method inherited from \Illuminate\Support\Manager         
+                        /** @var \Illuminate\Notifications\ChannelManager $instance */
+                        return $instance->extend($driver, $callback);
+        }
+                    /**
+         * Get all of the created "drivers".
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getDrivers()
+        {            //Method inherited from \Illuminate\Support\Manager         
+                        /** @var \Illuminate\Notifications\ChannelManager $instance */
+                        return $instance->getDrivers();
+        }
+                    /**
+         * Assert if a notification was sent based on a truth-test callback.
+         *
+         * @param mixed $notifiable
+         * @param string $notification
+         * @param callable|null $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function assertSentTo($notifiable, $notification, $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */
+                        $instance->assertSentTo($notifiable, $notification, $callback);
+        }
+                    /**
+         * Assert if a notification was sent a number of times.
+         *
+         * @param mixed $notifiable
+         * @param string $notification
+         * @param int $times
+         * @return void 
+         * @static 
+         */ 
+        public static function assertSentToTimes($notifiable, $notification, $times = 1)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */
+                        $instance->assertSentToTimes($notifiable, $notification, $times);
+        }
+                    /**
+         * Determine if a notification was sent based on a truth-test callback.
+         *
+         * @param mixed $notifiable
+         * @param string $notification
+         * @param callable|null $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function assertNotSentTo($notifiable, $notification, $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */
+                        $instance->assertNotSentTo($notifiable, $notification, $callback);
+        }
+                    /**
+         * Assert that no notifications were sent.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function assertNothingSent()
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */
+                        $instance->assertNothingSent();
+        }
+                    /**
+         * Assert the total amount of times a notification was sent.
+         *
+         * @param int $expectedCount
+         * @param string $notification
+         * @return void 
+         * @static 
+         */ 
+        public static function assertTimesSent($expectedCount, $notification)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */
+                        $instance->assertTimesSent($expectedCount, $notification);
+        }
+                    /**
+         * Get all of the notifications matching a truth-test callback.
+         *
+         * @param mixed $notifiable
+         * @param string $notification
+         * @param callable|null $callback
+         * @return \Illuminate\Support\Collection 
+         * @static 
+         */ 
+        public static function sent($notifiable, $notification, $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */
+                        return $instance->sent($notifiable, $notification, $callback);
+        }
+                    /**
+         * Determine if there are more notifications left to inspect.
+         *
+         * @param mixed $notifiable
+         * @param string $notification
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasSent($notifiable, $notification)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */
+                        return $instance->hasSent($notifiable, $notification);
+        }
+                    /**
+         * Register a custom macro.
+         *
+         * @param string $name
+         * @param object|callable $macro
+         * @return void 
+         * @static 
+         */ 
+        public static function macro($name, $macro)
+        {
+                        \Illuminate\Support\Testing\Fakes\NotificationFake::macro($name, $macro);
+        }
+                    /**
+         * Mix another object into the class.
+         *
+         * @param object $mixin
+         * @param bool $replace
+         * @return void 
+         * @throws \ReflectionException
+         * @static 
+         */ 
+        public static function mixin($mixin, $replace = true)
+        {
+                        \Illuminate\Support\Testing\Fakes\NotificationFake::mixin($mixin, $replace);
+        }
+                    /**
+         * Checks if macro is registered.
+         *
+         * @param string $name
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasMacro($name)
+        {
+                        return \Illuminate\Support\Testing\Fakes\NotificationFake::hasMacro($name);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @method static string sendResetLink(array $credentials)
+     * @method static mixed reset(array $credentials, \Closure $callback)
+     * @method static void validator(\Closure $callback)
+     * @method static bool validateNewPassword(array $credentials)
+     * @see \Illuminate\Auth\Passwords\PasswordBroker
+     */ 
+        class Password {
+                    /**
+         * Attempt to get the broker from the local cache.
+         *
+         * @param string|null $name
+         * @return \Illuminate\Contracts\Auth\PasswordBroker 
+         * @static 
+         */ 
+        public static function broker($name = null)
+        {
+                        /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */
+                        return $instance->broker($name);
+        }
+                    /**
+         * Get the default password broker name.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getDefaultDriver()
+        {
+                        /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */
+                        return $instance->getDefaultDriver();
+        }
+                    /**
+         * Set the default password broker name.
+         *
+         * @param string $name
+         * @return void 
+         * @static 
+         */ 
+        public static function setDefaultDriver($name)
+        {
+                        /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */
+                        $instance->setDefaultDriver($name);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Queue\QueueManager
+     * @see \Illuminate\Queue\Queue
+     */ 
+        class Queue {
+                    /**
+         * Register an event listener for the before job event.
+         *
+         * @param mixed $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function before($callback)
+        {
+                        /** @var \Illuminate\Queue\QueueManager $instance */
+                        $instance->before($callback);
+        }
+                    /**
+         * Register an event listener for the after job event.
+         *
+         * @param mixed $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function after($callback)
+        {
+                        /** @var \Illuminate\Queue\QueueManager $instance */
+                        $instance->after($callback);
+        }
+                    /**
+         * Register an event listener for the exception occurred job event.
+         *
+         * @param mixed $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function exceptionOccurred($callback)
+        {
+                        /** @var \Illuminate\Queue\QueueManager $instance */
+                        $instance->exceptionOccurred($callback);
+        }
+                    /**
+         * Register an event listener for the daemon queue loop.
+         *
+         * @param mixed $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function looping($callback)
+        {
+                        /** @var \Illuminate\Queue\QueueManager $instance */
+                        $instance->looping($callback);
+        }
+                    /**
+         * Register an event listener for the failed job event.
+         *
+         * @param mixed $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function failing($callback)
+        {
+                        /** @var \Illuminate\Queue\QueueManager $instance */
+                        $instance->failing($callback);
+        }
+                    /**
+         * Register an event listener for the daemon queue stopping.
+         *
+         * @param mixed $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function stopping($callback)
+        {
+                        /** @var \Illuminate\Queue\QueueManager $instance */
+                        $instance->stopping($callback);
+        }
+                    /**
+         * Determine if the driver is connected.
+         *
+         * @param string|null $name
+         * @return bool 
+         * @static 
+         */ 
+        public static function connected($name = null)
+        {
+                        /** @var \Illuminate\Queue\QueueManager $instance */
+                        return $instance->connected($name);
+        }
+                    /**
+         * Resolve a queue connection instance.
+         *
+         * @param string|null $name
+         * @return \Illuminate\Contracts\Queue\Queue 
+         * @static 
+         */ 
+        public static function connection($name = null)
+        {
+                        /** @var \Illuminate\Queue\QueueManager $instance */
+                        return $instance->connection($name);
+        }
+                    /**
+         * Add a queue connection resolver.
+         *
+         * @param string $driver
+         * @param \Closure $resolver
+         * @return void 
+         * @static 
+         */ 
+        public static function extend($driver, $resolver)
+        {
+                        /** @var \Illuminate\Queue\QueueManager $instance */
+                        $instance->extend($driver, $resolver);
+        }
+                    /**
+         * Add a queue connection resolver.
+         *
+         * @param string $driver
+         * @param \Closure $resolver
+         * @return void 
+         * @static 
+         */ 
+        public static function addConnector($driver, $resolver)
+        {
+                        /** @var \Illuminate\Queue\QueueManager $instance */
+                        $instance->addConnector($driver, $resolver);
+        }
+                    /**
+         * Get the name of the default queue connection.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getDefaultDriver()
+        {
+                        /** @var \Illuminate\Queue\QueueManager $instance */
+                        return $instance->getDefaultDriver();
+        }
+                    /**
+         * Set the name of the default queue connection.
+         *
+         * @param string $name
+         * @return void 
+         * @static 
+         */ 
+        public static function setDefaultDriver($name)
+        {
+                        /** @var \Illuminate\Queue\QueueManager $instance */
+                        $instance->setDefaultDriver($name);
+        }
+                    /**
+         * Get the full name for the given connection.
+         *
+         * @param string|null $connection
+         * @return string 
+         * @static 
+         */ 
+        public static function getName($connection = null)
+        {
+                        /** @var \Illuminate\Queue\QueueManager $instance */
+                        return $instance->getName($connection);
+        }
+                    /**
+         * Determine if the application is in maintenance mode.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function isDownForMaintenance()
+        {
+                        /** @var \Illuminate\Queue\QueueManager $instance */
+                        return $instance->isDownForMaintenance();
+        }
+                    /**
+         * Assert if a job was pushed based on a truth-test callback.
+         *
+         * @param string $job
+         * @param callable|int|null $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function assertPushed($job, $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
+                        $instance->assertPushed($job, $callback);
+        }
+                    /**
+         * Assert if a job was pushed based on a truth-test callback.
+         *
+         * @param string $queue
+         * @param string $job
+         * @param callable|null $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function assertPushedOn($queue, $job, $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
+                        $instance->assertPushedOn($queue, $job, $callback);
+        }
+                    /**
+         * Assert if a job was pushed with chained jobs based on a truth-test callback.
+         *
+         * @param string $job
+         * @param array $expectedChain
+         * @param callable|null $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function assertPushedWithChain($job, $expectedChain = [], $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
+                        $instance->assertPushedWithChain($job, $expectedChain, $callback);
+        }
+                    /**
+         * Determine if a job was pushed based on a truth-test callback.
+         *
+         * @param string $job
+         * @param callable|null $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function assertNotPushed($job, $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
+                        $instance->assertNotPushed($job, $callback);
+        }
+                    /**
+         * Assert that no jobs were pushed.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function assertNothingPushed()
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
+                        $instance->assertNothingPushed();
+        }
+                    /**
+         * Get all of the jobs matching a truth-test callback.
+         *
+         * @param string $job
+         * @param callable|null $callback
+         * @return \Illuminate\Support\Collection 
+         * @static 
+         */ 
+        public static function pushed($job, $callback = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
+                        return $instance->pushed($job, $callback);
+        }
+                    /**
+         * Determine if there are any stored jobs for a given class.
+         *
+         * @param string $job
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasPushed($job)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
+                        return $instance->hasPushed($job);
+        }
+                    /**
+         * Get the size of the queue.
+         *
+         * @param string|null $queue
+         * @return int 
+         * @static 
+         */ 
+        public static function size($queue = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
+                        return $instance->size($queue);
+        }
+                    /**
+         * Push a new job onto the queue.
+         *
+         * @param string $job
+         * @param mixed $data
+         * @param string|null $queue
+         * @return mixed 
+         * @static 
+         */ 
+        public static function push($job, $data = '', $queue = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
+                        return $instance->push($job, $data, $queue);
+        }
+                    /**
+         * Push a raw payload onto the queue.
+         *
+         * @param string $payload
+         * @param string|null $queue
+         * @param array $options
+         * @return mixed 
+         * @static 
+         */ 
+        public static function pushRaw($payload, $queue = null, $options = [])
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
+                        return $instance->pushRaw($payload, $queue, $options);
+        }
+                    /**
+         * Push a new job onto the queue after a delay.
+         *
+         * @param \DateTimeInterface|\DateInterval|int $delay
+         * @param string $job
+         * @param mixed $data
+         * @param string|null $queue
+         * @return mixed 
+         * @static 
+         */ 
+        public static function later($delay, $job, $data = '', $queue = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
+                        return $instance->later($delay, $job, $data, $queue);
+        }
+                    /**
+         * Push a new job onto the queue.
+         *
+         * @param string $queue
+         * @param string $job
+         * @param mixed $data
+         * @return mixed 
+         * @static 
+         */ 
+        public static function pushOn($queue, $job, $data = '')
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
+                        return $instance->pushOn($queue, $job, $data);
+        }
+                    /**
+         * Push a new job onto the queue after a delay.
+         *
+         * @param string $queue
+         * @param \DateTimeInterface|\DateInterval|int $delay
+         * @param string $job
+         * @param mixed $data
+         * @return mixed 
+         * @static 
+         */ 
+        public static function laterOn($queue, $delay, $job, $data = '')
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
+                        return $instance->laterOn($queue, $delay, $job, $data);
+        }
+                    /**
+         * Pop the next job off of the queue.
+         *
+         * @param string|null $queue
+         * @return \Illuminate\Contracts\Queue\Job|null 
+         * @static 
+         */ 
+        public static function pop($queue = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
+                        return $instance->pop($queue);
+        }
+                    /**
+         * Push an array of jobs onto the queue.
+         *
+         * @param array $jobs
+         * @param mixed $data
+         * @param string|null $queue
+         * @return mixed 
+         * @static 
+         */ 
+        public static function bulk($jobs, $data = '', $queue = null)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
+                        return $instance->bulk($jobs, $data, $queue);
+        }
+                    /**
+         * Get the jobs that have been pushed.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function pushedJobs()
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
+                        return $instance->pushedJobs();
+        }
+                    /**
+         * Get the connection name for the queue.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getConnectionName()
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
+                        return $instance->getConnectionName();
+        }
+                    /**
+         * Set the connection name for the queue.
+         *
+         * @param string $name
+         * @return \Illuminate\Support\Testing\Fakes\QueueFake 
+         * @static 
+         */ 
+        public static function setConnectionName($name)
+        {
+                        /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */
+                        return $instance->setConnectionName($name);
+        }
+                    /**
+         * Get the retry delay for an object-based queue handler.
+         *
+         * @param mixed $job
+         * @return mixed 
+         * @static 
+         */ 
+        public static function getJobRetryDelay($job)
+        {            //Method inherited from \Illuminate\Queue\Queue         
+                        /** @var \Illuminate\Queue\SyncQueue $instance */
+                        return $instance->getJobRetryDelay($job);
+        }
+                    /**
+         * Get the expiration timestamp for an object-based queue handler.
+         *
+         * @param mixed $job
+         * @return mixed 
+         * @static 
+         */ 
+        public static function getJobExpiration($job)
+        {            //Method inherited from \Illuminate\Queue\Queue         
+                        /** @var \Illuminate\Queue\SyncQueue $instance */
+                        return $instance->getJobExpiration($job);
+        }
+                    /**
+         * Register a callback to be executed when creating job payloads.
+         *
+         * @param callable $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function createPayloadUsing($callback)
+        {            //Method inherited from \Illuminate\Queue\Queue         
+                        \Illuminate\Queue\SyncQueue::createPayloadUsing($callback);
+        }
+                    /**
+         * Set the IoC container instance.
+         *
+         * @param \Illuminate\Container\Container $container
+         * @return void 
+         * @static 
+         */ 
+        public static function setContainer($container)
+        {            //Method inherited from \Illuminate\Queue\Queue         
+                        /** @var \Illuminate\Queue\SyncQueue $instance */
+                        $instance->setContainer($container);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Routing\Redirector
+     */ 
+        class Redirect {
+                    /**
+         * Create a new redirect response to the "home" route.
+         *
+         * @param int $status
+         * @return \Illuminate\Http\RedirectResponse 
+         * @static 
+         */ 
+        public static function home($status = 302)
+        {
+                        /** @var \Illuminate\Routing\Redirector $instance */
+                        return $instance->home($status);
+        }
+                    /**
+         * Create a new redirect response to the previous location.
+         *
+         * @param int $status
+         * @param array $headers
+         * @param mixed $fallback
+         * @return \Illuminate\Http\RedirectResponse 
+         * @static 
+         */ 
+        public static function back($status = 302, $headers = [], $fallback = false)
+        {
+                        /** @var \Illuminate\Routing\Redirector $instance */
+                        return $instance->back($status, $headers, $fallback);
+        }
+                    /**
+         * Create a new redirect response to the current URI.
+         *
+         * @param int $status
+         * @param array $headers
+         * @return \Illuminate\Http\RedirectResponse 
+         * @static 
+         */ 
+        public static function refresh($status = 302, $headers = [])
+        {
+                        /** @var \Illuminate\Routing\Redirector $instance */
+                        return $instance->refresh($status, $headers);
+        }
+                    /**
+         * Create a new redirect response, while putting the current URL in the session.
+         *
+         * @param string $path
+         * @param int $status
+         * @param array $headers
+         * @param bool|null $secure
+         * @return \Illuminate\Http\RedirectResponse 
+         * @static 
+         */ 
+        public static function guest($path, $status = 302, $headers = [], $secure = null)
+        {
+                        /** @var \Illuminate\Routing\Redirector $instance */
+                        return $instance->guest($path, $status, $headers, $secure);
+        }
+                    /**
+         * Create a new redirect response to the previously intended location.
+         *
+         * @param string $default
+         * @param int $status
+         * @param array $headers
+         * @param bool|null $secure
+         * @return \Illuminate\Http\RedirectResponse 
+         * @static 
+         */ 
+        public static function intended($default = '/', $status = 302, $headers = [], $secure = null)
+        {
+                        /** @var \Illuminate\Routing\Redirector $instance */
+                        return $instance->intended($default, $status, $headers, $secure);
+        }
+                    /**
+         * Set the intended url.
+         *
+         * @param string $url
+         * @return void 
+         * @static 
+         */ 
+        public static function setIntendedUrl($url)
+        {
+                        /** @var \Illuminate\Routing\Redirector $instance */
+                        $instance->setIntendedUrl($url);
+        }
+                    /**
+         * Create a new redirect response to the given path.
+         *
+         * @param string $path
+         * @param int $status
+         * @param array $headers
+         * @param bool|null $secure
+         * @return \Illuminate\Http\RedirectResponse 
+         * @static 
+         */ 
+        public static function to($path, $status = 302, $headers = [], $secure = null)
+        {
+                        /** @var \Illuminate\Routing\Redirector $instance */
+                        return $instance->to($path, $status, $headers, $secure);
+        }
+                    /**
+         * Create a new redirect response to an external URL (no validation).
+         *
+         * @param string $path
+         * @param int $status
+         * @param array $headers
+         * @return \Illuminate\Http\RedirectResponse 
+         * @static 
+         */ 
+        public static function away($path, $status = 302, $headers = [])
+        {
+                        /** @var \Illuminate\Routing\Redirector $instance */
+                        return $instance->away($path, $status, $headers);
+        }
+                    /**
+         * Create a new redirect response to the given HTTPS path.
+         *
+         * @param string $path
+         * @param int $status
+         * @param array $headers
+         * @return \Illuminate\Http\RedirectResponse 
+         * @static 
+         */ 
+        public static function secure($path, $status = 302, $headers = [])
+        {
+                        /** @var \Illuminate\Routing\Redirector $instance */
+                        return $instance->secure($path, $status, $headers);
+        }
+                    /**
+         * Create a new redirect response to a named route.
+         *
+         * @param string $route
+         * @param mixed $parameters
+         * @param int $status
+         * @param array $headers
+         * @return \Illuminate\Http\RedirectResponse 
+         * @static 
+         */ 
+        public static function route($route, $parameters = [], $status = 302, $headers = [])
+        {
+                        /** @var \Illuminate\Routing\Redirector $instance */
+                        return $instance->route($route, $parameters, $status, $headers);
+        }
+                    /**
+         * Create a new redirect response to a controller action.
+         *
+         * @param string|array $action
+         * @param mixed $parameters
+         * @param int $status
+         * @param array $headers
+         * @return \Illuminate\Http\RedirectResponse 
+         * @static 
+         */ 
+        public static function action($action, $parameters = [], $status = 302, $headers = [])
+        {
+                        /** @var \Illuminate\Routing\Redirector $instance */
+                        return $instance->action($action, $parameters, $status, $headers);
+        }
+                    /**
+         * Get the URL generator instance.
+         *
+         * @return \Illuminate\Routing\UrlGenerator 
+         * @static 
+         */ 
+        public static function getUrlGenerator()
+        {
+                        /** @var \Illuminate\Routing\Redirector $instance */
+                        return $instance->getUrlGenerator();
+        }
+                    /**
+         * Set the active session store.
+         *
+         * @param \Illuminate\Session\Store $session
+         * @return void 
+         * @static 
+         */ 
+        public static function setSession($session)
+        {
+                        /** @var \Illuminate\Routing\Redirector $instance */
+                        $instance->setSession($session);
+        }
+                    /**
+         * Register a custom macro.
+         *
+         * @param string $name
+         * @param object|callable $macro
+         * @return void 
+         * @static 
+         */ 
+        public static function macro($name, $macro)
+        {
+                        \Illuminate\Routing\Redirector::macro($name, $macro);
+        }
+                    /**
+         * Mix another object into the class.
+         *
+         * @param object $mixin
+         * @param bool $replace
+         * @return void 
+         * @throws \ReflectionException
+         * @static 
+         */ 
+        public static function mixin($mixin, $replace = true)
+        {
+                        \Illuminate\Routing\Redirector::mixin($mixin, $replace);
+        }
+                    /**
+         * Checks if macro is registered.
+         *
+         * @param string $name
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasMacro($name)
+        {
+                        return \Illuminate\Routing\Redirector::hasMacro($name);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Redis\RedisManager
+     * @see \Illuminate\Contracts\Redis\Factory
+     */ 
+        class Redis {
+                    /**
+         * Get a Redis connection by name.
+         *
+         * @param string|null $name
+         * @return \Illuminate\Redis\Connections\Connection 
+         * @static 
+         */ 
+        public static function connection($name = null)
+        {
+                        /** @var \Illuminate\Redis\RedisManager $instance */
+                        return $instance->connection($name);
+        }
+                    /**
+         * Resolve the given connection by name.
+         *
+         * @param string|null $name
+         * @return \Illuminate\Redis\Connections\Connection 
+         * @throws \InvalidArgumentException
+         * @static 
+         */ 
+        public static function resolve($name = null)
+        {
+                        /** @var \Illuminate\Redis\RedisManager $instance */
+                        return $instance->resolve($name);
+        }
+                    /**
+         * Return all of the created connections.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function connections()
+        {
+                        /** @var \Illuminate\Redis\RedisManager $instance */
+                        return $instance->connections();
+        }
+                    /**
+         * Enable the firing of Redis command events.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function enableEvents()
+        {
+                        /** @var \Illuminate\Redis\RedisManager $instance */
+                        $instance->enableEvents();
+        }
+                    /**
+         * Disable the firing of Redis command events.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function disableEvents()
+        {
+                        /** @var \Illuminate\Redis\RedisManager $instance */
+                        $instance->disableEvents();
+        }
+                    /**
+         * Set the default driver.
+         *
+         * @param string $driver
+         * @return void 
+         * @static 
+         */ 
+        public static function setDriver($driver)
+        {
+                        /** @var \Illuminate\Redis\RedisManager $instance */
+                        $instance->setDriver($driver);
+        }
+                    /**
+         * Register a custom driver creator Closure.
+         *
+         * @param string $driver
+         * @param \Closure $callback
+         * @return \Illuminate\Redis\RedisManager 
+         * @static 
+         */ 
+        public static function extend($driver, $callback)
+        {
+                        /** @var \Illuminate\Redis\RedisManager $instance */
+                        return $instance->extend($driver, $callback);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Http\Request
+     */ 
+        class Request {
+                    /**
+         * Create a new Illuminate HTTP request from server variables.
+         *
+         * @return static 
+         * @static 
+         */ 
+        public static function capture()
+        {
+                        return \Illuminate\Http\Request::capture();
+        }
+                    /**
+         * Return the Request instance.
+         *
+         * @return \Illuminate\Http\Request 
+         * @static 
+         */ 
+        public static function instance()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->instance();
+        }
+                    /**
+         * Get the request method.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function method()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->method();
+        }
+                    /**
+         * Get the root URL for the application.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function root()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->root();
+        }
+                    /**
+         * Get the URL (no query string) for the request.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function url()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->url();
+        }
+                    /**
+         * Get the full URL for the request.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function fullUrl()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->fullUrl();
+        }
+                    /**
+         * Get the full URL for the request with the added query string parameters.
+         *
+         * @param array $query
+         * @return string 
+         * @static 
+         */ 
+        public static function fullUrlWithQuery($query)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->fullUrlWithQuery($query);
+        }
+                    /**
+         * Get the current path info for the request.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function path()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->path();
+        }
+                    /**
+         * Get the current decoded path info for the request.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function decodedPath()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->decodedPath();
+        }
+                    /**
+         * Get a segment from the URI (1 based index).
+         *
+         * @param int $index
+         * @param string|null $default
+         * @return string|null 
+         * @static 
+         */ 
+        public static function segment($index, $default = null)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->segment($index, $default);
+        }
+                    /**
+         * Get all of the segments for the request path.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function segments()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->segments();
+        }
+                    /**
+         * Determine if the current request URI matches a pattern.
+         *
+         * @param mixed $patterns
+         * @return bool 
+         * @static 
+         */ 
+        public static function is(...$patterns)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->is(...$patterns);
+        }
+                    /**
+         * Determine if the route name matches a given pattern.
+         *
+         * @param mixed $patterns
+         * @return bool 
+         * @static 
+         */ 
+        public static function routeIs(...$patterns)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->routeIs(...$patterns);
+        }
+                    /**
+         * Determine if the current request URL and query string matches a pattern.
+         *
+         * @param mixed $patterns
+         * @return bool 
+         * @static 
+         */ 
+        public static function fullUrlIs(...$patterns)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->fullUrlIs(...$patterns);
+        }
+                    /**
+         * Determine if the request is the result of an AJAX call.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function ajax()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->ajax();
+        }
+                    /**
+         * Determine if the request is the result of an PJAX call.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function pjax()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->pjax();
+        }
+                    /**
+         * Determine if the request is the result of an prefetch call.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function prefetch()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->prefetch();
+        }
+                    /**
+         * Determine if the request is over HTTPS.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function secure()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->secure();
+        }
+                    /**
+         * Get the client IP address.
+         *
+         * @return string|null 
+         * @static 
+         */ 
+        public static function ip()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->ip();
+        }
+                    /**
+         * Get the client IP addresses.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function ips()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->ips();
+        }
+                    /**
+         * Get the client user agent.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function userAgent()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->userAgent();
+        }
+                    /**
+         * Merge new input into the current request's input array.
+         *
+         * @param array $input
+         * @return \Illuminate\Http\Request 
+         * @static 
+         */ 
+        public static function merge($input)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->merge($input);
+        }
+                    /**
+         * Replace the input for the current request.
+         *
+         * @param array $input
+         * @return \Illuminate\Http\Request 
+         * @static 
+         */ 
+        public static function replace($input)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->replace($input);
+        }
+                    /**
+         * This method belongs to Symfony HttpFoundation and is not usually needed when using Laravel.
+         * 
+         * Instead, you may use the "input" method.
+         *
+         * @param string $key
+         * @param mixed $default
+         * @return mixed 
+         * @static 
+         */ 
+        public static function get($key, $default = null)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->get($key, $default);
+        }
+                    /**
+         * Get the JSON payload for the request.
+         *
+         * @param string|null $key
+         * @param mixed $default
+         * @return \Symfony\Component\HttpFoundation\ParameterBag|mixed 
+         * @static 
+         */ 
+        public static function json($key = null, $default = null)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->json($key, $default);
+        }
+                    /**
+         * Create a new request instance from the given Laravel request.
+         *
+         * @param \Illuminate\Http\Request $from
+         * @param \Illuminate\Http\Request|null $to
+         * @return static 
+         * @static 
+         */ 
+        public static function createFrom($from, $to = null)
+        {
+                        return \Illuminate\Http\Request::createFrom($from, $to);
+        }
+                    /**
+         * Create an Illuminate request from a Symfony instance.
+         *
+         * @param \Symfony\Component\HttpFoundation\Request $request
+         * @return static 
+         * @static 
+         */ 
+        public static function createFromBase($request)
+        {
+                        return \Illuminate\Http\Request::createFromBase($request);
+        }
+                    /**
+         * Clones a request and overrides some of its parameters.
+         *
+         * @param array $query The GET parameters
+         * @param array $request The POST parameters
+         * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...)
+         * @param array $cookies The COOKIE parameters
+         * @param array $files The FILES parameters
+         * @param array $server The SERVER parameters
+         * @return static 
+         * @static 
+         */ 
+        public static function duplicate($query = null, $request = null, $attributes = null, $cookies = null, $files = null, $server = null)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->duplicate($query, $request, $attributes, $cookies, $files, $server);
+        }
+                    /**
+         * Get the session associated with the request.
+         *
+         * @return \Illuminate\Session\Store 
+         * @throws \RuntimeException
+         * @static 
+         */ 
+        public static function session()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->session();
+        }
+                    /**
+         * Get the session associated with the request.
+         *
+         * @return \Illuminate\Session\Store|null 
+         * @static 
+         */ 
+        public static function getSession()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getSession();
+        }
+                    /**
+         * Set the session instance on the request.
+         *
+         * @param \Illuminate\Contracts\Session\Session $session
+         * @return void 
+         * @static 
+         */ 
+        public static function setLaravelSession($session)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        $instance->setLaravelSession($session);
+        }
+                    /**
+         * Get the user making the request.
+         *
+         * @param string|null $guard
+         * @return mixed 
+         * @static 
+         */ 
+        public static function user($guard = null)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->user($guard);
+        }
+                    /**
+         * Get the route handling the request.
+         *
+         * @param string|null $param
+         * @param mixed $default
+         * @return \Illuminate\Routing\Route|object|string 
+         * @static 
+         */ 
+        public static function route($param = null, $default = null)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->route($param, $default);
+        }
+                    /**
+         * Get a unique fingerprint for the request / route / IP address.
+         *
+         * @return string 
+         * @throws \RuntimeException
+         * @static 
+         */ 
+        public static function fingerprint()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->fingerprint();
+        }
+                    /**
+         * Set the JSON payload for the request.
+         *
+         * @param \Symfony\Component\HttpFoundation\ParameterBag $json
+         * @return \Illuminate\Http\Request 
+         * @static 
+         */ 
+        public static function setJson($json)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->setJson($json);
+        }
+                    /**
+         * Get the user resolver callback.
+         *
+         * @return \Closure 
+         * @static 
+         */ 
+        public static function getUserResolver()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getUserResolver();
+        }
+                    /**
+         * Set the user resolver callback.
+         *
+         * @param \Closure $callback
+         * @return \Illuminate\Http\Request 
+         * @static 
+         */ 
+        public static function setUserResolver($callback)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->setUserResolver($callback);
+        }
+                    /**
+         * Get the route resolver callback.
+         *
+         * @return \Closure 
+         * @static 
+         */ 
+        public static function getRouteResolver()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getRouteResolver();
+        }
+                    /**
+         * Set the route resolver callback.
+         *
+         * @param \Closure $callback
+         * @return \Illuminate\Http\Request 
+         * @static 
+         */ 
+        public static function setRouteResolver($callback)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->setRouteResolver($callback);
+        }
+                    /**
+         * Get all of the input and files for the request.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function toArray()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->toArray();
+        }
+                    /**
+         * Determine if the given offset exists.
+         *
+         * @param string $offset
+         * @return bool 
+         * @static 
+         */ 
+        public static function offsetExists($offset)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->offsetExists($offset);
+        }
+                    /**
+         * Get the value at the given offset.
+         *
+         * @param string $offset
+         * @return mixed 
+         * @static 
+         */ 
+        public static function offsetGet($offset)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->offsetGet($offset);
+        }
+                    /**
+         * Set the value at the given offset.
+         *
+         * @param string $offset
+         * @param mixed $value
+         * @return void 
+         * @static 
+         */ 
+        public static function offsetSet($offset, $value)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        $instance->offsetSet($offset, $value);
+        }
+                    /**
+         * Remove the value at the given offset.
+         *
+         * @param string $offset
+         * @return void 
+         * @static 
+         */ 
+        public static function offsetUnset($offset)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        $instance->offsetUnset($offset);
+        }
+                    /**
+         * Sets the parameters for this request.
+         * 
+         * This method also re-initializes all properties.
+         *
+         * @param array $query The GET parameters
+         * @param array $request The POST parameters
+         * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...)
+         * @param array $cookies The COOKIE parameters
+         * @param array $files The FILES parameters
+         * @param array $server The SERVER parameters
+         * @param string|resource|null $content The raw body data
+         * @static 
+         */ 
+        public static function initialize($query = [], $request = [], $attributes = [], $cookies = [], $files = [], $server = [], $content = null)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->initialize($query, $request, $attributes, $cookies, $files, $server, $content);
+        }
+                    /**
+         * Creates a new request with values from PHP's super globals.
+         *
+         * @return static 
+         * @static 
+         */ 
+        public static function createFromGlobals()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        return \Illuminate\Http\Request::createFromGlobals();
+        }
+                    /**
+         * Creates a Request based on a given URI and configuration.
+         * 
+         * The information contained in the URI always take precedence
+         * over the other information (server and parameters).
+         *
+         * @param string $uri The URI
+         * @param string $method The HTTP method
+         * @param array $parameters The query (GET) or request (POST) parameters
+         * @param array $cookies The request cookies ($_COOKIE)
+         * @param array $files The request files ($_FILES)
+         * @param array $server The server parameters ($_SERVER)
+         * @param string|resource|null $content The raw body data
+         * @return static 
+         * @static 
+         */ 
+        public static function create($uri, $method = 'GET', $parameters = [], $cookies = [], $files = [], $server = [], $content = null)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        return \Illuminate\Http\Request::create($uri, $method, $parameters, $cookies, $files, $server, $content);
+        }
+                    /**
+         * Sets a callable able to create a Request instance.
+         * 
+         * This is mainly useful when you need to override the Request class
+         * to keep BC with an existing system. It should not be used for any
+         * other purpose.
+         *
+         * @param callable|null $callable A PHP callable
+         * @static 
+         */ 
+        public static function setFactory($callable)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        return \Illuminate\Http\Request::setFactory($callable);
+        }
+                    /**
+         * Overrides the PHP global variables according to this request instance.
+         * 
+         * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE.
+         * $_FILES is never overridden, see rfc1867
+         *
+         * @static 
+         */ 
+        public static function overrideGlobals()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->overrideGlobals();
+        }
+                    /**
+         * Sets a list of trusted proxies.
+         * 
+         * You should only list the reverse proxies that you manage directly.
+         *
+         * @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR']
+         * @param int $trustedHeaderSet A bit field of Request::HEADER_*, to set which headers to trust from your proxies
+         * @static 
+         */ 
+        public static function setTrustedProxies($proxies, $trustedHeaderSet)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        return \Illuminate\Http\Request::setTrustedProxies($proxies, $trustedHeaderSet);
+        }
+                    /**
+         * Gets the list of trusted proxies.
+         *
+         * @return array An array of trusted proxies
+         * @static 
+         */ 
+        public static function getTrustedProxies()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        return \Illuminate\Http\Request::getTrustedProxies();
+        }
+                    /**
+         * Gets the set of trusted headers from trusted proxies.
+         *
+         * @return int A bit field of Request::HEADER_* that defines which headers are trusted from your proxies
+         * @static 
+         */ 
+        public static function getTrustedHeaderSet()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        return \Illuminate\Http\Request::getTrustedHeaderSet();
+        }
+                    /**
+         * Sets a list of trusted host patterns.
+         * 
+         * You should only list the hosts you manage using regexs.
+         *
+         * @param array $hostPatterns A list of trusted host patterns
+         * @static 
+         */ 
+        public static function setTrustedHosts($hostPatterns)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        return \Illuminate\Http\Request::setTrustedHosts($hostPatterns);
+        }
+                    /**
+         * Gets the list of trusted host patterns.
+         *
+         * @return array An array of trusted host patterns
+         * @static 
+         */ 
+        public static function getTrustedHosts()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        return \Illuminate\Http\Request::getTrustedHosts();
+        }
+                    /**
+         * Normalizes a query string.
+         * 
+         * It builds a normalized query string, where keys/value pairs are alphabetized,
+         * have consistent escaping and unneeded delimiters are removed.
+         *
+         * @param string $qs Query string
+         * @return string A normalized query string for the Request
+         * @static 
+         */ 
+        public static function normalizeQueryString($qs)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        return \Illuminate\Http\Request::normalizeQueryString($qs);
+        }
+                    /**
+         * Enables support for the _method request parameter to determine the intended HTTP method.
+         * 
+         * Be warned that enabling this feature might lead to CSRF issues in your code.
+         * Check that you are using CSRF tokens when required.
+         * If the HTTP method parameter override is enabled, an html-form with method "POST" can be altered
+         * and used to send a "PUT" or "DELETE" request via the _method request parameter.
+         * If these methods are not protected against CSRF, this presents a possible vulnerability.
+         * 
+         * The HTTP method can only be overridden when the real HTTP method is POST.
+         *
+         * @static 
+         */ 
+        public static function enableHttpMethodParameterOverride()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        return \Illuminate\Http\Request::enableHttpMethodParameterOverride();
+        }
+                    /**
+         * Checks whether support for the _method request parameter is enabled.
+         *
+         * @return bool True when the _method request parameter is enabled, false otherwise
+         * @static 
+         */ 
+        public static function getHttpMethodParameterOverride()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        return \Illuminate\Http\Request::getHttpMethodParameterOverride();
+        }
+                    /**
+         * Whether the request contains a Session which was started in one of the
+         * previous requests.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasPreviousSession()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->hasPreviousSession();
+        }
+                    /**
+         * Whether the request contains a Session object.
+         * 
+         * This method does not give any information about the state of the session object,
+         * like whether the session is started or not. It is just a way to check if this Request
+         * is associated with a Session instance.
+         *
+         * @return bool true when the Request contains a Session object, false otherwise
+         * @static 
+         */ 
+        public static function hasSession()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->hasSession();
+        }
+                    /**
+         * 
+         *
+         * @static 
+         */ 
+        public static function setSession($session)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->setSession($session);
+        }
+                    /**
+         * 
+         *
+         * @internal 
+         * @static 
+         */ 
+        public static function setSessionFactory($factory)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->setSessionFactory($factory);
+        }
+                    /**
+         * Returns the client IP addresses.
+         * 
+         * In the returned array the most trusted IP address is first, and the
+         * least trusted one last. The "real" client IP address is the last one,
+         * but this is also the least trusted one. Trusted proxies are stripped.
+         * 
+         * Use this method carefully; you should use getClientIp() instead.
+         *
+         * @return array The client IP addresses
+         * @see getClientIp()
+         * @static 
+         */ 
+        public static function getClientIps()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getClientIps();
+        }
+                    /**
+         * Returns the client IP address.
+         * 
+         * This method can read the client IP address from the "X-Forwarded-For" header
+         * when trusted proxies were set via "setTrustedProxies()". The "X-Forwarded-For"
+         * header value is a comma+space separated list of IP addresses, the left-most
+         * being the original client, and each successive proxy that passed the request
+         * adding the IP address where it received the request from.
+         * 
+         * If your reverse proxy uses a different header name than "X-Forwarded-For",
+         * ("Client-Ip" for instance), configure it via the $trustedHeaderSet
+         * argument of the Request::setTrustedProxies() method instead.
+         *
+         * @return string|null The client IP address
+         * @see getClientIps()
+         * @see https://wikipedia.org/wiki/X-Forwarded-For
+         * @static 
+         */ 
+        public static function getClientIp()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getClientIp();
+        }
+                    /**
+         * Returns current script name.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getScriptName()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getScriptName();
+        }
+                    /**
+         * Returns the path being requested relative to the executed script.
+         * 
+         * The path info always starts with a /.
+         * 
+         * Suppose this request is instantiated from /mysite on localhost:
+         * 
+         *  * http://localhost/mysite              returns an empty string
+         *  * http://localhost/mysite/about        returns '/about'
+         *  * http://localhost/mysite/enco%20ded   returns '/enco%20ded'
+         *  * http://localhost/mysite/about?var=1  returns '/about'
+         *
+         * @return string The raw path (i.e. not urldecoded)
+         * @static 
+         */ 
+        public static function getPathInfo()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getPathInfo();
+        }
+                    /**
+         * Returns the root path from which this request is executed.
+         * 
+         * Suppose that an index.php file instantiates this request object:
+         * 
+         *  * http://localhost/index.php         returns an empty string
+         *  * http://localhost/index.php/page    returns an empty string
+         *  * http://localhost/web/index.php     returns '/web'
+         *  * http://localhost/we%20b/index.php  returns '/we%20b'
+         *
+         * @return string The raw path (i.e. not urldecoded)
+         * @static 
+         */ 
+        public static function getBasePath()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getBasePath();
+        }
+                    /**
+         * Returns the root URL from which this request is executed.
+         * 
+         * The base URL never ends with a /.
+         * 
+         * This is similar to getBasePath(), except that it also includes the
+         * script filename (e.g. index.php) if one exists.
+         *
+         * @return string The raw URL (i.e. not urldecoded)
+         * @static 
+         */ 
+        public static function getBaseUrl()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getBaseUrl();
+        }
+                    /**
+         * Gets the request's scheme.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getScheme()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getScheme();
+        }
+                    /**
+         * Returns the port on which the request is made.
+         * 
+         * This method can read the client port from the "X-Forwarded-Port" header
+         * when trusted proxies were set via "setTrustedProxies()".
+         * 
+         * The "X-Forwarded-Port" header must contain the client port.
+         *
+         * @return int|string can be a string if fetched from the server bag
+         * @static 
+         */ 
+        public static function getPort()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getPort();
+        }
+                    /**
+         * Returns the user.
+         *
+         * @return string|null 
+         * @static 
+         */ 
+        public static function getUser()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getUser();
+        }
+                    /**
+         * Returns the password.
+         *
+         * @return string|null 
+         * @static 
+         */ 
+        public static function getPassword()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getPassword();
+        }
+                    /**
+         * Gets the user info.
+         *
+         * @return string|null A user name if any and, optionally, scheme-specific information about how to gain authorization to access the server
+         * @static 
+         */ 
+        public static function getUserInfo()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getUserInfo();
+        }
+                    /**
+         * Returns the HTTP host being requested.
+         * 
+         * The port name will be appended to the host if it's non-standard.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getHttpHost()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getHttpHost();
+        }
+                    /**
+         * Returns the requested URI (path and query string).
+         *
+         * @return string The raw URI (i.e. not URI decoded)
+         * @static 
+         */ 
+        public static function getRequestUri()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getRequestUri();
+        }
+                    /**
+         * Gets the scheme and HTTP host.
+         * 
+         * If the URL was called with basic authentication, the user
+         * and the password are not added to the generated string.
+         *
+         * @return string The scheme and HTTP host
+         * @static 
+         */ 
+        public static function getSchemeAndHttpHost()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getSchemeAndHttpHost();
+        }
+                    /**
+         * Generates a normalized URI (URL) for the Request.
+         *
+         * @return string A normalized URI (URL) for the Request
+         * @see getQueryString()
+         * @static 
+         */ 
+        public static function getUri()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getUri();
+        }
+                    /**
+         * Generates a normalized URI for the given path.
+         *
+         * @param string $path A path to use instead of the current one
+         * @return string The normalized URI for the path
+         * @static 
+         */ 
+        public static function getUriForPath($path)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getUriForPath($path);
+        }
+                    /**
+         * Returns the path as relative reference from the current Request path.
+         * 
+         * Only the URIs path component (no schema, host etc.) is relevant and must be given.
+         * Both paths must be absolute and not contain relative parts.
+         * Relative URLs from one resource to another are useful when generating self-contained downloadable document archives.
+         * Furthermore, they can be used to reduce the link size in documents.
+         * 
+         * Example target paths, given a base path of "/a/b/c/d":
+         * - "/a/b/c/d"     -> ""
+         * - "/a/b/c/"      -> "./"
+         * - "/a/b/"        -> "../"
+         * - "/a/b/c/other" -> "other"
+         * - "/a/x/y"       -> "../../x/y"
+         *
+         * @param string $path The target path
+         * @return string The relative target path
+         * @static 
+         */ 
+        public static function getRelativeUriForPath($path)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getRelativeUriForPath($path);
+        }
+                    /**
+         * Generates the normalized query string for the Request.
+         * 
+         * It builds a normalized query string, where keys/value pairs are alphabetized
+         * and have consistent escaping.
+         *
+         * @return string|null A normalized query string for the Request
+         * @static 
+         */ 
+        public static function getQueryString()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getQueryString();
+        }
+                    /**
+         * Checks whether the request is secure or not.
+         * 
+         * This method can read the client protocol from the "X-Forwarded-Proto" header
+         * when trusted proxies were set via "setTrustedProxies()".
+         * 
+         * The "X-Forwarded-Proto" header must contain the protocol: "https" or "http".
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function isSecure()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->isSecure();
+        }
+                    /**
+         * Returns the host name.
+         * 
+         * This method can read the client host name from the "X-Forwarded-Host" header
+         * when trusted proxies were set via "setTrustedProxies()".
+         * 
+         * The "X-Forwarded-Host" header must contain the client host name.
+         *
+         * @return string 
+         * @throws SuspiciousOperationException when the host name is invalid or not trusted
+         * @static 
+         */ 
+        public static function getHost()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getHost();
+        }
+                    /**
+         * Sets the request method.
+         *
+         * @param string $method
+         * @static 
+         */ 
+        public static function setMethod($method)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->setMethod($method);
+        }
+                    /**
+         * Gets the request "intended" method.
+         * 
+         * If the X-HTTP-Method-Override header is set, and if the method is a POST,
+         * then it is used to determine the "real" intended HTTP method.
+         * 
+         * The _method request parameter can also be used to determine the HTTP method,
+         * but only if enableHttpMethodParameterOverride() has been called.
+         * 
+         * The method is always an uppercased string.
+         *
+         * @return string The request method
+         * @see getRealMethod()
+         * @static 
+         */ 
+        public static function getMethod()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getMethod();
+        }
+                    /**
+         * Gets the "real" request method.
+         *
+         * @return string The request method
+         * @see getMethod()
+         * @static 
+         */ 
+        public static function getRealMethod()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getRealMethod();
+        }
+                    /**
+         * Gets the mime type associated with the format.
+         *
+         * @param string $format The format
+         * @return string|null The associated mime type (null if not found)
+         * @static 
+         */ 
+        public static function getMimeType($format)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getMimeType($format);
+        }
+                    /**
+         * Gets the mime types associated with the format.
+         *
+         * @param string $format The format
+         * @return array The associated mime types
+         * @static 
+         */ 
+        public static function getMimeTypes($format)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        return \Illuminate\Http\Request::getMimeTypes($format);
+        }
+                    /**
+         * Gets the format associated with the mime type.
+         *
+         * @param string $mimeType The associated mime type
+         * @return string|null The format (null if not found)
+         * @static 
+         */ 
+        public static function getFormat($mimeType)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getFormat($mimeType);
+        }
+                    /**
+         * Associates a format with mime types.
+         *
+         * @param string $format The format
+         * @param string|array $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type)
+         * @static 
+         */ 
+        public static function setFormat($format, $mimeTypes)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->setFormat($format, $mimeTypes);
+        }
+                    /**
+         * Gets the request format.
+         * 
+         * Here is the process to determine the format:
+         * 
+         *  * format defined by the user (with setRequestFormat())
+         *  * _format request attribute
+         *  * $default
+         *
+         * @see getPreferredFormat
+         * @param string|null $default The default format
+         * @return string|null The request format
+         * @static 
+         */ 
+        public static function getRequestFormat($default = 'html')
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getRequestFormat($default);
+        }
+                    /**
+         * Sets the request format.
+         *
+         * @param string $format The request format
+         * @static 
+         */ 
+        public static function setRequestFormat($format)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->setRequestFormat($format);
+        }
+                    /**
+         * Gets the format associated with the request.
+         *
+         * @return string|null The format (null if no content type is present)
+         * @static 
+         */ 
+        public static function getContentType()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getContentType();
+        }
+                    /**
+         * Sets the default locale.
+         *
+         * @param string $locale
+         * @static 
+         */ 
+        public static function setDefaultLocale($locale)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->setDefaultLocale($locale);
+        }
+                    /**
+         * Get the default locale.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getDefaultLocale()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getDefaultLocale();
+        }
+                    /**
+         * Sets the locale.
+         *
+         * @param string $locale
+         * @static 
+         */ 
+        public static function setLocale($locale)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->setLocale($locale);
+        }
+                    /**
+         * Get the locale.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getLocale()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getLocale();
+        }
+                    /**
+         * Checks if the request method is of specified type.
+         *
+         * @param string $method Uppercase request method (GET, POST etc)
+         * @return bool 
+         * @static 
+         */ 
+        public static function isMethod($method)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->isMethod($method);
+        }
+                    /**
+         * Checks whether or not the method is safe.
+         *
+         * @see https://tools.ietf.org/html/rfc7231#section-4.2.1
+         * @return bool 
+         * @static 
+         */ 
+        public static function isMethodSafe()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->isMethodSafe();
+        }
+                    /**
+         * Checks whether or not the method is idempotent.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function isMethodIdempotent()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->isMethodIdempotent();
+        }
+                    /**
+         * Checks whether the method is cacheable or not.
+         *
+         * @see https://tools.ietf.org/html/rfc7231#section-4.2.3
+         * @return bool True for GET and HEAD, false otherwise
+         * @static 
+         */ 
+        public static function isMethodCacheable()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->isMethodCacheable();
+        }
+                    /**
+         * Returns the protocol version.
+         * 
+         * If the application is behind a proxy, the protocol version used in the
+         * requests between the client and the proxy and between the proxy and the
+         * server might be different. This returns the former (from the "Via" header)
+         * if the proxy is trusted (see "setTrustedProxies()"), otherwise it returns
+         * the latter (from the "SERVER_PROTOCOL" server parameter).
+         *
+         * @return string|null 
+         * @static 
+         */ 
+        public static function getProtocolVersion()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getProtocolVersion();
+        }
+                    /**
+         * Returns the request body content.
+         *
+         * @param bool $asResource If true, a resource will be returned
+         * @return string|resource The request body content or a resource to read the body stream
+         * @static 
+         */ 
+        public static function getContent($asResource = false)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getContent($asResource);
+        }
+                    /**
+         * Gets the Etags.
+         *
+         * @return array The entity tags
+         * @static 
+         */ 
+        public static function getETags()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getETags();
+        }
+                    /**
+         * 
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function isNoCache()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->isNoCache();
+        }
+                    /**
+         * Gets the preferred format for the response by inspecting, in the following order:
+         *   * the request format set using setRequestFormat
+         *   * the values of the Accept HTTP header.
+         * 
+         * Note that if you use this method, you should send the "Vary: Accept" header
+         * in the response to prevent any issues with intermediary HTTP caches.
+         *
+         * @static 
+         */ 
+        public static function getPreferredFormat($default = 'html')
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getPreferredFormat($default);
+        }
+                    /**
+         * Returns the preferred language.
+         *
+         * @param string[] $locales An array of ordered available locales
+         * @return string|null The preferred locale
+         * @static 
+         */ 
+        public static function getPreferredLanguage($locales = null)
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getPreferredLanguage($locales);
+        }
+                    /**
+         * Gets a list of languages acceptable by the client browser.
+         *
+         * @return array Languages ordered in the user browser preferences
+         * @static 
+         */ 
+        public static function getLanguages()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getLanguages();
+        }
+                    /**
+         * Gets a list of charsets acceptable by the client browser.
+         *
+         * @return array List of charsets in preferable order
+         * @static 
+         */ 
+        public static function getCharsets()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getCharsets();
+        }
+                    /**
+         * Gets a list of encodings acceptable by the client browser.
+         *
+         * @return array List of encodings in preferable order
+         * @static 
+         */ 
+        public static function getEncodings()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getEncodings();
+        }
+                    /**
+         * Gets a list of content types acceptable by the client browser.
+         *
+         * @return array List of content types in preferable order
+         * @static 
+         */ 
+        public static function getAcceptableContentTypes()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->getAcceptableContentTypes();
+        }
+                    /**
+         * Returns true if the request is an XMLHttpRequest.
+         * 
+         * It works if your JavaScript library sets an X-Requested-With HTTP header.
+         * It is known to work with common JavaScript frameworks:
+         *
+         * @see https://wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript
+         * @return bool true if the request is an XMLHttpRequest, false otherwise
+         * @static 
+         */ 
+        public static function isXmlHttpRequest()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->isXmlHttpRequest();
+        }
+                    /**
+         * Indicates whether this request originated from a trusted proxy.
+         * 
+         * This can be useful to determine whether or not to trust the
+         * contents of a proxy-specific header.
+         *
+         * @return bool true if the request came from a trusted proxy, false otherwise
+         * @static 
+         */ 
+        public static function isFromTrustedProxy()
+        {            //Method inherited from \Symfony\Component\HttpFoundation\Request         
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->isFromTrustedProxy();
+        }
+                    /**
+         * Determine if the given content types match.
+         *
+         * @param string $actual
+         * @param string $type
+         * @return bool 
+         * @static 
+         */ 
+        public static function matchesType($actual, $type)
+        {
+                        return \Illuminate\Http\Request::matchesType($actual, $type);
+        }
+                    /**
+         * Determine if the request is sending JSON.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function isJson()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->isJson();
+        }
+                    /**
+         * Determine if the current request probably expects a JSON response.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function expectsJson()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->expectsJson();
+        }
+                    /**
+         * Determine if the current request is asking for JSON.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function wantsJson()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->wantsJson();
+        }
+                    /**
+         * Determines whether the current requests accepts a given content type.
+         *
+         * @param string|array $contentTypes
+         * @return bool 
+         * @static 
+         */ 
+        public static function accepts($contentTypes)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->accepts($contentTypes);
+        }
+                    /**
+         * Return the most suitable content type from the given array based on content negotiation.
+         *
+         * @param string|array $contentTypes
+         * @return string|null 
+         * @static 
+         */ 
+        public static function prefers($contentTypes)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->prefers($contentTypes);
+        }
+                    /**
+         * Determine if the current request accepts any content type.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function acceptsAnyContentType()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->acceptsAnyContentType();
+        }
+                    /**
+         * Determines whether a request accepts JSON.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function acceptsJson()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->acceptsJson();
+        }
+                    /**
+         * Determines whether a request accepts HTML.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function acceptsHtml()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->acceptsHtml();
+        }
+                    /**
+         * Get the data format expected in the response.
+         *
+         * @param string $default
+         * @return string 
+         * @static 
+         */ 
+        public static function format($default = 'html')
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->format($default);
+        }
+                    /**
+         * Retrieve an old input item.
+         *
+         * @param string|null $key
+         * @param string|array|null $default
+         * @return string|array 
+         * @static 
+         */ 
+        public static function old($key = null, $default = null)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->old($key, $default);
+        }
+                    /**
+         * Flash the input for the current request to the session.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function flash()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        $instance->flash();
+        }
+                    /**
+         * Flash only some of the input to the session.
+         *
+         * @param array|mixed $keys
+         * @return void 
+         * @static 
+         */ 
+        public static function flashOnly($keys)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        $instance->flashOnly($keys);
+        }
+                    /**
+         * Flash only some of the input to the session.
+         *
+         * @param array|mixed $keys
+         * @return void 
+         * @static 
+         */ 
+        public static function flashExcept($keys)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        $instance->flashExcept($keys);
+        }
+                    /**
+         * Flush all of the old input from the session.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function flush()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        $instance->flush();
+        }
+                    /**
+         * Retrieve a server variable from the request.
+         *
+         * @param string|null $key
+         * @param string|array|null $default
+         * @return string|array|null 
+         * @static 
+         */ 
+        public static function server($key = null, $default = null)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->server($key, $default);
+        }
+                    /**
+         * Determine if a header is set on the request.
+         *
+         * @param string $key
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasHeader($key)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->hasHeader($key);
+        }
+                    /**
+         * Retrieve a header from the request.
+         *
+         * @param string|null $key
+         * @param string|array|null $default
+         * @return string|array|null 
+         * @static 
+         */ 
+        public static function header($key = null, $default = null)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->header($key, $default);
+        }
+                    /**
+         * Get the bearer token from the request headers.
+         *
+         * @return string|null 
+         * @static 
+         */ 
+        public static function bearerToken()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->bearerToken();
+        }
+                    /**
+         * Determine if the request contains a given input item key.
+         *
+         * @param string|array $key
+         * @return bool 
+         * @static 
+         */ 
+        public static function exists($key)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->exists($key);
+        }
+                    /**
+         * Determine if the request contains a given input item key.
+         *
+         * @param string|array $key
+         * @return bool 
+         * @static 
+         */ 
+        public static function has($key)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->has($key);
+        }
+                    /**
+         * Determine if the request contains any of the given inputs.
+         *
+         * @param string|array $keys
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasAny($keys)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->hasAny($keys);
+        }
+                    /**
+         * Determine if the request contains a non-empty value for an input item.
+         *
+         * @param string|array $key
+         * @return bool 
+         * @static 
+         */ 
+        public static function filled($key)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->filled($key);
+        }
+                    /**
+         * Determine if the request contains a non-empty value for any of the given inputs.
+         *
+         * @param string|array $keys
+         * @return bool 
+         * @static 
+         */ 
+        public static function anyFilled($keys)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->anyFilled($keys);
+        }
+                    /**
+         * Get the keys for all of the input and files.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function keys()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->keys();
+        }
+                    /**
+         * Get all of the input and files for the request.
+         *
+         * @param array|mixed|null $keys
+         * @return array 
+         * @static 
+         */ 
+        public static function all($keys = null)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->all($keys);
+        }
+                    /**
+         * Retrieve an input item from the request.
+         *
+         * @param string|null $key
+         * @param string|array|null $default
+         * @return string|array|null 
+         * @static 
+         */ 
+        public static function input($key = null, $default = null)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->input($key, $default);
+        }
+                    /**
+         * Get a subset containing the provided keys with values from the input data.
+         *
+         * @param array|mixed $keys
+         * @return array 
+         * @static 
+         */ 
+        public static function only($keys)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->only($keys);
+        }
+                    /**
+         * Get all of the input except for a specified array of items.
+         *
+         * @param array|mixed $keys
+         * @return array 
+         * @static 
+         */ 
+        public static function except($keys)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->except($keys);
+        }
+                    /**
+         * Retrieve a query string item from the request.
+         *
+         * @param string|null $key
+         * @param string|array|null $default
+         * @return string|array|null 
+         * @static 
+         */ 
+        public static function query($key = null, $default = null)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->query($key, $default);
+        }
+                    /**
+         * Retrieve a request payload item from the request.
+         *
+         * @param string|null $key
+         * @param string|array|null $default
+         * @return string|array|null 
+         * @static 
+         */ 
+        public static function post($key = null, $default = null)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->post($key, $default);
+        }
+                    /**
+         * Determine if a cookie is set on the request.
+         *
+         * @param string $key
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasCookie($key)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->hasCookie($key);
+        }
+                    /**
+         * Retrieve a cookie from the request.
+         *
+         * @param string|null $key
+         * @param string|array|null $default
+         * @return string|array|null 
+         * @static 
+         */ 
+        public static function cookie($key = null, $default = null)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->cookie($key, $default);
+        }
+                    /**
+         * Get an array of all of the files on the request.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function allFiles()
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->allFiles();
+        }
+                    /**
+         * Determine if the uploaded data contains a file.
+         *
+         * @param string $key
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasFile($key)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->hasFile($key);
+        }
+                    /**
+         * Retrieve a file from the request.
+         *
+         * @param string|null $key
+         * @param mixed $default
+         * @return \Illuminate\Http\UploadedFile|\Illuminate\Http\UploadedFile[]|array|null 
+         * @static 
+         */ 
+        public static function file($key = null, $default = null)
+        {
+                        /** @var \Illuminate\Http\Request $instance */
+                        return $instance->file($key, $default);
+        }
+                    /**
+         * Register a custom macro.
+         *
+         * @param string $name
+         * @param object|callable $macro
+         * @return void 
+         * @static 
+         */ 
+        public static function macro($name, $macro)
+        {
+                        \Illuminate\Http\Request::macro($name, $macro);
+        }
+                    /**
+         * Mix another object into the class.
+         *
+         * @param object $mixin
+         * @param bool $replace
+         * @return void 
+         * @throws \ReflectionException
+         * @static 
+         */ 
+        public static function mixin($mixin, $replace = true)
+        {
+                        \Illuminate\Http\Request::mixin($mixin, $replace);
+        }
+                    /**
+         * Checks if macro is registered.
+         *
+         * @param string $name
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasMacro($name)
+        {
+                        return \Illuminate\Http\Request::hasMacro($name);
+        }
+                    /**
+         * 
+         *
+         * @static 
+         */ 
+        public static function validate($rules, ...$params)
+        {
+                        return \Illuminate\Http\Request::validate($rules, ...$params);
+        }
+                    /**
+         * 
+         *
+         * @static 
+         */ 
+        public static function hasValidSignature($absolute = true)
+        {
+                        return \Illuminate\Http\Request::hasValidSignature($absolute);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Contracts\Routing\ResponseFactory
+     */ 
+        class Response {
+                    /**
+         * Create a new response instance.
+         *
+         * @param string $content
+         * @param int $status
+         * @param array $headers
+         * @return \Illuminate\Http\Response 
+         * @static 
+         */ 
+        public static function make($content = '', $status = 200, $headers = [])
+        {
+                        /** @var \Illuminate\Routing\ResponseFactory $instance */
+                        return $instance->make($content, $status, $headers);
+        }
+                    /**
+         * Create a new "no content" response.
+         *
+         * @param int $status
+         * @param array $headers
+         * @return \Illuminate\Http\Response 
+         * @static 
+         */ 
+        public static function noContent($status = 204, $headers = [])
+        {
+                        /** @var \Illuminate\Routing\ResponseFactory $instance */
+                        return $instance->noContent($status, $headers);
+        }
+                    /**
+         * Create a new response for a given view.
+         *
+         * @param string $view
+         * @param array $data
+         * @param int $status
+         * @param array $headers
+         * @return \Illuminate\Http\Response 
+         * @static 
+         */ 
+        public static function view($view, $data = [], $status = 200, $headers = [])
+        {
+                        /** @var \Illuminate\Routing\ResponseFactory $instance */
+                        return $instance->view($view, $data, $status, $headers);
+        }
+                    /**
+         * Create a new JSON response instance.
+         *
+         * @param mixed $data
+         * @param int $status
+         * @param array $headers
+         * @param int $options
+         * @return \Illuminate\Http\JsonResponse 
+         * @static 
+         */ 
+        public static function json($data = [], $status = 200, $headers = [], $options = 0)
+        {
+                        /** @var \Illuminate\Routing\ResponseFactory $instance */
+                        return $instance->json($data, $status, $headers, $options);
+        }
+                    /**
+         * Create a new JSONP response instance.
+         *
+         * @param string $callback
+         * @param mixed $data
+         * @param int $status
+         * @param array $headers
+         * @param int $options
+         * @return \Illuminate\Http\JsonResponse 
+         * @static 
+         */ 
+        public static function jsonp($callback, $data = [], $status = 200, $headers = [], $options = 0)
+        {
+                        /** @var \Illuminate\Routing\ResponseFactory $instance */
+                        return $instance->jsonp($callback, $data, $status, $headers, $options);
+        }
+                    /**
+         * Create a new streamed response instance.
+         *
+         * @param \Closure $callback
+         * @param int $status
+         * @param array $headers
+         * @return \Symfony\Component\HttpFoundation\StreamedResponse 
+         * @static 
+         */ 
+        public static function stream($callback, $status = 200, $headers = [])
+        {
+                        /** @var \Illuminate\Routing\ResponseFactory $instance */
+                        return $instance->stream($callback, $status, $headers);
+        }
+                    /**
+         * Create a new streamed response instance as a file download.
+         *
+         * @param \Closure $callback
+         * @param string|null $name
+         * @param array $headers
+         * @param string|null $disposition
+         * @return \Symfony\Component\HttpFoundation\StreamedResponse 
+         * @static 
+         */ 
+        public static function streamDownload($callback, $name = null, $headers = [], $disposition = 'attachment')
+        {
+                        /** @var \Illuminate\Routing\ResponseFactory $instance */
+                        return $instance->streamDownload($callback, $name, $headers, $disposition);
+        }
+                    /**
+         * Create a new file download response.
+         *
+         * @param \SplFileInfo|string $file
+         * @param string|null $name
+         * @param array $headers
+         * @param string|null $disposition
+         * @return \Symfony\Component\HttpFoundation\BinaryFileResponse 
+         * @static 
+         */ 
+        public static function download($file, $name = null, $headers = [], $disposition = 'attachment')
+        {
+                        /** @var \Illuminate\Routing\ResponseFactory $instance */
+                        return $instance->download($file, $name, $headers, $disposition);
+        }
+                    /**
+         * Return the raw contents of a binary file.
+         *
+         * @param \SplFileInfo|string $file
+         * @param array $headers
+         * @return \Symfony\Component\HttpFoundation\BinaryFileResponse 
+         * @static 
+         */ 
+        public static function file($file, $headers = [])
+        {
+                        /** @var \Illuminate\Routing\ResponseFactory $instance */
+                        return $instance->file($file, $headers);
+        }
+                    /**
+         * Create a new redirect response to the given path.
+         *
+         * @param string $path
+         * @param int $status
+         * @param array $headers
+         * @param bool|null $secure
+         * @return \Illuminate\Http\RedirectResponse 
+         * @static 
+         */ 
+        public static function redirectTo($path, $status = 302, $headers = [], $secure = null)
+        {
+                        /** @var \Illuminate\Routing\ResponseFactory $instance */
+                        return $instance->redirectTo($path, $status, $headers, $secure);
+        }
+                    /**
+         * Create a new redirect response to a named route.
+         *
+         * @param string $route
+         * @param array $parameters
+         * @param int $status
+         * @param array $headers
+         * @return \Illuminate\Http\RedirectResponse 
+         * @static 
+         */ 
+        public static function redirectToRoute($route, $parameters = [], $status = 302, $headers = [])
+        {
+                        /** @var \Illuminate\Routing\ResponseFactory $instance */
+                        return $instance->redirectToRoute($route, $parameters, $status, $headers);
+        }
+                    /**
+         * Create a new redirect response to a controller action.
+         *
+         * @param string $action
+         * @param array $parameters
+         * @param int $status
+         * @param array $headers
+         * @return \Illuminate\Http\RedirectResponse 
+         * @static 
+         */ 
+        public static function redirectToAction($action, $parameters = [], $status = 302, $headers = [])
+        {
+                        /** @var \Illuminate\Routing\ResponseFactory $instance */
+                        return $instance->redirectToAction($action, $parameters, $status, $headers);
+        }
+                    /**
+         * Create a new redirect response, while putting the current URL in the session.
+         *
+         * @param string $path
+         * @param int $status
+         * @param array $headers
+         * @param bool|null $secure
+         * @return \Illuminate\Http\RedirectResponse 
+         * @static 
+         */ 
+        public static function redirectGuest($path, $status = 302, $headers = [], $secure = null)
+        {
+                        /** @var \Illuminate\Routing\ResponseFactory $instance */
+                        return $instance->redirectGuest($path, $status, $headers, $secure);
+        }
+                    /**
+         * Create a new redirect response to the previously intended location.
+         *
+         * @param string $default
+         * @param int $status
+         * @param array $headers
+         * @param bool|null $secure
+         * @return \Illuminate\Http\RedirectResponse 
+         * @static 
+         */ 
+        public static function redirectToIntended($default = '/', $status = 302, $headers = [], $secure = null)
+        {
+                        /** @var \Illuminate\Routing\ResponseFactory $instance */
+                        return $instance->redirectToIntended($default, $status, $headers, $secure);
+        }
+                    /**
+         * Register a custom macro.
+         *
+         * @param string $name
+         * @param object|callable $macro
+         * @return void 
+         * @static 
+         */ 
+        public static function macro($name, $macro)
+        {
+                        \Illuminate\Routing\ResponseFactory::macro($name, $macro);
+        }
+                    /**
+         * Mix another object into the class.
+         *
+         * @param object $mixin
+         * @param bool $replace
+         * @return void 
+         * @throws \ReflectionException
+         * @static 
+         */ 
+        public static function mixin($mixin, $replace = true)
+        {
+                        \Illuminate\Routing\ResponseFactory::mixin($mixin, $replace);
+        }
+                    /**
+         * Checks if macro is registered.
+         *
+         * @param string $name
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasMacro($name)
+        {
+                        return \Illuminate\Routing\ResponseFactory::hasMacro($name);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @method static \Illuminate\Routing\RouteRegistrar prefix(string  $prefix)
+     * @method static \Illuminate\Routing\RouteRegistrar where(array  $where)
+     * @method static \Illuminate\Routing\RouteRegistrar middleware(array|string|null $middleware)
+     * @method static \Illuminate\Routing\RouteRegistrar as(string $value)
+     * @method static \Illuminate\Routing\RouteRegistrar domain(string $value)
+     * @method static \Illuminate\Routing\RouteRegistrar name(string $value)
+     * @method static \Illuminate\Routing\RouteRegistrar namespace(string $value)
+     * @see \Illuminate\Routing\Router
+     */ 
+        class Route {
+                    /**
+         * Register a new GET route with the router.
+         *
+         * @param string $uri
+         * @param \Closure|array|string|callable|null $action
+         * @return \Illuminate\Routing\Route 
+         * @static 
+         */ 
+        public static function get($uri, $action = null)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->get($uri, $action);
+        }
+                    /**
+         * Register a new POST route with the router.
+         *
+         * @param string $uri
+         * @param \Closure|array|string|callable|null $action
+         * @return \Illuminate\Routing\Route 
+         * @static 
+         */ 
+        public static function post($uri, $action = null)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->post($uri, $action);
+        }
+                    /**
+         * Register a new PUT route with the router.
+         *
+         * @param string $uri
+         * @param \Closure|array|string|callable|null $action
+         * @return \Illuminate\Routing\Route 
+         * @static 
+         */ 
+        public static function put($uri, $action = null)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->put($uri, $action);
+        }
+                    /**
+         * Register a new PATCH route with the router.
+         *
+         * @param string $uri
+         * @param \Closure|array|string|callable|null $action
+         * @return \Illuminate\Routing\Route 
+         * @static 
+         */ 
+        public static function patch($uri, $action = null)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->patch($uri, $action);
+        }
+                    /**
+         * Register a new DELETE route with the router.
+         *
+         * @param string $uri
+         * @param \Closure|array|string|callable|null $action
+         * @return \Illuminate\Routing\Route 
+         * @static 
+         */ 
+        public static function delete($uri, $action = null)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->delete($uri, $action);
+        }
+                    /**
+         * Register a new OPTIONS route with the router.
+         *
+         * @param string $uri
+         * @param \Closure|array|string|callable|null $action
+         * @return \Illuminate\Routing\Route 
+         * @static 
+         */ 
+        public static function options($uri, $action = null)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->options($uri, $action);
+        }
+                    /**
+         * Register a new route responding to all verbs.
+         *
+         * @param string $uri
+         * @param \Closure|array|string|callable|null $action
+         * @return \Illuminate\Routing\Route 
+         * @static 
+         */ 
+        public static function any($uri, $action = null)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->any($uri, $action);
+        }
+                    /**
+         * Register a new Fallback route with the router.
+         *
+         * @param \Closure|array|string|callable|null $action
+         * @return \Illuminate\Routing\Route 
+         * @static 
+         */ 
+        public static function fallback($action)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->fallback($action);
+        }
+                    /**
+         * Create a redirect from one URI to another.
+         *
+         * @param string $uri
+         * @param string $destination
+         * @param int $status
+         * @return \Illuminate\Routing\Route 
+         * @static 
+         */ 
+        public static function redirect($uri, $destination, $status = 302)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->redirect($uri, $destination, $status);
+        }
+                    /**
+         * Create a permanent redirect from one URI to another.
+         *
+         * @param string $uri
+         * @param string $destination
+         * @return \Illuminate\Routing\Route 
+         * @static 
+         */ 
+        public static function permanentRedirect($uri, $destination)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->permanentRedirect($uri, $destination);
+        }
+                    /**
+         * Register a new route that returns a view.
+         *
+         * @param string $uri
+         * @param string $view
+         * @param array $data
+         * @return \Illuminate\Routing\Route 
+         * @static 
+         */ 
+        public static function view($uri, $view, $data = [])
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->view($uri, $view, $data);
+        }
+                    /**
+         * Register a new route with the given verbs.
+         *
+         * @param array|string $methods
+         * @param string $uri
+         * @param \Closure|array|string|callable|null $action
+         * @return \Illuminate\Routing\Route 
+         * @static 
+         */ 
+        public static function match($methods, $uri, $action = null)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->match($methods, $uri, $action);
+        }
+                    /**
+         * Register an array of resource controllers.
+         *
+         * @param array $resources
+         * @param array $options
+         * @return void 
+         * @static 
+         */ 
+        public static function resources($resources, $options = [])
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        $instance->resources($resources, $options);
+        }
+                    /**
+         * Route a resource to a controller.
+         *
+         * @param string $name
+         * @param string $controller
+         * @param array $options
+         * @return \Illuminate\Routing\PendingResourceRegistration 
+         * @static 
+         */ 
+        public static function resource($name, $controller, $options = [])
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->resource($name, $controller, $options);
+        }
+                    /**
+         * Register an array of API resource controllers.
+         *
+         * @param array $resources
+         * @param array $options
+         * @return void 
+         * @static 
+         */ 
+        public static function apiResources($resources, $options = [])
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        $instance->apiResources($resources, $options);
+        }
+                    /**
+         * Route an API resource to a controller.
+         *
+         * @param string $name
+         * @param string $controller
+         * @param array $options
+         * @return \Illuminate\Routing\PendingResourceRegistration 
+         * @static 
+         */ 
+        public static function apiResource($name, $controller, $options = [])
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->apiResource($name, $controller, $options);
+        }
+                    /**
+         * Create a route group with shared attributes.
+         *
+         * @param array $attributes
+         * @param \Closure|string $routes
+         * @return void 
+         * @static 
+         */ 
+        public static function group($attributes, $routes)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        $instance->group($attributes, $routes);
+        }
+                    /**
+         * Merge the given array with the last group stack.
+         *
+         * @param array $new
+         * @return array 
+         * @static 
+         */ 
+        public static function mergeWithLastGroup($new)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->mergeWithLastGroup($new);
+        }
+                    /**
+         * Get the prefix from the last group on the stack.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getLastGroupPrefix()
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->getLastGroupPrefix();
+        }
+                    /**
+         * Add a route to the underlying route collection.
+         *
+         * @param array|string $methods
+         * @param string $uri
+         * @param \Closure|array|string|callable|null $action
+         * @return \Illuminate\Routing\Route 
+         * @static 
+         */ 
+        public static function addRoute($methods, $uri, $action)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->addRoute($methods, $uri, $action);
+        }
+                    /**
+         * Return the response returned by the given route.
+         *
+         * @param string $name
+         * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse 
+         * @static 
+         */ 
+        public static function respondWithRoute($name)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->respondWithRoute($name);
+        }
+                    /**
+         * Dispatch the request to the application.
+         *
+         * @param \Illuminate\Http\Request $request
+         * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse 
+         * @static 
+         */ 
+        public static function dispatch($request)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->dispatch($request);
+        }
+                    /**
+         * Dispatch the request to a route and return the response.
+         *
+         * @param \Illuminate\Http\Request $request
+         * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse 
+         * @static 
+         */ 
+        public static function dispatchToRoute($request)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->dispatchToRoute($request);
+        }
+                    /**
+         * Gather the middleware for the given route with resolved class names.
+         *
+         * @param \Illuminate\Routing\Route $route
+         * @return array 
+         * @static 
+         */ 
+        public static function gatherRouteMiddleware($route)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->gatherRouteMiddleware($route);
+        }
+                    /**
+         * Create a response instance from the given value.
+         *
+         * @param \Symfony\Component\HttpFoundation\Request $request
+         * @param mixed $response
+         * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse 
+         * @static 
+         */ 
+        public static function prepareResponse($request, $response)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->prepareResponse($request, $response);
+        }
+                    /**
+         * Static version of prepareResponse.
+         *
+         * @param \Symfony\Component\HttpFoundation\Request $request
+         * @param mixed $response
+         * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse 
+         * @static 
+         */ 
+        public static function toResponse($request, $response)
+        {
+                        return \Illuminate\Routing\Router::toResponse($request, $response);
+        }
+                    /**
+         * Substitute the route bindings onto the route.
+         *
+         * @param \Illuminate\Routing\Route $route
+         * @return \Illuminate\Routing\Route 
+         * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
+         * @static 
+         */ 
+        public static function substituteBindings($route)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->substituteBindings($route);
+        }
+                    /**
+         * Substitute the implicit Eloquent model bindings for the route.
+         *
+         * @param \Illuminate\Routing\Route $route
+         * @return void 
+         * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
+         * @static 
+         */ 
+        public static function substituteImplicitBindings($route)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        $instance->substituteImplicitBindings($route);
+        }
+                    /**
+         * Register a route matched event listener.
+         *
+         * @param string|callable $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function matched($callback)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        $instance->matched($callback);
+        }
+                    /**
+         * Get all of the defined middleware short-hand names.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getMiddleware()
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->getMiddleware();
+        }
+                    /**
+         * Register a short-hand name for a middleware.
+         *
+         * @param string $name
+         * @param string $class
+         * @return \Illuminate\Routing\Router 
+         * @static 
+         */ 
+        public static function aliasMiddleware($name, $class)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->aliasMiddleware($name, $class);
+        }
+                    /**
+         * Check if a middlewareGroup with the given name exists.
+         *
+         * @param string $name
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasMiddlewareGroup($name)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->hasMiddlewareGroup($name);
+        }
+                    /**
+         * Get all of the defined middleware groups.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getMiddlewareGroups()
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->getMiddlewareGroups();
+        }
+                    /**
+         * Register a group of middleware.
+         *
+         * @param string $name
+         * @param array $middleware
+         * @return \Illuminate\Routing\Router 
+         * @static 
+         */ 
+        public static function middlewareGroup($name, $middleware)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->middlewareGroup($name, $middleware);
+        }
+                    /**
+         * Add a middleware to the beginning of a middleware group.
+         * 
+         * If the middleware is already in the group, it will not be added again.
+         *
+         * @param string $group
+         * @param string $middleware
+         * @return \Illuminate\Routing\Router 
+         * @static 
+         */ 
+        public static function prependMiddlewareToGroup($group, $middleware)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->prependMiddlewareToGroup($group, $middleware);
+        }
+                    /**
+         * Add a middleware to the end of a middleware group.
+         * 
+         * If the middleware is already in the group, it will not be added again.
+         *
+         * @param string $group
+         * @param string $middleware
+         * @return \Illuminate\Routing\Router 
+         * @static 
+         */ 
+        public static function pushMiddlewareToGroup($group, $middleware)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->pushMiddlewareToGroup($group, $middleware);
+        }
+                    /**
+         * Add a new route parameter binder.
+         *
+         * @param string $key
+         * @param string|callable $binder
+         * @return void 
+         * @static 
+         */ 
+        public static function bind($key, $binder)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        $instance->bind($key, $binder);
+        }
+                    /**
+         * Register a model binder for a wildcard.
+         *
+         * @param string $key
+         * @param string $class
+         * @param \Closure|null $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function model($key, $class, $callback = null)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        $instance->model($key, $class, $callback);
+        }
+                    /**
+         * Get the binding callback for a given binding.
+         *
+         * @param string $key
+         * @return \Closure|null 
+         * @static 
+         */ 
+        public static function getBindingCallback($key)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->getBindingCallback($key);
+        }
+                    /**
+         * Get the global "where" patterns.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getPatterns()
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->getPatterns();
+        }
+                    /**
+         * Set a global where pattern on all routes.
+         *
+         * @param string $key
+         * @param string $pattern
+         * @return void 
+         * @static 
+         */ 
+        public static function pattern($key, $pattern)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        $instance->pattern($key, $pattern);
+        }
+                    /**
+         * Set a group of global where patterns on all routes.
+         *
+         * @param array $patterns
+         * @return void 
+         * @static 
+         */ 
+        public static function patterns($patterns)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        $instance->patterns($patterns);
+        }
+                    /**
+         * Determine if the router currently has a group stack.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasGroupStack()
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->hasGroupStack();
+        }
+                    /**
+         * Get the current group stack for the router.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getGroupStack()
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->getGroupStack();
+        }
+                    /**
+         * Get a route parameter for the current route.
+         *
+         * @param string $key
+         * @param string|null $default
+         * @return mixed 
+         * @static 
+         */ 
+        public static function input($key, $default = null)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->input($key, $default);
+        }
+                    /**
+         * Get the request currently being dispatched.
+         *
+         * @return \Illuminate\Http\Request 
+         * @static 
+         */ 
+        public static function getCurrentRequest()
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->getCurrentRequest();
+        }
+                    /**
+         * Get the currently dispatched route instance.
+         *
+         * @return \Illuminate\Routing\Route 
+         * @static 
+         */ 
+        public static function getCurrentRoute()
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->getCurrentRoute();
+        }
+                    /**
+         * Get the currently dispatched route instance.
+         *
+         * @return \Illuminate\Routing\Route|null 
+         * @static 
+         */ 
+        public static function current()
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->current();
+        }
+                    /**
+         * Check if a route with the given name exists.
+         *
+         * @param string $name
+         * @return bool 
+         * @static 
+         */ 
+        public static function has($name)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->has($name);
+        }
+                    /**
+         * Get the current route name.
+         *
+         * @return string|null 
+         * @static 
+         */ 
+        public static function currentRouteName()
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->currentRouteName();
+        }
+                    /**
+         * Alias for the "currentRouteNamed" method.
+         *
+         * @param mixed $patterns
+         * @return bool 
+         * @static 
+         */ 
+        public static function is(...$patterns)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->is(...$patterns);
+        }
+                    /**
+         * Determine if the current route matches a pattern.
+         *
+         * @param mixed $patterns
+         * @return bool 
+         * @static 
+         */ 
+        public static function currentRouteNamed(...$patterns)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->currentRouteNamed(...$patterns);
+        }
+                    /**
+         * Get the current route action.
+         *
+         * @return string|null 
+         * @static 
+         */ 
+        public static function currentRouteAction()
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->currentRouteAction();
+        }
+                    /**
+         * Alias for the "currentRouteUses" method.
+         *
+         * @param array $patterns
+         * @return bool 
+         * @static 
+         */ 
+        public static function uses(...$patterns)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->uses(...$patterns);
+        }
+                    /**
+         * Determine if the current route action matches a given action.
+         *
+         * @param string $action
+         * @return bool 
+         * @static 
+         */ 
+        public static function currentRouteUses($action)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->currentRouteUses($action);
+        }
+                    /**
+         * Register the typical authentication routes for an application.
+         *
+         * @param array $options
+         * @return void 
+         * @static 
+         */ 
+        public static function auth($options = [])
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        $instance->auth($options);
+        }
+                    /**
+         * Register the typical reset password routes for an application.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function resetPassword()
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        $instance->resetPassword();
+        }
+                    /**
+         * Register the typical email verification routes for an application.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function emailVerification()
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        $instance->emailVerification();
+        }
+                    /**
+         * Set the unmapped global resource parameters to singular.
+         *
+         * @param bool $singular
+         * @return void 
+         * @static 
+         */ 
+        public static function singularResourceParameters($singular = true)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        $instance->singularResourceParameters($singular);
+        }
+                    /**
+         * Set the global resource parameter mapping.
+         *
+         * @param array $parameters
+         * @return void 
+         * @static 
+         */ 
+        public static function resourceParameters($parameters = [])
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        $instance->resourceParameters($parameters);
+        }
+                    /**
+         * Get or set the verbs used in the resource URIs.
+         *
+         * @param array $verbs
+         * @return array|null 
+         * @static 
+         */ 
+        public static function resourceVerbs($verbs = [])
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->resourceVerbs($verbs);
+        }
+                    /**
+         * Get the underlying route collection.
+         *
+         * @return \Illuminate\Routing\RouteCollection 
+         * @static 
+         */ 
+        public static function getRoutes()
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->getRoutes();
+        }
+                    /**
+         * Set the route collection instance.
+         *
+         * @param \Illuminate\Routing\RouteCollection $routes
+         * @return void 
+         * @static 
+         */ 
+        public static function setRoutes($routes)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        $instance->setRoutes($routes);
+        }
+                    /**
+         * Register a custom macro.
+         *
+         * @param string $name
+         * @param object|callable $macro
+         * @return void 
+         * @static 
+         */ 
+        public static function macro($name, $macro)
+        {
+                        \Illuminate\Routing\Router::macro($name, $macro);
+        }
+                    /**
+         * Mix another object into the class.
+         *
+         * @param object $mixin
+         * @param bool $replace
+         * @return void 
+         * @throws \ReflectionException
+         * @static 
+         */ 
+        public static function mixin($mixin, $replace = true)
+        {
+                        \Illuminate\Routing\Router::mixin($mixin, $replace);
+        }
+                    /**
+         * Checks if macro is registered.
+         *
+         * @param string $name
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasMacro($name)
+        {
+                        return \Illuminate\Routing\Router::hasMacro($name);
+        }
+                    /**
+         * Dynamically handle calls to the class.
+         *
+         * @param string $method
+         * @param array $parameters
+         * @return mixed 
+         * @throws \BadMethodCallException
+         * @static 
+         */ 
+        public static function macroCall($method, $parameters)
+        {
+                        /** @var \Illuminate\Routing\Router $instance */
+                        return $instance->macroCall($method, $parameters);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Database\Schema\Builder
+     */ 
+        class Schema {
+                    /**
+         * Determine if the given table exists.
+         *
+         * @param string $table
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasTable($table)
+        {
+                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
+                        return $instance->hasTable($table);
+        }
+                    /**
+         * Get the column listing for a given table.
+         *
+         * @param string $table
+         * @return array 
+         * @static 
+         */ 
+        public static function getColumnListing($table)
+        {
+                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
+                        return $instance->getColumnListing($table);
+        }
+                    /**
+         * Drop all tables from the database.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function dropAllTables()
+        {
+                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
+                        $instance->dropAllTables();
+        }
+                    /**
+         * Drop all views from the database.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function dropAllViews()
+        {
+                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
+                        $instance->dropAllViews();
+        }
+                    /**
+         * Set the default string length for migrations.
+         *
+         * @param int $length
+         * @return void 
+         * @static 
+         */ 
+        public static function defaultStringLength($length)
+        {            //Method inherited from \Illuminate\Database\Schema\Builder         
+                        \Illuminate\Database\Schema\MySqlBuilder::defaultStringLength($length);
+        }
+                    /**
+         * Determine if the given table has a given column.
+         *
+         * @param string $table
+         * @param string $column
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasColumn($table, $column)
+        {            //Method inherited from \Illuminate\Database\Schema\Builder         
+                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
+                        return $instance->hasColumn($table, $column);
+        }
+                    /**
+         * Determine if the given table has given columns.
+         *
+         * @param string $table
+         * @param array $columns
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasColumns($table, $columns)
+        {            //Method inherited from \Illuminate\Database\Schema\Builder         
+                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
+                        return $instance->hasColumns($table, $columns);
+        }
+                    /**
+         * Get the data type for the given column name.
+         *
+         * @param string $table
+         * @param string $column
+         * @return string 
+         * @static 
+         */ 
+        public static function getColumnType($table, $column)
+        {            //Method inherited from \Illuminate\Database\Schema\Builder         
+                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
+                        return $instance->getColumnType($table, $column);
+        }
+                    /**
+         * Modify a table on the schema.
+         *
+         * @param string $table
+         * @param \Closure $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function table($table, $callback)
+        {            //Method inherited from \Illuminate\Database\Schema\Builder         
+                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
+                        $instance->table($table, $callback);
+        }
+                    /**
+         * Create a new table on the schema.
+         *
+         * @param string $table
+         * @param \Closure $callback
+         * @return void 
+         * @static 
+         */ 
+        public static function create($table, $callback)
+        {            //Method inherited from \Illuminate\Database\Schema\Builder         
+                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
+                        $instance->create($table, $callback);
+        }
+                    /**
+         * Drop a table from the schema.
+         *
+         * @param string $table
+         * @return void 
+         * @static 
+         */ 
+        public static function drop($table)
+        {            //Method inherited from \Illuminate\Database\Schema\Builder         
+                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
+                        $instance->drop($table);
+        }
+                    /**
+         * Drop a table from the schema if it exists.
+         *
+         * @param string $table
+         * @return void 
+         * @static 
+         */ 
+        public static function dropIfExists($table)
+        {            //Method inherited from \Illuminate\Database\Schema\Builder         
+                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
+                        $instance->dropIfExists($table);
+        }
+                    /**
+         * Drop all types from the database.
+         *
+         * @return void 
+         * @throws \LogicException
+         * @static 
+         */ 
+        public static function dropAllTypes()
+        {            //Method inherited from \Illuminate\Database\Schema\Builder         
+                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
+                        $instance->dropAllTypes();
+        }
+                    /**
+         * Rename a table on the schema.
+         *
+         * @param string $from
+         * @param string $to
+         * @return void 
+         * @static 
+         */ 
+        public static function rename($from, $to)
+        {            //Method inherited from \Illuminate\Database\Schema\Builder         
+                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
+                        $instance->rename($from, $to);
+        }
+                    /**
+         * Enable foreign key constraints.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function enableForeignKeyConstraints()
+        {            //Method inherited from \Illuminate\Database\Schema\Builder         
+                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
+                        return $instance->enableForeignKeyConstraints();
+        }
+                    /**
+         * Disable foreign key constraints.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function disableForeignKeyConstraints()
+        {            //Method inherited from \Illuminate\Database\Schema\Builder         
+                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
+                        return $instance->disableForeignKeyConstraints();
+        }
+                    /**
+         * Register a custom Doctrine mapping type.
+         *
+         * @param string $class
+         * @param string $name
+         * @param string $type
+         * @return void 
+         * @throws \Doctrine\DBAL\DBALException
+         * @static 
+         */ 
+        public static function registerCustomDoctrineType($class, $name, $type)
+        {            //Method inherited from \Illuminate\Database\Schema\Builder         
+                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
+                        $instance->registerCustomDoctrineType($class, $name, $type);
+        }
+                    /**
+         * Get the database connection instance.
+         *
+         * @return \Illuminate\Database\Connection 
+         * @static 
+         */ 
+        public static function getConnection()
+        {            //Method inherited from \Illuminate\Database\Schema\Builder         
+                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
+                        return $instance->getConnection();
+        }
+                    /**
+         * Set the database connection instance.
+         *
+         * @param \Illuminate\Database\Connection $connection
+         * @return \Illuminate\Database\Schema\MySqlBuilder 
+         * @static 
+         */ 
+        public static function setConnection($connection)
+        {            //Method inherited from \Illuminate\Database\Schema\Builder         
+                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
+                        return $instance->setConnection($connection);
+        }
+                    /**
+         * Set the Schema Blueprint resolver callback.
+         *
+         * @param \Closure $resolver
+         * @return void 
+         * @static 
+         */ 
+        public static function blueprintResolver($resolver)
+        {            //Method inherited from \Illuminate\Database\Schema\Builder         
+                        /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */
+                        $instance->blueprintResolver($resolver);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Session\SessionManager
+     * @see \Illuminate\Session\Store
+     */ 
+        class Session {
+                    /**
+         * Get the session configuration.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getSessionConfig()
+        {
+                        /** @var \Illuminate\Session\SessionManager $instance */
+                        return $instance->getSessionConfig();
+        }
+                    /**
+         * Get the default session driver name.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getDefaultDriver()
+        {
+                        /** @var \Illuminate\Session\SessionManager $instance */
+                        return $instance->getDefaultDriver();
+        }
+                    /**
+         * Set the default session driver name.
+         *
+         * @param string $name
+         * @return void 
+         * @static 
+         */ 
+        public static function setDefaultDriver($name)
+        {
+                        /** @var \Illuminate\Session\SessionManager $instance */
+                        $instance->setDefaultDriver($name);
+        }
+                    /**
+         * Get a driver instance.
+         *
+         * @param string $driver
+         * @return mixed 
+         * @throws \InvalidArgumentException
+         * @static 
+         */ 
+        public static function driver($driver = null)
+        {            //Method inherited from \Illuminate\Support\Manager         
+                        /** @var \Illuminate\Session\SessionManager $instance */
+                        return $instance->driver($driver);
+        }
+                    /**
+         * Register a custom driver creator Closure.
+         *
+         * @param string $driver
+         * @param \Closure $callback
+         * @return \Illuminate\Session\SessionManager 
+         * @static 
+         */ 
+        public static function extend($driver, $callback)
+        {            //Method inherited from \Illuminate\Support\Manager         
+                        /** @var \Illuminate\Session\SessionManager $instance */
+                        return $instance->extend($driver, $callback);
+        }
+                    /**
+         * Get all of the created "drivers".
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getDrivers()
+        {            //Method inherited from \Illuminate\Support\Manager         
+                        /** @var \Illuminate\Session\SessionManager $instance */
+                        return $instance->getDrivers();
+        }
+                    /**
+         * Start the session, reading the data from a handler.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function start()
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->start();
+        }
+                    /**
+         * Save the session data to storage.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function save()
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        $instance->save();
+        }
+                    /**
+         * Age the flash data for the session.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function ageFlashData()
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        $instance->ageFlashData();
+        }
+                    /**
+         * Get all of the session data.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function all()
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->all();
+        }
+                    /**
+         * Get a subset of the session data.
+         *
+         * @param array $keys
+         * @return array 
+         * @static 
+         */ 
+        public static function only($keys)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->only($keys);
+        }
+                    /**
+         * Checks if a key exists.
+         *
+         * @param string|array $key
+         * @return bool 
+         * @static 
+         */ 
+        public static function exists($key)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->exists($key);
+        }
+                    /**
+         * Checks if a key is present and not null.
+         *
+         * @param string|array $key
+         * @return bool 
+         * @static 
+         */ 
+        public static function has($key)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->has($key);
+        }
+                    /**
+         * Get an item from the session.
+         *
+         * @param string $key
+         * @param mixed $default
+         * @return mixed 
+         * @static 
+         */ 
+        public static function get($key, $default = null)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->get($key, $default);
+        }
+                    /**
+         * Get the value of a given key and then forget it.
+         *
+         * @param string $key
+         * @param string|null $default
+         * @return mixed 
+         * @static 
+         */ 
+        public static function pull($key, $default = null)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->pull($key, $default);
+        }
+                    /**
+         * Determine if the session contains old input.
+         *
+         * @param string|null $key
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasOldInput($key = null)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->hasOldInput($key);
+        }
+                    /**
+         * Get the requested item from the flashed input array.
+         *
+         * @param string|null $key
+         * @param mixed $default
+         * @return mixed 
+         * @static 
+         */ 
+        public static function getOldInput($key = null, $default = null)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->getOldInput($key, $default);
+        }
+                    /**
+         * Replace the given session attributes entirely.
+         *
+         * @param array $attributes
+         * @return void 
+         * @static 
+         */ 
+        public static function replace($attributes)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        $instance->replace($attributes);
+        }
+                    /**
+         * Put a key / value pair or array of key / value pairs in the session.
+         *
+         * @param string|array $key
+         * @param mixed $value
+         * @return void 
+         * @static 
+         */ 
+        public static function put($key, $value = null)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        $instance->put($key, $value);
+        }
+                    /**
+         * Get an item from the session, or store the default value.
+         *
+         * @param string $key
+         * @param \Closure $callback
+         * @return mixed 
+         * @static 
+         */ 
+        public static function remember($key, $callback)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->remember($key, $callback);
+        }
+                    /**
+         * Push a value onto a session array.
+         *
+         * @param string $key
+         * @param mixed $value
+         * @return void 
+         * @static 
+         */ 
+        public static function push($key, $value)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        $instance->push($key, $value);
+        }
+                    /**
+         * Increment the value of an item in the session.
+         *
+         * @param string $key
+         * @param int $amount
+         * @return mixed 
+         * @static 
+         */ 
+        public static function increment($key, $amount = 1)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->increment($key, $amount);
+        }
+                    /**
+         * Decrement the value of an item in the session.
+         *
+         * @param string $key
+         * @param int $amount
+         * @return int 
+         * @static 
+         */ 
+        public static function decrement($key, $amount = 1)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->decrement($key, $amount);
+        }
+                    /**
+         * Flash a key / value pair to the session.
+         *
+         * @param string $key
+         * @param mixed $value
+         * @return void 
+         * @static 
+         */ 
+        public static function flash($key, $value = true)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        $instance->flash($key, $value);
+        }
+                    /**
+         * Flash a key / value pair to the session for immediate use.
+         *
+         * @param string $key
+         * @param mixed $value
+         * @return void 
+         * @static 
+         */ 
+        public static function now($key, $value)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        $instance->now($key, $value);
+        }
+                    /**
+         * Reflash all of the session flash data.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function reflash()
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        $instance->reflash();
+        }
+                    /**
+         * Reflash a subset of the current flash data.
+         *
+         * @param array|mixed $keys
+         * @return void 
+         * @static 
+         */ 
+        public static function keep($keys = null)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        $instance->keep($keys);
+        }
+                    /**
+         * Flash an input array to the session.
+         *
+         * @param array $value
+         * @return void 
+         * @static 
+         */ 
+        public static function flashInput($value)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        $instance->flashInput($value);
+        }
+                    /**
+         * Remove an item from the session, returning its value.
+         *
+         * @param string $key
+         * @return mixed 
+         * @static 
+         */ 
+        public static function remove($key)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->remove($key);
+        }
+                    /**
+         * Remove one or many items from the session.
+         *
+         * @param string|array $keys
+         * @return void 
+         * @static 
+         */ 
+        public static function forget($keys)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        $instance->forget($keys);
+        }
+                    /**
+         * Remove all of the items from the session.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function flush()
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        $instance->flush();
+        }
+                    /**
+         * Flush the session data and regenerate the ID.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function invalidate()
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->invalidate();
+        }
+                    /**
+         * Generate a new session identifier.
+         *
+         * @param bool $destroy
+         * @return bool 
+         * @static 
+         */ 
+        public static function regenerate($destroy = false)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->regenerate($destroy);
+        }
+                    /**
+         * Generate a new session ID for the session.
+         *
+         * @param bool $destroy
+         * @return bool 
+         * @static 
+         */ 
+        public static function migrate($destroy = false)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->migrate($destroy);
+        }
+                    /**
+         * Determine if the session has been started.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function isStarted()
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->isStarted();
+        }
+                    /**
+         * Get the name of the session.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getName()
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->getName();
+        }
+                    /**
+         * Set the name of the session.
+         *
+         * @param string $name
+         * @return void 
+         * @static 
+         */ 
+        public static function setName($name)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        $instance->setName($name);
+        }
+                    /**
+         * Get the current session ID.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getId()
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->getId();
+        }
+                    /**
+         * Set the session ID.
+         *
+         * @param string $id
+         * @return void 
+         * @static 
+         */ 
+        public static function setId($id)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        $instance->setId($id);
+        }
+                    /**
+         * Determine if this is a valid session ID.
+         *
+         * @param string $id
+         * @return bool 
+         * @static 
+         */ 
+        public static function isValidId($id)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->isValidId($id);
+        }
+                    /**
+         * Set the existence of the session on the handler if applicable.
+         *
+         * @param bool $value
+         * @return void 
+         * @static 
+         */ 
+        public static function setExists($value)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        $instance->setExists($value);
+        }
+                    /**
+         * Get the CSRF token value.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function token()
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->token();
+        }
+                    /**
+         * Regenerate the CSRF token value.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function regenerateToken()
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        $instance->regenerateToken();
+        }
+                    /**
+         * Get the previous URL from the session.
+         *
+         * @return string|null 
+         * @static 
+         */ 
+        public static function previousUrl()
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->previousUrl();
+        }
+                    /**
+         * Set the "previous" URL in the session.
+         *
+         * @param string $url
+         * @return void 
+         * @static 
+         */ 
+        public static function setPreviousUrl($url)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        $instance->setPreviousUrl($url);
+        }
+                    /**
+         * Get the underlying session handler implementation.
+         *
+         * @return \SessionHandlerInterface 
+         * @static 
+         */ 
+        public static function getHandler()
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->getHandler();
+        }
+                    /**
+         * Determine if the session handler needs a request.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function handlerNeedsRequest()
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        return $instance->handlerNeedsRequest();
+        }
+                    /**
+         * Set the request on the handler instance.
+         *
+         * @param \Illuminate\Http\Request $request
+         * @return void 
+         * @static 
+         */ 
+        public static function setRequestOnHandler($request)
+        {
+                        /** @var \Illuminate\Session\Store $instance */
+                        $instance->setRequestOnHandler($request);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Filesystem\FilesystemManager
+     */ 
+        class Storage {
+                    /**
+         * Get a filesystem instance.
+         *
+         * @param string|null $name
+         * @return \Illuminate\Filesystem\FilesystemAdapter 
+         * @static 
+         */ 
+        public static function drive($name = null)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
+                        return $instance->drive($name);
+        }
+                    /**
+         * Get a filesystem instance.
+         *
+         * @param string|null $name
+         * @return \Illuminate\Filesystem\FilesystemAdapter 
+         * @static 
+         */ 
+        public static function disk($name = null)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
+                        return $instance->disk($name);
+        }
+                    /**
+         * Get a default cloud filesystem instance.
+         *
+         * @return \Illuminate\Filesystem\FilesystemAdapter 
+         * @static 
+         */ 
+        public static function cloud()
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
+                        return $instance->cloud();
+        }
+                    /**
+         * Create an instance of the local driver.
+         *
+         * @param array $config
+         * @return \Illuminate\Filesystem\FilesystemAdapter 
+         * @static 
+         */ 
+        public static function createLocalDriver($config)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
+                        return $instance->createLocalDriver($config);
+        }
+                    /**
+         * Create an instance of the ftp driver.
+         *
+         * @param array $config
+         * @return \Illuminate\Filesystem\FilesystemAdapter 
+         * @static 
+         */ 
+        public static function createFtpDriver($config)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
+                        return $instance->createFtpDriver($config);
+        }
+                    /**
+         * Create an instance of the sftp driver.
+         *
+         * @param array $config
+         * @return \Illuminate\Filesystem\FilesystemAdapter 
+         * @static 
+         */ 
+        public static function createSftpDriver($config)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
+                        return $instance->createSftpDriver($config);
+        }
+                    /**
+         * Create an instance of the Amazon S3 driver.
+         *
+         * @param array $config
+         * @return \Illuminate\Contracts\Filesystem\Cloud 
+         * @static 
+         */ 
+        public static function createS3Driver($config)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
+                        return $instance->createS3Driver($config);
+        }
+                    /**
+         * Create an instance of the Rackspace driver.
+         *
+         * @param array $config
+         * @return \Illuminate\Contracts\Filesystem\Cloud 
+         * @static 
+         */ 
+        public static function createRackspaceDriver($config)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
+                        return $instance->createRackspaceDriver($config);
+        }
+                    /**
+         * Set the given disk instance.
+         *
+         * @param string $name
+         * @param mixed $disk
+         * @return \Illuminate\Filesystem\FilesystemManager 
+         * @static 
+         */ 
+        public static function set($name, $disk)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
+                        return $instance->set($name, $disk);
+        }
+                    /**
+         * Get the default driver name.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getDefaultDriver()
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
+                        return $instance->getDefaultDriver();
+        }
+                    /**
+         * Get the default cloud driver name.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getDefaultCloudDriver()
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
+                        return $instance->getDefaultCloudDriver();
+        }
+                    /**
+         * Unset the given disk instances.
+         *
+         * @param array|string $disk
+         * @return \Illuminate\Filesystem\FilesystemManager 
+         * @static 
+         */ 
+        public static function forgetDisk($disk)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
+                        return $instance->forgetDisk($disk);
+        }
+                    /**
+         * Register a custom driver creator Closure.
+         *
+         * @param string $driver
+         * @param \Closure $callback
+         * @return \Illuminate\Filesystem\FilesystemManager 
+         * @static 
+         */ 
+        public static function extend($driver, $callback)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemManager $instance */
+                        return $instance->extend($driver, $callback);
+        }
+                    /**
+         * Assert that the given file exists.
+         *
+         * @param string|array $path
+         * @return \Illuminate\Filesystem\FilesystemAdapter 
+         * @static 
+         */ 
+        public static function assertExists($path)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->assertExists($path);
+        }
+                    /**
+         * Assert that the given file does not exist.
+         *
+         * @param string|array $path
+         * @return \Illuminate\Filesystem\FilesystemAdapter 
+         * @static 
+         */ 
+        public static function assertMissing($path)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->assertMissing($path);
+        }
+                    /**
+         * Determine if a file exists.
+         *
+         * @param string $path
+         * @return bool 
+         * @static 
+         */ 
+        public static function exists($path)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->exists($path);
+        }
+                    /**
+         * Get the full path for the file at the given "short" path.
+         *
+         * @param string $path
+         * @return string 
+         * @static 
+         */ 
+        public static function path($path)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->path($path);
+        }
+                    /**
+         * Get the contents of a file.
+         *
+         * @param string $path
+         * @return string 
+         * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
+         * @static 
+         */ 
+        public static function get($path)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->get($path);
+        }
+                    /**
+         * Create a streamed response for a given file.
+         *
+         * @param string $path
+         * @param string|null $name
+         * @param array|null $headers
+         * @param string|null $disposition
+         * @return \Symfony\Component\HttpFoundation\StreamedResponse 
+         * @static 
+         */ 
+        public static function response($path, $name = null, $headers = [], $disposition = 'inline')
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->response($path, $name, $headers, $disposition);
+        }
+                    /**
+         * Create a streamed download response for a given file.
+         *
+         * @param string $path
+         * @param string|null $name
+         * @param array|null $headers
+         * @return \Symfony\Component\HttpFoundation\StreamedResponse 
+         * @static 
+         */ 
+        public static function download($path, $name = null, $headers = [])
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->download($path, $name, $headers);
+        }
+                    /**
+         * Write the contents of a file.
+         *
+         * @param string $path
+         * @param string|resource $contents
+         * @param mixed $options
+         * @return bool 
+         * @static 
+         */ 
+        public static function put($path, $contents, $options = [])
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->put($path, $contents, $options);
+        }
+                    /**
+         * Store the uploaded file on the disk.
+         *
+         * @param string $path
+         * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile $file
+         * @param array $options
+         * @return string|false 
+         * @static 
+         */ 
+        public static function putFile($path, $file, $options = [])
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->putFile($path, $file, $options);
+        }
+                    /**
+         * Store the uploaded file on the disk with a given name.
+         *
+         * @param string $path
+         * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile $file
+         * @param string $name
+         * @param array $options
+         * @return string|false 
+         * @static 
+         */ 
+        public static function putFileAs($path, $file, $name, $options = [])
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->putFileAs($path, $file, $name, $options);
+        }
+                    /**
+         * Get the visibility for the given path.
+         *
+         * @param string $path
+         * @return string 
+         * @static 
+         */ 
+        public static function getVisibility($path)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->getVisibility($path);
+        }
+                    /**
+         * Set the visibility for the given path.
+         *
+         * @param string $path
+         * @param string $visibility
+         * @return bool 
+         * @static 
+         */ 
+        public static function setVisibility($path, $visibility)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->setVisibility($path, $visibility);
+        }
+                    /**
+         * Prepend to a file.
+         *
+         * @param string $path
+         * @param string $data
+         * @param string $separator
+         * @return bool 
+         * @static 
+         */ 
+        public static function prepend($path, $data, $separator = '
+')
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->prepend($path, $data, $separator);
+        }
+                    /**
+         * Append to a file.
+         *
+         * @param string $path
+         * @param string $data
+         * @param string $separator
+         * @return bool 
+         * @static 
+         */ 
+        public static function append($path, $data, $separator = '
+')
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->append($path, $data, $separator);
+        }
+                    /**
+         * Delete the file at a given path.
+         *
+         * @param string|array $paths
+         * @return bool 
+         * @static 
+         */ 
+        public static function delete($paths)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->delete($paths);
+        }
+                    /**
+         * Copy a file to a new location.
+         *
+         * @param string $from
+         * @param string $to
+         * @return bool 
+         * @static 
+         */ 
+        public static function copy($from, $to)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->copy($from, $to);
+        }
+                    /**
+         * Move a file to a new location.
+         *
+         * @param string $from
+         * @param string $to
+         * @return bool 
+         * @static 
+         */ 
+        public static function move($from, $to)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->move($from, $to);
+        }
+                    /**
+         * Get the file size of a given file.
+         *
+         * @param string $path
+         * @return int 
+         * @static 
+         */ 
+        public static function size($path)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->size($path);
+        }
+                    /**
+         * Get the mime-type of a given file.
+         *
+         * @param string $path
+         * @return string|false 
+         * @static 
+         */ 
+        public static function mimeType($path)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->mimeType($path);
+        }
+                    /**
+         * Get the file's last modification time.
+         *
+         * @param string $path
+         * @return int 
+         * @static 
+         */ 
+        public static function lastModified($path)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->lastModified($path);
+        }
+                    /**
+         * Get the URL for the file at the given path.
+         *
+         * @param string $path
+         * @return string 
+         * @throws \RuntimeException
+         * @static 
+         */ 
+        public static function url($path)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->url($path);
+        }
+                    /**
+         * Get a resource to read the file.
+         *
+         * @param string $path
+         * @return resource|null The path resource or null on failure.
+         * @throws FileNotFoundException
+         * @static 
+         */ 
+        public static function readStream($path)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->readStream($path);
+        }
+                    /**
+         * Write a new file using a stream.
+         *
+         * @param string $path
+         * @param resource $resource
+         * @param array $options
+         * @return bool 
+         * @throws \InvalidArgumentException If $resource is not a file handle.
+         * @throws FileExistsException
+         * @static 
+         */ 
+        public static function writeStream($path, $resource, $options = [])
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->writeStream($path, $resource, $options);
+        }
+                    /**
+         * Get a temporary URL for the file at the given path.
+         *
+         * @param string $path
+         * @param \DateTimeInterface $expiration
+         * @param array $options
+         * @return string 
+         * @throws \RuntimeException
+         * @static 
+         */ 
+        public static function temporaryUrl($path, $expiration, $options = [])
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->temporaryUrl($path, $expiration, $options);
+        }
+                    /**
+         * Get a temporary URL for the file at the given path.
+         *
+         * @param \League\Flysystem\AwsS3v3\AwsS3Adapter $adapter
+         * @param string $path
+         * @param \DateTimeInterface $expiration
+         * @param array $options
+         * @return string 
+         * @static 
+         */ 
+        public static function getAwsTemporaryUrl($adapter, $path, $expiration, $options)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->getAwsTemporaryUrl($adapter, $path, $expiration, $options);
+        }
+                    /**
+         * Get a temporary URL for the file at the given path.
+         *
+         * @param \League\Flysystem\Rackspace\RackspaceAdapter $adapter
+         * @param string $path
+         * @param \DateTimeInterface $expiration
+         * @param array $options
+         * @return string 
+         * @static 
+         */ 
+        public static function getRackspaceTemporaryUrl($adapter, $path, $expiration, $options)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->getRackspaceTemporaryUrl($adapter, $path, $expiration, $options);
+        }
+                    /**
+         * Get an array of all files in a directory.
+         *
+         * @param string|null $directory
+         * @param bool $recursive
+         * @return array 
+         * @static 
+         */ 
+        public static function files($directory = null, $recursive = false)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->files($directory, $recursive);
+        }
+                    /**
+         * Get all of the files from the given directory (recursive).
+         *
+         * @param string|null $directory
+         * @return array 
+         * @static 
+         */ 
+        public static function allFiles($directory = null)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->allFiles($directory);
+        }
+                    /**
+         * Get all of the directories within a given directory.
+         *
+         * @param string|null $directory
+         * @param bool $recursive
+         * @return array 
+         * @static 
+         */ 
+        public static function directories($directory = null, $recursive = false)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->directories($directory, $recursive);
+        }
+                    /**
+         * Get all (recursive) of the directories within a given directory.
+         *
+         * @param string|null $directory
+         * @return array 
+         * @static 
+         */ 
+        public static function allDirectories($directory = null)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->allDirectories($directory);
+        }
+                    /**
+         * Create a directory.
+         *
+         * @param string $path
+         * @return bool 
+         * @static 
+         */ 
+        public static function makeDirectory($path)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->makeDirectory($path);
+        }
+                    /**
+         * Recursively delete a directory.
+         *
+         * @param string $directory
+         * @return bool 
+         * @static 
+         */ 
+        public static function deleteDirectory($directory)
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->deleteDirectory($directory);
+        }
+                    /**
+         * Flush the Flysystem cache.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function flushCache()
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        $instance->flushCache();
+        }
+                    /**
+         * Get the Flysystem driver.
+         *
+         * @return \League\Flysystem\FilesystemInterface 
+         * @static 
+         */ 
+        public static function getDriver()
+        {
+                        /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */
+                        return $instance->getDriver();
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Routing\UrlGenerator
+     */ 
+        class URL {
+                    /**
+         * Get the full URL for the current request.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function full()
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->full();
+        }
+                    /**
+         * Get the current URL for the request.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function current()
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->current();
+        }
+                    /**
+         * Get the URL for the previous request.
+         *
+         * @param mixed $fallback
+         * @return string 
+         * @static 
+         */ 
+        public static function previous($fallback = false)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->previous($fallback);
+        }
+                    /**
+         * Generate an absolute URL to the given path.
+         *
+         * @param string $path
+         * @param mixed $extra
+         * @param bool|null $secure
+         * @return string 
+         * @static 
+         */ 
+        public static function to($path, $extra = [], $secure = null)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->to($path, $extra, $secure);
+        }
+                    /**
+         * Generate a secure, absolute URL to the given path.
+         *
+         * @param string $path
+         * @param array $parameters
+         * @return string 
+         * @static 
+         */ 
+        public static function secure($path, $parameters = [])
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->secure($path, $parameters);
+        }
+                    /**
+         * Generate the URL to an application asset.
+         *
+         * @param string $path
+         * @param bool|null $secure
+         * @return string 
+         * @static 
+         */ 
+        public static function asset($path, $secure = null)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->asset($path, $secure);
+        }
+                    /**
+         * Generate the URL to a secure asset.
+         *
+         * @param string $path
+         * @return string 
+         * @static 
+         */ 
+        public static function secureAsset($path)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->secureAsset($path);
+        }
+                    /**
+         * Generate the URL to an asset from a custom root domain such as CDN, etc.
+         *
+         * @param string $root
+         * @param string $path
+         * @param bool|null $secure
+         * @return string 
+         * @static 
+         */ 
+        public static function assetFrom($root, $path, $secure = null)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->assetFrom($root, $path, $secure);
+        }
+                    /**
+         * Get the default scheme for a raw URL.
+         *
+         * @param bool|null $secure
+         * @return string 
+         * @static 
+         */ 
+        public static function formatScheme($secure = null)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->formatScheme($secure);
+        }
+                    /**
+         * Create a signed route URL for a named route.
+         *
+         * @param string $name
+         * @param array $parameters
+         * @param \DateTimeInterface|\DateInterval|int|null $expiration
+         * @param bool $absolute
+         * @return string 
+         * @static 
+         */ 
+        public static function signedRoute($name, $parameters = [], $expiration = null, $absolute = true)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->signedRoute($name, $parameters, $expiration, $absolute);
+        }
+                    /**
+         * Create a temporary signed route URL for a named route.
+         *
+         * @param string $name
+         * @param \DateTimeInterface|\DateInterval|int $expiration
+         * @param array $parameters
+         * @param bool $absolute
+         * @return string 
+         * @static 
+         */ 
+        public static function temporarySignedRoute($name, $expiration, $parameters = [], $absolute = true)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->temporarySignedRoute($name, $expiration, $parameters, $absolute);
+        }
+                    /**
+         * Determine if the given request has a valid signature.
+         *
+         * @param \Illuminate\Http\Request $request
+         * @param bool $absolute
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasValidSignature($request, $absolute = true)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->hasValidSignature($request, $absolute);
+        }
+                    /**
+         * Get the URL to a named route.
+         *
+         * @param string $name
+         * @param mixed $parameters
+         * @param bool $absolute
+         * @return string 
+         * @throws \InvalidArgumentException
+         * @static 
+         */ 
+        public static function route($name, $parameters = [], $absolute = true)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->route($name, $parameters, $absolute);
+        }
+                    /**
+         * Get the URL to a controller action.
+         *
+         * @param string|array $action
+         * @param mixed $parameters
+         * @param bool $absolute
+         * @return string 
+         * @throws \InvalidArgumentException
+         * @static 
+         */ 
+        public static function action($action, $parameters = [], $absolute = true)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->action($action, $parameters, $absolute);
+        }
+                    /**
+         * Format the array of URL parameters.
+         *
+         * @param mixed|array $parameters
+         * @return array 
+         * @static 
+         */ 
+        public static function formatParameters($parameters)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->formatParameters($parameters);
+        }
+                    /**
+         * Get the base URL for the request.
+         *
+         * @param string $scheme
+         * @param string|null $root
+         * @return string 
+         * @static 
+         */ 
+        public static function formatRoot($scheme, $root = null)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->formatRoot($scheme, $root);
+        }
+                    /**
+         * Format the given URL segments into a single URL.
+         *
+         * @param string $root
+         * @param string $path
+         * @param \Illuminate\Routing\Route|null $route
+         * @return string 
+         * @static 
+         */ 
+        public static function format($root, $path, $route = null)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->format($root, $path, $route);
+        }
+                    /**
+         * Determine if the given path is a valid URL.
+         *
+         * @param string $path
+         * @return bool 
+         * @static 
+         */ 
+        public static function isValidUrl($path)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->isValidUrl($path);
+        }
+                    /**
+         * Set the default named parameters used by the URL generator.
+         *
+         * @param array $defaults
+         * @return void 
+         * @static 
+         */ 
+        public static function defaults($defaults)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        $instance->defaults($defaults);
+        }
+                    /**
+         * Get the default named parameters used by the URL generator.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getDefaultParameters()
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->getDefaultParameters();
+        }
+                    /**
+         * Force the scheme for URLs.
+         *
+         * @param string $scheme
+         * @return void 
+         * @static 
+         */ 
+        public static function forceScheme($scheme)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        $instance->forceScheme($scheme);
+        }
+                    /**
+         * Set the forced root URL.
+         *
+         * @param string $root
+         * @return void 
+         * @static 
+         */ 
+        public static function forceRootUrl($root)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        $instance->forceRootUrl($root);
+        }
+                    /**
+         * Set a callback to be used to format the host of generated URLs.
+         *
+         * @param \Closure $callback
+         * @return \Illuminate\Routing\UrlGenerator 
+         * @static 
+         */ 
+        public static function formatHostUsing($callback)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->formatHostUsing($callback);
+        }
+                    /**
+         * Set a callback to be used to format the path of generated URLs.
+         *
+         * @param \Closure $callback
+         * @return \Illuminate\Routing\UrlGenerator 
+         * @static 
+         */ 
+        public static function formatPathUsing($callback)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->formatPathUsing($callback);
+        }
+                    /**
+         * Get the path formatter being used by the URL generator.
+         *
+         * @return \Closure 
+         * @static 
+         */ 
+        public static function pathFormatter()
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->pathFormatter();
+        }
+                    /**
+         * Get the request instance.
+         *
+         * @return \Illuminate\Http\Request 
+         * @static 
+         */ 
+        public static function getRequest()
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->getRequest();
+        }
+                    /**
+         * Set the current request instance.
+         *
+         * @param \Illuminate\Http\Request $request
+         * @return void 
+         * @static 
+         */ 
+        public static function setRequest($request)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        $instance->setRequest($request);
+        }
+                    /**
+         * Set the route collection.
+         *
+         * @param \Illuminate\Routing\RouteCollection $routes
+         * @return \Illuminate\Routing\UrlGenerator 
+         * @static 
+         */ 
+        public static function setRoutes($routes)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->setRoutes($routes);
+        }
+                    /**
+         * Set the session resolver for the generator.
+         *
+         * @param callable $sessionResolver
+         * @return \Illuminate\Routing\UrlGenerator 
+         * @static 
+         */ 
+        public static function setSessionResolver($sessionResolver)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->setSessionResolver($sessionResolver);
+        }
+                    /**
+         * Set the encryption key resolver.
+         *
+         * @param callable $keyResolver
+         * @return \Illuminate\Routing\UrlGenerator 
+         * @static 
+         */ 
+        public static function setKeyResolver($keyResolver)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->setKeyResolver($keyResolver);
+        }
+                    /**
+         * Set the root controller namespace.
+         *
+         * @param string $rootNamespace
+         * @return \Illuminate\Routing\UrlGenerator 
+         * @static 
+         */ 
+        public static function setRootControllerNamespace($rootNamespace)
+        {
+                        /** @var \Illuminate\Routing\UrlGenerator $instance */
+                        return $instance->setRootControllerNamespace($rootNamespace);
+        }
+                    /**
+         * Register a custom macro.
+         *
+         * @param string $name
+         * @param object|callable $macro
+         * @return void 
+         * @static 
+         */ 
+        public static function macro($name, $macro)
+        {
+                        \Illuminate\Routing\UrlGenerator::macro($name, $macro);
+        }
+                    /**
+         * Mix another object into the class.
+         *
+         * @param object $mixin
+         * @param bool $replace
+         * @return void 
+         * @throws \ReflectionException
+         * @static 
+         */ 
+        public static function mixin($mixin, $replace = true)
+        {
+                        \Illuminate\Routing\UrlGenerator::mixin($mixin, $replace);
+        }
+                    /**
+         * Checks if macro is registered.
+         *
+         * @param string $name
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasMacro($name)
+        {
+                        return \Illuminate\Routing\UrlGenerator::hasMacro($name);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\Validation\Factory
+     */ 
+        class Validator {
+                    /**
+         * Create a new Validator instance.
+         *
+         * @param array $data
+         * @param array $rules
+         * @param array $messages
+         * @param array $customAttributes
+         * @return \Illuminate\Validation\Validator 
+         * @static 
+         */ 
+        public static function make($data, $rules, $messages = [], $customAttributes = [])
+        {
+                        /** @var \Illuminate\Validation\Factory $instance */
+                        return $instance->make($data, $rules, $messages, $customAttributes);
+        }
+                    /**
+         * Validate the given data against the provided rules.
+         *
+         * @param array $data
+         * @param array $rules
+         * @param array $messages
+         * @param array $customAttributes
+         * @return array 
+         * @throws \Illuminate\Validation\ValidationException
+         * @static 
+         */ 
+        public static function validate($data, $rules, $messages = [], $customAttributes = [])
+        {
+                        /** @var \Illuminate\Validation\Factory $instance */
+                        return $instance->validate($data, $rules, $messages, $customAttributes);
+        }
+                    /**
+         * Register a custom validator extension.
+         *
+         * @param string $rule
+         * @param \Closure|string $extension
+         * @param string|null $message
+         * @return void 
+         * @static 
+         */ 
+        public static function extend($rule, $extension, $message = null)
+        {
+                        /** @var \Illuminate\Validation\Factory $instance */
+                        $instance->extend($rule, $extension, $message);
+        }
+                    /**
+         * Register a custom implicit validator extension.
+         *
+         * @param string $rule
+         * @param \Closure|string $extension
+         * @param string|null $message
+         * @return void 
+         * @static 
+         */ 
+        public static function extendImplicit($rule, $extension, $message = null)
+        {
+                        /** @var \Illuminate\Validation\Factory $instance */
+                        $instance->extendImplicit($rule, $extension, $message);
+        }
+                    /**
+         * Register a custom dependent validator extension.
+         *
+         * @param string $rule
+         * @param \Closure|string $extension
+         * @param string|null $message
+         * @return void 
+         * @static 
+         */ 
+        public static function extendDependent($rule, $extension, $message = null)
+        {
+                        /** @var \Illuminate\Validation\Factory $instance */
+                        $instance->extendDependent($rule, $extension, $message);
+        }
+                    /**
+         * Register a custom validator message replacer.
+         *
+         * @param string $rule
+         * @param \Closure|string $replacer
+         * @return void 
+         * @static 
+         */ 
+        public static function replacer($rule, $replacer)
+        {
+                        /** @var \Illuminate\Validation\Factory $instance */
+                        $instance->replacer($rule, $replacer);
+        }
+                    /**
+         * Set the Validator instance resolver.
+         *
+         * @param \Closure $resolver
+         * @return void 
+         * @static 
+         */ 
+        public static function resolver($resolver)
+        {
+                        /** @var \Illuminate\Validation\Factory $instance */
+                        $instance->resolver($resolver);
+        }
+                    /**
+         * Get the Translator implementation.
+         *
+         * @return \Illuminate\Contracts\Translation\Translator 
+         * @static 
+         */ 
+        public static function getTranslator()
+        {
+                        /** @var \Illuminate\Validation\Factory $instance */
+                        return $instance->getTranslator();
+        }
+                    /**
+         * Get the Presence Verifier implementation.
+         *
+         * @return \Illuminate\Validation\PresenceVerifierInterface 
+         * @static 
+         */ 
+        public static function getPresenceVerifier()
+        {
+                        /** @var \Illuminate\Validation\Factory $instance */
+                        return $instance->getPresenceVerifier();
+        }
+                    /**
+         * Set the Presence Verifier implementation.
+         *
+         * @param \Illuminate\Validation\PresenceVerifierInterface $presenceVerifier
+         * @return void 
+         * @static 
+         */ 
+        public static function setPresenceVerifier($presenceVerifier)
+        {
+                        /** @var \Illuminate\Validation\Factory $instance */
+                        $instance->setPresenceVerifier($presenceVerifier);
+        }
+         
+    }
+            /**
+     * 
+     *
+     * @see \Illuminate\View\Factory
+     */ 
+        class View {
+                    /**
+         * Get the evaluated view contents for the given view.
+         *
+         * @param string $path
+         * @param \Illuminate\Contracts\Support\Arrayable|array $data
+         * @param array $mergeData
+         * @return \Illuminate\Contracts\View\View 
+         * @static 
+         */ 
+        public static function file($path, $data = [], $mergeData = [])
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->file($path, $data, $mergeData);
+        }
+                    /**
+         * Get the evaluated view contents for the given view.
+         *
+         * @param string $view
+         * @param \Illuminate\Contracts\Support\Arrayable|array $data
+         * @param array $mergeData
+         * @return \Illuminate\Contracts\View\View 
+         * @static 
+         */ 
+        public static function make($view, $data = [], $mergeData = [])
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->make($view, $data, $mergeData);
+        }
+                    /**
+         * Get the first view that actually exists from the given list.
+         *
+         * @param array $views
+         * @param \Illuminate\Contracts\Support\Arrayable|array $data
+         * @param array $mergeData
+         * @return \Illuminate\Contracts\View\View 
+         * @throws \InvalidArgumentException
+         * @static 
+         */ 
+        public static function first($views, $data = [], $mergeData = [])
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->first($views, $data, $mergeData);
+        }
+                    /**
+         * Get the rendered content of the view based on a given condition.
+         *
+         * @param bool $condition
+         * @param string $view
+         * @param \Illuminate\Contracts\Support\Arrayable|array $data
+         * @param array $mergeData
+         * @return string 
+         * @static 
+         */ 
+        public static function renderWhen($condition, $view, $data = [], $mergeData = [])
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->renderWhen($condition, $view, $data, $mergeData);
+        }
+                    /**
+         * Get the rendered contents of a partial from a loop.
+         *
+         * @param string $view
+         * @param array $data
+         * @param string $iterator
+         * @param string $empty
+         * @return string 
+         * @static 
+         */ 
+        public static function renderEach($view, $data, $iterator, $empty = 'raw|')
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->renderEach($view, $data, $iterator, $empty);
+        }
+                    /**
+         * Determine if a given view exists.
+         *
+         * @param string $view
+         * @return bool 
+         * @static 
+         */ 
+        public static function exists($view)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->exists($view);
+        }
+                    /**
+         * Get the appropriate view engine for the given path.
+         *
+         * @param string $path
+         * @return \Illuminate\Contracts\View\Engine 
+         * @throws \InvalidArgumentException
+         * @static 
+         */ 
+        public static function getEngineFromPath($path)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->getEngineFromPath($path);
+        }
+                    /**
+         * Add a piece of shared data to the environment.
+         *
+         * @param array|string $key
+         * @param mixed|null $value
+         * @return mixed 
+         * @static 
+         */ 
+        public static function share($key, $value = null)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->share($key, $value);
+        }
+                    /**
+         * Increment the rendering counter.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function incrementRender()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->incrementRender();
+        }
+                    /**
+         * Decrement the rendering counter.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function decrementRender()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->decrementRender();
+        }
+                    /**
+         * Check if there are no active render operations.
+         *
+         * @return bool 
+         * @static 
+         */ 
+        public static function doneRendering()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->doneRendering();
+        }
+                    /**
+         * Add a location to the array of view locations.
+         *
+         * @param string $location
+         * @return void 
+         * @static 
+         */ 
+        public static function addLocation($location)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->addLocation($location);
+        }
+                    /**
+         * Add a new namespace to the loader.
+         *
+         * @param string $namespace
+         * @param string|array $hints
+         * @return \Illuminate\View\Factory 
+         * @static 
+         */ 
+        public static function addNamespace($namespace, $hints)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->addNamespace($namespace, $hints);
+        }
+                    /**
+         * Prepend a new namespace to the loader.
+         *
+         * @param string $namespace
+         * @param string|array $hints
+         * @return \Illuminate\View\Factory 
+         * @static 
+         */ 
+        public static function prependNamespace($namespace, $hints)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->prependNamespace($namespace, $hints);
+        }
+                    /**
+         * Replace the namespace hints for the given namespace.
+         *
+         * @param string $namespace
+         * @param string|array $hints
+         * @return \Illuminate\View\Factory 
+         * @static 
+         */ 
+        public static function replaceNamespace($namespace, $hints)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->replaceNamespace($namespace, $hints);
+        }
+                    /**
+         * Register a valid view extension and its engine.
+         *
+         * @param string $extension
+         * @param string $engine
+         * @param \Closure|null $resolver
+         * @return void 
+         * @static 
+         */ 
+        public static function addExtension($extension, $engine, $resolver = null)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->addExtension($extension, $engine, $resolver);
+        }
+                    /**
+         * Flush all of the factory state like sections and stacks.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function flushState()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->flushState();
+        }
+                    /**
+         * Flush all of the section contents if done rendering.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function flushStateIfDoneRendering()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->flushStateIfDoneRendering();
+        }
+                    /**
+         * Get the extension to engine bindings.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getExtensions()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->getExtensions();
+        }
+                    /**
+         * Get the engine resolver instance.
+         *
+         * @return \Illuminate\View\Engines\EngineResolver 
+         * @static 
+         */ 
+        public static function getEngineResolver()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->getEngineResolver();
+        }
+                    /**
+         * Get the view finder instance.
+         *
+         * @return \Illuminate\View\ViewFinderInterface 
+         * @static 
+         */ 
+        public static function getFinder()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->getFinder();
+        }
+                    /**
+         * Set the view finder instance.
+         *
+         * @param \Illuminate\View\ViewFinderInterface $finder
+         * @return void 
+         * @static 
+         */ 
+        public static function setFinder($finder)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->setFinder($finder);
+        }
+                    /**
+         * Flush the cache of views located by the finder.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function flushFinderCache()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->flushFinderCache();
+        }
+                    /**
+         * Get the event dispatcher instance.
+         *
+         * @return \Illuminate\Contracts\Events\Dispatcher 
+         * @static 
+         */ 
+        public static function getDispatcher()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->getDispatcher();
+        }
+                    /**
+         * Set the event dispatcher instance.
+         *
+         * @param \Illuminate\Contracts\Events\Dispatcher $events
+         * @return void 
+         * @static 
+         */ 
+        public static function setDispatcher($events)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->setDispatcher($events);
+        }
+                    /**
+         * Get the IoC container instance.
+         *
+         * @return \Illuminate\Contracts\Container\Container 
+         * @static 
+         */ 
+        public static function getContainer()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->getContainer();
+        }
+                    /**
+         * Set the IoC container instance.
+         *
+         * @param \Illuminate\Contracts\Container\Container $container
+         * @return void 
+         * @static 
+         */ 
+        public static function setContainer($container)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->setContainer($container);
+        }
+                    /**
+         * Get an item from the shared data.
+         *
+         * @param string $key
+         * @param mixed $default
+         * @return mixed 
+         * @static 
+         */ 
+        public static function shared($key, $default = null)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->shared($key, $default);
+        }
+                    /**
+         * Get all of the shared data for the environment.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getShared()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->getShared();
+        }
+                    /**
+         * Register a custom macro.
+         *
+         * @param string $name
+         * @param object|callable $macro
+         * @return void 
+         * @static 
+         */ 
+        public static function macro($name, $macro)
+        {
+                        \Illuminate\View\Factory::macro($name, $macro);
+        }
+                    /**
+         * Mix another object into the class.
+         *
+         * @param object $mixin
+         * @param bool $replace
+         * @return void 
+         * @throws \ReflectionException
+         * @static 
+         */ 
+        public static function mixin($mixin, $replace = true)
+        {
+                        \Illuminate\View\Factory::mixin($mixin, $replace);
+        }
+                    /**
+         * Checks if macro is registered.
+         *
+         * @param string $name
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasMacro($name)
+        {
+                        return \Illuminate\View\Factory::hasMacro($name);
+        }
+                    /**
+         * Start a component rendering process.
+         *
+         * @param string $name
+         * @param array $data
+         * @return void 
+         * @static 
+         */ 
+        public static function startComponent($name, $data = [])
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->startComponent($name, $data);
+        }
+                    /**
+         * Get the first view that actually exists from the given list, and start a component.
+         *
+         * @param array $names
+         * @param array $data
+         * @return void 
+         * @static 
+         */ 
+        public static function startComponentFirst($names, $data = [])
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->startComponentFirst($names, $data);
+        }
+                    /**
+         * Render the current component.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function renderComponent()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->renderComponent();
+        }
+                    /**
+         * Start the slot rendering process.
+         *
+         * @param string $name
+         * @param string|null $content
+         * @return void 
+         * @static 
+         */ 
+        public static function slot($name, $content = null)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->slot($name, $content);
+        }
+                    /**
+         * Save the slot content for rendering.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function endSlot()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->endSlot();
+        }
+                    /**
+         * Register a view creator event.
+         *
+         * @param array|string $views
+         * @param \Closure|string $callback
+         * @return array 
+         * @static 
+         */ 
+        public static function creator($views, $callback)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->creator($views, $callback);
+        }
+                    /**
+         * Register multiple view composers via an array.
+         *
+         * @param array $composers
+         * @return array 
+         * @static 
+         */ 
+        public static function composers($composers)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->composers($composers);
+        }
+                    /**
+         * Register a view composer event.
+         *
+         * @param array|string $views
+         * @param \Closure|string $callback
+         * @return array 
+         * @static 
+         */ 
+        public static function composer($views, $callback)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->composer($views, $callback);
+        }
+                    /**
+         * Call the composer for a given view.
+         *
+         * @param \Illuminate\Contracts\View\View $view
+         * @return void 
+         * @static 
+         */ 
+        public static function callComposer($view)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->callComposer($view);
+        }
+                    /**
+         * Call the creator for a given view.
+         *
+         * @param \Illuminate\Contracts\View\View $view
+         * @return void 
+         * @static 
+         */ 
+        public static function callCreator($view)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->callCreator($view);
+        }
+                    /**
+         * Start injecting content into a section.
+         *
+         * @param string $section
+         * @param string|null $content
+         * @return void 
+         * @static 
+         */ 
+        public static function startSection($section, $content = null)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->startSection($section, $content);
+        }
+                    /**
+         * Inject inline content into a section.
+         *
+         * @param string $section
+         * @param string $content
+         * @return void 
+         * @static 
+         */ 
+        public static function inject($section, $content)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->inject($section, $content);
+        }
+                    /**
+         * Stop injecting content into a section and return its contents.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function yieldSection()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->yieldSection();
+        }
+                    /**
+         * Stop injecting content into a section.
+         *
+         * @param bool $overwrite
+         * @return string 
+         * @throws \InvalidArgumentException
+         * @static 
+         */ 
+        public static function stopSection($overwrite = false)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->stopSection($overwrite);
+        }
+                    /**
+         * Stop injecting content into a section and append it.
+         *
+         * @return string 
+         * @throws \InvalidArgumentException
+         * @static 
+         */ 
+        public static function appendSection()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->appendSection();
+        }
+                    /**
+         * Get the string contents of a section.
+         *
+         * @param string $section
+         * @param string $default
+         * @return string 
+         * @static 
+         */ 
+        public static function yieldContent($section, $default = '')
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->yieldContent($section, $default);
+        }
+                    /**
+         * Get the parent placeholder for the current request.
+         *
+         * @param string $section
+         * @return string 
+         * @static 
+         */ 
+        public static function parentPlaceholder($section = '')
+        {
+                        return \Illuminate\View\Factory::parentPlaceholder($section);
+        }
+                    /**
+         * Check if section exists.
+         *
+         * @param string $name
+         * @return bool 
+         * @static 
+         */ 
+        public static function hasSection($name)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->hasSection($name);
+        }
+                    /**
+         * Get the contents of a section.
+         *
+         * @param string $name
+         * @param string|null $default
+         * @return mixed 
+         * @static 
+         */ 
+        public static function getSection($name, $default = null)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->getSection($name, $default);
+        }
+                    /**
+         * Get the entire array of sections.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getSections()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->getSections();
+        }
+                    /**
+         * Flush all of the sections.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function flushSections()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->flushSections();
+        }
+                    /**
+         * Add new loop to the stack.
+         *
+         * @param \Countable|array $data
+         * @return void 
+         * @static 
+         */ 
+        public static function addLoop($data)
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->addLoop($data);
+        }
+                    /**
+         * Increment the top loop's indices.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function incrementLoopIndices()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->incrementLoopIndices();
+        }
+                    /**
+         * Pop a loop from the top of the loop stack.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function popLoop()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->popLoop();
+        }
+                    /**
+         * Get an instance of the last loop in the stack.
+         *
+         * @return \stdClass|null 
+         * @static 
+         */ 
+        public static function getLastLoop()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->getLastLoop();
+        }
+                    /**
+         * Get the entire loop stack.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getLoopStack()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->getLoopStack();
+        }
+                    /**
+         * Start injecting content into a push section.
+         *
+         * @param string $section
+         * @param string $content
+         * @return void 
+         * @static 
+         */ 
+        public static function startPush($section, $content = '')
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->startPush($section, $content);
+        }
+                    /**
+         * Stop injecting content into a push section.
+         *
+         * @return string 
+         * @throws \InvalidArgumentException
+         * @static 
+         */ 
+        public static function stopPush()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->stopPush();
+        }
+                    /**
+         * Start prepending content into a push section.
+         *
+         * @param string $section
+         * @param string $content
+         * @return void 
+         * @static 
+         */ 
+        public static function startPrepend($section, $content = '')
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->startPrepend($section, $content);
+        }
+                    /**
+         * Stop prepending content into a push section.
+         *
+         * @return string 
+         * @throws \InvalidArgumentException
+         * @static 
+         */ 
+        public static function stopPrepend()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->stopPrepend();
+        }
+                    /**
+         * Get the string contents of a push section.
+         *
+         * @param string $section
+         * @param string $default
+         * @return string 
+         * @static 
+         */ 
+        public static function yieldPushContent($section, $default = '')
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->yieldPushContent($section, $default);
+        }
+                    /**
+         * Flush all of the stacks.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function flushStacks()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->flushStacks();
+        }
+                    /**
+         * Start a translation block.
+         *
+         * @param array $replacements
+         * @return void 
+         * @static 
+         */ 
+        public static function startTranslation($replacements = [])
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        $instance->startTranslation($replacements);
+        }
+                    /**
+         * Render the current translation.
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function renderTranslation()
+        {
+                        /** @var \Illuminate\View\Factory $instance */
+                        return $instance->renderTranslation();
+        }
+         
+    }
+     
+}
+
+    namespace Illuminate\Support { 
+            /**
+     * 
+     *
+     */ 
+        class Arr {
+         
+    }
+            /**
+     * 
+     *
+     */ 
+        class Str {
+         
+    }
+     
+}
+
+        namespace Barryvdh\Debugbar { 
+            /**
+     * 
+     *
+     * @method static void alert(string $message)
+     * @method static void critical(string $message)
+     * @method static void debug(string $message)
+     * @method static void emergency(string $message)
+     * @method static void error(string $message)
+     * @method static void info(string $message)
+     * @method static void log(string $message)
+     * @method static void notice(string $message)
+     * @method static void warning(string $message)
+     * @see \Barryvdh\Debugbar\LaravelDebugbar
+     */ 
+        class Facade {
+                    /**
+         * Enable the Debugbar and boot, if not already booted.
+         *
+         * @static 
+         */ 
+        public static function enable()
+        {
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->enable();
+        }
+                    /**
+         * Boot the debugbar (add collectors, renderer and listener)
+         *
+         * @static 
+         */ 
+        public static function boot()
+        {
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->boot();
+        }
+                    /**
+         * 
+         *
+         * @static 
+         */ 
+        public static function shouldCollect($name, $default = false)
+        {
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->shouldCollect($name, $default);
+        }
+                    /**
+         * Adds a data collector
+         *
+         * @param \Barryvdh\Debugbar\DataCollectorInterface $collector
+         * @throws DebugBarException
+         * @return \Barryvdh\Debugbar\LaravelDebugbar 
+         * @static 
+         */ 
+        public static function addCollector($collector)
+        {
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->addCollector($collector);
+        }
+                    /**
+         * Handle silenced errors
+         *
+         * @param $level
+         * @param $message
+         * @param string $file
+         * @param int $line
+         * @param array $context
+         * @throws \ErrorException
+         * @static 
+         */ 
+        public static function handleError($level, $message, $file = '', $line = 0, $context = [])
+        {
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->handleError($level, $message, $file, $line, $context);
+        }
+                    /**
+         * Starts a measure
+         *
+         * @param string $name Internal name, used to stop the measure
+         * @param string $label Public name
+         * @static 
+         */ 
+        public static function startMeasure($name, $label = null)
+        {
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->startMeasure($name, $label);
+        }
+                    /**
+         * Stops a measure
+         *
+         * @param string $name
+         * @static 
+         */ 
+        public static function stopMeasure($name)
+        {
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->stopMeasure($name);
+        }
+                    /**
+         * Adds an exception to be profiled in the debug bar
+         *
+         * @param \Exception $e
+         * @deprecated in favor of addThrowable
+         * @static 
+         */ 
+        public static function addException($e)
+        {
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->addException($e);
+        }
+                    /**
+         * Adds an exception to be profiled in the debug bar
+         *
+         * @param \Exception $e
+         * @static 
+         */ 
+        public static function addThrowable($e)
+        {
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->addThrowable($e);
+        }
+                    /**
+         * Returns a JavascriptRenderer for this instance
+         *
+         * @param string $baseUrl
+         * @param string $basePathng
+         * @return \Barryvdh\Debugbar\JavascriptRenderer 
+         * @static 
+         */ 
+        public static function getJavascriptRenderer($baseUrl = null, $basePath = null)
+        {
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->getJavascriptRenderer($baseUrl, $basePath);
+        }
+                    /**
+         * Modify the response and inject the debugbar (or data in headers)
+         *
+         * @param \Symfony\Component\HttpFoundation\Request $request
+         * @param \Symfony\Component\HttpFoundation\Response $response
+         * @return \Symfony\Component\HttpFoundation\Response 
+         * @static 
+         */ 
+        public static function modifyResponse($request, $response)
+        {
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->modifyResponse($request, $response);
+        }
+                    /**
+         * Check if the Debugbar is enabled
+         *
+         * @return boolean 
+         * @static 
+         */ 
+        public static function isEnabled()
+        {
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->isEnabled();
+        }
+                    /**
+         * Collects the data from the collectors
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function collect()
+        {
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->collect();
+        }
+                    /**
+         * Injects the web debug toolbar into the given Response.
+         *
+         * @param \Symfony\Component\HttpFoundation\Response $response A Response instance
+         * Based on https://github.com/symfony/WebProfilerBundle/blob/master/EventListener/WebDebugToolbarListener.php
+         * @static 
+         */ 
+        public static function injectDebugbar($response)
+        {
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->injectDebugbar($response);
+        }
+                    /**
+         * Disable the Debugbar
+         *
+         * @static 
+         */ 
+        public static function disable()
+        {
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->disable();
+        }
+                    /**
+         * Adds a measure
+         *
+         * @param string $label
+         * @param float $start
+         * @param float $end
+         * @static 
+         */ 
+        public static function addMeasure($label, $start, $end)
+        {
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->addMeasure($label, $start, $end);
+        }
+                    /**
+         * Utility function to measure the execution of a Closure
+         *
+         * @param string $label
+         * @param \Closure $closure
+         * @static 
+         */ 
+        public static function measure($label, $closure)
+        {
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->measure($label, $closure);
+        }
+                    /**
+         * Collect data in a CLI request
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function collectConsole()
+        {
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->collectConsole();
+        }
+                    /**
+         * Adds a message to the MessagesCollector
+         * 
+         * A message can be anything from an object to a string
+         *
+         * @param mixed $message
+         * @param string $label
+         * @static 
+         */ 
+        public static function addMessage($message, $label = 'info')
+        {
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->addMessage($message, $label);
+        }
+                    /**
+         * Checks if a data collector has been added
+         *
+         * @param string $name
+         * @return boolean 
+         * @static 
+         */ 
+        public static function hasCollector($name)
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->hasCollector($name);
+        }
+                    /**
+         * Returns a data collector
+         *
+         * @param string $name
+         * @return \DebugBar\DataCollectorInterface 
+         * @throws DebugBarException
+         * @static 
+         */ 
+        public static function getCollector($name)
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->getCollector($name);
+        }
+                    /**
+         * Returns an array of all data collectors
+         *
+         * @return \DebugBar\array[DataCollectorInterface] 
+         * @static 
+         */ 
+        public static function getCollectors()
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->getCollectors();
+        }
+                    /**
+         * Sets the request id generator
+         *
+         * @param \DebugBar\RequestIdGeneratorInterface $generator
+         * @return \Barryvdh\Debugbar\LaravelDebugbar 
+         * @static 
+         */ 
+        public static function setRequestIdGenerator($generator)
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->setRequestIdGenerator($generator);
+        }
+                    /**
+         * 
+         *
+         * @return \DebugBar\RequestIdGeneratorInterface 
+         * @static 
+         */ 
+        public static function getRequestIdGenerator()
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->getRequestIdGenerator();
+        }
+                    /**
+         * Returns the id of the current request
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getCurrentRequestId()
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->getCurrentRequestId();
+        }
+                    /**
+         * Sets the storage backend to use to store the collected data
+         *
+         * @param \DebugBar\StorageInterface $storage
+         * @return \Barryvdh\Debugbar\LaravelDebugbar 
+         * @static 
+         */ 
+        public static function setStorage($storage = null)
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->setStorage($storage);
+        }
+                    /**
+         * 
+         *
+         * @return \DebugBar\StorageInterface 
+         * @static 
+         */ 
+        public static function getStorage()
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->getStorage();
+        }
+                    /**
+         * Checks if the data will be persisted
+         *
+         * @return boolean 
+         * @static 
+         */ 
+        public static function isDataPersisted()
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->isDataPersisted();
+        }
+                    /**
+         * Sets the HTTP driver
+         *
+         * @param \DebugBar\HttpDriverInterface $driver
+         * @return \Barryvdh\Debugbar\LaravelDebugbar 
+         * @static 
+         */ 
+        public static function setHttpDriver($driver)
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->setHttpDriver($driver);
+        }
+                    /**
+         * Returns the HTTP driver
+         * 
+         * If no http driver where defined, a PhpHttpDriver is automatically created
+         *
+         * @return \DebugBar\HttpDriverInterface 
+         * @static 
+         */ 
+        public static function getHttpDriver()
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->getHttpDriver();
+        }
+                    /**
+         * Returns collected data
+         * 
+         * Will collect the data if none have been collected yet
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getData()
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->getData();
+        }
+                    /**
+         * Returns an array of HTTP headers containing the data
+         *
+         * @param string $headerName
+         * @param integer $maxHeaderLength
+         * @return array 
+         * @static 
+         */ 
+        public static function getDataAsHeaders($headerName = 'phpdebugbar', $maxHeaderLength = 4096, $maxTotalHeaderLength = 250000)
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->getDataAsHeaders($headerName, $maxHeaderLength, $maxTotalHeaderLength);
+        }
+                    /**
+         * Sends the data through the HTTP headers
+         *
+         * @param bool $useOpenHandler
+         * @param string $headerName
+         * @param integer $maxHeaderLength
+         * @return \Barryvdh\Debugbar\LaravelDebugbar 
+         * @static 
+         */ 
+        public static function sendDataInHeaders($useOpenHandler = null, $headerName = 'phpdebugbar', $maxHeaderLength = 4096)
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->sendDataInHeaders($useOpenHandler, $headerName, $maxHeaderLength);
+        }
+                    /**
+         * Stacks the data in the session for later rendering
+         *
+         * @static 
+         */ 
+        public static function stackData()
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->stackData();
+        }
+                    /**
+         * Checks if there is stacked data in the session
+         *
+         * @return boolean 
+         * @static 
+         */ 
+        public static function hasStackedData()
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->hasStackedData();
+        }
+                    /**
+         * Returns the data stacked in the session
+         *
+         * @param boolean $delete Whether to delete the data in the session
+         * @return array 
+         * @static 
+         */ 
+        public static function getStackedData($delete = true)
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->getStackedData($delete);
+        }
+                    /**
+         * Sets the key to use in the $_SESSION array
+         *
+         * @param string $ns
+         * @return \Barryvdh\Debugbar\LaravelDebugbar 
+         * @static 
+         */ 
+        public static function setStackDataSessionNamespace($ns)
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->setStackDataSessionNamespace($ns);
+        }
+                    /**
+         * Returns the key used in the $_SESSION array
+         *
+         * @return string 
+         * @static 
+         */ 
+        public static function getStackDataSessionNamespace()
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->getStackDataSessionNamespace();
+        }
+                    /**
+         * Sets whether to only use the session to store stacked data even
+         * if a storage is enabled
+         *
+         * @param boolean $enabled
+         * @return \Barryvdh\Debugbar\LaravelDebugbar 
+         * @static 
+         */ 
+        public static function setStackAlwaysUseSessionStorage($enabled = true)
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->setStackAlwaysUseSessionStorage($enabled);
+        }
+                    /**
+         * Checks if the session is always used to store stacked data
+         * even if a storage is enabled
+         *
+         * @return boolean 
+         * @static 
+         */ 
+        public static function isStackAlwaysUseSessionStorage()
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->isStackAlwaysUseSessionStorage();
+        }
+                    /**
+         * 
+         *
+         * @static 
+         */ 
+        public static function offsetSet($key, $value)
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->offsetSet($key, $value);
+        }
+                    /**
+         * 
+         *
+         * @static 
+         */ 
+        public static function offsetGet($key)
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->offsetGet($key);
+        }
+                    /**
+         * 
+         *
+         * @static 
+         */ 
+        public static function offsetExists($key)
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->offsetExists($key);
+        }
+                    /**
+         * 
+         *
+         * @static 
+         */ 
+        public static function offsetUnset($key)
+        {            //Method inherited from \DebugBar\DebugBar         
+                        /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
+                        return $instance->offsetUnset($key);
+        }
+         
+    }
+     
+}
+
+    namespace Mews\Captcha\Facades { 
+            /**
+     * 
+     *
+     * @see \Mews\Captcha\Captcha
+     */ 
+        class Captcha {
+                    /**
+         * Create captcha image
+         *
+         * @param string $config
+         * @param bool $api
+         * @return array|mixed 
+         * @throws Exception
+         * @static 
+         */ 
+        public static function create($config = 'default', $api = false)
+        {
+                        /** @var \Mews\Captcha\Captcha $instance */
+                        return $instance->create($config, $api);
+        }
+                    /**
+         * Captcha check
+         *
+         * @param string $value
+         * @return bool 
+         * @static 
+         */ 
+        public static function check($value)
+        {
+                        /** @var \Mews\Captcha\Captcha $instance */
+                        return $instance->check($value);
+        }
+                    /**
+         * Captcha check
+         *
+         * @param string $value
+         * @param string $key
+         * @param string $config
+         * @return bool 
+         * @static 
+         */ 
+        public static function check_api($value, $key, $config = 'default')
+        {
+                        /** @var \Mews\Captcha\Captcha $instance */
+                        return $instance->check_api($value, $key, $config);
+        }
+                    /**
+         * Generate captcha image source
+         *
+         * @param string $config
+         * @return string 
+         * @static 
+         */ 
+        public static function src($config = 'default')
+        {
+                        /** @var \Mews\Captcha\Captcha $instance */
+                        return $instance->src($config);
+        }
+                    /**
+         * Generate captcha image html tag
+         *
+         * @param string $config
+         * @param array $attrs $attrs -> HTML attributes supplied to the image tag where key is the attribute and the value is the attribute value
+         * @return string 
+         * @static 
+         */ 
+        public static function img($config = 'default', $attrs = [])
+        {
+                        /** @var \Mews\Captcha\Captcha $instance */
+                        return $instance->img($config, $attrs);
+        }
+         
+    }
+     
+}
+
+    namespace Webpatser\Uuid { 
+            /**
+     * Class Uuid
+     *
+     * @package Webpatser\Uuid
+     * @property string $bytes
+     * @property string $hex
+     * @property string $node
+     * @property string $string
+     * @property string $time
+     * @property string $urn
+     * @property string $variant
+     * @property string $version
+     */ 
+        class Uuid {
+         
+    }
+     
+}
+
+    namespace Maatwebsite\Excel\Facades { 
+            /**
+     * 
+     *
+     */ 
+        class Excel {
+                    /**
+         * 
+         *
+         * @param object $export
+         * @param string|null $fileName
+         * @param string $writerType
+         * @param array $headers
+         * @return \Symfony\Component\HttpFoundation\BinaryFileResponse 
+         * @throws \PhpOffice\PhpSpreadsheet\Exception
+         * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
+         * @static 
+         */ 
+        public static function download($export, $fileName, $writerType = null, $headers = [])
+        {
+                        /** @var \Maatwebsite\Excel\Excel $instance */
+                        return $instance->download($export, $fileName, $writerType, $headers);
+        }
+                    /**
+         * 
+         *
+         * @param object $export
+         * @param string $filePath
+         * @param string|null $disk
+         * @param string $writerType
+         * @param mixed $diskOptions
+         * @return bool 
+         * @throws \PhpOffice\PhpSpreadsheet\Exception
+         * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
+         * @static 
+         */ 
+        public static function store($export, $filePath, $diskName = null, $writerType = null, $diskOptions = [])
+        {
+                        /** @var \Maatwebsite\Excel\Excel $instance */
+                        return $instance->store($export, $filePath, $diskName, $writerType, $diskOptions);
+        }
+                    /**
+         * 
+         *
+         * @param object $export
+         * @param string $filePath
+         * @param string|null $disk
+         * @param string $writerType
+         * @param mixed $diskOptions
+         * @return \Illuminate\Foundation\Bus\PendingDispatch 
+         * @static 
+         */ 
+        public static function queue($export, $filePath, $disk = null, $writerType = null, $diskOptions = [])
+        {
+                        /** @var \Maatwebsite\Excel\Excel $instance */
+                        return $instance->queue($export, $filePath, $disk, $writerType, $diskOptions);
+        }
+                    /**
+         * 
+         *
+         * @param object $export
+         * @param string $writerType
+         * @return string 
+         * @static 
+         */ 
+        public static function raw($export, $writerType)
+        {
+                        /** @var \Maatwebsite\Excel\Excel $instance */
+                        return $instance->raw($export, $writerType);
+        }
+                    /**
+         * 
+         *
+         * @param object $import
+         * @param string|\Symfony\Component\HttpFoundation\File\UploadedFile $filePath
+         * @param string|null $disk
+         * @param string|null $readerType
+         * @return \Maatwebsite\Excel\Reader|\Illuminate\Foundation\Bus\PendingDispatch 
+         * @static 
+         */ 
+        public static function import($import, $filePath, $disk = null, $readerType = null)
+        {
+                        /** @var \Maatwebsite\Excel\Excel $instance */
+                        return $instance->import($import, $filePath, $disk, $readerType);
+        }
+                    /**
+         * 
+         *
+         * @param object $import
+         * @param string|\Symfony\Component\HttpFoundation\File\UploadedFile $filePath
+         * @param string|null $disk
+         * @param string|null $readerType
+         * @return array 
+         * @static 
+         */ 
+        public static function toArray($import, $filePath, $disk = null, $readerType = null)
+        {
+                        /** @var \Maatwebsite\Excel\Excel $instance */
+                        return $instance->toArray($import, $filePath, $disk, $readerType);
+        }
+                    /**
+         * 
+         *
+         * @param object $import
+         * @param string|\Symfony\Component\HttpFoundation\File\UploadedFile $filePath
+         * @param string|null $disk
+         * @param string|null $readerType
+         * @return \Maatwebsite\Excel\Collection 
+         * @static 
+         */ 
+        public static function toCollection($import, $filePath, $disk = null, $readerType = null)
+        {
+                        /** @var \Maatwebsite\Excel\Excel $instance */
+                        return $instance->toCollection($import, $filePath, $disk, $readerType);
+        }
+                    /**
+         * 
+         *
+         * @param \Maatwebsite\Excel\ShouldQueue $import
+         * @param string|\Symfony\Component\HttpFoundation\File\UploadedFile $filePath
+         * @param string|null $disk
+         * @param string $readerType
+         * @return \Illuminate\Foundation\Bus\PendingDispatch 
+         * @static 
+         */ 
+        public static function queueImport($import, $filePath, $disk = null, $readerType = null)
+        {
+                        /** @var \Maatwebsite\Excel\Excel $instance */
+                        return $instance->queueImport($import, $filePath, $disk, $readerType);
+        }
+                    /**
+         * 
+         *
+         * @param string $concern
+         * @param callable $handler
+         * @param string $event
+         * @static 
+         */ 
+        public static function extend($concern, $handler, $event = 'Maatwebsite\\Excel\\Events\\BeforeWriting')
+        {
+                        return \Maatwebsite\Excel\Excel::extend($concern, $handler, $event);
+        }
+                    /**
+         * When asserting downloaded, stored, queued or imported, use regular expression
+         * to look for a matching file path.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function matchByRegex()
+        {
+                        /** @var \Maatwebsite\Excel\Fakes\ExcelFake $instance */
+                        $instance->matchByRegex();
+        }
+                    /**
+         * When asserting downloaded, stored, queued or imported, use regular string
+         * comparison for matching file path.
+         *
+         * @return void 
+         * @static 
+         */ 
+        public static function doNotMatchByRegex()
+        {
+                        /** @var \Maatwebsite\Excel\Fakes\ExcelFake $instance */
+                        $instance->doNotMatchByRegex();
+        }
+                    /**
+         * 
+         *
+         * @param string $fileName
+         * @param callable|null $callback
+         * @static 
+         */ 
+        public static function assertDownloaded($fileName, $callback = null)
+        {
+                        /** @var \Maatwebsite\Excel\Fakes\ExcelFake $instance */
+                        return $instance->assertDownloaded($fileName, $callback);
+        }
+                    /**
+         * 
+         *
+         * @param string $filePath
+         * @param string|callable|null $disk
+         * @param callable|null $callback
+         * @static 
+         */ 
+        public static function assertStored($filePath, $disk = null, $callback = null)
+        {
+                        /** @var \Maatwebsite\Excel\Fakes\ExcelFake $instance */
+                        return $instance->assertStored($filePath, $disk, $callback);
+        }
+                    /**
+         * 
+         *
+         * @param string $filePath
+         * @param string|callable|null $disk
+         * @param callable|null $callback
+         * @static 
+         */ 
+        public static function assertQueued($filePath, $disk = null, $callback = null)
+        {
+                        /** @var \Maatwebsite\Excel\Fakes\ExcelFake $instance */
+                        return $instance->assertQueued($filePath, $disk, $callback);
+        }
+                    /**
+         * 
+         *
+         * @static 
+         */ 
+        public static function assertQueuedWithChain($chain)
+        {
+                        /** @var \Maatwebsite\Excel\Fakes\ExcelFake $instance */
+                        return $instance->assertQueuedWithChain($chain);
+        }
+                    /**
+         * 
+         *
+         * @param string $classname
+         * @param callable|null $callback
+         * @static 
+         */ 
+        public static function assertExportedInRaw($classname, $callback = null)
+        {
+                        /** @var \Maatwebsite\Excel\Fakes\ExcelFake $instance */
+                        return $instance->assertExportedInRaw($classname, $callback);
+        }
+                    /**
+         * 
+         *
+         * @param string $filePath
+         * @param string|callable|null $disk
+         * @param callable|null $callback
+         * @static 
+         */ 
+        public static function assertImported($filePath, $disk = null, $callback = null)
+        {
+                        /** @var \Maatwebsite\Excel\Fakes\ExcelFake $instance */
+                        return $instance->assertImported($filePath, $disk, $callback);
+        }
+         
+    }
+     
+}
+
+    namespace Tymon\JWTAuth\Facades { 
+            /**
+     * 
+     *
+     */ 
+        class JWTAuth {
+                    /**
+         * Attempt to authenticate the user and return the token.
+         *
+         * @param array $credentials
+         * @return false|string 
+         * @static 
+         */ 
+        public static function attempt($credentials)
+        {
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->attempt($credentials);
+        }
+                    /**
+         * Authenticate a user via a token.
+         *
+         * @return \Tymon\JWTAuth\Contracts\JWTSubject|false 
+         * @static 
+         */ 
+        public static function authenticate()
+        {
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->authenticate();
+        }
+                    /**
+         * Alias for authenticate().
+         *
+         * @return \Tymon\JWTAuth\Contracts\JWTSubject|false 
+         * @static 
+         */ 
+        public static function toUser()
+        {
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->toUser();
+        }
+                    /**
+         * Get the authenticated user.
+         *
+         * @return \Tymon\JWTAuth\Contracts\JWTSubject 
+         * @static 
+         */ 
+        public static function user()
+        {
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->user();
+        }
+                    /**
+         * Generate a token for a given subject.
+         *
+         * @param \Tymon\JWTAuth\Contracts\JWTSubject $subject
+         * @return string 
+         * @static 
+         */ 
+        public static function fromSubject($subject)
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->fromSubject($subject);
+        }
+                    /**
+         * Alias to generate a token for a given user.
+         *
+         * @param \Tymon\JWTAuth\Contracts\JWTSubject $user
+         * @return string 
+         * @static 
+         */ 
+        public static function fromUser($user)
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->fromUser($user);
+        }
+                    /**
+         * Refresh an expired token.
+         *
+         * @param bool $forceForever
+         * @param bool $resetClaims
+         * @return string 
+         * @static 
+         */ 
+        public static function refresh($forceForever = false, $resetClaims = false)
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->refresh($forceForever, $resetClaims);
+        }
+                    /**
+         * Invalidate a token (add it to the blacklist).
+         *
+         * @param bool $forceForever
+         * @return \Tymon\JWTAuth\JWTAuth 
+         * @static 
+         */ 
+        public static function invalidate($forceForever = false)
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->invalidate($forceForever);
+        }
+                    /**
+         * Alias to get the payload, and as a result checks that
+         * the token is valid i.e. not expired or blacklisted.
+         *
+         * @throws \Tymon\JWTAuth\Exceptions\JWTException
+         * @return \Tymon\JWTAuth\Payload 
+         * @static 
+         */ 
+        public static function checkOrFail()
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->checkOrFail();
+        }
+                    /**
+         * Check that the token is valid.
+         *
+         * @param bool $getPayload
+         * @return \Tymon\JWTAuth\Payload|bool 
+         * @static 
+         */ 
+        public static function check($getPayload = false)
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->check($getPayload);
+        }
+                    /**
+         * Get the token.
+         *
+         * @return \Tymon\JWTAuth\Token|null 
+         * @static 
+         */ 
+        public static function getToken()
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->getToken();
+        }
+                    /**
+         * Parse the token from the request.
+         *
+         * @throws \Tymon\JWTAuth\Exceptions\JWTException
+         * @return \Tymon\JWTAuth\JWTAuth 
+         * @static 
+         */ 
+        public static function parseToken()
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->parseToken();
+        }
+                    /**
+         * Get the raw Payload instance.
+         *
+         * @return \Tymon\JWTAuth\Payload 
+         * @static 
+         */ 
+        public static function getPayload()
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->getPayload();
+        }
+                    /**
+         * Alias for getPayload().
+         *
+         * @return \Tymon\JWTAuth\Payload 
+         * @static 
+         */ 
+        public static function payload()
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->payload();
+        }
+                    /**
+         * Convenience method to get a claim value.
+         *
+         * @param string $claim
+         * @return mixed 
+         * @static 
+         */ 
+        public static function getClaim($claim)
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->getClaim($claim);
+        }
+                    /**
+         * Create a Payload instance.
+         *
+         * @param \Tymon\JWTAuth\Contracts\JWTSubject $subject
+         * @return \Tymon\JWTAuth\Payload 
+         * @static 
+         */ 
+        public static function makePayload($subject)
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->makePayload($subject);
+        }
+                    /**
+         * Check if the subject model matches the one saved in the token.
+         *
+         * @param string|object $model
+         * @return bool 
+         * @static 
+         */ 
+        public static function checkSubjectModel($model)
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->checkSubjectModel($model);
+        }
+                    /**
+         * Set the token.
+         *
+         * @param \Tymon\JWTAuth\Token|string $token
+         * @return \Tymon\JWTAuth\JWTAuth 
+         * @static 
+         */ 
+        public static function setToken($token)
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->setToken($token);
+        }
+                    /**
+         * Unset the current token.
+         *
+         * @return \Tymon\JWTAuth\JWTAuth 
+         * @static 
+         */ 
+        public static function unsetToken()
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->unsetToken();
+        }
+                    /**
+         * Set the request instance.
+         *
+         * @param \Illuminate\Http\Request $request
+         * @return \Tymon\JWTAuth\JWTAuth 
+         * @static 
+         */ 
+        public static function setRequest($request)
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->setRequest($request);
+        }
+                    /**
+         * Set whether the subject should be "locked".
+         *
+         * @param bool $lock
+         * @return \Tymon\JWTAuth\JWTAuth 
+         * @static 
+         */ 
+        public static function lockSubject($lock)
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->lockSubject($lock);
+        }
+                    /**
+         * Get the Manager instance.
+         *
+         * @return \Tymon\JWTAuth\Manager 
+         * @static 
+         */ 
+        public static function manager()
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->manager();
+        }
+                    /**
+         * Get the Parser instance.
+         *
+         * @return \Tymon\JWTAuth\Http\Parser\Parser 
+         * @static 
+         */ 
+        public static function parser()
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->parser();
+        }
+                    /**
+         * Get the Payload Factory.
+         *
+         * @return \Tymon\JWTAuth\Factory 
+         * @static 
+         */ 
+        public static function factory()
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->factory();
+        }
+                    /**
+         * Get the Blacklist.
+         *
+         * @return \Tymon\JWTAuth\Blacklist 
+         * @static 
+         */ 
+        public static function blacklist()
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->blacklist();
+        }
+                    /**
+         * Set the custom claims.
+         *
+         * @param array $customClaims
+         * @return \Tymon\JWTAuth\JWTAuth 
+         * @static 
+         */ 
+        public static function customClaims($customClaims)
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->customClaims($customClaims);
+        }
+                    /**
+         * Alias to set the custom claims.
+         *
+         * @param array $customClaims
+         * @return \Tymon\JWTAuth\JWTAuth 
+         * @static 
+         */ 
+        public static function claims($customClaims)
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->claims($customClaims);
+        }
+                    /**
+         * Get the custom claims.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getCustomClaims()
+        {            //Method inherited from \Tymon\JWTAuth\JWT         
+                        /** @var \Tymon\JWTAuth\JWTAuth $instance */
+                        return $instance->getCustomClaims();
+        }
+         
+    }
+            /**
+     * 
+     *
+     */ 
+        class JWTFactory {
+                    /**
+         * Create the Payload instance.
+         *
+         * @param bool $resetClaims
+         * @return \Tymon\JWTAuth\Payload 
+         * @static 
+         */ 
+        public static function make($resetClaims = false)
+        {
+                        /** @var \Tymon\JWTAuth\Factory $instance */
+                        return $instance->make($resetClaims);
+        }
+                    /**
+         * Empty the claims collection.
+         *
+         * @return \Tymon\JWTAuth\Factory 
+         * @static 
+         */ 
+        public static function emptyClaims()
+        {
+                        /** @var \Tymon\JWTAuth\Factory $instance */
+                        return $instance->emptyClaims();
+        }
+                    /**
+         * Build and get the Claims Collection.
+         *
+         * @return \Tymon\JWTAuth\Claims\Collection 
+         * @static 
+         */ 
+        public static function buildClaimsCollection()
+        {
+                        /** @var \Tymon\JWTAuth\Factory $instance */
+                        return $instance->buildClaimsCollection();
+        }
+                    /**
+         * Get a Payload instance with a claims collection.
+         *
+         * @param \Tymon\JWTAuth\Claims\Collection $claims
+         * @return \Tymon\JWTAuth\Payload 
+         * @static 
+         */ 
+        public static function withClaims($claims)
+        {
+                        /** @var \Tymon\JWTAuth\Factory $instance */
+                        return $instance->withClaims($claims);
+        }
+                    /**
+         * Set the default claims to be added to the Payload.
+         *
+         * @param array $claims
+         * @return \Tymon\JWTAuth\Factory 
+         * @static 
+         */ 
+        public static function setDefaultClaims($claims)
+        {
+                        /** @var \Tymon\JWTAuth\Factory $instance */
+                        return $instance->setDefaultClaims($claims);
+        }
+                    /**
+         * Helper to set the ttl.
+         *
+         * @param int $ttl
+         * @return \Tymon\JWTAuth\Factory 
+         * @static 
+         */ 
+        public static function setTTL($ttl)
+        {
+                        /** @var \Tymon\JWTAuth\Factory $instance */
+                        return $instance->setTTL($ttl);
+        }
+                    /**
+         * Helper to get the ttl.
+         *
+         * @return int 
+         * @static 
+         */ 
+        public static function getTTL()
+        {
+                        /** @var \Tymon\JWTAuth\Factory $instance */
+                        return $instance->getTTL();
+        }
+                    /**
+         * Get the default claims.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getDefaultClaims()
+        {
+                        /** @var \Tymon\JWTAuth\Factory $instance */
+                        return $instance->getDefaultClaims();
+        }
+                    /**
+         * Get the PayloadValidator instance.
+         *
+         * @return \Tymon\JWTAuth\Validators\PayloadValidator 
+         * @static 
+         */ 
+        public static function validator()
+        {
+                        /** @var \Tymon\JWTAuth\Factory $instance */
+                        return $instance->validator();
+        }
+                    /**
+         * Set the custom claims.
+         *
+         * @param array $customClaims
+         * @return \Tymon\JWTAuth\Factory 
+         * @static 
+         */ 
+        public static function customClaims($customClaims)
+        {
+                        /** @var \Tymon\JWTAuth\Factory $instance */
+                        return $instance->customClaims($customClaims);
+        }
+                    /**
+         * Alias to set the custom claims.
+         *
+         * @param array $customClaims
+         * @return \Tymon\JWTAuth\Factory 
+         * @static 
+         */ 
+        public static function claims($customClaims)
+        {
+                        /** @var \Tymon\JWTAuth\Factory $instance */
+                        return $instance->claims($customClaims);
+        }
+                    /**
+         * Get the custom claims.
+         *
+         * @return array 
+         * @static 
+         */ 
+        public static function getCustomClaims()
+        {
+                        /** @var \Tymon\JWTAuth\Factory $instance */
+                        return $instance->getCustomClaims();
+        }
+                    /**
+         * Set the refresh flow flag.
+         *
+         * @param bool $refreshFlow
+         * @return \Tymon\JWTAuth\Factory 
+         * @static 
+         */ 
+        public static function setRefreshFlow($refreshFlow = true)
+        {
+                        /** @var \Tymon\JWTAuth\Factory $instance */
+                        return $instance->setRefreshFlow($refreshFlow);
+        }
+         
+    }
+     
+}
+
+    namespace SimpleSoftwareIO\QrCode\Facades { 
+            /**
+     * 
+     *
+     */ 
+        class QrCode {
+                    /**
+         * Generates the QrCode.
+         *
+         * @param string $text
+         * @param string|null $filename
+         * @return void|\Illuminate\Support\HtmlString|string 
+         * @throws WriterException
+         * @throws InvalidArgumentException
+         * @static 
+         */ 
+        public static function generate($text, $filename = null)
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->generate($text, $filename);
+        }
+                    /**
+         * Merges an image over the QrCode.
+         *
+         * @param string $filepath
+         * @param float $percentage
+         * @param \SimpleSoftwareIO\QrCode\SimpleSoftwareIO\QrCode\boolean|bool $absolute
+         * @return \Generator 
+         * @static 
+         */ 
+        public static function merge($filepath, $percentage = 0.2, $absolute = false)
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->merge($filepath, $percentage, $absolute);
+        }
+                    /**
+         * Merges an image string with the center of the QrCode.
+         *
+         * @param string $content
+         * @param float $percentage
+         * @return \Generator 
+         * @static 
+         */ 
+        public static function mergeString($content, $percentage = 0.2)
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->mergeString($content, $percentage);
+        }
+                    /**
+         * Sets the size of the QrCode.
+         *
+         * @param int $pixels
+         * @return \Generator 
+         * @static 
+         */ 
+        public static function size($pixels)
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->size($pixels);
+        }
+                    /**
+         * Sets the format of the QrCode.
+         *
+         * @param string $format
+         * @return \Generator 
+         * @throws InvalidArgumentException
+         * @static 
+         */ 
+        public static function format($format)
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->format($format);
+        }
+                    /**
+         * Sets the foreground color of the QrCode.
+         *
+         * @param int $red
+         * @param int $green
+         * @param int $blue
+         * @param null|int $alpha
+         * @return \Generator 
+         * @static 
+         */ 
+        public static function color($red, $green, $blue, $alpha = null)
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->color($red, $green, $blue, $alpha);
+        }
+                    /**
+         * Sets the background color of the QrCode.
+         *
+         * @param int $red
+         * @param int $green
+         * @param int $blue
+         * @param null|int $alpha
+         * @return \Generator 
+         * @static 
+         */ 
+        public static function backgroundColor($red, $green, $blue, $alpha = null)
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->backgroundColor($red, $green, $blue, $alpha);
+        }
+                    /**
+         * Sets the eye color for the provided eye index.
+         *
+         * @param int $eyeNumber
+         * @param int $innerRed
+         * @param int $innerGreen
+         * @param int $innerBlue
+         * @param int $outterRed
+         * @param int $outterGreen
+         * @param int $outterBlue
+         * @return \Generator 
+         * @throws InvalidArgumentException
+         * @static 
+         */ 
+        public static function eyeColor($eyeNumber, $innerRed, $innerGreen, $innerBlue, $outterRed = 0, $outterGreen = 0, $outterBlue = 0)
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->eyeColor($eyeNumber, $innerRed, $innerGreen, $innerBlue, $outterRed, $outterGreen, $outterBlue);
+        }
+                    /**
+         * 
+         *
+         * @static 
+         */ 
+        public static function gradient($startRed, $startGreen, $startBlue, $endRed, $endGreen, $endBlue, $type)
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->gradient($startRed, $startGreen, $startBlue, $endRed, $endGreen, $endBlue, $type);
+        }
+                    /**
+         * Sets the eye style.
+         *
+         * @param string $style
+         * @return \Generator 
+         * @throws InvalidArgumentException
+         * @static 
+         */ 
+        public static function eye($style)
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->eye($style);
+        }
+                    /**
+         * Sets the style of the blocks for the QrCode.
+         *
+         * @param string $style
+         * @param float $size
+         * @return \Generator 
+         * @throws InvalidArgumentException
+         * @static 
+         */ 
+        public static function style($style, $size = 0.5)
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->style($style, $size);
+        }
+                    /**
+         * Sets the encoding for the QrCode.
+         * 
+         * Possible values are
+         * ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, ISO-8859-6,
+         * ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10, ISO-8859-11,
+         * ISO-8859-12, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16,
+         * SHIFT-JIS, WINDOWS-1250, WINDOWS-1251, WINDOWS-1252, WINDOWS-1256,
+         * UTF-16BE, UTF-8, ASCII, GBK, EUC-KR.
+         *
+         * @param string $encoding
+         * @return \Generator 
+         * @static 
+         */ 
+        public static function encoding($encoding)
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->encoding($encoding);
+        }
+                    /**
+         * Sets the error correction for the QrCode.
+         * 
+         * L: 7% loss.
+         * M: 15% loss.
+         * Q: 25% loss.
+         * H: 30% loss.
+         *
+         * @param string $errorCorrection
+         * @return \Generator 
+         * @static 
+         */ 
+        public static function errorCorrection($errorCorrection)
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->errorCorrection($errorCorrection);
+        }
+                    /**
+         * Sets the margin of the QrCode.
+         *
+         * @param int $margin
+         * @return \Generator 
+         * @static 
+         */ 
+        public static function margin($margin)
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->margin($margin);
+        }
+                    /**
+         * Fetches the Writer.
+         *
+         * @param \SimpleSoftwareIO\QrCode\ImageRenderer $renderer
+         * @return \SimpleSoftwareIO\QrCode\Writer 
+         * @static 
+         */ 
+        public static function getWriter($renderer)
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->getWriter($renderer);
+        }
+                    /**
+         * Fetches the Image Renderer.
+         *
+         * @return \SimpleSoftwareIO\QrCode\ImageRenderer 
+         * @static 
+         */ 
+        public static function getRenderer()
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->getRenderer();
+        }
+                    /**
+         * Returns the Renderer Style.
+         *
+         * @return \SimpleSoftwareIO\QrCode\RendererStyle 
+         * @static 
+         */ 
+        public static function getRendererStyle()
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->getRendererStyle();
+        }
+                    /**
+         * Fetches the formatter.
+         *
+         * @return \SimpleSoftwareIO\QrCode\ImageBackEndInterface 
+         * @static 
+         */ 
+        public static function getFormatter()
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->getFormatter();
+        }
+                    /**
+         * Fetches the module.
+         *
+         * @return \SimpleSoftwareIO\QrCode\ModuleInterface 
+         * @static 
+         */ 
+        public static function getModule()
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->getModule();
+        }
+                    /**
+         * Fetches the eye style.
+         *
+         * @return \SimpleSoftwareIO\QrCode\EyeInterface 
+         * @static 
+         */ 
+        public static function getEye()
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->getEye();
+        }
+                    /**
+         * Fetches the color fill.
+         *
+         * @return \SimpleSoftwareIO\QrCode\Fill 
+         * @static 
+         */ 
+        public static function getFill()
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->getFill();
+        }
+                    /**
+         * Creates a RGB or Alpha channel color.
+         *
+         * @param int $red
+         * @param int $green
+         * @param int $blue
+         * @param null|int $alpha
+         * @return \SimpleSoftwareIO\QrCode\ColorInterface 
+         * @static 
+         */ 
+        public static function createColor($red, $green, $blue, $alpha = null)
+        {
+                        /** @var \SimpleSoftwareIO\QrCode\Generator $instance */
+                        return $instance->createColor($red, $green, $blue, $alpha);
+        }
+         
+    }
+     
+}
+
+    namespace Intervention\Image\Facades { 
+            /**
+     * 
+     *
+     */ 
+        class Image {
+                    /**
+         * Overrides configuration settings
+         *
+         * @param array $config
+         * @return self 
+         * @static 
+         */ 
+        public static function configure($config = [])
+        {
+                        /** @var \Intervention\Image\ImageManager $instance */
+                        return $instance->configure($config);
+        }
+                    /**
+         * Initiates an Image instance from different input types
+         *
+         * @param mixed $data
+         * @return \Intervention\Image\Image 
+         * @static 
+         */ 
+        public static function make($data)
+        {
+                        /** @var \Intervention\Image\ImageManager $instance */
+                        return $instance->make($data);
+        }
+                    /**
+         * Creates an empty image canvas
+         *
+         * @param int $width
+         * @param int $height
+         * @param mixed $background
+         * @return \Intervention\Image\Image 
+         * @static 
+         */ 
+        public static function canvas($width, $height, $background = null)
+        {
+                        /** @var \Intervention\Image\ImageManager $instance */
+                        return $instance->canvas($width, $height, $background);
+        }
+                    /**
+         * Create new cached image and run callback
+         * (requires additional package intervention/imagecache)
+         *
+         * @param \Closure $callback
+         * @param int $lifetime
+         * @param boolean $returnObj
+         * @return \Image 
+         * @static 
+         */ 
+        public static function cache($callback, $lifetime = null, $returnObj = false)
+        {
+                        /** @var \Intervention\Image\ImageManager $instance */
+                        return $instance->cache($callback, $lifetime, $returnObj);
+        }
+         
+    }
+     
+}
+
+    namespace Songshenzong\Support { 
+            /**
+     * Class StringsFacade
+     *
+     * @package Songshenzong\Support
+     */ 
+        class StringsFacade {
+                    /**
+         * 
+         *
+         * @param string $string
+         * @return array 
+         * @static 
+         */ 
+        public static function toArray($string = '')
+        {
+                        return \Songshenzong\Support\Strings::toArray($string);
+        }
+                    /**
+         * 
+         *
+         * @param string $string
+         * @return bool 
+         * @static 
+         */ 
+        public static function isJson($string = '')
+        {
+                        return \Songshenzong\Support\Strings::isJson($string);
+        }
+                    /**
+         * 
+         *
+         * @param string $string
+         * @return bool 
+         * @static 
+         */ 
+        public static function isXml($string = '')
+        {
+                        return \Songshenzong\Support\Strings::isXml($string);
+        }
+                    /**
+         * 
+         *
+         * @param string $string
+         * @return array 
+         * @static 
+         */ 
+        public static function xmlToArray($string)
+        {
+                        return \Songshenzong\Support\Strings::xmlToArray($string);
+        }
+                    /**
+         * 
+         *
+         * @param string $serialized
+         * @return mixed 
+         * @static 
+         */ 
+        public static function unserialize($serialized)
+        {
+                        return \Songshenzong\Support\Strings::unserialize($serialized);
+        }
+                    /**
+         * 
+         *
+         * @param string $string
+         * @return \stdClass|\SimpleXMLElement 
+         * @static 
+         */ 
+        public static function toObject($string = '')
+        {
+                        return \Songshenzong\Support\Strings::toObject($string);
+        }
+                    /**
+         * 
+         *
+         * @param string $string
+         * @return \SimpleXMLElement 
+         * @static 
+         */ 
+        public static function xmlToObject($string)
+        {
+                        return \Songshenzong\Support\Strings::xmlToObject($string);
+        }
+                    /**
+         * 
+         *
+         * @param string $string
+         * @return bool 
+         * @static 
+         */ 
+        public static function isSerialized($string)
+        {
+                        return \Songshenzong\Support\Strings::isSerialized($string);
+        }
+                    /**
+         * 
+         *
+         * @param string $string
+         * @return string 
+         * @static 
+         */ 
+        public static function filter($string)
+        {
+                        return \Songshenzong\Support\Strings::filter($string);
+        }
+                    /**
+         * 
+         *
+         * @param string $string
+         * @return string 
+         * @static 
+         */ 
+        public static function trim($string)
+        {
+                        return \Songshenzong\Support\Strings::trim($string);
+        }
+                    /**
+         * Is Set and Not Empty.
+         *
+         * @param $value
+         * @return bool 
+         * @static 
+         */ 
+        public static function isSetAndNotEmpty($value)
+        {
+                        return \Songshenzong\Support\Strings::isSetAndNotEmpty($value);
+        }
+                    /**
+         * Is Set and Not Empty and Not Null.
+         *
+         * @param $value
+         * @return bool 
+         * @static 
+         */ 
+        public static function isSetAndNotEmptyAndNotNull($value)
+        {
+                        return \Songshenzong\Support\Strings::isSetAndNotEmptyAndNotNull($value);
+        }
+                    /**
+         * 
+         *
+         * @param string $uri
+         * @param array $parameters
+         * @param bool $appendsCurrentUri
+         * @return string 
+         * @static 
+         */ 
+        public static function uri($uri, $parameters = [], $appendsCurrentUri = false)
+        {
+                        return \Songshenzong\Support\Strings::uri($uri, $parameters, $appendsCurrentUri);
+        }
+                    /**
+         * 
+         *
+         * @param $host
+         * @return bool 
+         * @static 
+         */ 
+        public static function host($host)
+        {
+                        return \Songshenzong\Support\Strings::host($host);
+        }
+         
+    }
+     
+}
+
+
+namespace  { 
+            class App extends \Illuminate\Support\Facades\App {}
+            class Arr extends \Illuminate\Support\Arr {}
+            class Artisan extends \Illuminate\Support\Facades\Artisan {}
+            class Auth extends \Illuminate\Support\Facades\Auth {}
+            class Blade extends \Illuminate\Support\Facades\Blade {}
+            class Broadcast extends \Illuminate\Support\Facades\Broadcast {}
+            class Bus extends \Illuminate\Support\Facades\Bus {}
+            class Cache extends \Illuminate\Support\Facades\Cache {}
+            class Config extends \Illuminate\Support\Facades\Config {}
+            class Cookie extends \Illuminate\Support\Facades\Cookie {}
+            class Crypt extends \Illuminate\Support\Facades\Crypt {}
+            class DB extends \Illuminate\Support\Facades\DB {}
+            class Eloquent extends \Illuminate\Database\Eloquent\Model {             
+                /**
+             * Create and return an un-saved model instance.
+             *
+             * @param array $attributes
+             * @return \Illuminate\Database\Eloquent\Model 
+             * @static 
+             */ 
+            public static function make($attributes = [])
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->make($attributes);
+            }
+             
+                /**
+             * Register a new global scope.
+             *
+             * @param string $identifier
+             * @param \Illuminate\Database\Eloquent\Scope|\Closure $scope
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function withGlobalScope($identifier, $scope)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->withGlobalScope($identifier, $scope);
+            }
+             
+                /**
+             * Remove a registered global scope.
+             *
+             * @param \Illuminate\Database\Eloquent\Scope|string $scope
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function withoutGlobalScope($scope)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->withoutGlobalScope($scope);
+            }
+             
+                /**
+             * Remove all or passed registered global scopes.
+             *
+             * @param array|null $scopes
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function withoutGlobalScopes($scopes = null)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->withoutGlobalScopes($scopes);
+            }
+             
+                /**
+             * Get an array of global scopes that were removed from the query.
+             *
+             * @return array 
+             * @static 
+             */ 
+            public static function removedScopes()
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->removedScopes();
+            }
+             
+                /**
+             * Add a where clause on the primary key to the query.
+             *
+             * @param mixed $id
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function whereKey($id)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->whereKey($id);
+            }
+             
+                /**
+             * Add a where clause on the primary key to the query.
+             *
+             * @param mixed $id
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function whereKeyNot($id)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->whereKeyNot($id);
+            }
+             
+                /**
+             * Add a basic where clause to the query.
+             *
+             * @param string|array|\Closure $column
+             * @param mixed $operator
+             * @param mixed $value
+             * @param string $boolean
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function where($column, $operator = null, $value = null, $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->where($column, $operator, $value, $boolean);
+            }
+             
+                /**
+             * Add an "or where" clause to the query.
+             *
+             * @param \Closure|array|string $column
+             * @param mixed $operator
+             * @param mixed $value
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function orWhere($column, $operator = null, $value = null)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->orWhere($column, $operator, $value);
+            }
+             
+                /**
+             * Add an "order by" clause for a timestamp to the query.
+             *
+             * @param string $column
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function latest($column = null)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->latest($column);
+            }
+             
+                /**
+             * Add an "order by" clause for a timestamp to the query.
+             *
+             * @param string $column
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function oldest($column = null)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->oldest($column);
+            }
+             
+                /**
+             * Create a collection of models from plain arrays.
+             *
+             * @param array $items
+             * @return \Illuminate\Database\Eloquent\Collection 
+             * @static 
+             */ 
+            public static function hydrate($items)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->hydrate($items);
+            }
+             
+                /**
+             * Create a collection of models from a raw query.
+             *
+             * @param string $query
+             * @param array $bindings
+             * @return \Illuminate\Database\Eloquent\Collection 
+             * @static 
+             */ 
+            public static function fromQuery($query, $bindings = [])
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->fromQuery($query, $bindings);
+            }
+             
+                /**
+             * Find a model by its primary key.
+             *
+             * @param mixed $id
+             * @param array $columns
+             * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static[]|static|null 
+             * @static 
+             */ 
+            public static function find($id, $columns = [])
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->find($id, $columns);
+            }
+             
+                /**
+             * Find multiple models by their primary keys.
+             *
+             * @param \Illuminate\Contracts\Support\Arrayable|array $ids
+             * @param array $columns
+             * @return \Illuminate\Database\Eloquent\Collection 
+             * @static 
+             */ 
+            public static function findMany($ids, $columns = [])
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->findMany($ids, $columns);
+            }
+             
+                /**
+             * Find a model by its primary key or throw an exception.
+             *
+             * @param mixed $id
+             * @param array $columns
+             * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static|static[] 
+             * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
+             * @static 
+             */ 
+            public static function findOrFail($id, $columns = [])
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->findOrFail($id, $columns);
+            }
+             
+                /**
+             * Find a model by its primary key or return fresh model instance.
+             *
+             * @param mixed $id
+             * @param array $columns
+             * @return \Illuminate\Database\Eloquent\Model|static 
+             * @static 
+             */ 
+            public static function findOrNew($id, $columns = [])
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->findOrNew($id, $columns);
+            }
+             
+                /**
+             * Get the first record matching the attributes or instantiate it.
+             *
+             * @param array $attributes
+             * @param array $values
+             * @return \Illuminate\Database\Eloquent\Model|static 
+             * @static 
+             */ 
+            public static function firstOrNew($attributes, $values = [])
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->firstOrNew($attributes, $values);
+            }
+             
+                /**
+             * Get the first record matching the attributes or create it.
+             *
+             * @param array $attributes
+             * @param array $values
+             * @return \Illuminate\Database\Eloquent\Model|static 
+             * @static 
+             */ 
+            public static function firstOrCreate($attributes, $values = [])
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->firstOrCreate($attributes, $values);
+            }
+             
+                /**
+             * Create or update a record matching the attributes, and fill it with values.
+             *
+             * @param array $attributes
+             * @param array $values
+             * @return \Illuminate\Database\Eloquent\Model|static 
+             * @static 
+             */ 
+            public static function updateOrCreate($attributes, $values = [])
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->updateOrCreate($attributes, $values);
+            }
+             
+                /**
+             * Execute the query and get the first result or throw an exception.
+             *
+             * @param array $columns
+             * @return \Illuminate\Database\Eloquent\Model|static 
+             * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
+             * @static 
+             */ 
+            public static function firstOrFail($columns = [])
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->firstOrFail($columns);
+            }
+             
+                /**
+             * Execute the query and get the first result or call a callback.
+             *
+             * @param \Closure|array $columns
+             * @param \Closure|null $callback
+             * @return \Illuminate\Database\Eloquent\Model|static|mixed 
+             * @static 
+             */ 
+            public static function firstOr($columns = [], $callback = null)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->firstOr($columns, $callback);
+            }
+             
+                /**
+             * Get a single column's value from the first result of a query.
+             *
+             * @param string $column
+             * @return mixed 
+             * @static 
+             */ 
+            public static function value($column)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->value($column);
+            }
+             
+                /**
+             * Execute the query as a "select" statement.
+             *
+             * @param array $columns
+             * @return \Illuminate\Database\Eloquent\Collection|static[] 
+             * @static 
+             */ 
+            public static function get($columns = [])
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->get($columns);
+            }
+             
+                /**
+             * Get the hydrated models without eager loading.
+             *
+             * @param array $columns
+             * @return \Illuminate\Database\Eloquent\Model[]|static[] 
+             * @static 
+             */ 
+            public static function getModels($columns = [])
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->getModels($columns);
+            }
+             
+                /**
+             * Eager load the relationships for the models.
+             *
+             * @param array $models
+             * @return array 
+             * @static 
+             */ 
+            public static function eagerLoadRelations($models)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->eagerLoadRelations($models);
+            }
+             
+                /**
+             * Get a generator for the given query.
+             *
+             * @return \Generator 
+             * @static 
+             */ 
+            public static function cursor()
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->cursor();
+            }
+             
+                /**
+             * Chunk the results of a query by comparing numeric IDs.
+             *
+             * @param int $count
+             * @param callable $callback
+             * @param string|null $column
+             * @param string|null $alias
+             * @return bool 
+             * @static 
+             */ 
+            public static function chunkById($count, $callback, $column = null, $alias = null)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->chunkById($count, $callback, $column, $alias);
+            }
+             
+                /**
+             * Get an array with the values of a given column.
+             *
+             * @param string $column
+             * @param string|null $key
+             * @return \Illuminate\Support\Collection 
+             * @static 
+             */ 
+            public static function pluck($column, $key = null)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->pluck($column, $key);
+            }
+             
+                /**
+             * Paginate the given query.
+             *
+             * @param int $perPage
+             * @param array $columns
+             * @param string $pageName
+             * @param int|null $page
+             * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator 
+             * @throws \InvalidArgumentException
+             * @static 
+             */ 
+            public static function paginate($perPage = null, $columns = [], $pageName = 'page', $page = null)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->paginate($perPage, $columns, $pageName, $page);
+            }
+             
+                /**
+             * Paginate the given query into a simple paginator.
+             *
+             * @param int $perPage
+             * @param array $columns
+             * @param string $pageName
+             * @param int|null $page
+             * @return \Illuminate\Contracts\Pagination\Paginator 
+             * @static 
+             */ 
+            public static function simplePaginate($perPage = null, $columns = [], $pageName = 'page', $page = null)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->simplePaginate($perPage, $columns, $pageName, $page);
+            }
+             
+                /**
+             * Save a new model and return the instance.
+             *
+             * @param array $attributes
+             * @return \Illuminate\Database\Eloquent\Model|$this 
+             * @static 
+             */ 
+            public static function create($attributes = [])
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->create($attributes);
+            }
+             
+                /**
+             * Save a new model and return the instance. Allow mass-assignment.
+             *
+             * @param array $attributes
+             * @return \Illuminate\Database\Eloquent\Model|$this 
+             * @static 
+             */ 
+            public static function forceCreate($attributes)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->forceCreate($attributes);
+            }
+             
+                /**
+             * Register a replacement for the default delete function.
+             *
+             * @param \Closure $callback
+             * @return void 
+             * @static 
+             */ 
+            public static function onDelete($callback)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                $instance->onDelete($callback);
+            }
+             
+                /**
+             * Call the given local model scopes.
+             *
+             * @param array $scopes
+             * @return static|mixed 
+             * @static 
+             */ 
+            public static function scopes($scopes)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->scopes($scopes);
+            }
+             
+                /**
+             * Apply the scopes to the Eloquent builder instance and return it.
+             *
+             * @return static 
+             * @static 
+             */ 
+            public static function applyScopes()
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->applyScopes();
+            }
+             
+                /**
+             * Prevent the specified relations from being eager loaded.
+             *
+             * @param mixed $relations
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function without($relations)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->without($relations);
+            }
+             
+                /**
+             * Create a new instance of the model being queried.
+             *
+             * @param array $attributes
+             * @return \Illuminate\Database\Eloquent\Model|static 
+             * @static 
+             */ 
+            public static function newModelInstance($attributes = [])
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->newModelInstance($attributes);
+            }
+             
+                /**
+             * Get the underlying query builder instance.
+             *
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function getQuery()
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->getQuery();
+            }
+             
+                /**
+             * Set the underlying query builder instance.
+             *
+             * @param \Illuminate\Database\Query\Builder $query
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function setQuery($query)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->setQuery($query);
+            }
+             
+                /**
+             * Get a base query builder instance.
+             *
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function toBase()
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->toBase();
+            }
+             
+                /**
+             * Get the relationships being eagerly loaded.
+             *
+             * @return array 
+             * @static 
+             */ 
+            public static function getEagerLoads()
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->getEagerLoads();
+            }
+             
+                /**
+             * Set the relationships being eagerly loaded.
+             *
+             * @param array $eagerLoad
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function setEagerLoads($eagerLoad)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->setEagerLoads($eagerLoad);
+            }
+             
+                /**
+             * Get the model instance being queried.
+             *
+             * @return \Illuminate\Database\Eloquent\Model|static 
+             * @static 
+             */ 
+            public static function getModel()
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->getModel();
+            }
+             
+                /**
+             * Set a model instance for the model being queried.
+             *
+             * @param \Illuminate\Database\Eloquent\Model $model
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function setModel($model)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->setModel($model);
+            }
+             
+                /**
+             * Get the given macro by name.
+             *
+             * @param string $name
+             * @return \Closure 
+             * @static 
+             */ 
+            public static function getMacro($name)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->getMacro($name);
+            }
+             
+                /**
+             * Chunk the results of the query.
+             *
+             * @param int $count
+             * @param callable $callback
+             * @return bool 
+             * @static 
+             */ 
+            public static function chunk($count, $callback)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->chunk($count, $callback);
+            }
+             
+                /**
+             * Execute a callback over each item while chunking.
+             *
+             * @param callable $callback
+             * @param int $count
+             * @return bool 
+             * @static 
+             */ 
+            public static function each($callback, $count = 1000)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->each($callback, $count);
+            }
+             
+                /**
+             * Execute the query and get the first result.
+             *
+             * @param array $columns
+             * @return \Illuminate\Database\Eloquent\Model|object|static|null 
+             * @static 
+             */ 
+            public static function first($columns = [])
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->first($columns);
+            }
+             
+                /**
+             * Apply the callback's query changes if the given "value" is true.
+             *
+             * @param mixed $value
+             * @param callable $callback
+             * @param callable|null $default
+             * @return mixed|$this 
+             * @static 
+             */ 
+            public static function when($value, $callback, $default = null)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->when($value, $callback, $default);
+            }
+             
+                /**
+             * Pass the query to a given callback.
+             *
+             * @param callable $callback
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function tap($callback)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->tap($callback);
+            }
+             
+                /**
+             * Apply the callback's query changes if the given "value" is false.
+             *
+             * @param mixed $value
+             * @param callable $callback
+             * @param callable|null $default
+             * @return mixed|$this 
+             * @static 
+             */ 
+            public static function unless($value, $callback, $default = null)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->unless($value, $callback, $default);
+            }
+             
+                /**
+             * Add a relationship count / exists condition to the query.
+             *
+             * @param string|\Illuminate\Database\Eloquent\Relations\Relation $relation
+             * @param string $operator
+             * @param int $count
+             * @param string $boolean
+             * @param \Closure|null $callback
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function has($relation, $operator = '>=', $count = 1, $boolean = 'and', $callback = null)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->has($relation, $operator, $count, $boolean, $callback);
+            }
+             
+                /**
+             * Add a relationship count / exists condition to the query with an "or".
+             *
+             * @param string $relation
+             * @param string $operator
+             * @param int $count
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function orHas($relation, $operator = '>=', $count = 1)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->orHas($relation, $operator, $count);
+            }
+             
+                /**
+             * Add a relationship count / exists condition to the query.
+             *
+             * @param string $relation
+             * @param string $boolean
+             * @param \Closure|null $callback
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function doesntHave($relation, $boolean = 'and', $callback = null)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->doesntHave($relation, $boolean, $callback);
+            }
+             
+                /**
+             * Add a relationship count / exists condition to the query with an "or".
+             *
+             * @param string $relation
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function orDoesntHave($relation)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->orDoesntHave($relation);
+            }
+             
+                /**
+             * Add a relationship count / exists condition to the query with where clauses.
+             *
+             * @param string $relation
+             * @param \Closure|null $callback
+             * @param string $operator
+             * @param int $count
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function whereHas($relation, $callback = null, $operator = '>=', $count = 1)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->whereHas($relation, $callback, $operator, $count);
+            }
+             
+                /**
+             * Add a relationship count / exists condition to the query with where clauses and an "or".
+             *
+             * @param string $relation
+             * @param \Closure $callback
+             * @param string $operator
+             * @param int $count
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function orWhereHas($relation, $callback = null, $operator = '>=', $count = 1)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->orWhereHas($relation, $callback, $operator, $count);
+            }
+             
+                /**
+             * Add a relationship count / exists condition to the query with where clauses.
+             *
+             * @param string $relation
+             * @param \Closure|null $callback
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function whereDoesntHave($relation, $callback = null)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->whereDoesntHave($relation, $callback);
+            }
+             
+                /**
+             * Add a relationship count / exists condition to the query with where clauses and an "or".
+             *
+             * @param string $relation
+             * @param \Closure $callback
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function orWhereDoesntHave($relation, $callback = null)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->orWhereDoesntHave($relation, $callback);
+            }
+             
+                /**
+             * Add a polymorphic relationship count / exists condition to the query.
+             *
+             * @param string $relation
+             * @param string|array $types
+             * @param string $operator
+             * @param int $count
+             * @param string $boolean
+             * @param \Closure|null $callback
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function hasMorph($relation, $types, $operator = '>=', $count = 1, $boolean = 'and', $callback = null)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->hasMorph($relation, $types, $operator, $count, $boolean, $callback);
+            }
+             
+                /**
+             * Add a polymorphic relationship count / exists condition to the query with an "or".
+             *
+             * @param string $relation
+             * @param string|array $types
+             * @param string $operator
+             * @param int $count
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function orHasMorph($relation, $types, $operator = '>=', $count = 1)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->orHasMorph($relation, $types, $operator, $count);
+            }
+             
+                /**
+             * Add a polymorphic relationship count / exists condition to the query.
+             *
+             * @param string $relation
+             * @param string|array $types
+             * @param string $boolean
+             * @param \Closure|null $callback
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function doesntHaveMorph($relation, $types, $boolean = 'and', $callback = null)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->doesntHaveMorph($relation, $types, $boolean, $callback);
+            }
+             
+                /**
+             * Add a polymorphic relationship count / exists condition to the query with an "or".
+             *
+             * @param string $relation
+             * @param string|array $types
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function orDoesntHaveMorph($relation, $types)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->orDoesntHaveMorph($relation, $types);
+            }
+             
+                /**
+             * Add a polymorphic relationship count / exists condition to the query with where clauses.
+             *
+             * @param string $relation
+             * @param string|array $types
+             * @param \Closure|null $callback
+             * @param string $operator
+             * @param int $count
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function whereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->whereHasMorph($relation, $types, $callback, $operator, $count);
+            }
+             
+                /**
+             * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or".
+             *
+             * @param string $relation
+             * @param string|array $types
+             * @param \Closure $callback
+             * @param string $operator
+             * @param int $count
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function orWhereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->orWhereHasMorph($relation, $types, $callback, $operator, $count);
+            }
+             
+                /**
+             * Add a polymorphic relationship count / exists condition to the query with where clauses.
+             *
+             * @param string $relation
+             * @param string|array $types
+             * @param \Closure|null $callback
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function whereDoesntHaveMorph($relation, $types, $callback = null)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->whereDoesntHaveMorph($relation, $types, $callback);
+            }
+             
+                /**
+             * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or".
+             *
+             * @param string $relation
+             * @param string|array $types
+             * @param \Closure $callback
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function orWhereDoesntHaveMorph($relation, $types, $callback = null)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->orWhereDoesntHaveMorph($relation, $types, $callback);
+            }
+             
+                /**
+             * Add subselect queries to count the relations.
+             *
+             * @param mixed $relations
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function withCount($relations)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->withCount($relations);
+            }
+             
+                /**
+             * Merge the where constraints from another query to the current query.
+             *
+             * @param \Illuminate\Database\Eloquent\Builder $from
+             * @return \Illuminate\Database\Eloquent\Builder|static 
+             * @static 
+             */ 
+            public static function mergeConstraintsFrom($from)
+            {
+                                /** @var \Illuminate\Database\Eloquent\Builder $instance */
+                                return $instance->mergeConstraintsFrom($from);
+            }
+             
+                /**
+             * Set the columns to be selected.
+             *
+             * @param array|mixed $columns
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function select($columns = [])
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->select($columns);
+            }
+             
+                /**
+             * Add a subselect expression to the query.
+             *
+             * @param \Closure|\Illuminate\Database\Query\Builder|string $query
+             * @param string $as
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @throws \InvalidArgumentException
+             * @static 
+             */ 
+            public static function selectSub($query, $as)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->selectSub($query, $as);
+            }
+             
+                /**
+             * Add a new "raw" select expression to the query.
+             *
+             * @param string $expression
+             * @param array $bindings
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function selectRaw($expression, $bindings = [])
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->selectRaw($expression, $bindings);
+            }
+             
+                /**
+             * Makes "from" fetch from a subquery.
+             *
+             * @param \Closure|\Illuminate\Database\Query\Builder|string $query
+             * @param string $as
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @throws \InvalidArgumentException
+             * @static 
+             */ 
+            public static function fromSub($query, $as)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->fromSub($query, $as);
+            }
+             
+                /**
+             * Add a raw from clause to the query.
+             *
+             * @param string $expression
+             * @param mixed $bindings
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function fromRaw($expression, $bindings = [])
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->fromRaw($expression, $bindings);
+            }
+             
+                /**
+             * Add a new select column to the query.
+             *
+             * @param array|mixed $column
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function addSelect($column)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->addSelect($column);
+            }
+             
+                /**
+             * Force the query to only return distinct results.
+             *
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function distinct()
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->distinct();
+            }
+             
+                /**
+             * Set the table which the query is targeting.
+             *
+             * @param string $table
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function from($table)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->from($table);
+            }
+             
+                /**
+             * Add a join clause to the query.
+             *
+             * @param string $table
+             * @param \Closure|string $first
+             * @param string|null $operator
+             * @param string|null $second
+             * @param string $type
+             * @param bool $where
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function join($table, $first, $operator = null, $second = null, $type = 'inner', $where = false)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->join($table, $first, $operator, $second, $type, $where);
+            }
+             
+                /**
+             * Add a "join where" clause to the query.
+             *
+             * @param string $table
+             * @param \Closure|string $first
+             * @param string $operator
+             * @param string $second
+             * @param string $type
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function joinWhere($table, $first, $operator, $second, $type = 'inner')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->joinWhere($table, $first, $operator, $second, $type);
+            }
+             
+                /**
+             * Add a subquery join clause to the query.
+             *
+             * @param \Closure|\Illuminate\Database\Query\Builder|string $query
+             * @param string $as
+             * @param \Closure|string $first
+             * @param string|null $operator
+             * @param string|null $second
+             * @param string $type
+             * @param bool $where
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @throws \InvalidArgumentException
+             * @static 
+             */ 
+            public static function joinSub($query, $as, $first, $operator = null, $second = null, $type = 'inner', $where = false)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->joinSub($query, $as, $first, $operator, $second, $type, $where);
+            }
+             
+                /**
+             * Add a left join to the query.
+             *
+             * @param string $table
+             * @param \Closure|string $first
+             * @param string|null $operator
+             * @param string|null $second
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function leftJoin($table, $first, $operator = null, $second = null)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->leftJoin($table, $first, $operator, $second);
+            }
+             
+                /**
+             * Add a "join where" clause to the query.
+             *
+             * @param string $table
+             * @param \Closure|string $first
+             * @param string $operator
+             * @param string $second
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function leftJoinWhere($table, $first, $operator, $second)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->leftJoinWhere($table, $first, $operator, $second);
+            }
+             
+                /**
+             * Add a subquery left join to the query.
+             *
+             * @param \Closure|\Illuminate\Database\Query\Builder|string $query
+             * @param string $as
+             * @param \Closure|string $first
+             * @param string|null $operator
+             * @param string|null $second
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function leftJoinSub($query, $as, $first, $operator = null, $second = null)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->leftJoinSub($query, $as, $first, $operator, $second);
+            }
+             
+                /**
+             * Add a right join to the query.
+             *
+             * @param string $table
+             * @param \Closure|string $first
+             * @param string|null $operator
+             * @param string|null $second
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function rightJoin($table, $first, $operator = null, $second = null)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->rightJoin($table, $first, $operator, $second);
+            }
+             
+                /**
+             * Add a "right join where" clause to the query.
+             *
+             * @param string $table
+             * @param \Closure|string $first
+             * @param string $operator
+             * @param string $second
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function rightJoinWhere($table, $first, $operator, $second)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->rightJoinWhere($table, $first, $operator, $second);
+            }
+             
+                /**
+             * Add a subquery right join to the query.
+             *
+             * @param \Closure|\Illuminate\Database\Query\Builder|string $query
+             * @param string $as
+             * @param \Closure|string $first
+             * @param string|null $operator
+             * @param string|null $second
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function rightJoinSub($query, $as, $first, $operator = null, $second = null)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->rightJoinSub($query, $as, $first, $operator, $second);
+            }
+             
+                /**
+             * Add a "cross join" clause to the query.
+             *
+             * @param string $table
+             * @param \Closure|string|null $first
+             * @param string|null $operator
+             * @param string|null $second
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function crossJoin($table, $first = null, $operator = null, $second = null)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->crossJoin($table, $first, $operator, $second);
+            }
+             
+                /**
+             * Merge an array of where clauses and bindings.
+             *
+             * @param array $wheres
+             * @param array $bindings
+             * @return void 
+             * @static 
+             */ 
+            public static function mergeWheres($wheres, $bindings)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                $instance->mergeWheres($wheres, $bindings);
+            }
+             
+                /**
+             * Prepare the value and operator for a where clause.
+             *
+             * @param string $value
+             * @param string $operator
+             * @param bool $useDefault
+             * @return array 
+             * @throws \InvalidArgumentException
+             * @static 
+             */ 
+            public static function prepareValueAndOperator($value, $operator, $useDefault = false)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->prepareValueAndOperator($value, $operator, $useDefault);
+            }
+             
+                /**
+             * Add a "where" clause comparing two columns to the query.
+             *
+             * @param string|array $first
+             * @param string|null $operator
+             * @param string|null $second
+             * @param string|null $boolean
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function whereColumn($first, $operator = null, $second = null, $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereColumn($first, $operator, $second, $boolean);
+            }
+             
+                /**
+             * Add an "or where" clause comparing two columns to the query.
+             *
+             * @param string|array $first
+             * @param string|null $operator
+             * @param string|null $second
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function orWhereColumn($first, $operator = null, $second = null)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orWhereColumn($first, $operator, $second);
+            }
+             
+                /**
+             * Add a raw where clause to the query.
+             *
+             * @param string $sql
+             * @param mixed $bindings
+             * @param string $boolean
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function whereRaw($sql, $bindings = [], $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereRaw($sql, $bindings, $boolean);
+            }
+             
+                /**
+             * Add a raw or where clause to the query.
+             *
+             * @param string $sql
+             * @param mixed $bindings
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function orWhereRaw($sql, $bindings = [])
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orWhereRaw($sql, $bindings);
+            }
+             
+                /**
+             * Add a "where in" clause to the query.
+             *
+             * @param string $column
+             * @param mixed $values
+             * @param string $boolean
+             * @param bool $not
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function whereIn($column, $values, $boolean = 'and', $not = false)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereIn($column, $values, $boolean, $not);
+            }
+             
+                /**
+             * Add an "or where in" clause to the query.
+             *
+             * @param string $column
+             * @param mixed $values
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function orWhereIn($column, $values)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orWhereIn($column, $values);
+            }
+             
+                /**
+             * Add a "where not in" clause to the query.
+             *
+             * @param string $column
+             * @param mixed $values
+             * @param string $boolean
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function whereNotIn($column, $values, $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereNotIn($column, $values, $boolean);
+            }
+             
+                /**
+             * Add an "or where not in" clause to the query.
+             *
+             * @param string $column
+             * @param mixed $values
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function orWhereNotIn($column, $values)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orWhereNotIn($column, $values);
+            }
+             
+                /**
+             * Add a "where in raw" clause for integer values to the query.
+             *
+             * @param string $column
+             * @param \Illuminate\Contracts\Support\Arrayable|array $values
+             * @param string $boolean
+             * @param bool $not
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function whereIntegerInRaw($column, $values, $boolean = 'and', $not = false)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereIntegerInRaw($column, $values, $boolean, $not);
+            }
+             
+                /**
+             * Add a "where not in raw" clause for integer values to the query.
+             *
+             * @param string $column
+             * @param \Illuminate\Contracts\Support\Arrayable|array $values
+             * @param string $boolean
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function whereIntegerNotInRaw($column, $values, $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereIntegerNotInRaw($column, $values, $boolean);
+            }
+             
+                /**
+             * Add a "where null" clause to the query.
+             *
+             * @param string|array $columns
+             * @param string $boolean
+             * @param bool $not
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function whereNull($columns, $boolean = 'and', $not = false)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereNull($columns, $boolean, $not);
+            }
+             
+                /**
+             * Add an "or where null" clause to the query.
+             *
+             * @param string $column
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function orWhereNull($column)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orWhereNull($column);
+            }
+             
+                /**
+             * Add a "where not null" clause to the query.
+             *
+             * @param string $column
+             * @param string $boolean
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function whereNotNull($column, $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereNotNull($column, $boolean);
+            }
+             
+                /**
+             * Add a where between statement to the query.
+             *
+             * @param string $column
+             * @param array $values
+             * @param string $boolean
+             * @param bool $not
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function whereBetween($column, $values, $boolean = 'and', $not = false)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereBetween($column, $values, $boolean, $not);
+            }
+             
+                /**
+             * Add an or where between statement to the query.
+             *
+             * @param string $column
+             * @param array $values
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function orWhereBetween($column, $values)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orWhereBetween($column, $values);
+            }
+             
+                /**
+             * Add a where not between statement to the query.
+             *
+             * @param string $column
+             * @param array $values
+             * @param string $boolean
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function whereNotBetween($column, $values, $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereNotBetween($column, $values, $boolean);
+            }
+             
+                /**
+             * Add an or where not between statement to the query.
+             *
+             * @param string $column
+             * @param array $values
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function orWhereNotBetween($column, $values)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orWhereNotBetween($column, $values);
+            }
+             
+                /**
+             * Add an "or where not null" clause to the query.
+             *
+             * @param string $column
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function orWhereNotNull($column)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orWhereNotNull($column);
+            }
+             
+                /**
+             * Add a "where date" statement to the query.
+             *
+             * @param string $column
+             * @param string $operator
+             * @param \DateTimeInterface|string|null $value
+             * @param string $boolean
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function whereDate($column, $operator, $value = null, $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereDate($column, $operator, $value, $boolean);
+            }
+             
+                /**
+             * Add an "or where date" statement to the query.
+             *
+             * @param string $column
+             * @param string $operator
+             * @param \DateTimeInterface|string|null $value
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function orWhereDate($column, $operator, $value = null)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orWhereDate($column, $operator, $value);
+            }
+             
+                /**
+             * Add a "where time" statement to the query.
+             *
+             * @param string $column
+             * @param string $operator
+             * @param \DateTimeInterface|string|null $value
+             * @param string $boolean
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function whereTime($column, $operator, $value = null, $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereTime($column, $operator, $value, $boolean);
+            }
+             
+                /**
+             * Add an "or where time" statement to the query.
+             *
+             * @param string $column
+             * @param string $operator
+             * @param \DateTimeInterface|string|null $value
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function orWhereTime($column, $operator, $value = null)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orWhereTime($column, $operator, $value);
+            }
+             
+                /**
+             * Add a "where day" statement to the query.
+             *
+             * @param string $column
+             * @param string $operator
+             * @param \DateTimeInterface|string|null $value
+             * @param string $boolean
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function whereDay($column, $operator, $value = null, $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereDay($column, $operator, $value, $boolean);
+            }
+             
+                /**
+             * Add an "or where day" statement to the query.
+             *
+             * @param string $column
+             * @param string $operator
+             * @param \DateTimeInterface|string|null $value
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function orWhereDay($column, $operator, $value = null)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orWhereDay($column, $operator, $value);
+            }
+             
+                /**
+             * Add a "where month" statement to the query.
+             *
+             * @param string $column
+             * @param string $operator
+             * @param \DateTimeInterface|string|null $value
+             * @param string $boolean
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function whereMonth($column, $operator, $value = null, $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereMonth($column, $operator, $value, $boolean);
+            }
+             
+                /**
+             * Add an "or where month" statement to the query.
+             *
+             * @param string $column
+             * @param string $operator
+             * @param \DateTimeInterface|string|null $value
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function orWhereMonth($column, $operator, $value = null)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orWhereMonth($column, $operator, $value);
+            }
+             
+                /**
+             * Add a "where year" statement to the query.
+             *
+             * @param string $column
+             * @param string $operator
+             * @param \DateTimeInterface|string|int|null $value
+             * @param string $boolean
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function whereYear($column, $operator, $value = null, $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereYear($column, $operator, $value, $boolean);
+            }
+             
+                /**
+             * Add an "or where year" statement to the query.
+             *
+             * @param string $column
+             * @param string $operator
+             * @param \DateTimeInterface|string|int|null $value
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function orWhereYear($column, $operator, $value = null)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orWhereYear($column, $operator, $value);
+            }
+             
+                /**
+             * Add a nested where statement to the query.
+             *
+             * @param \Closure $callback
+             * @param string $boolean
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function whereNested($callback, $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereNested($callback, $boolean);
+            }
+             
+                /**
+             * Create a new query instance for nested where condition.
+             *
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function forNestedWhere()
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->forNestedWhere();
+            }
+             
+                /**
+             * Add another query builder as a nested where to the query builder.
+             *
+             * @param \Illuminate\Database\Query\Builder|static $query
+             * @param string $boolean
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function addNestedWhereQuery($query, $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->addNestedWhereQuery($query, $boolean);
+            }
+             
+                /**
+             * Add an exists clause to the query.
+             *
+             * @param \Closure $callback
+             * @param string $boolean
+             * @param bool $not
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function whereExists($callback, $boolean = 'and', $not = false)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereExists($callback, $boolean, $not);
+            }
+             
+                /**
+             * Add an or exists clause to the query.
+             *
+             * @param \Closure $callback
+             * @param bool $not
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function orWhereExists($callback, $not = false)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orWhereExists($callback, $not);
+            }
+             
+                /**
+             * Add a where not exists clause to the query.
+             *
+             * @param \Closure $callback
+             * @param string $boolean
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function whereNotExists($callback, $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereNotExists($callback, $boolean);
+            }
+             
+                /**
+             * Add a where not exists clause to the query.
+             *
+             * @param \Closure $callback
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function orWhereNotExists($callback)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orWhereNotExists($callback);
+            }
+             
+                /**
+             * Add an exists clause to the query.
+             *
+             * @param \Illuminate\Database\Query\Builder $query
+             * @param string $boolean
+             * @param bool $not
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function addWhereExistsQuery($query, $boolean = 'and', $not = false)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->addWhereExistsQuery($query, $boolean, $not);
+            }
+             
+                /**
+             * Adds a where condition using row values.
+             *
+             * @param array $columns
+             * @param string $operator
+             * @param array $values
+             * @param string $boolean
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function whereRowValues($columns, $operator, $values, $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereRowValues($columns, $operator, $values, $boolean);
+            }
+             
+                /**
+             * Adds a or where condition using row values.
+             *
+             * @param array $columns
+             * @param string $operator
+             * @param array $values
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function orWhereRowValues($columns, $operator, $values)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orWhereRowValues($columns, $operator, $values);
+            }
+             
+                /**
+             * Add a "where JSON contains" clause to the query.
+             *
+             * @param string $column
+             * @param mixed $value
+             * @param string $boolean
+             * @param bool $not
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function whereJsonContains($column, $value, $boolean = 'and', $not = false)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereJsonContains($column, $value, $boolean, $not);
+            }
+             
+                /**
+             * Add a "or where JSON contains" clause to the query.
+             *
+             * @param string $column
+             * @param mixed $value
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function orWhereJsonContains($column, $value)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orWhereJsonContains($column, $value);
+            }
+             
+                /**
+             * Add a "where JSON not contains" clause to the query.
+             *
+             * @param string $column
+             * @param mixed $value
+             * @param string $boolean
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function whereJsonDoesntContain($column, $value, $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereJsonDoesntContain($column, $value, $boolean);
+            }
+             
+                /**
+             * Add a "or where JSON not contains" clause to the query.
+             *
+             * @param string $column
+             * @param mixed $value
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function orWhereJsonDoesntContain($column, $value)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orWhereJsonDoesntContain($column, $value);
+            }
+             
+                /**
+             * Add a "where JSON length" clause to the query.
+             *
+             * @param string $column
+             * @param mixed $operator
+             * @param mixed $value
+             * @param string $boolean
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function whereJsonLength($column, $operator, $value = null, $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->whereJsonLength($column, $operator, $value, $boolean);
+            }
+             
+                /**
+             * Add a "or where JSON length" clause to the query.
+             *
+             * @param string $column
+             * @param mixed $operator
+             * @param mixed $value
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function orWhereJsonLength($column, $operator, $value = null)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orWhereJsonLength($column, $operator, $value);
+            }
+             
+                /**
+             * Handles dynamic "where" clauses to the query.
+             *
+             * @param string $method
+             * @param array $parameters
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function dynamicWhere($method, $parameters)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->dynamicWhere($method, $parameters);
+            }
+             
+                /**
+             * Add a "group by" clause to the query.
+             *
+             * @param array $groups
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function groupBy(...$groups)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->groupBy(...$groups);
+            }
+             
+                /**
+             * Add a "having" clause to the query.
+             *
+             * @param string $column
+             * @param string|null $operator
+             * @param string|null $value
+             * @param string $boolean
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function having($column, $operator = null, $value = null, $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->having($column, $operator, $value, $boolean);
+            }
+             
+                /**
+             * Add a "or having" clause to the query.
+             *
+             * @param string $column
+             * @param string|null $operator
+             * @param string|null $value
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function orHaving($column, $operator = null, $value = null)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orHaving($column, $operator, $value);
+            }
+             
+                /**
+             * Add a "having between " clause to the query.
+             *
+             * @param string $column
+             * @param array $values
+             * @param string $boolean
+             * @param bool $not
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function havingBetween($column, $values, $boolean = 'and', $not = false)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->havingBetween($column, $values, $boolean, $not);
+            }
+             
+                /**
+             * Add a raw having clause to the query.
+             *
+             * @param string $sql
+             * @param array $bindings
+             * @param string $boolean
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function havingRaw($sql, $bindings = [], $boolean = 'and')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->havingRaw($sql, $bindings, $boolean);
+            }
+             
+                /**
+             * Add a raw or having clause to the query.
+             *
+             * @param string $sql
+             * @param array $bindings
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function orHavingRaw($sql, $bindings = [])
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orHavingRaw($sql, $bindings);
+            }
+             
+                /**
+             * Add an "order by" clause to the query.
+             *
+             * @param string $column
+             * @param string $direction
+             * @return \Illuminate\Database\Query\Builder 
+             * @throws \InvalidArgumentException
+             * @static 
+             */ 
+            public static function orderBy($column, $direction = 'asc')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orderBy($column, $direction);
+            }
+             
+                /**
+             * Add a descending "order by" clause to the query.
+             *
+             * @param string $column
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function orderByDesc($column)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orderByDesc($column);
+            }
+             
+                /**
+             * Put the query's results in random order.
+             *
+             * @param string $seed
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function inRandomOrder($seed = '')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->inRandomOrder($seed);
+            }
+             
+                /**
+             * Add a raw "order by" clause to the query.
+             *
+             * @param string $sql
+             * @param array $bindings
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function orderByRaw($sql, $bindings = [])
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->orderByRaw($sql, $bindings);
+            }
+             
+                /**
+             * Alias to set the "offset" value of the query.
+             *
+             * @param int $value
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function skip($value)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->skip($value);
+            }
+             
+                /**
+             * Set the "offset" value of the query.
+             *
+             * @param int $value
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function offset($value)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->offset($value);
+            }
+             
+                /**
+             * Alias to set the "limit" value of the query.
+             *
+             * @param int $value
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function take($value)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->take($value);
+            }
+             
+                /**
+             * Set the "limit" value of the query.
+             *
+             * @param int $value
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function limit($value)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->limit($value);
+            }
+             
+                /**
+             * Set the limit and offset for a given page.
+             *
+             * @param int $page
+             * @param int $perPage
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function forPage($page, $perPage = 15)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->forPage($page, $perPage);
+            }
+             
+                /**
+             * Constrain the query to the previous "page" of results before a given ID.
+             *
+             * @param int $perPage
+             * @param int|null $lastId
+             * @param string $column
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function forPageBeforeId($perPage = 15, $lastId = 0, $column = 'id')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->forPageBeforeId($perPage, $lastId, $column);
+            }
+             
+                /**
+             * Constrain the query to the next "page" of results after a given ID.
+             *
+             * @param int $perPage
+             * @param int|null $lastId
+             * @param string $column
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function forPageAfterId($perPage = 15, $lastId = 0, $column = 'id')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->forPageAfterId($perPage, $lastId, $column);
+            }
+             
+                /**
+             * Add a union statement to the query.
+             *
+             * @param \Illuminate\Database\Query\Builder|\Closure $query
+             * @param bool $all
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function union($query, $all = false)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->union($query, $all);
+            }
+             
+                /**
+             * Add a union all statement to the query.
+             *
+             * @param \Illuminate\Database\Query\Builder|\Closure $query
+             * @return \Illuminate\Database\Query\Builder|static 
+             * @static 
+             */ 
+            public static function unionAll($query)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->unionAll($query);
+            }
+             
+                /**
+             * Lock the selected rows in the table.
+             *
+             * @param string|bool $value
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function lock($value = true)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->lock($value);
+            }
+             
+                /**
+             * Lock the selected rows in the table for updating.
+             *
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function lockForUpdate()
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->lockForUpdate();
+            }
+             
+                /**
+             * Share lock the selected rows in the table.
+             *
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function sharedLock()
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->sharedLock();
+            }
+             
+                /**
+             * Get the SQL representation of the query.
+             *
+             * @return string 
+             * @static 
+             */ 
+            public static function toSql()
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->toSql();
+            }
+             
+                /**
+             * Get the count of the total records for the paginator.
+             *
+             * @param array $columns
+             * @return int 
+             * @static 
+             */ 
+            public static function getCountForPagination($columns = [])
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->getCountForPagination($columns);
+            }
+             
+                /**
+             * Concatenate values of a given column as a string.
+             *
+             * @param string $column
+             * @param string $glue
+             * @return string 
+             * @static 
+             */ 
+            public static function implode($column, $glue = '')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->implode($column, $glue);
+            }
+             
+                /**
+             * Determine if any rows exist for the current query.
+             *
+             * @return bool 
+             * @static 
+             */ 
+            public static function exists()
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->exists();
+            }
+             
+                /**
+             * Determine if no rows exist for the current query.
+             *
+             * @return bool 
+             * @static 
+             */ 
+            public static function doesntExist()
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->doesntExist();
+            }
+             
+                /**
+             * Retrieve the "count" result of the query.
+             *
+             * @param string $columns
+             * @return int 
+             * @static 
+             */ 
+            public static function count($columns = '*')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->count($columns);
+            }
+             
+                /**
+             * Retrieve the minimum value of a given column.
+             *
+             * @param string $column
+             * @return mixed 
+             * @static 
+             */ 
+            public static function min($column)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->min($column);
+            }
+             
+                /**
+             * Retrieve the maximum value of a given column.
+             *
+             * @param string $column
+             * @return mixed 
+             * @static 
+             */ 
+            public static function max($column)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->max($column);
+            }
+             
+                /**
+             * Retrieve the sum of the values of a given column.
+             *
+             * @param string $column
+             * @return mixed 
+             * @static 
+             */ 
+            public static function sum($column)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->sum($column);
+            }
+             
+                /**
+             * Retrieve the average of the values of a given column.
+             *
+             * @param string $column
+             * @return mixed 
+             * @static 
+             */ 
+            public static function avg($column)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->avg($column);
+            }
+             
+                /**
+             * Alias for the "avg" method.
+             *
+             * @param string $column
+             * @return mixed 
+             * @static 
+             */ 
+            public static function average($column)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->average($column);
+            }
+             
+                /**
+             * Execute an aggregate function on the database.
+             *
+             * @param string $function
+             * @param array $columns
+             * @return mixed 
+             * @static 
+             */ 
+            public static function aggregate($function, $columns = [])
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->aggregate($function, $columns);
+            }
+             
+                /**
+             * Execute a numeric aggregate function on the database.
+             *
+             * @param string $function
+             * @param array $columns
+             * @return float|int 
+             * @static 
+             */ 
+            public static function numericAggregate($function, $columns = [])
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->numericAggregate($function, $columns);
+            }
+             
+                /**
+             * Insert a new record into the database.
+             *
+             * @param array $values
+             * @return bool 
+             * @static 
+             */ 
+            public static function insert($values)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->insert($values);
+            }
+             
+                /**
+             * Insert a new record into the database while ignoring errors.
+             *
+             * @param array $values
+             * @return int 
+             * @static 
+             */ 
+            public static function insertOrIgnore($values)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->insertOrIgnore($values);
+            }
+             
+                /**
+             * Insert a new record and get the value of the primary key.
+             *
+             * @param array $values
+             * @param string|null $sequence
+             * @return int 
+             * @static 
+             */ 
+            public static function insertGetId($values, $sequence = null)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->insertGetId($values, $sequence);
+            }
+             
+                /**
+             * Insert new records into the table using a subquery.
+             *
+             * @param array $columns
+             * @param \Closure|\Illuminate\Database\Query\Builder|string $query
+             * @return bool 
+             * @static 
+             */ 
+            public static function insertUsing($columns, $query)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->insertUsing($columns, $query);
+            }
+             
+                /**
+             * Insert or update a record matching the attributes, and fill it with values.
+             *
+             * @param array $attributes
+             * @param array $values
+             * @return bool 
+             * @static 
+             */ 
+            public static function updateOrInsert($attributes, $values = [])
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->updateOrInsert($attributes, $values);
+            }
+             
+                /**
+             * Run a truncate statement on the table.
+             *
+             * @return void 
+             * @static 
+             */ 
+            public static function truncate()
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                $instance->truncate();
+            }
+             
+                /**
+             * Create a raw database expression.
+             *
+             * @param mixed $value
+             * @return \Illuminate\Database\Query\Expression 
+             * @static 
+             */ 
+            public static function raw($value)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->raw($value);
+            }
+             
+                /**
+             * Get the current query value bindings in a flattened array.
+             *
+             * @return array 
+             * @static 
+             */ 
+            public static function getBindings()
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->getBindings();
+            }
+             
+                /**
+             * Get the raw array of bindings.
+             *
+             * @return array 
+             * @static 
+             */ 
+            public static function getRawBindings()
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->getRawBindings();
+            }
+             
+                /**
+             * Set the bindings on the query builder.
+             *
+             * @param array $bindings
+             * @param string $type
+             * @return \Illuminate\Database\Query\Builder 
+             * @throws \InvalidArgumentException
+             * @static 
+             */ 
+            public static function setBindings($bindings, $type = 'where')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->setBindings($bindings, $type);
+            }
+             
+                /**
+             * Add a binding to the query.
+             *
+             * @param mixed $value
+             * @param string $type
+             * @return \Illuminate\Database\Query\Builder 
+             * @throws \InvalidArgumentException
+             * @static 
+             */ 
+            public static function addBinding($value, $type = 'where')
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->addBinding($value, $type);
+            }
+             
+                /**
+             * Merge an array of bindings into our bindings.
+             *
+             * @param \Illuminate\Database\Query\Builder $query
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function mergeBindings($query)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->mergeBindings($query);
+            }
+             
+                /**
+             * Get the database query processor instance.
+             *
+             * @return \Illuminate\Database\Query\Processors\Processor 
+             * @static 
+             */ 
+            public static function getProcessor()
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->getProcessor();
+            }
+             
+                /**
+             * Get the query grammar instance.
+             *
+             * @return \Illuminate\Database\Query\Grammars\Grammar 
+             * @static 
+             */ 
+            public static function getGrammar()
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->getGrammar();
+            }
+             
+                /**
+             * Use the write pdo for query.
+             *
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function useWritePdo()
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->useWritePdo();
+            }
+             
+                /**
+             * Clone the query without the given properties.
+             *
+             * @param array $properties
+             * @return static 
+             * @static 
+             */ 
+            public static function cloneWithout($properties)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->cloneWithout($properties);
+            }
+             
+                /**
+             * Clone the query without the given bindings.
+             *
+             * @param array $except
+             * @return static 
+             * @static 
+             */ 
+            public static function cloneWithoutBindings($except)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->cloneWithoutBindings($except);
+            }
+             
+                /**
+             * Dump the current SQL and bindings.
+             *
+             * @return \Illuminate\Database\Query\Builder 
+             * @static 
+             */ 
+            public static function dump()
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->dump();
+            }
+             
+                /**
+             * Die and dump the current SQL and bindings.
+             *
+             * @return void 
+             * @static 
+             */ 
+            public static function dd()
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                $instance->dd();
+            }
+             
+                /**
+             * Register a custom macro.
+             *
+             * @param string $name
+             * @param object|callable $macro
+             * @return void 
+             * @static 
+             */ 
+            public static function macro($name, $macro)
+            {
+                                \Illuminate\Database\Query\Builder::macro($name, $macro);
+            }
+             
+                /**
+             * Mix another object into the class.
+             *
+             * @param object $mixin
+             * @param bool $replace
+             * @return void 
+             * @throws \ReflectionException
+             * @static 
+             */ 
+            public static function mixin($mixin, $replace = true)
+            {
+                                \Illuminate\Database\Query\Builder::mixin($mixin, $replace);
+            }
+             
+                /**
+             * Checks if macro is registered.
+             *
+             * @param string $name
+             * @return bool 
+             * @static 
+             */ 
+            public static function hasMacro($name)
+            {
+                                return \Illuminate\Database\Query\Builder::hasMacro($name);
+            }
+             
+                /**
+             * Dynamically handle calls to the class.
+             *
+             * @param string $method
+             * @param array $parameters
+             * @return mixed 
+             * @throws \BadMethodCallException
+             * @static 
+             */ 
+            public static function macroCall($method, $parameters)
+            {
+                                /** @var \Illuminate\Database\Query\Builder $instance */
+                                return $instance->macroCall($method, $parameters);
+            }
+                    }
+            class Event extends \Illuminate\Support\Facades\Event {}
+            class File extends \Illuminate\Support\Facades\File {}
+            class Gate extends \Illuminate\Support\Facades\Gate {}
+            class Hash extends \Illuminate\Support\Facades\Hash {}
+            class Lang extends \Illuminate\Support\Facades\Lang {}
+            class Log extends \Illuminate\Support\Facades\Log {}
+            class Mail extends \Illuminate\Support\Facades\Mail {}
+            class Notification extends \Illuminate\Support\Facades\Notification {}
+            class Password extends \Illuminate\Support\Facades\Password {}
+            class Queue extends \Illuminate\Support\Facades\Queue {}
+            class Redirect extends \Illuminate\Support\Facades\Redirect {}
+            class Redis extends \Illuminate\Support\Facades\Redis {}
+            class Request extends \Illuminate\Support\Facades\Request {}
+            class Response extends \Illuminate\Support\Facades\Response {}
+            class Route extends \Illuminate\Support\Facades\Route {}
+            class Schema extends \Illuminate\Support\Facades\Schema {}
+            class Session extends \Illuminate\Support\Facades\Session {}
+            class Storage extends \Illuminate\Support\Facades\Storage {}
+            class Str extends \Illuminate\Support\Str {}
+            class URL extends \Illuminate\Support\Facades\URL {}
+            class Validator extends \Illuminate\Support\Facades\Validator {}
+            class View extends \Illuminate\Support\Facades\View {}
+            class Debugbar extends \Barryvdh\Debugbar\Facade {}
+            class Captcha extends \Mews\Captcha\Facades\Captcha {}
+            class Uuid extends \Webpatser\Uuid\Uuid {}
+            class Excel extends \Maatwebsite\Excel\Facades\Excel {}
+            class JWTAuth extends \Tymon\JWTAuth\Facades\JWTAuth {}
+            class JWTFactory extends \Tymon\JWTAuth\Facades\JWTFactory {}
+            class QrCode extends \SimpleSoftwareIO\QrCode\Facades\QrCode {}
+            class Image extends \Intervention\Image\Facades\Image {}
+            class Strings extends \Songshenzong\Support\StringsFacade {}
+     
+}
+
+
+
+namespace Illuminate\Support {
+    /**
+     * Methods commonly used in migrations
+     *
+     * @method Fluent after(string $column) Add the after modifier
+     * @method Fluent charset(string $charset) Add the character set modifier
+     * @method Fluent collation(string $collation) Add the collation modifier
+     * @method Fluent comment(string $comment) Add comment
+     * @method Fluent default($value) Add the default modifier
+     * @method Fluent first() Select first row
+     * @method Fluent index(string $name = null) Add the in dex clause
+     * @method Fluent on(string $table) `on` of a foreign key
+     * @method Fluent onDelete(string $action) `on delete` of a foreign key
+     * @method Fluent onUpdate(string $action) `on update` of a foreign key
+     * @method Fluent primary() Add the primary key modifier
+     * @method Fluent references(string $column) `references` of a foreign key
+     * @method Fluent nullable(bool $value = true) Add the nullable modifier
+     * @method Fluent unique(string $name = null) Add unique index clause
+     * @method Fluent unsigned() Add the unsigned modifier
+     * @method Fluent useCurrent() Add the default timestamp value
+     * @method Fluent change() Add the change modifier
+     */
+    class Fluent {}
+}
+

+ 108 - 0
app/Console/Commands/TestCommand.php

@@ -0,0 +1,108 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Jobs\BarrageJob;
+use App\Jobs\ShopNoticeJob;
+use App\Jobs\VerifyImg;
+use App\Models\CouponGrantRange;
+use App\Models\ErrorRecord;
+use App\Models\Express;
+use App\Models\Goods;
+use App\Models\GoodsSpec;
+use App\Models\ImGroup;
+use App\Models\ImMyGroup;
+use App\Models\Member;
+use App\Models\MemberOpenId;
+use App\Models\Members;
+use App\Models\Menu;
+use App\Models\Order;
+use App\Models\OrderAccountsSet;
+use App\Models\OrderItem;
+use App\Models\PayOrder;
+use App\Models\RefundOrder;
+use App\Models\Region;
+use App\Models\SeckillGoods;
+use App\Models\Shop;
+use App\Models\ShopOrder;
+use App\Models\ShopSet;
+use App\Models\ShopUser;
+use App\Models\Withdraw;
+use App\Servers\AlbumServer;
+use App\Servers\BarrageServer;
+use App\Servers\CommentServer;
+use App\Servers\CommonServer;
+use App\Servers\Coupon\CouponGrantServer;
+use App\Servers\Electricity\JdElectricityServer;
+use App\Servers\Electricity\TbElectricityServer;
+use App\Servers\ExpressServer;
+use App\Servers\HxServer;
+use App\Servers\ImgServer;
+use App\Servers\ImServer;
+use App\Servers\MemberServer;
+use App\Servers\OrderServer;
+use App\Servers\PayServer;
+use App\Servers\RedisDataServer;
+use App\Servers\RefundOrderServer;
+use App\Servers\SeckillServer;
+use App\Servers\SensitiveServer;
+use App\Servers\ShopFileServer;
+use App\Servers\ShopNoticeServer;
+use App\Servers\ShopOrderServer;
+use App\Servers\ShopServer;
+use App\Servers\UsedServer;
+use App\Servers\WeixinServer;
+use App\Servers\WxTemplateServer;
+use App\Servers\ZfbServer;
+use Illuminate\Console\Command;
+use Illuminate\Support\Facades\DB;
+use SimpleSoftwareIO\QrCode\Facades\QrCode;
+use SwooleTW\Http\Websocket\Facades\Websocket;
+use Topsdk\Topapi\TopApiClient;
+
+class TestCommand extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'test:a';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = 'Command description';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+
+    /**
+     * Execute the console command.
+     *
+     * @return mixed
+     */
+    public function handle()
+    {
+        $ids=Menu::where('p_id',0)->pluck('id');
+        $this->info(implode(',',$ids->toArray()));
+        $ids_t=Menu::whereIn('p_id',$ids)->pluck('id');
+        $this->info(implode(',',$ids_t->toArray()));
+        $ids_s=Menu::whereIn('p_id',$ids_t)->pluck('id');
+        $this->info(implode(',',$ids_s->toArray()));
+        $id_all=array_merge($ids->toArray(),$ids_t->toArray(),$ids_s->toArray());
+        $this->info(implode(',',$id_all));
+        Menu::whereNotIn('id',$id_all)->delete();
+
+    }
+}

+ 49 - 0
app/Console/Commands/TronAnalyze.php

@@ -0,0 +1,49 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Servers\TronAnalyzeServer;
+use Illuminate\Console\Command;
+
+class TronAnalyze extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'analyze:tron';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = '波场区块分析';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return mixed
+     */
+    public function handle()
+    {
+        //
+        $this->info('start------------------');
+        while (true){
+            $ret=TronAnalyzeServer::tronAnalyze();
+            if(empty($ret))sleep(3);
+        }
+        $this->info('end------------------');
+    }
+}

+ 57 - 0
app/Console/Kernel.php

@@ -0,0 +1,57 @@
+<?php
+
+namespace App\Console;
+
+use App\Console\Commands\ClearCacheCommand;
+use App\Console\Commands\ClearUserCommand;
+use App\Console\Commands\CodeCommand;
+use App\Console\Commands\CouponCommand;
+use App\Console\Commands\OrderAffirm;
+use App\Console\Commands\OrderAutoExpressl;
+use App\Console\Commands\OrderFinish;
+use App\Console\Commands\OrderRepeal;
+use App\Console\Commands\PlatformGoods;
+use App\Console\Commands\ProvinceCodeCommand;
+use App\Console\Commands\ReturnOrderCommand;
+use App\Console\Commands\ShareShop;
+use App\Console\Commands\ShopPerformance;
+use App\Console\Commands\TestCommand;
+use Illuminate\Console\Scheduling\Schedule;
+use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
+
+class Kernel extends ConsoleKernel
+{
+    /**
+     * The Artisan commands provided by your application.
+     *
+     * @var array
+     */
+    protected $commands = [
+        //
+        TestCommand::class,
+    ];
+
+    /**
+     * Define the application's command schedule.
+     *
+     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
+     * @return void
+     */
+    protected function schedule(Schedule $schedule)
+    {
+        // $schedule->command('inspire')
+        //          ->hourly();
+    }
+
+    /**
+     * Register the commands for the application.
+     *
+     * @return void
+     */
+    protected function commands()
+    {
+        $this->load(__DIR__.'/Commands');
+
+        require base_path('routes/console.php');
+    }
+}

+ 16 - 0
app/Exceptions/FrequencyException.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Exceptions;
+
+use Exception;
+use Throwable;
+
+class FrequencyException extends Exception
+{
+    //
+
+    public function __construct($message = "", $code = 0, Throwable $previous = null)
+    {
+        parent::__construct($message, $code, $previous);
+    }
+}

+ 90 - 0
app/Exceptions/Handler.php

@@ -0,0 +1,90 @@
+<?php
+
+namespace App\Exceptions;
+
+use End01here\EasySms\Exceptions\Exception as EndException;
+use Exception;
+use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
+
+class Handler extends ExceptionHandler
+{
+    /**
+     * A list of the exception types that are not reported.
+     *
+     * @var array
+     */
+    protected $dontReport = [
+        FrequencyException::class
+    ];
+
+    /**
+     * A list of the inputs that are never flashed for validation exceptions.
+     *
+     * @var array
+     */
+    protected $dontFlash = [
+        'password',
+        'password_confirmation',
+    ];
+
+    /**
+     * Report or log an exception.
+     *
+     * @param \Exception $exception
+     * @return void
+     */
+    public function report(Exception $exception)
+    {
+        parent::report($exception);
+    }
+
+    /**
+     * Render an exception into an HTTP response.
+     *
+     * @param \Illuminate\Http\Request $request
+     * @param \Exception $exception
+     * @return \Illuminate\Http\Response
+     */
+    public function render($request, Exception $exception)
+    {
+        if (!env('APP_DEBUG')) {
+            if ($exception instanceof FrequencyException) {
+                $result = [
+                    "msg" => $exception->getMessage(),
+                    "data" => [],
+                    "code" => $exception->getCode()
+                ];
+                return response()->json($result);
+            }elseif ($exception instanceof EndException){
+                $result = [
+                    "msg" => $exception->getMessage(),
+                    "data" => [],
+                    "code" => $exception->getCode()
+                ];
+                return response()->json($result);
+            }elseif ($exception instanceof MemberAuthException){
+                $result = [
+                    "msg" => '登陆失效',
+                    "data" => [],
+                    "code" => 401
+                ];
+                return response()->json($result);
+            }elseif ($exception instanceof ShopAuthException){
+                $result = [
+                    "msg" => '登陆失效',
+                    "data" => [],
+                    "code" => 401
+                ];
+                return response()->json($result);
+            }  else {
+                $result = [
+                    "msg" => '系统错误',
+                    "data" => [],
+                    "code" => 0
+                ];
+                return response()->json($result);
+            }
+        }
+        return parent::render($request, $exception);
+    }
+}

+ 10 - 0
app/Exceptions/MemberAuthException.php

@@ -0,0 +1,10 @@
+<?php
+
+namespace App\Exceptions;
+
+use Exception;
+
+class MemberAuthException extends Exception
+{
+    //
+}

+ 16 - 0
app/Exceptions/PurchasesException.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Exceptions;
+
+use Exception;
+use Throwable;
+
+class PurchasesException extends Exception
+{
+    //
+
+    public function __construct($message = "", $code = 0, Throwable $previous = null)
+    {
+        parent::__construct($message, $code, $previous);
+    }
+}

+ 10 - 0
app/Exceptions/ShopAuthException.php

@@ -0,0 +1,10 @@
+<?php
+
+namespace App\Exceptions;
+
+use Exception;
+
+class ShopAuthException extends Exception
+{
+    //
+}

+ 19 - 0
app/Exceptions/Sign/AuthException.php

@@ -0,0 +1,19 @@
+<?php
+
+
+namespace App\Exceptions\Sign;
+use Exception;
+
+class AuthException extends Exception
+{
+    /**
+     * Create a new authentication exception.
+     *
+     * @param  string  $message
+     * @return void
+     */
+    public function __construct($message = '请重新登录')
+    {
+        parent::__construct($message);
+    }
+}

+ 19 - 0
app/Exceptions/Sign/DownException.php

@@ -0,0 +1,19 @@
+<?php
+
+
+namespace App\Exceptions\Sign;
+use Exception;
+
+class DownException extends Exception
+{
+    /**
+     * Create a new authentication exception.
+     *
+     * @param  string  $message
+     * @return void
+     */
+    public function __construct($message = '系统维护中...')
+    {
+        parent::__construct($message);
+    }
+}

+ 21 - 0
app/Exceptions/Sign/SendTypeException.php

@@ -0,0 +1,21 @@
+<?php
+
+
+namespace App\Exceptions\Sign;
+
+use Exception;
+
+class SendTypeException  extends Exception
+{
+    /**
+     * Create a new authentication exception.
+     *
+     * @param  string  $message
+     * @return void
+     */
+    public function __construct($message = '请完成实名认证')
+    {
+        parent::__construct($message);
+    }
+
+}

+ 21 - 0
app/Exceptions/Sign/SignException.php

@@ -0,0 +1,21 @@
+<?php
+
+
+namespace App\Exceptions\Sign;
+
+use Exception;
+
+class SignException  extends Exception
+{
+    /**
+     * Create a new authentication exception.
+     *
+     * @param  string  $message
+     * @return void
+     */
+    public function __construct($message = '签名错误')
+    {
+        parent::__construct($message);
+    }
+
+}

+ 10 - 0
app/Exceptions/WapException.php

@@ -0,0 +1,10 @@
+<?php
+
+namespace App\Exceptions;
+
+use Exception;
+
+class WapException extends Exception
+{
+    //
+}

+ 351 - 0
app/Http/Controllers/Admin/IndexController.php

@@ -0,0 +1,351 @@
+<?php
+
+namespace App\Http\Controllers\Admin;
+
+use App\Http\Controllers\BaseController;
+use App\Servers\SmsServer;
+use Illuminate\Contracts\Routing\ResponseFactory;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Storage;
+
+class IndexController extends BaseController
+{
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View
+     *
+     * 后台首页
+     */
+    public function index()
+    {
+//        request()->session()->put('aaa','12122121');
+//        request()->session()->save();
+//        dd(request()->session()->all());
+
+        return view('admin.index');
+    }
+
+
+    /**
+     * @param Request $request
+     * @param ResponseFactory $response
+     * @return \Illuminate\Http\JsonResponse
+     *
+     * bootstrap-table 表单 yeOrNo 数据处理
+     * 处理请求 yes or no 参数 (全局函数)
+     */
+    public function switchYesOrNo(Request $request, ResponseFactory $response)
+    {
+        try {
+            if ($request->isMethod('post') && $request->ajax()) {
+                $id = $request->id;
+                $field = $request->field;
+                $table = str_plural($request->table);
+                $pk = $request->input('pk', 'id');
+                $model = DB::table($table);
+                $flag = false;
+                $updateFieldData = 0;
+                $datum = $model->select($field)->where($pk, $id)->first();
+
+                if ($datum) {
+                    $datum->{$field} == 1 ? $updateFieldData = 0 : $updateFieldData = 1;
+
+                    // 更新指定表的指定字段 ::=> {$table}更新表 -> {$field}更新字段 -> {$updateFieldData}更新为指定值
+                    $result = $model
+                        ->where($pk, $id)
+                        ->update([
+                            $field => $updateFieldData
+                        ]);
+                    $result ? $flag = true : null;
+                }
+
+                if ($flag) {
+                    if ($table == 'members' && $field == 'is_show' && $updateFieldData == 0) {
+
+                    }
+                }
+
+
+                $flag ?
+                    $returnDatum = ['status' => 0, 'message' => '', 'value' => $updateFieldData]
+                    :
+                    $returnDatum = ['status' => 1, 'message' => '操作失败,请重试!', 'value' => $updateFieldData];
+
+                if ($request->wantsJson()) {
+                    return $response->json($returnDatum);
+                }
+            }
+        } catch (\Exception $e) {
+            return $response->json(
+                array('status' => 1, 'message' => $e->getMessage(), 'value' => '')
+            );
+        }
+    }
+
+    /**
+     * @param Request $request
+     * @param ResponseFactory $response
+     * @return \Illuminate\Http\JsonResponse
+     * 修改sort字段 (全局函数)
+     */
+    public function updateSort(Request $request, ResponseFactory $response)
+    {
+        try {
+            if ($request->isMethod('post') && $request->ajax()) {
+                $id = $request->id;
+                $field = $request->field;
+                // 表名称
+                $table = $request->table;
+                $pk = $request->input('pk', 'id');
+                $value = $request->value;
+                $model = DB::table($table);
+                $datum = $model->where($pk, $id)->first();
+
+                if (is_null($datum)) {
+                    // 该数据不存在
+                    $returnDatum = ['status' => 2, 'message' => '数据不存在', 'value' => ''];
+                } else {
+                    // 修改值 sort
+                    $result = $model->where($pk, $id)->update(array(
+                        $field => $value
+                    ));
+
+                    if ($result) {
+                        $returnDatum = ['status' => 0, 'message' => '', 'value' => $value];
+                    } else {
+                        $returnDatum = ['status' => 1, 'message' => '保存失败', 'value' => ''];
+                    }
+                }
+
+                if ($request->wantsJson()) {
+                    return $response->json($returnDatum);
+                }
+            }
+        } catch (\Exception $e) {
+            return $response->json(array(
+                'status' => 1, 'message' => $e->getMessage(), 'value' => ''
+            ));
+        }
+    }
+
+    /**
+     * @param Request $request
+     * @param ResponseFactory $response
+     * @return mixed
+     * 单图上传
+     */
+    public function oneUpdateImage(Request $request, ResponseFactory $response)
+    {
+        if ($request->isMethod('post')) {
+            $returnDatum = array('code' => 1, 'message' => '', 'url' => '');
+            if ($request->hasFile('file_image')) {
+                // 文件后缀判断
+                $ext = $request->file("file_image")->extension();
+                if (!in_array($ext, ["jpg", "jpeg", "gif", "png", "bmp", "webp"])) {
+                    $returnDatum['message'] = '上传图片仅支持png、jpg、jpeg、gif、bmp、webp后缀';
+                    return $response->json($returnDatum);
+                }
+                // 文件大小是否满足 2M = 2*1024*1024 B
+                if ($request->file("file_image")->getClientSize() > 20971552) {
+                    $returnDatum['message'] = '上传图片大小超过5M';
+                    return $response->json($returnDatum);
+                }
+                // 上传过程是否出错
+                if (!$request->file("file_image")->isValid()) {
+                    $returnDatum['message'] = '上传文件出错,请重试';
+                    return $response->json($returnDatum);
+                }
+                // 文件保存 生成一个唯一的文件名称
+                $fileName = time() . str_random(4) . mt_rand(1000, 9999) . ".{$ext}";
+                $pathA = 'image/' . date('y-m', time()) . '/' . $fileName;
+                // oss 上传图片
+                $oss = Storage::disk('oss');
+//                dd(file_get_contents($request->{'file_image'}->getRealPath()));
+                $update = $oss->put($pathA, file_get_contents($request->{'file_image'}->getRealPath()));
+//                $path = $request->file("file_image")->storeAs(!$request->uploadName?'oneImage':$request->uploadName.'/'.date('y-m',time()),$fileName,'public_storage');
+                if ($update) {
+                    return $response->json(['success' => 0, 'message' => '', 'url' => ($oss->url($pathA).'?x-oss-process=image/auto-orient,1/quality,q_90')]);
+//                    return $response->json(['success' => 0, 'message' => '', 'url' => $oss->url($pathA)]);
+                } else {
+                    $returnDatum['message'] = '图片上传保存失败,请重试';
+                    return $response->json($returnDatum);
+                }
+            } else {
+                $returnDatum['message'] = '请上传图片文件';
+                return $response->json($returnDatum);
+            }
+        }
+    }
+
+    // 文件上传
+    public function fileApkOrIos(Request $request, ResponseFactory $response)
+    {
+        $pathA = $request->input('path_a', 'down/android');
+        $type = $request->input('type', 'oss');
+        if ($request->isMethod('post')) {
+            $returnDatum = array('code' => 1, 'message' => '', 'url' => '');
+            if ($request->hasFile('file')) {
+                // 文件后缀判断
+                $ext = $request->file("file")->clientExtension();
+                if (!in_array(strtolower($ext), ["apk", "bin", "mp4"])) {
+                    $returnDatum['message'] = '上传文件支持apk或ipa';
+                    return $response->json($returnDatum);
+                }
+                if ($ext == 'bin') {
+                    $ext = 'ipa';
+                }
+                // 文件大小是否满足 200M = 200*1024*1024 B
+                if ($request->file("file")->getClientSize() > 2097155200) {
+                    $returnDatum['message'] = '上传文件最大200M';
+                    return $response->json($returnDatum);
+                }
+                // 上传过程是否出错
+                if (!$request->file("file")->isValid()) {
+                    $returnDatum['message'] = '上传文件出错';
+                    return $response->json($returnDatum);
+                }
+
+                // 文件保存 生成一个唯一的文件名称
+                if ($request->input('path_a', null)) {
+                    $fileName = time() . str_random(4) . mt_rand(1000, 9999) . ".{$ext}";
+                } else {
+                    $fileName = $request->file("file")->getClientOriginalName();
+                }
+                if ($type !== 'local') {
+                    // oss文件上传
+                    $oss = Storage::disk('oss');
+                    $update = $oss->put($pathA . DIRECTORY_SEPARATOR . $fileName, file_get_contents($request->{'file'}->getRealPath()));
+                    return $response->json(['success' => 0, 'message' => '', 'url' => $oss->url($pathA . DIRECTORY_SEPARATOR . $fileName)]);
+                } else {
+                    // 本地上传
+                    $path = $request->file("file")->storeAs($pathA, $fileName, 'public_storage');
+                    if ($path) {
+                        return $response->json(['success' => 0, 'message' => '', 'url' => '/storage/' . $path]);
+                    } else {
+                        $returnDatum['message'] = '图片上传保存失败';
+                        return $response->json($returnDatum);
+                    }
+                }
+            } else {
+                $returnDatum['message'] = '请上传图片文件';
+                return $response->json($returnDatum);
+            }
+        }
+    }
+
+    // 修改密码
+    public function authPassword()
+    {
+        $user = Auth::user();
+
+        return response()->view('admin.password_index', compact('user'))->header('Content-Type', 'text/html');
+    }
+
+    // 修改密码
+    public function save()
+    {
+        $user = Auth::user();
+
+        if ($user->{"email"} == 'admin@admin.com') {
+            if (empty(request()->input('email', ''))) {
+                return $this->response("邮箱必填!", 'error');
+            }
+
+            $pattern = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/";
+            // 验证游戏格式
+            if (!preg_match($pattern, request()->input('email', ''))) {
+                return $this->response("邮箱格式错误!", 'error');
+            }
+
+            $user->{"email"} = request()->input('email', '');
+        }
+
+        if (empty(request()->input('password', ''))) {
+            return $this->response("邮箱必填!", 'error');
+        }
+
+        $user->{"password"} = bcrypt(request()->input('password'));
+
+        $user->save();
+        return $this->response(static::SUCCESS_MSG, 'success', '', route('admin.index'));
+    }
+
+    public function appAjax()
+    {
+        $msg = \App\Models\Message::where('created_at', '>=', session('msg_time', '2019-08-06 12:00:00'))->count();
+
+//        $bonus = \App\Models\Bonu::where('created_at', '>=', session('bonus_time', '2019-08-06 12:00:00'))->count();
+//
+//        $order = \App\Models\Order::where('created_at', '>=', session('order_time', '2019-08-06 12:00:00'))->count();
+
+        return response()->json([
+            'code' => 0,
+            'data' => [
+                'msg' => $msg,
+                'bonus' => 0,
+                'order' => 0,
+            ]
+        ]);
+    }
+
+
+    function getCity()
+    {
+        $parent_id = request()->get('p_id', '');
+        $select_id = request()->get('select_id', '');
+        $categories = Area::where('parent_id', $parent_id)->select(['id', 'name'])->get();
+        $option = [
+            [
+                'value' => 0,
+                'label' => "请选择城市",
+                'disabled' => empty($select_id) ? true : false,
+                'notice' => '*'
+            ]
+        ];
+
+        foreach ($categories as $category) {
+            $option[] = [
+                'value' => $category->id,
+                'label' => $category->name,
+                'disabled' => $select_id == $category->id ? true : false,
+                'notice' => $category->name
+            ];
+        }
+        return response()->json([
+            'status' => '1',
+            'code' => '1',
+            'message' => '',
+            'data' => $option
+        ]);
+
+    }
+
+    function sendCode()
+    {
+        $phone = request()->input('phone', '');
+        $server=SmsServer::creatServer();
+        $ret=$server->sendCode($phone);
+        if(empty($ret)){
+            return response()->json([
+                'status' => 0,
+                'code' => 0,
+                'message' =>$server->getErrorMsg(),
+                'data' => []
+            ]);
+        }else{
+            return response()->json([
+                'status' => '1',
+                'code' => '1',
+                'message' => '短信发送成功',
+                'data' => []
+            ]);
+        }
+    }
+
+}

+ 384 - 0
app/Http/Controllers/AdminBaseController.php

@@ -0,0 +1,384 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Http\Requests\Admin\CreateRequest;
+use App\Http\Requests\Admin\UpdateRequest;
+use App\Models\Config;
+use App\Servers\MenuServer;
+use Illuminate\Contracts\Routing\ResponseFactory;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Schema;
+use Prettus\Repository\Criteria\RequestCriteria;
+use Prettus\Validator\Contracts\ValidatorInterface;
+use Prettus\Validator\Exceptions\ValidatorException;
+use function foo\func;
+
+class AdminBaseController extends Controller
+{
+    const SUCCESS_MSG = '操作成功';
+    const ERROR_MSG = '操作失败';
+
+    protected $successMsg = "";
+    protected $errorMsg = "";
+
+    /**
+     * @var null
+     */
+    protected $repository = null;
+
+    /**
+     * @var null
+     */
+    protected $validator = null;
+
+    /**
+     * @var null
+     */
+    protected $tables = null;
+
+    /**
+     * @var null
+     */
+    protected $modelCopy = null;
+
+    /**
+     * @var array
+     *
+     * 排除不需要被更新字段
+     */
+    protected $exceptUpdateField = ['id', 'created_at', 'updated_at'];
+
+    /**
+     * @var null Array
+     *
+     * 需要更新字段
+     */
+    protected $onlyUpdateField = null;
+
+    /**
+     * @var null
+     */
+    protected $indexWith = null;
+
+    /**
+     * @var null
+     */
+    protected $indexOrderBy = null;
+
+    /**
+     * @var bool
+     *
+     * 默认是否开启created_at字段DESC排序
+     */
+    protected $defaultCreatedAtDesc = true;
+
+    public function __construct($repository, $validator)
+    {
+        $this->middleware('auth');                  // 验证登录
+
+        $this->repository = $repository;
+        $this->validator = $validator;
+        $this->modelCopy = $repository->makeModel();                                            // 重置model
+        $this->tables = \Illuminate\Support\Str::camel($this->modelCopy->getTable());           // 获取指定表名称并转换成驼峰形式
+
+    }
+
+
+
+    // Admin response redirect
+    protected function response($msg = self::SUCCESS_MSG, $status = 'success', $callback = '', $redirect = '', array $data = [])
+    {
+        $request = request();
+        if ($status == 'success') {
+            $this->successMsg ? $msg = $this->successMsg : null;
+        } else {
+            $this->errorMsg ? $msg = $this->errorMsg : null;
+        }
+
+        if ($request->wantsJson() || $request->ajax()) {
+            if ($status == 'success' && empty($redirect)) {
+                $redirect = '';
+            }
+            return response()->json([
+                'status' => $status,
+                'code' => $status == 'success'?1:0,
+                'message' => $msg,
+                'redirect' => $redirect,
+                'callback' => $callback,
+                'data' => $data
+            ]);
+        } else {
+            return redirect()->back()->withErrors($msg)->withInput();
+        }
+    }
+
+    /**
+     * @param Request $request
+     * @param ResponseFactory $response
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View
+     * @throws \Prettus\Repository\Exceptions\RepositoryException
+     *
+     */
+    protected function index(Request $request, ResponseFactory $response)
+    {
+        if ($request->isMethod('post') && $request->ajax()) {
+//            $this->repository->pushCriteria(app(RequestCriteria::class));
+//            $query = $this->repository;
+//
+//            if( !is_null($this->indexWith) || (is_array($this->indexWith) && !empty($this->indexWith)) ){
+//                $query->with($this->indexWith);
+//            }
+            if (method_exists($this, "_indexJoin")) {
+                $query = $this->_indexJoin();
+            } else {
+
+                $query = DB::table($this->modelCopy->getTable());
+            }
+
+            if (method_exists($this, "_indexSelect")) {
+                $query->select($this->_indexSelect());
+            }
+
+            if (method_exists($this, "_indexScopeQuery")) {
+                $query->where($this->_indexScopeQuery());
+            }
+
+
+            if (method_exists($this, "_indexOrderBy")) {
+                $order_by = $this->_indexOrderBy();
+                foreach ($order_by as $by_info) {
+                    $query->orderBy($by_info[0], $by_info[1]);
+                }
+
+            } elseif ($this->defaultCreatedAtDesc) {
+                $query->orderBy('id', 'DESC');
+            }
+
+            if (!is_null($this->indexOrderBy) || (is_array($this->indexOrderBy) && !empty($this->indexOrderBy))) {
+                foreach ($this->indexOrderBy as $key => $value) {
+                    $query->orderBy($key, $value);
+                }
+            }
+            if(empty($request->pageSize))$request->pageSize=20;
+            $datum = $query->paginate($request->pageSize);
+
+            if (method_exists($this, "_indexPost")) {
+                $datum = $this->_indexPost($datum);
+            }
+
+            if ($request->wantsJson()) {
+                return $response->json([
+                    "total" => $datum->total(), // $datum->total() 返回总行数
+                    "rows" => $datum->items(),  // 返回当前查询出来的数据
+                    "data" => $datum,           // 返回当前对象
+                ]);
+            }
+        }
+
+        $params = array();
+        if (method_exists($this, "_indexGet")) {
+            $params = $this->_indexGet();
+        }
+
+        return view("admins.{$this->tables}.index", (array)$params);
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param CreateRequest $request
+     *
+     * @return \Illuminate\Http\Response
+     *
+     * @throws \Prettus\Validator\Exceptions\ValidatorException
+     */
+    protected function store(CreateRequest $request)
+    {
+        try {
+            if ($request->isMethod('post') && $request->ajax()) {
+                $this->validator->with($request->all())->passesOrFail(ValidatorInterface::RULE_CREATE);
+                if (method_exists($this, "_storePost")) {
+                    $page = $this->_storePost($request);
+                } else {
+                    $page = $this->repository->create($request->all());
+                }
+
+                if ($page !== false) {
+                    return $this->response(self::SUCCESS_MSG, 'success', '', '');
+                } else {
+                    return $this->response(self::ERROR_MSG, 'error');
+                }
+            }
+
+            $params = [];
+            if (method_exists($this, "_storeGet")) {
+                $params = $this->_storeGet($request);
+            }
+            return response()->view("admins.{$this->tables}.create", (array)$params)->header('Content-Type', 'text/html');
+        } catch (ValidatorException $e) {
+            if ($request->wantsJson()) {
+                $errors = $e->getMessageBag()->getMessages();
+                $error = array_shift($errors);
+                return response()->json([
+                    'error' => true,
+                    'message' => $error[0]
+                ]);
+            }
+
+            return redirect()->back()->withErrors($e->getMessageBag())->withInput();
+        }
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param int $id
+     *
+     * @return \Illuminate\Http\Response
+     *
+     */
+    protected function edit($id = null)
+    {
+        if (method_exists($this, "_editGet")) {
+            $params = $this->_editGet($id);
+        } else {
+            $params['model'] = $this->repository->find($id);
+        }
+
+        return view("admins.{$this->tables}.edit", (array)$params);
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param UpdateRequest $request
+     * @param string $id
+     *
+     * @return Response
+     *
+     * @throws \Prettus\Validator\Exceptions\ValidatorException
+     *
+     */
+    protected function update(UpdateRequest $request, $id = null)
+    {
+        try {
+            if (method_exists($this, "_updatePost")) {
+                $page = $this->_updatePost($request, $id);
+            } else {
+                $this->validator->with($request->all())->passesOrFail(ValidatorInterface::RULE_UPDATE);
+
+                if (is_null($this->onlyUpdateField) || empty($this->onlyUpdateField) || !is_array($this->onlyUpdateField)) {
+                    $update = $request->except($this->exceptUpdateField);
+                } else {
+                    $update = $request->only($this->onlyUpdateField);
+                }
+
+                $page = $this->repository->update($update, $id);
+            }
+
+            if ($page !== false) {
+                return $this->response(self::SUCCESS_MSG, 'success', '', '');
+            } else {
+                return $this->response(self::ERROR_MSG, 'error');
+            }
+        } catch (ValidatorException $e) {
+            if ($request->wantsJson()) {
+                $errors = $e->getMessageBag()->getMessages();
+                $error = array_shift($errors);
+                return response()->json([
+                    'error' => true,
+                    'message' => $error[0]
+                ]);
+            }
+
+            return redirect()->back()->withErrors($e->getMessageBag())->withInput();
+        }
+    }
+
+    /**
+     * 删除一行数据
+     * @param Request $request
+     * @param ResponseFactory $response
+     * @param $id
+     * @return \Illuminate\Http\JsonResponse
+     */
+    protected function destroy(Request $request, ResponseFactory $response, $id = null)
+    {
+        if ($request->isMethod('post') && $request->ajax()) {
+            if (method_exists($this, "_destroy")) {
+                $deleted = $this->_destroy($id);
+            }else{
+                $deleted = $this->repository->delete($id);
+            }
+            $deleted === false ? $data = [
+                'status' => 1,
+                'message' =>$this->errorMsg?: self::ERROR_MSG
+            ] : $data = [
+                'status' => 0,
+                'message' => $this->successMsg?: self::SUCCESS_MSG
+            ];
+            if ($request->wantsJson()) {
+                return $response->json($data);
+            }
+        }
+    }
+
+    /**
+     * @param Request $request
+     * @param ResponseFactory $response
+     * @return \Illuminate\Http\JsonResponse
+     * @throws \Exception
+     *
+     * 批量删除 banners 数据
+     */
+    protected function destroys(Request $request, ResponseFactory $response)
+    {
+        if ($request->isMethod('post') && $request->ajax()) {
+            $ids = $request->params;
+            $ids = explode(';', $ids);
+            if (method_exists($this, "_destroys")) {
+                $res = $this->_destroys($ids);
+            }else{
+                $res = $this->modelCopy->whereIn('id', $ids)->delete();
+            }
+            !$res ? $data = [
+                'status' => 1,
+                'message' => self::ERROR_MSG
+            ] : $data = [
+                'status' => 0,
+                'message' => ''
+            ];
+            if ($request->wantsJson()) {
+                return $response->json($data);
+            }
+        }
+    }
+
+    /**
+     * 成功提示
+     * @param $msg
+     * @param string $url
+     * @param string $data
+     * @param string $code
+     * @return string
+     */
+    protected function success($msg, $url = '', $data = '', $code = '1')
+    {
+        return json_encode(array('msg' => $msg, 'data' => $data, 'url' => $url, 'code' => $code,'status'=>$code*1));
+    }
+
+    /**
+     * 错误提示
+     * @param $msg
+     * @param string $url
+     * @param string $data
+     * @param string $code
+     * @return string
+     */
+    protected function error($msg, $url = '', $data = '', $code = '0')
+    {
+        return json_encode(array('msg' => $msg, 'data' => $data, 'url' => $url, 'code' => $code,'status'=>$code*1));
+    }
+}

+ 82 - 0
app/Http/Controllers/AdminLog/AdminLogsController.php

@@ -0,0 +1,82 @@
+<?php
+
+namespace App\Http\Controllers\AdminLog;
+
+use App\Http\Controllers\AdminBaseController;
+use App\Http\Requests\AdminLogCreateRequest;
+use App\Http\Requests\AdminLogUpdateRequest;
+use App\Repositories\Eloquent\AdminLogRepositoryEloquent;
+use App\Validators\AdminLogValidator;
+
+/**
+ * Class AdminLogsController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class AdminLogsController extends AdminBaseController
+{
+    /**
+     * @var AdminLogRepositoryEloquent
+     */
+    protected $repository;
+
+    /**
+     * @var AdminLogValidator
+     */
+    protected $validator;
+
+    /**
+     * AdminLogsController constructor.
+     *
+     * @param AdminLogRepositoryEloquent $repository
+     * @param AdminLogValidator $validator
+     */
+    public function __construct(AdminLogRepositoryEloquent $repository, AdminLogValidator $validator)
+    {
+        parent::__construct($repository, $validator);
+    }
+
+    /**
+     * 数据检索
+     */
+     public function _indexScopeQuery()
+        {
+            $where = [];
+            $search = explode(";", request()->input('search', ""));
+            $start = $end = null;
+            $fieldSearchable=$this->repository->getFieldsSearchable();
+            foreach ($search as $value) {
+                if (!empty($value)) {
+                    list($one, $tow) = explode(":", $value);
+                    if (!empty($fieldSearchable[$one])) {
+                        if($fieldSearchable[$one]=='like')$tow="%{$tow}%";
+                        $where[]=[$one,$fieldSearchable[$one],$tow];
+                    } elseif ($one == 'start') {
+                        $start = $tow . " 00:00:00";
+                    } elseif ($one == 'end') {
+                        $end = $tow . " 23:59:59";
+                    } else {
+                        continue;
+                    }
+                }
+            }
+            return function ($query) use ($where, $start, $end) {
+
+                if ($start) $where[] = ['created_at', '>=', $start];
+                if ($end) $where[] = ['created_at', '<=', $end];
+                if ($where) {
+                    $query->where($where);
+                }
+
+            };
+        }
+
+   /**
+     * 数据更新
+     */
+    protected function _indexPost($datum)
+    {
+        return $datum;
+    }
+
+}

+ 270 - 0
app/Http/Controllers/Api/CommonController.php

@@ -0,0 +1,270 @@
+<?php
+
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Http\Controllers\FrontController;
+use App\Jobs\BarrageJob;
+use App\Models\AgencySet;
+use App\Models\Config;
+use App\Models\Region;
+use App\Servers\CommonServer;
+use App\Servers\ShopServer;
+use App\Servers\SmsServer;
+use App\Servers\TxMapServer;
+use App\Servers\WeixinServer;
+use Illuminate\Contracts\Routing\ResponseFactory;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Storage;
+
+class CommonController extends FrontController
+{
+
+
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    function index()
+    {
+
+        dd(565654541);
+    }
+
+
+
+    /**
+     * 获取城市列表
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function city()
+    {
+        $p_id = request()->input('p_id', 0);
+        $list = Region::where('p_id', $p_id)->select(['id', 'name'])->get();
+        return $this->apiResponseSuccess('获取数据成功', $list);
+    }
+
+    /**
+     * 发送短信
+     * @return \Illuminate\Http\JsonResponse
+     * @throws \End01here\EasySms\Exceptions\CodeErrorException
+     * @throws \End01here\EasySms\Exceptions\GatewayErrorException
+     * @throws \End01here\EasySms\Exceptions\MessageException
+     */
+    function sendSms()
+    {
+        $phone = request()->input('phone', '');
+        $send_type = request()->input('send_type', 'default');
+        if (empty($phone)) {
+            return $this->apiResponseError('请输入手机号码');
+        }
+        $send_server = SmsServer::creatServer();
+        $ret = $send_server->sendCode($phone, $send_type);
+        if (!$ret) {
+            return $this->apiResponseError($send_server->getErrorMsg() ?: '短信发送失败');
+        } else {
+            return $this->apiResponseSuccess('短信发送成功');
+        }
+    }
+
+    /**
+     * base64 图片上传
+     * @param Request $request
+     * @return \Illuminate\Http\JsonResponse
+     */
+    public function base64Image(Request $request)
+    {
+        $result = $this->base64ToImage($request->input('image', ""), 'attest');
+        if ($result['code'] === false) {
+            return $this->apiResponseError('图片上传失败');
+        } else {
+            if ($result) {
+                return $this->apiResponseSuccess('图片上传成功', ['url' => $result['url']]);
+
+            } else {
+                return $this->apiResponseError('图片上传失败');
+
+            }
+        }
+    }
+
+    // base64图片保存
+    protected function base64ToImage($base64ImageContent, $path)
+    {
+        $base64_image_content = $base64ImageContent;
+        if (!empty($base64_image_content)) {
+            $upload_path = "storage" . DIRECTORY_SEPARATOR . $path . DIRECTORY_SEPARATOR . date('Ymd', time()) . DIRECTORY_SEPARATOR;
+            $img_url = md5(uniqid() . time()) . '.jpg';
+            $upload_path1 = public_path($upload_path);
+            if (!is_dir($upload_path1)) {
+                mkdir($upload_path1, 0777, true);
+            }
+            try {
+                $base64_image_content = str_replace('[removed]', '', $base64_image_content);
+                preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result);
+                // oss 上传
+                $oss = Storage::disk('oss');
+                $pathA = "{$upload_path}{$img_url}";
+                if (empty($result[1])) {
+                    $update = $oss->put($pathA, base64_decode($base64_image_content));
+                    if (!$update) { // 如果失败上传本地
+                        file_put_contents($upload_path1 . $img_url, base64_decode($base64_image_content));
+                    }
+                } else {
+                    $update = $oss->put($pathA, base64_decode(str_replace($result[1], '', $base64_image_content)));
+                    if (!$update) { // 如果失败上传本地
+                        file_put_contents($upload_path1 . $img_url, base64_decode(str_replace($result[1], '', $base64_image_content)));
+                    }
+                }
+                return [
+                    'code' => true,
+                    'url' => $update ? ($oss->url($pathA) . '?x-oss-process=image/auto-orient,1/quality,q_90') : asset($pathA),
+                ];
+            } catch (\Exception $e) {
+                return [
+                    'code' => false,
+                    'msg' => "图片错误" . $e->getMessage() . " " . $e->getLine(),
+                ];
+            }
+        } else {
+            return [
+                'code' => false,
+                'msg' => "请上传图片",
+            ];
+        }
+    }
+
+
+    /**
+     * @param Request $request
+     * @param ResponseFactory $response
+     * @return mixed
+     * 单图上传
+     */
+    public function fileImage()
+    {
+        if (request()->isMethod('post')) {
+            if (request()->hasFile('file_image')) {
+                // 文件后缀判断
+                $ext = request()->file("file_image")->extension();
+                if (!in_array($ext, ["jpg", "jpeg", "gif", "png", "bmp", "webp"])) {
+                    return $this->apiResponseError('上传图片仅支持png、jpg、jpeg、gif、bmp、webp后缀');
+                }
+                // 文件大小是否满足 2M = 2*1024*1024 B
+                if (request()->file("file_image")->getClientSize() > 20971552) {
+                    return $this->apiResponseError('上传图片大小超过5M');
+                }
+                // 上传过程是否出错
+                if (!request()->file("file_image")->isValid()) {
+                    return $this->apiResponseError('上传文件出错,请重试');
+                }
+                // 文件保存 生成一个唯一的文件名称
+                $fileName = time() . str_random(4) . mt_rand(1000, 9999) . ".{$ext}";
+                $pathA = 'image/' . date('y-m', time()) . '/' . $fileName;
+                // oss 上传图片
+                $oss = Storage::disk('oss');
+                $update = $oss->put($pathA, file_get_contents(request()->{'file_image'}->getRealPath()));
+                if ($update) {
+                    return $this->apiResponseSuccess('图片上传成功', ['url' => $oss->url($pathA)]);
+                } else {
+                    return $this->apiResponseError('图片上传保存失败,请重试');
+                }
+            } else {
+                return $this->apiResponseError('请上传图片文件');
+            }
+        }
+    }
+
+    /**
+     * 获取JS签名信息
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getJsConfig()
+    {
+        $url = request()->input('url');
+        $ret = WeixinServer::creatServer()->getJsConfig($url);
+        return $this->apiResponseSuccess('获取信息成功', $ret);
+    }
+
+    /**
+     * 获取系统简介
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getSysMessage()
+    {
+        $type = request()->input('type', '1');
+        $v = Config::where('key', 'about_us')->value('value');
+        return $this->apiResponseSuccess('获取信息成功', $v);
+    }
+
+    /**
+     * 获取定位信息
+     */
+    function getLocation()
+    {
+        $ip = CommonServer::creatServer()->getClientIp();
+        $location = TxMapServer::creatServer()->getLocation($ip);
+        if ($location['status'] === 0) {
+            $data = $location['result']['location'];
+            $address = TxMapServer::creatServer()->getLocationAddress($data['lat'], $data['lng']);
+            if ($address['status'] != 0) {
+                return $this->apiResponseError('定位失败');
+            }
+            $data['addr'] = $address['result']['address'];
+            return $this->apiResponseSuccess('获取信息成功', $data);
+        } else {
+            return $this->apiResponseError('定位错误');
+        }
+    }
+
+    /**
+     * 根据经纬度获取地址信息
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getLocationAddress()
+    {
+        $data['lat'] = request()->input('lat');
+        $data['lng'] = request()->input('lng');
+        if (empty($data['lat']) || empty($data['lng'])) {
+            return $this->apiResponseError('缺少必要参数');
+        }
+        $address = TxMapServer::creatServer()->getLocationAddress($data['lat'], $data['lng']);
+        if ($address['status'] != 0) {
+            return $this->apiResponseError('定位失败');
+        }
+        $data['addr'] = $address['result']['address'];
+        return $this->apiResponseSuccess('获取信息成功', $data);
+    }
+
+    /**
+     * 获取阿里云临时权限
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getAliSts()
+    {
+        $ret = CommonServer::creatServer()->getAliSts();
+        if (empty($ret['code'])) {
+            return $this->apiResponseError($ret['msg']);
+        } else {
+            return $this->apiResponseSuccess($ret['msg'], $ret['data']);
+        }
+    }
+
+
+
+    /**
+     * 获取隐私协议
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getPrivacyInfo()
+    {
+        $info = Config::where('key', 'privacy_protocol')->value('value');
+
+        return $this->apiResponseSuccess('获取成功', $info);
+    }
+
+
+
+}

+ 404 - 0
app/Http/Controllers/Api/MemberController.php

@@ -0,0 +1,404 @@
+<?php
+
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Http\Controllers\FrontController;
+use App\Jobs\BarrageJob;
+use App\Jobs\MemberShareJob;
+use App\Jobs\SaveImGroup;
+use App\Models\Comment;
+use App\Models\Express;
+use App\Models\Goods;
+use App\Models\GoodsBrowse;
+use App\Models\GoodsCollect;
+use App\Models\Member;
+use App\Models\MemberAddress;
+use App\Models\MemberClan;
+use App\Models\MemberCoupon;
+use App\Models\MemberOpenId;
+use App\Models\Members;
+use App\Models\MoneyDetail;
+use App\Models\MoneyRecord;
+use App\Models\Order;
+use App\Models\RefundOrder;
+use App\Models\SeckillGoods;
+use App\Models\Shop;
+use App\Models\ShopCollect;
+use App\Models\ShopOrder;
+use App\Servers\AddressServer;
+use App\Servers\CommonServer;
+use App\Servers\ExpressServer;
+use App\Servers\GoodsServer;
+use App\Servers\ImgServer;
+use App\Servers\KdnServer;
+use App\Servers\MemberLogsServer;
+use App\Servers\MemberServer;
+use App\Servers\MergeServer;
+use App\Servers\MoneyDetailServer;
+use App\Servers\PassServer;
+use App\Servers\RedisDataServer;
+use App\Servers\SensitiveServer;
+use App\Servers\SmsServer;
+use App\Servers\WeixinServer;
+use App\Servers\WxTemplateServer;
+use Carbon\Carbon;
+use SimpleSoftwareIO\QrCode\Facades\QrCode;
+use SwooleTW\Http\Websocket\Facades\Websocket;
+
+class MemberController extends FrontController
+{
+
+
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    function index()
+    {
+
+    }
+
+    /**
+     * 会员注册
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function register()
+    {
+        $invite_code = request()->input('invite_code', '');
+        if (!empty($invite_code)) {
+            $p_member = Member::where('invite_code', $invite_code)->where('status',1)->select(['id', 'phone'])->first();
+        }
+        if (empty($p_member)) {
+            $p_member = Member::where('id', 1)->select(['id', 'phone'])->first();
+        }
+        $nickname = request()->input('nickname', '张三');
+        if(empty($nickname)){
+            return $this->apiResponseError('请输入昵称');
+        }
+        $mobile = request()->input('phone', '13900139110');
+        $password = request()->input('password', '123456');
+        $password = str_replace(' ', '', $password);
+        if (empty($password)) {
+            return $this->apiResponseError('请设置登录密码');
+        }
+        if (strlen($password) < 6) {
+            return $this->apiResponseError('登录密码最低6位');
+        }
+        $code = request()->input('code', '1234');
+        if (empty($code)) {
+            return $this->apiResponseError('请输入验证码');
+        }
+        $send_server = SmsServer::creatServer();
+        $code_ret = $send_server->verifyCode($mobile, $code, 'register');
+        if (empty($code_ret)) {
+            return $this->apiResponseError($send_server->getErrorMsg() ?: '验证码错误');
+        }
+        $member = Member::where('phone', $mobile)->where('status',1)->select(['id', 'token_str'])->first();
+        if ($member) {
+            $token_str = PassServer::creatServer()->getMemberToken($member->{'id'});
+            Member::where('id', $member->{'id'})->update(['token_str' => $token_str]);
+            return $this->apiResponseSuccess('登陆成功', ['m_id' => $member->{'id'}, 'token' => $token_str]);
+        } else {
+            $ret = MemberServer::creatServer()->register($mobile, $p_member->{'id'}, $password, '');
+            if (empty($ret)) {
+                return $this->apiResponseError('注册失败');
+            } else {
+                return $this->apiResponseSuccess('注册成功', $ret);
+            }
+        }
+
+
+    }
+
+
+
+    /**
+     * 会员登录
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function login()
+    {
+        $mobile = request()->input('phone', '13900139110');
+        if (empty($mobile)) {
+            return $this->apiResponseError('请输入手机号码');
+        }
+        $password = request()->input('password', '123456');
+        if (empty($password)) {
+            return $this->apiResponseError('请输入登录密码');
+        }
+        $member = Member::where('phone', $mobile)->where('status',1)->select(['id', 'password', 'encrypt'])->first();
+        if (empty($member)) {
+            return $this->apiResponseError('当前账户未注册');
+        }
+        $pass_server = PassServer::creatServer($password, $member->{'encrypt'});
+        if (!$pass_server->verifyPass($member->{'password'})) {
+            return $this->apiResponseError('登陆密码错误');
+        }
+        $token_str = PassServer::creatServer()->getMemberToken($member->{'id'});
+        Member::where('id', $member->{'id'})->update(['token_str' => $token_str]);
+        return $this->apiResponseSuccess('登陆成功', ['m_id' => $member->{'id'}, 'token' => $token_str]);
+    }
+
+
+    /**
+     * 修改登录密码
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function retrievePassword()
+    {
+        $mobile = request()->input('phone', '13900139110');
+        $password = request()->input('password', '123456');
+        $password = str_replace(' ', '', $password);
+        if (empty($password)) {
+            return $this->apiResponseError('请设置登录密码');
+        }
+        if (strlen($password) < 6) {
+            return $this->apiResponseError('登录密码最低6位');
+        }
+        $code = request()->input('code', '1234');
+        if (empty($code)) {
+            return $this->apiResponseError('请输入验证码');
+        }
+        $send_server = SmsServer::creatServer();
+        $code_ret = $send_server->verifyCode($mobile, $code, 'retrieve');
+        if (empty($code_ret)) {
+            return $this->apiResponseError($send_server->getErrorMsg() ?: '验证码错误');
+        }
+        $member = Member::where('id', request()->member['id'])->where('status',1)->select(['id', 'password', 'encrypt'])->first();
+        $pass_server = PassServer::creatServer($password, $member->{'encrypt'});
+        $new_pass = $pass_server->creatPassword();
+        $ret = $member->update(['password' => $new_pass['password']]);
+        if (empty($ret)) {
+            return $this->apiResponseError('密码修改失败');
+        } else {
+            return $this->apiResponseSuccess('密码修改成功');
+        }
+    }
+
+
+    /**
+     * 修改登录密码
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function setPassword()
+    {
+        $old_password = request()->input('old_password', '123456');
+        if (empty($old_password)) {
+            return $this->apiResponseError('请输入旧密码');
+        }
+        $password = request()->input('password', '123456');
+        $password = str_replace(' ', '', $password);
+        if (empty($password)) {
+            return $this->apiResponseError('请设置登录密码');
+        }
+        $pass_two = request()->input('pass_two', '123456');
+        if ($password != $pass_two) {
+            return $this->apiResponseError('两次密码输入不一致');
+        }
+        $member = Member::where('id', request()->member['id'])->where('status',1)->select(['id', 'password', 'encrypt'])->first();
+        $pass_server = PassServer::creatServer($old_password, $member->{'encrypt'});
+        if (!$pass_server->verifyPass($member->{'password'})) {
+            return $this->apiResponseError('旧密码错误');
+        }
+        $pass_server->setPassword($password);
+        $new_pass = $pass_server->creatPassword();
+        $ret = $member->update(['password' => $new_pass['password']]);
+        if (empty($ret)) {
+            return $this->apiResponseError('密码修改失败');
+        } else {
+            return $this->apiResponseSuccess('密码修改成功');
+        }
+    }
+
+
+
+    /**
+     * 设置支付密码
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function setPayPass()
+    {
+        $password = request()->input('pay_pass', '123456');
+        $password = str_replace(' ', '', $password);
+        if (empty($password)) {
+            return $this->apiResponseError('请设置登录密码');
+        }
+        $pass_two = request()->input('pass_two', '123456');
+        if ($password != $pass_two) {
+            return $this->apiResponseError('两次密码输入不一致');
+        }
+        if (!is_numeric($password) || strlen($password) != 6) {
+            return $this->apiResponseError('支付密码必须为6为数字');
+        }
+        $member = Member::where('id', request()->member['id'])->where('status',1)->select(['id', 'password', 'encrypt', 'phone'])->first();
+        $update=[];
+
+        $code = request()->input('code', '1234');
+        if (empty($code)) {
+            return $this->apiResponseError('请输入验证码');
+        }
+        $ret = SmsServer::creatServer()->verifyCode($member->{'phone'}, $code, 'set_pay_pass');
+        if (empty($ret)) {
+            return $this->apiResponseError('验证码错误');
+        }
+
+        $pass_server = PassServer::creatServer($password, $member->{'encrypt'});
+        $new_pass = $pass_server->creatPassword();
+        $update['pay_pass']=$new_pass['password'];
+        $update['encrypt']=$new_pass['encrypt'];
+        $ret = $member->update($update);
+        if (empty($ret)) {
+            return $this->apiResponseError('支付密码修改失败');
+        } else {
+            MemberServer::creatServer()->delMemberCache($member->{'id'});
+            return $this->apiResponseSuccess('支付密码修改成功');
+        }
+    }
+
+    /**
+     * 获取用户资产信息
+     */
+    function getMoneyInfo()
+    {
+        $member = Member::where('id', request()->member['id'])->where('status',1)->select(['id', 'money'])->first();
+        return $this->apiResponseSuccess('获取成功', $member);
+    }
+
+
+
+
+    /**
+     * 获取会员详情
+     */
+    function getMemberInfo()
+    {
+        $m_id = request()->member['id'];
+        //弹幕广播
+        $info['m_id'] = $m_id;
+
+        $member = RedisDataServer::creatServer()->getData('member_' . $m_id, 'json');
+        if (empty($member)  ) {
+            $member = Member::where('id', $m_id)->where('status',1)->select(['id',  'money',  'phone', 'nickname', 'head_img', 'invite_code', 'level_id', 'sex','describe','recom_id'])->first();
+            if (empty($member)) {
+                return $this->apiResponseError('账户信息错误', 401);
+            }
+            //获取推荐关联信息
+            $member->recomMember();
+            $member->{'phone_num'} = $member->{'phone'};
+            $member->{'money'} = CommonServer::creatServer()->setFormatNum($member->{'money'});;
+            $member->{'head_img'} = CommonServer::creatServer()->ossCompress($member->{'head_img'}, 50, 2);
+            if ($member->{'phone'}) {
+                $member->{'phone'} = CommonServer::creatServer()->concealStr($member->{'phone'}, 0, 4, 4, 4);
+            }
+            $member->{'level_name'} = MemberServer::creatServer()->getLevelName($member->{'level_id'});
+            $member->{'recommend_name'} = $member->recomMember->{'nickname'};
+            RedisDataServer::creatServer()->setData('member_' . $m_id, $member, 'json', 30);
+        }
+        return $this->apiResponseSuccess('获取信息成功', $member);
+
+    }
+
+
+
+    /**
+     * 保存会员信息
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function updateMemberInfo()
+    {
+        $nickname = CommonServer::creatServer()->filtrationStr('nickname');
+        $sex = request()->input('sex', '');
+        $head_img = request()->input('head_img', '');
+        $update = compact('nickname', 'sex', 'head_img');
+        $update = array_filter($update);
+        if ($sex != '' && !in_array($sex, ['3', '1', '2','0'])) {
+            return $this->apiResponseError('性别选择错误');
+        }elseif ($sex==''){
+            $update['sex']='0';
+        }else{
+            $update['sex']=$sex;
+        }
+
+        if (empty($update)) {
+            return $this->apiResponseError('暂无可以更新的内容');
+        }
+        $m_id = request()->member['id'];
+        $ret = Member::where('id', $m_id)->update($update);
+        if ($ret) {
+            $renew['group_type'] = 1;
+            $renew['name'] = $nickname;
+            $renew['logo'] = $head_img;
+            //进入队列
+            MemberServer::creatServer()->delMemberCache(request()->member['id']);
+            return $this->apiResponseSuccess('信息保存成功');
+        } else {
+            return $this->apiResponseError('信息保存失败');
+        }
+    }
+
+
+
+
+
+    /**
+     * 获取推广团队基本信息
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getTeamInfo()
+    {
+        $m_id = request()->member['id'];
+        $member = Member::where('id', $m_id)->select(['id', 'nickname', 'head_img', 'recom_id'])->first();
+        if (empty($member->{'recom_id'})) {
+            $parent = ['id' => 0, 'nickname' => '', 'head_img' => ''];
+        } else {
+            $parent = Member::where('id', $member->{'recom_id'})->select(['id', 'nickname', 'head_img', 'recom_id'])->first();
+        }
+        $total_num = MemberClan::from('member_clans as c')
+            ->leftJoin('members as m', 'm.id', '=', 'c.m_id')
+            ->where('c.one_m_id', $m_id)
+            ->where([['m.status',1], ['m.is_del',0]])
+            ->count();
+        return $this->apiResponseSuccess('获取数据成功', ['parent' => $parent, 'member' => $member, 'team_num' => $total_num]);
+
+
+    }
+
+    /**
+     * 获取团队列表
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getTeamList()
+    {
+        $type = request()->input('type', '1');
+        $m_id = request()->member['id'];
+        $where = [];
+        if ($type == 1) {
+            $where[] = ['c.one_m_id', $m_id];
+        } elseif ($type == 2) {
+            $where[] = ['c.two_m_id', $m_id];
+        } else {
+            $where[] = ['c.one_m_id', '=', $m_id, 'or'];
+            $where[] = ['c.two_m_id', '=', $m_id, 'or'];
+        }
+        $list = MemberClan::from('member_clans as c')
+            ->leftJoin('members as m', 'm.id', '=', 'c.m_id')
+            ->where($where)
+            ->where([['status',1], ['is_del',0]])
+            ->select(['m.id', 'm.recom_id', 'nickname', 'head_img', 'm.created_at'])
+            ->paginate(15);
+        foreach ($list as $item) {
+            $item->{'type'} = $item->{'recom_id'} == $m_id ? 1 : 2;
+        }
+        return $this->apiResponseSuccess('获取数据成功', ['total_num' => $list->total(), 'items' => $list->items()]);
+
+    }
+
+
+
+
+
+
+}

+ 97 - 0
app/Http/Controllers/Api/MoneyController.php

@@ -0,0 +1,97 @@
+<?php
+
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Http\Controllers\FrontController;
+use App\Models\MoneyDetail;
+use App\Servers\CommonServer;
+use App\Servers\MoneyDetailServer;
+
+class MoneyController extends FrontController
+{
+
+
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * 获取会员收支统计
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getMoneyStatistics()
+    {
+        $date = request()->input('date', '');
+        if (empty($date)) $date = date('Y-m-01');
+        if (!strtotime($date)) {
+            return $this->apiResponseError('查询日期不合法');
+        }
+        $money_type = request()->input('money_type', '1');
+        if (!in_array($money_type, [3, 1, 2])) {
+            return $this->apiResponseError('资金类型错误');
+        }
+        $m_id = request()->member['id'];
+        $money = MoneyDetailServer::creatServer()->getMoney($m_id, $money_type);
+        $date_arr = CommonServer::creatServer()->getNextMonth($date);
+        $income_info = MoneyDetailServer::creatServer()->getMoneyIncome($m_id, $money_type, $date_arr);
+        $income_info['money'] = $money;
+        $income_info['date'] = $date;
+        return $this->apiResponseSuccess('获取信息成功', $income_info);
+    }
+
+    /**
+     * 获取资金流水类型
+     */
+    function getWaterType()
+    {
+        $money_type = request()->input('money_type', '1');
+        if (!in_array($money_type, [3, 1, 2])) {
+            return $this->apiResponseError('资金类型错误');
+        }
+        $water_type = MoneyDetailServer::creatServer()->getWaterType($money_type);
+        array_unshift($water_type, ['water_key' => '0', 'water_name' => '全部']);
+        return $this->apiResponseSuccess('获取信息成功', $water_type);
+
+    }
+
+    /**
+     * 获取流水明细
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getWaterList()
+    {
+        $money_type = request()->input('money_type', '1');
+        if (!in_array($money_type, [3, 1, 2])) {
+            return $this->apiResponseError('资金类型错误');
+        }
+        $water_key = request()->input('water_key', '');
+        $m_id = request()->member['id'];
+        $shop_id = request()->input('shop_id', '');
+        $where = [['m_id', $m_id], ['type', $money_type]];
+        if ($water_key) $where[] = ['status', $water_key];
+        if ($shop_id) $where[] = ['shop_id', $shop_id];
+        $date = request()->input('date', '');
+        if (empty($date)) $date = date('Y-m-01');
+        if (!strtotime($date)) {
+            return $this->apiResponseError('查询日期不合法');
+        }
+        $date_arr = CommonServer::creatServer()->getNextMonth($date);
+        $list = MoneyDetail::where($where)
+            ->whereBetween('created_at', $date_arr)
+            ->select(['id', 'price', 'status', 'remainder', 'add_reduce', 'created_at', 'mark'])
+            ->orderBy('id', 'desc')
+            ->paginate(20);
+        foreach ($list as $item) {
+            $item->{'status_str'} = MoneyDetailServer::creatServer()->getStatusArr($item->{'status'});
+            $item->{'price'} =CommonServer::creatServer()->setFormatNum($item->{'price'},2);
+        }
+        return $this->apiResponseSuccess('获取数据成功', ['date' => $date, 'total_num' => $list->total(), 'items' => $list->items()]);
+    }
+
+
+
+
+}

+ 87 - 0
app/Http/Controllers/Api/NewsController.php

@@ -0,0 +1,87 @@
+<?php
+
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Http\Controllers\FrontController;
+use App\Models\Banner;
+use App\Models\Notice;
+use App\Servers\CommonServer;
+use App\Servers\RedisDataServer;
+use Carbon\Carbon;
+
+class NewsController extends FrontController
+{
+
+
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * 获取轮播列表(数据缓存60秒)
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function banner()
+    {
+        $list = RedisDataServer::creatServer()->getData('banner_list', 'json');
+        if (empty($list)) {
+            $list = Banner::where('show', '1')->select(['id', 'image', 'type',  'title'])->orderBy('sort', 'desc')->get();
+            RedisDataServer::creatServer()->setData('banner_list', $list->toArray(), 'json');
+        }
+        return $this->apiResponseSuccess('获取成功', $list);
+    }
+
+
+    /**
+     * 获取公告列表
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function notice()
+    {
+        $list = RedisDataServer::creatServer()->getData('notice_list', 'json');
+        if (empty($list)) {
+            $list = Notice::where('show', '1')->select(['id', 'title', 'new', 'created_at','content'])->orderBy('sort', 'desc')->get();
+            $m_id = request()->member['id'];
+            foreach ($list as $value) {
+                $value->{'created_date'} = Carbon::parse($value->{'created_at'}, config('app.timezone'))->format('Y-m-d H:i');
+                $value['is_read'] = $value->getIsRead($m_id);
+            }
+            RedisDataServer::creatServer()->setData('notice_list', $list->toArray(), 'json');
+        }
+        return $this->apiResponseSuccess('获取成功', $list);
+    }
+
+
+    /**
+     * 获取公告详情
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function noticeDetails()
+    {
+        $id = request()->get('id', '1');
+        if (empty($id)) {
+            return $this->apiResponseError('缺少必要参数');
+        }
+        $info = Notice::where('show', '1')->where('id', $id)->select(['id', 'title', 'new', 'created_at', 'content'])->first();
+        if (empty($info)) {
+            return $this->apiResponseError('信息不存在');
+        }
+        $m_id = request()->member['id'];
+        $info->setRead($m_id);
+        $info->{'created_date'} = Carbon::parse($info->{'created_at'}, config('app.timezone'))->format('Y-m-d H:i');
+        return $this->apiResponseSuccess('获取信息成功', $info);
+    }
+
+    /**
+     * 获取关于我们
+     */
+    function getAboutUs(){
+        $info=CommonServer::creatServer()->getConfigValue('about_us');
+        return $this->apiResponseSuccess('获取数据成功',['info'=>$info]);
+    }
+
+
+}

+ 111 - 0
app/Http/Controllers/Api/WithdrawController.php

@@ -0,0 +1,111 @@
+<?php
+
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Http\Controllers\FrontController;
+use App\Models\Member;
+use App\Models\Withdraw;
+use App\Models\WithdrawConfig;
+use App\Servers\RedisDataServer;
+use App\Servers\WithdrawServer;
+use Illuminate\Support\Carbon;
+
+class WithdrawController extends FrontController
+{
+
+
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+
+    /**
+     * 获取提现配置信息
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getWithdrawConfig()
+    {
+        $coin_id = request()->get('coin_id', '1');
+        if (empty($coin_id)) {
+            return $this->apiResponseError('缺少必要参数');
+        }
+        $withdraw_config = WithdrawConfig::where('id', 1)->select(['id','mix_money','proportion'])->first();
+        return $this->apiResponseSuccess( '获取数据成功',$withdraw_config);
+    }
+
+
+    /**
+     * 用户提现申请
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function setWithdraw()
+    {
+        //redis访问频率限制
+        $m_id=request()->member['id'];
+        $redis_on_name = 'add_withdraw' . $m_id;
+        $redis_time = RedisDataServer::creatServer()->getData($redis_on_name);
+        $time=time();
+        if(!empty($redis_time) && $redis_time >$time-3){
+            return $this->apiResponseError( '请不要频繁申请转账');
+        }
+        RedisDataServer::creatServer()->setData($redis_on_name,$time,'str',3,false);
+        $pay_pass = request()->input('pay_pass', '');
+//        if (empty($pay_pass)) {
+//            return $this->apiResponseError('请输入支付密码');
+//        }
+        $member = Member::where('id', $m_id)->select(['id', 'pay_pass', 'encrypt','money'])->first();
+        if (empty($member)) {
+            return $this->apiResponseError( '账户信息错误');
+        }
+//        if (empty($member->{'pay_pass'})) {
+//            return $this->apiResponseError( '请设置支付密码',[],101);
+//        }
+//        if (!PassServer::creatServer($pay_pass,$member->{'encrypt'})->verifyPass($member->{'pay_pass'})) {
+//            return $this->apiResponseError( '支付密码错误');
+//        }
+        $money = request()->get('money', '');
+        if (empty($money)) {
+            return $this->apiResponseError('请输入提现金额');
+        }
+        $mix_money = WithdrawConfig::where('coin_id', 1)->value('mix_money');
+        if (!empty($mix_money) && $mix_money > 0 && $mix_money>$money) {
+            return $this->apiResponseError('最低提现:' . $mix_money);
+        }
+        $money=$money*1;
+        if(!is_numeric($money) || $money<=0){
+            return $this->apiResponseError('转账金额不合法');
+        }
+        if ($member->{'money'} < $money) {
+            return $this->apiResponseError( '会员余额不足');
+        }
+        $ret = WithdrawServer::creatServer()->setWithdraw($member, $money);
+        if (empty($ret)) {
+            return $this->apiResponseError('操作失败');
+        }
+        return $this->apiResponseSuccess( '提现申请成功');
+    }
+
+    /**
+     * 提现列表
+     * @return \Illuminate\Http\JsonResponse
+     */
+    public function index()
+    {
+        $details = Withdraw::where('m_id', request()->member['id'])
+            ->select(['id','created_at','status','m_id','money','service_money','withdraw_money'])
+            ->orderBy('id', 'desc')
+            ->paginate(20);
+        foreach ($details as $key => $detail) {
+
+            $detail['status_str'] = WithdrawServer::creatServer()->getStatusArr($detail->status);
+            $detail['created_date'] = Carbon::parse($detail->created_at, config('app.timezone'))->format('Y/m/d H:i');   // 时间
+        }
+        return $this->apiResponseSuccess('获取数据成功', ['total' => $details->total(), 'list' => $details->items()]);
+    }
+
+
+
+}

+ 486 - 0
app/Http/Controllers/ApiJsonController.php

@@ -0,0 +1,486 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\MemberClans;
+use App\Servers\Eth\Address;
+use App\Servers\Eth\EthereumRPC;
+use App\Servers\Eth\Utils;
+use App\Servers\MemberServer;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Log;
+
+class ApiJsonController extends Controller
+{
+    /**
+     * 合约地址
+     * @var string
+     */
+    private $token_address = '0x6718DC858bC2EA664e6a8752E1320F1de6e0Dc52';
+    /**
+     * 系统钱包地址
+     * @var string
+     */
+    private $sys_address='0x9202c91a5181dbfa44f5bd219c1065016c1d23ad';
+    /**
+     * 系统秘钥
+     * @var string
+     */
+    private $sys_key='4b649bc90ece239238a3c513fb4b9d445d681c52086b91bb250280b5054639c2';
+
+    protected $sing_key = "lu0ziiun8znpxtv8o9sdfhggfhfgsw9p6eooxw2efk";
+
+    protected  function getNonce($address)
+    {
+        /** @var static $tx */
+        $nonce='0x51';
+        if (!empty($nonce)) {
+            return Utils::dec2hex(Utils::hex2dec($nonce) + 1);
+        }
+
+//        return self::rpc()->getTransactionCount($address);
+    }
+
+    public function index()
+    {
+
+//        exit;
+        //测试币名称:nntt
+//        合约地址:0x6718DC858bC2EA664e6a8752E1320F1de6e0Dc52
+        //0x378fb524c5dfcc2a42fbea91b9652c6457042c19
+        //75c50cb3f53e579e0ac3a12897a37ce23f31ae19dcc4ef08054761b90b833465
+        //测试地址主账户
+        //0x9202c91a5181dbfa44f5bd219c1065016c1d23ad
+        //4b649bc90ece239238a3c513fb4b9d445d681c52086b91bb250280b5054639c2
+        //收款账户
+        //0x51eba8cdd9d14193cb4321a63395eef616f395c3
+        //925baa5153e40866a474bd1311baf058c9f3466260b2fc7e1cf1ace8065e9658
+
+        //生成钱包地址  返回数组
+        //-------------------------------生成钱包地址
+//        $address = Address::generate();
+//        var_dump($address);exit;
+        //交易测试
+//        $eth = new EthereumRPC();
+//        $serviceFee = Utils::dec2hex('1500000000000000'); // 手续费
+//        var_dump($serviceFee);exit;
+//        $eth_num = $eth->getBalance('0x51eba8cdd9d14193cb4321a63395eef616f395c3');
+//        $eth_num = '0x5d21dba00';
+//        $eth_num = Utils::hex2dec($eth_num);
+//        var_dump($eth_num);
+//        $eth_num = Utils::int2fund($eth_num, 18);
+//        var_dump($eth_num);exit;
+//                $eth_num = $eth->getBalance('0x51eba8cdd9d14193cb4321a63395eef616f395c3');
+//        $eth_num = Utils::hex2dec($eth_num);
+//        $eth_num = Utils::int2fund($eth_num, 18);
+//        var_dump($eth_num);exit;
+//        var_dump($this->getTransactionReceipt('0xadc978f46ba41dc1b56bb37b37bd90b9ba63f9809678e16751693d9e130f0429'));exit;
+        $from='0x02b9132724a056b43944426bbebebf07a064e972';
+        $to='0xc3d7901a8eebbcd8b0873e9aa7e20440b3014761';
+//        $from='0x39e505a18e29d5cb9e746b86f31771385e3b3b7b';
+//        $to='0x51eba8cdd9d14193cb4321a63395eef616f395c3';
+        $money=1000;
+        $tx = $this->build($from, '0x2d874077a83618aab75624cc1a4974510a0eb1ae', '0x0', Utils::decodeSolMethod('transfer(address,uint256)', [$to, Utils::fund2int($money, 18)]));
+
+//        var_dump($tx);exit;
+//        $tx = $this->build($from,$to, '0x0', Utils::decodeSolMethod('transfer(address,uint256)', [$to, Utils::fund2int($money, 18)]));
+//        $service_info=$this->nytrWithholdServiceCharge($tx);
+//        var_dump($service_info);exit;
+        $ret=$this->ntrTransferAccounts($tx,'527a4fd9bdb84d02ffb8046cb5704642969c95ca67cfa5535511fd38c358c2a1');
+        var_dump($ret);exit;
+//        if($from!=$this->sys_address){
+//            $service_info=$this->nytrWithholdServiceCharge($tx);
+//            if(!empty($service_info['data']['hash']))return ['code'=>'0','msg'=>'手续费代扣失败'];
+//            //手续费哈希值
+//            //0xf553bff171816ff5704aad45661f828d6b0b15e7fd84cfaaf545a71269a906eb
+//            var_dump($service_info);exit;
+//        }else{
+//
+//        }
+//
+        //----------------------------------------查询用户余额--------------
+//        $receipt = $eth->getTransactionReceipt('0x70c6b91bb92841bcb459e91ab8255fd8352370a545a7291ae1b8d19c97d371fa');//交易查询
+
+//        $tx = [];
+//        $tx['from'] = '0x9202c91a5181dbfa44f5bd219c1065016c1d23ad';//用户地址
+//        $tx['to'] = $this->token_address;//系统钱包地址
+//        $tx['data'] = Utils::decodeSolMethod('balanceOf(address)', ['0x9202c91a5181dbfa44f5bd219c1065016c1d23ad']);
+//        $balance = $eth->call($tx);
+//        $balance = Utils::hex2dec($balance);
+//        $balance = Utils::int2fund($balance); // 18位小数
+//        $balance = Utils::fund2int($balance, 2);
+//        var_dump('-------------------nntt余额');
+//        return Utils::int2fund($balance, 2);
+        //--------------获取eth的余额
+
+//        var_dump('-------------------ETH余额');
+        //-----------------代币NYTR转账测试
+//        $gasPrice = $eth->getGasPrice(); // 手续费
+//        var_dump($gasPrice);
+//        var_dump('-------------------交易手续费');
+//        $money = 100;
+//         token 交易
+//        $tx = $this->build('0x51eba8cdd9d14193cb4321a63395eef616f395c3', '0x6718DC858bC2EA664e6a8752E1320F1de6e0Dc52', '0x0', Utils::decodeSolMethod('transfer(address,uint256)', ['0x9202c91a5181dbfa44f5bd219c1065016c1d23ad', Utils::fund2int($money, 18)]));
+//        $tx = [];
+//        $tx['from'] = '0x9202c91a5181dbfa44f5bd219c1065016c1d23ad';
+//        $tx['to'] = '0x6718DC858bC2EA664e6a8752E1320F1de6e0Dc52';
+//        $tx['value'] = Utils::dec2hex(Utils::fund2int($money));
+//        $tx['data'] = Utils::fixHex(bin2hex('transfer'));
+//        if ($tx['from'] != $this->token_address) {
+//            $gasLimit = $eth->estimateGas($tx);
+        // 手续费交易
+//            $serviceFee = Utils::dec2hex(bcmul(Utils::hex2dec($gasPrice), Utils::hex2dec($gasLimit))); // 手续费
+//            $serviceTx = $this->build($this->token_address, $tx['from'], $serviceFee, Utils::fixHex(bin2hex('service charge')));
+        // 广播手续费
+//            $depend = EthTransaction::push($serviceTx, $this->masterKey, null);
+//            if (!$depend) {
+//                return false;
+//            }
+//        }
+        $transaction = [
+            'depend' => 0,
+            'from' => '0x9202c91a5181dbfa44f5bd219c1065016c1d23ad',
+            'to' => '0x6718DC858bC2EA664e6a8752E1320F1de6e0Dc52',
+            'nonce' => '',
+            'value' => !empty($tx['value']) ? $tx['value'] : '0x0',
+            'data' => !empty($tx['data']) ? $tx['data'] : Utils::fixHex(bin2hex('NYT')),
+            'chain_id' => $eth->chainId,
+            'gas_price' => '',
+            'gas_limit' => '',
+            'sign' => '',
+            'hash' => '',
+        ];
+        $nonce = $eth->getTransactionCount($transaction['from']);
+        $transaction['nonce'] = $nonce;//交易顺序十六进制。由eth_getTransactionCount获取
+        $gas_price = $eth->getGasPrice();
+        $transaction['gas_price'] = $gas_price;//燃料十六进制。由eth_estimateGas获取
+        $gas_limit = $this->getGasLimit($transaction);
+        $transaction['gas_limit'] = $gas_limit;
+        $sign = $this->sign($transaction, '4b649bc90ece239238a3c513fb4b9d445d681c52086b91bb250280b5054639c2');//交易签名
+        $hash = $eth->sendRawTransaction($sign, $error);//广播交易
+        $receipt = $eth->getTransactionReceipt($hash);//交易查询
+
+        if (!$hash) {
+            var_dump('---------------');
+            var_dump($error);
+            var_dump('---------------');
+        }
+        var_dump($receipt);
+        var_dump($hash);
+        var_dump($sign);
+        var_dump($gas_limit);
+        var_dump($gas_price);
+        var_dump($nonce);
+        exit;
+    }
+
+    /**
+     * 查询用户NYTR余额
+     * @param $eth_address  用户钱包地址
+     * @return bool|mixed|string
+     */
+    function getNytrNum($eth_address)
+    {
+        $eth = new EthereumRPC();
+        $tx = [];
+        $tx['from'] = $eth_address;//用户地址
+        $tx['to'] = $this->token_address;//系统钱包地址
+        $tx['data'] = Utils::decodeSolMethod('balanceOf(address)', [$eth_address]);
+        $balance = $eth->call($tx);
+        $balance = Utils::hex2dec($balance);
+        $balance = Utils::int2fund($balance); // 18位小数
+        $balance = Utils::fund2int($balance, 2);
+        return $balance;
+    }
+
+    /**
+     * 获取ETH余额
+     * @param $eth_address 用户钱包地址
+     * @return bool|mixed|string
+     */
+    function getEthNum($eth_address)
+    {
+        $eth = new EthereumRPC();
+        $eth_num = $eth->getBalance($eth_address);
+        $eth_num = Utils::hex2dec($eth_num);
+        $eth_num = Utils::int2fund($eth_num, 18);
+        return $eth_num;
+    }
+
+    function nytrWithholdServiceCharge($tx){
+        $eth = new EthereumRPC();
+        $gasPrice = $eth->getGasPrice(); // 手续费
+        $tx = [
+            'from' => '0x02b9132724a056b43944426bbebebf07a064e972',
+            'to' => '0xc3d7901a8eebbcd8b0873e9aa7e20440b3014761',
+            'value'=>'0x0',
+            'data'=>$tx['data'],
+        ];
+
+        $gasLimit = $eth->estimateGas($tx);
+        // 手续费交易
+        $serviceFee = Utils::dec2hex('2000000000000000'); // 手续费
+        // 广播手续费
+        //0x51eba8cdd9d14193cb4321a63395eef616f395c3
+        //925baa5153e40866a474bd1311baf058c9f3466260b2fc7e1cf1ace8065e9658
+        $transaction = [
+            'depend' => 0,
+//            'from' =>$this->sys_address,
+            'from' =>'0x02b9132724a056b43944426bbebebf07a064e972',
+            'to' => '0xc3d7901a8eebbcd8b0873e9aa7e20440b3014761',
+            'nonce' => '',
+            'value' =>$serviceFee,
+            'data' => '',
+            'gas' => $gasLimit,
+            'chain_id' => $eth->chainId,
+            'gas_price' => '',
+            'gas_limit' => '',
+            'sign' => '',
+            'hash' => '',
+        ];
+        $nonce = $eth->getTransactionCount($transaction['from']);
+        $transaction['nonce'] = $nonce;//交易顺序十六进制。由eth_getTransactionCount获取
+        var_dump($nonce);
+//        $transaction['nonce'] = $this->getNonce($tx['from']);//交易顺序十六进制。由eth_getTransactionCount获取
+        var_dump($gasPrice);
+        $transaction['gas_price'] =  $gasPrice;//燃料十六进制。由eth_estimateGas获取
+//        $transaction['gas_price'] =  $gasPrice;//燃料十六进制。由eth_estimateGas获取
+        $transaction['gas_limit'] = $gasLimit;
+        var_dump($transaction);
+//        $sign = $this->sign($transaction, $this->sys_key);//交易签名
+        $sign = $this->sign($transaction, '527a4fd9bdb84d02ffb8046cb5704642969c95ca67cfa5535511fd38c358c2a1');//交易签名
+        $hash = $eth->sendRawTransaction($sign, $error);//广播交易
+        var_dump($hash);
+        var_dump($error);exit;
+        if (!$hash) {
+            return ['code'=>'0','data'=>$error,'msg'=>empty($error['message'])?'广播交易失败':$error['message']];
+        } else {
+            return ['code'=>'1','data'=>['hash'=>$hash],'msg'=>'广播交易成功'];
+        }
+
+
+    }
+
+    /**
+     * NYTR 转账
+     * @param $tx
+     * @param $from_key
+     * @return array
+     */
+    function ntrTransferAccounts($tx, $from_key)
+    {
+        $eth = new EthereumRPC();
+        // token 交易
+        $transaction = [
+            'depend' => 0,//代扣手续费ID
+            'from' => $tx['from'],
+            'to' => $tx['to'],
+            'nonce' => '',
+            'value' => !empty($tx['value']) ? $tx['value'] : '0x0',
+            'data' => !empty($tx['data']) ? $tx['data'] : Utils::fixHex(bin2hex('NYT')),
+            'chain_id' => $eth->chainId,
+            'gas_price' => '',
+            'gas_limit' => '',
+            'sign' => '',
+            'hash' => '',
+        ];
+        $nonce = $eth->getTransactionCount($transaction['from']);
+        $transaction['nonce'] = $nonce;//交易顺序十六进制。由eth_getTransactionCount获取
+        $gas_price = $eth->getGasPrice();
+        $gas_price =  Utils::dec2hex(Utils::toWei("5gwei") + Utils::hex2dec($gas_price));
+        $transaction['gas_price'] = $gas_price;//燃料十六进制。由eth_estimateGas获取
+
+        $gas_limit = $this->getGasLimit($transaction);
+        $transaction['gas_limit'] = $gas_limit;
+        var_dump($transaction);
+        //
+        $sign = $this->sign($transaction, $from_key);          //交易签名
+        var_dump($sign);
+        $hash = $eth->sendRawTransaction($sign, $error);//广播交易
+        var_dump($hash);exit;
+        if (!$hash) {
+            return ['code'=>'0','data'=>$error,'msg'=>empty($error['message'])?'广播交易失败':$error['message']];
+        } else {
+            return ['code'=>'1','data'=>['hash'=>$hash],'msg'=>'广播交易成功'];
+        }
+    }
+
+    function getSendTransaction($transaction){
+        $tx = [];
+        $tx['from'] = $transaction['from'];
+        $tx['to'] =$transaction['to'];
+        $tx['value'] =$transaction['value'];
+        $tx['gas'] =$transaction['gas'];
+        $tx['gasPrice'] =$transaction['gas_price'];
+        $tx['nonce'] =$transaction['nonce'];
+        $tx['data'] = '';
+
+        return $tx;
+    }
+
+    /**
+     * 查询交易结果
+     * @param $hash
+     * @return bool|mixed 成功返回交易信息  失败返回false
+     */
+    function getTransactionReceipt($hash)
+    {
+        $eth = new EthereumRPC();
+        $receipt = $eth->getTransactionReceipt($hash);//交易查询
+        return $receipt;
+    }
+
+    /**
+     * 转账内容拼接
+     * @param $from
+     * @param $to
+     * @param $value
+     * @param $data
+     * @return array
+     * @throws
+     */
+    protected function build($from, $to, $value, $data)
+    {
+        $tx = [];
+        $tx['from'] = $from;
+        $tx['to'] = $to;
+        $tx['value'] = $value;
+        $tx['data'] = $data;
+
+        return $tx;
+    }
+
+
+    /**
+     * @param  $transaction
+     * @return string
+     */
+    public static function getGasLimit($transaction)
+    {
+        $tx = [
+            'from' => $transaction['from'],
+            'to' => $transaction['to'],
+            'nonce' => $transaction['nonce'],
+            'value' => $transaction['value'],
+            'data' => $transaction['data'],
+            'chainId' => $transaction['chain_id'],
+            'gasPrice' => $transaction['gas_price'],
+        ];
+        $eth = new EthereumRPC();
+        $gasLimit = $eth->estimateGas($tx);
+        if (!$gasLimit) {
+            $gasLimit = 10 * 10000; // 预估失败, 最高10万
+        }
+        return $gasLimit;
+    }
+
+
+    protected static function sign($transaction, $key)
+    {
+        $tx = [
+            'from' => $transaction['from'],
+            'to' => $transaction['to'],
+            'nonce' => $transaction['nonce'],
+            'value' => $transaction['value'],
+            'data' => $transaction['data'],
+            'chainId' => $transaction['chain_id'],
+            'gasPrice' => $transaction['gas_price'],
+            'gasLimit' => $transaction['gas_limit'],
+        ];
+        // 数据签名
+        $tr = new Transaction($tx);
+        $tr->sign($key);
+        return Utils::fixHex($tr->serialize()->toString('hex'));
+    }
+
+    public function nytr()
+    {
+        $member = Member::where('username', request()->input('user_name', ''))->first();
+
+        if( empty($member) ){
+            return response()->json([
+                'msg'   => '账户不存在',
+                'data'  => [],
+                'code'  => 0,
+            ]);
+        }
+
+        $sign = $this->wxSign([
+            'user_name' => request()->input('user_name', ''),
+            'money' => request()->input('money', ''),
+            'send_time' => request()->input('send_time', ''),
+            'token' => request()->input('token', ''),
+        ]);
+
+        if( $sign != strtoupper(request()->input('token', '')) ){
+            return response()->json([
+                'msg'   => 'token错误',
+                'data'  => [],
+                'code'  => 0,
+            ]);
+        }
+
+        if( request()->input('money', '') <= 0 ){
+            return response()->json([
+                'msg'   => '数目小于等于零',
+                'data'  => [],
+                'code'  => 0,
+            ]);
+        }
+
+        // 会员添加NYTR
+        try{
+            DB::beginTransaction();
+
+            Member::where('id', $member->{'id'})->increment('old_nytr', request()->input('money', '') * MemberServer::$NYTR);
+            DB::table('nytr_nyts')->insert([
+                'member_id'     => $member->{'id'},
+                'username'      => $member->{'username'},
+                'money'         => request()->input('money', ''),
+                'updated_at'    => date('Y-m-d H:i:s', time()),
+                'created_at'    => date('Y-m-d H:i:s', time()),
+            ]);
+
+            Log::info('OLD-NYTR(SUCCESS):'.request()->input('money', ''));
+
+            DB::commit();
+
+            return response()->json([
+                'msg'   => '成功',
+                'data'  => [],
+                'code'  => 1,
+            ]);
+        }catch (\Exception $e){
+            DB::rollBack();
+
+            Log::info('OLD-NYTR:'.$e->getMessage()." ".$e->getFile()." ".$e->getCode());
+
+            return response()->json([
+                'msg'   => '失败',
+                'data'  => [],
+                'code'  => 0,
+            ]);
+        }
+    }
+
+    /**
+     * 签名
+     * @param $data
+     * @return string
+     */
+    private function wxSign($data)
+    {
+        ksort($data);
+        $str = '';
+        foreach ($data as $key => $val) {
+            if ($val && $key != 'token') {
+                if ($str != '') $str .= '&';
+                $str .= "{$key}={$val}";
+            }
+        }
+        $str .= '&key=' . $this->sing_key;
+        $sign = strtoupper(md5($str));
+        return $sign;
+    }
+
+}

+ 202 - 0
app/Http/Controllers/Area/AreasController.php

@@ -0,0 +1,202 @@
+<?php
+
+namespace App\Http\Controllers\Area;
+
+use App\Http\Controllers\Controller;
+use Prettus\Validator\Contracts\ValidatorInterface;
+use Prettus\Validator\Exceptions\ValidatorException;
+use App\Http\Requests\AreaCreateRequest;
+use App\Http\Requests\AreaUpdateRequest;
+use App\Repositories\Eloquent\AreaRepositoryEloquent;
+use App\Validators\AreaValidator;
+
+/**
+ * Class AreasController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class AreasController extends Controller
+{
+    /**
+     * @var AreaRepositoryEloquent
+     */
+    protected $repository;
+
+    /**
+     * @var AreaValidator
+     */
+    protected $validator;
+
+    /**
+     * AreasController constructor.
+     *
+     * @param AreaRepositoryEloquent $repository
+     * @param AreaValidator $validator
+     */
+    public function __construct(AreaRepositoryEloquent $repository, AreaValidator $validator)
+    {
+        $this->repository = $repository;
+        $this->validator  = $validator;
+    }
+
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index()
+    {
+        $this->repository->pushCriteria(app('Prettus\Repository\Criteria\RequestCriteria'));
+        $areas = $this->repository->all();
+
+        if (request()->wantsJson()) {
+
+            return response()->json([
+                'data' => $areas,
+            ]);
+        }
+
+        return view('areas.index', compact('areas'));
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  AreaCreateRequest $request
+     *
+     * @return \Illuminate\Http\Response
+     *
+     * @throws \Prettus\Validator\Exceptions\ValidatorException
+     */
+    public function store(AreaCreateRequest $request)
+    {
+        try {
+
+            $this->validator->with($request->all())->passesOrFail(ValidatorInterface::RULE_CREATE);
+
+            $area = $this->repository->create($request->all());
+
+            $response = [
+                'message' => 'Area created.',
+                'data'    => $area->toArray(),
+            ];
+
+            if ($request->wantsJson()) {
+
+                return response()->json($response);
+            }
+
+            return redirect()->back()->with('message', $response['message']);
+        } catch (ValidatorException $e) {
+            if ($request->wantsJson()) {
+                return response()->json([
+                    'error'   => true,
+                    'message' => $e->getMessageBag()
+                ]);
+            }
+
+            return redirect()->back()->withErrors($e->getMessageBag())->withInput();
+        }
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  int $id
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function show($id)
+    {
+        $area = $this->repository->find($id);
+
+        if (request()->wantsJson()) {
+
+            return response()->json([
+                'data' => $area,
+            ]);
+        }
+
+        return view('areas.show', compact('area'));
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param  int $id
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function edit($id)
+    {
+        $area = $this->repository->find($id);
+
+        return view('areas.edit', compact('area'));
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  AreaUpdateRequest $request
+     * @param  string            $id
+     *
+     * @return Response
+     *
+     * @throws \Prettus\Validator\Exceptions\ValidatorException
+     */
+    public function update(AreaUpdateRequest $request, $id)
+    {
+        try {
+
+            $this->validator->with($request->all())->passesOrFail(ValidatorInterface::RULE_UPDATE);
+
+            $area = $this->repository->update($request->all(), $id);
+
+            $response = [
+                'message' => 'Area updated.',
+                'data'    => $area->toArray(),
+            ];
+
+            if ($request->wantsJson()) {
+
+                return response()->json($response);
+            }
+
+            return redirect()->back()->with('message', $response['message']);
+        } catch (ValidatorException $e) {
+
+            if ($request->wantsJson()) {
+
+                return response()->json([
+                    'error'   => true,
+                    'message' => $e->getMessageBag()
+                ]);
+            }
+
+            return redirect()->back()->withErrors($e->getMessageBag())->withInput();
+        }
+    }
+
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  int $id
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy($id)
+    {
+        $deleted = $this->repository->delete($id);
+
+        if (request()->wantsJson()) {
+
+            return response()->json([
+                'message' => 'Area deleted.',
+                'deleted' => $deleted,
+            ]);
+        }
+
+        return redirect()->back()->with('message', 'Area deleted.');
+    }
+}

+ 32 - 0
app/Http/Controllers/Auth/ForgotPasswordController.php

@@ -0,0 +1,32 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Controllers\Controller;
+use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
+
+class ForgotPasswordController extends Controller
+{
+    /*
+    |--------------------------------------------------------------------------
+    | Password Reset Controller
+    |--------------------------------------------------------------------------
+    |
+    | This controller is responsible for handling password reset emails and
+    | includes a trait which assists in sending these notifications from
+    | your application to your users. Feel free to explore this trait.
+    |
+    */
+
+    use SendsPasswordResetEmails;
+
+    /**
+     * Create a new controller instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        $this->middleware('guest');
+    }
+}

+ 301 - 0
app/Http/Controllers/Auth/Front/AuthController.php

@@ -0,0 +1,301 @@
+<?php
+
+
+namespace App\Http\Controllers\Auth\Front;
+
+
+use App\Http\Controllers\Controller;
+use App\Http\Controllers\Traits\ApiResponseTrait;
+use App\Models\ApiDetection;
+use App\Models\ApiToken;
+use App\Models\Config;
+use App\Models\Member;
+use App\Models\Tip;
+use App\Servers\MemberServer;
+use App\Servers\Sign\SignServer;
+use App\Servers\Yp;
+use Carbon\Carbon;
+use Tymon\JWTAuth\Facades\JWTAuth;
+
+class AuthController extends Controller
+{
+    use ApiResponseTrait;
+
+    /**
+     * Create a new AuthController instance.
+     * 要求附带email和password(数据来源users表)
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        // 这里额外注意了:官方文档样例中只除外了『login』
+        // 这样的结果是,token 只能在有效期以内进行刷新,过期无法刷新
+        // 如果把 refresh 也放进去,token 即使过期但仍在刷新期以内也可刷新
+        // 不过刷新一次作废
+        $this->middleware('auth:api', ['except' => ['login', 'refresh','getSendToken']]);
+        // 另外关于上面的中间件,官方文档写的是『auth:api』
+        // 但是我推荐用 『jwt.auth』,效果是一样的,但是有更加丰富的报错信息返回
+    }
+
+    /**
+     * 获取签名token
+     * @return mixed
+     */
+    public function getSendToken()
+    {
+        $time=time();
+        $send_token_num=session('send_token_num','0');
+        $send_token_time=session('send_token_time','');
+        session(['send_token_num' => ++$send_token_num]);
+        if($send_token_time<$time-60 && $send_token_num>2){
+            return response()->json([
+                'msg'   => "",
+                'data'  => [
+                    'send_token_str'      =>'验证失败'
+                ],
+                'code'  => 0,
+            ]);
+        }
+        session(['send_token_time' =>$time]);
+        $str = '';
+        $strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
+        $max = strlen($strPol) - 1;
+        for ($i = 0; $i < 10; $i++) {
+            $str .= $strPol[rand(0, $max)];//rand($min,$max)生成介于min和max两个数之间的一个随机整数
+        }
+        session(['send_token_str' => $str]);
+        return response()->json([
+            'msg'   => "",
+            'data'  => [
+                'send_token_str'      =>$str
+            ],
+            'code'  => 1,
+        ]);
+    }
+
+    /**
+     * @return \Illuminate\Http\JsonResponse
+     * @throws \App\Exceptions\Sign\SignException
+     */
+    public function login()
+    {
+        if( strtolower(env('APP_ENV')) == 'down' ){
+            return $this->apiResponseError(null, '系统维护中...');
+        }
+        $is_behavior=Yp::validateYP();
+        if(empty($is_behavior) ){
+            return $this->apiResponseError(null, '请完成滑块验证...');
+//            return $this->apiResponseError(null, '系统升级中...');
+        }
+//        $send_token_sign=request()->input('send_token_sign', '');
+//        if($send_token_sign){
+//            //滑块验证
+//            $send_token_str=session('send_token_str');
+//            if(empty($send_token_sign) || empty($send_token_str)){
+//                return response()->json([
+//                    'msg'   => '请按住滑块验证',
+//                    'data'  => [],
+//                    'code'  => 0,
+//                ]);
+//            }
+//            $sys_token_sign=md5( substr($send_token_str,5).'ziUDRO96uFhSOxdCMc58bPPznJDataaM');
+//            if($send_token_sign!=$sys_token_sign){
+//                return response()->json([
+//                    'msg'   => '滑块验证失败,请重新验证',
+//                    'data'  => [],
+//                    'code'  => 0,
+//                ]);
+//            }
+//        }
+        $credentials = request(['phone', 'password']);
+
+        $rCount = Member::where('phone', request()->input('phone', ''))->count();
+
+        if( $rCount <= 0 ){ return $this->apiResponseError(null, '账户不存在'); }
+
+        if (! $token = auth('api')->attempt($credentials)) { return $this->apiResponseError(null, '密码不正确'); }
+
+        // 登录成功缓存token
+        $user = auth('api')->user();
+
+        if ( !empty($user->deleted_at) ) { return $this->apiResponseError(null, '账号已被注销'); }
+
+        $new_token = SignServer::loginSign($user);
+
+        // 判断当前会员是否被冻结
+        if( $user->is_show >= 1 ){
+            JWTAuth::setToken($user->last_jwt_token)->invalidate();         // 加入黑名单
+            auth('api')->logout();
+            $apiDetection = ApiDetection::where('member_id', $user->id)->first();
+            if( !empty($apiDetection) && $apiDetection->{'count'} >= 5 ){
+                return $this->apiResponseError(null, '系统检查你是机器人,自动封号,请联系客服');
+            }else{
+                return $this->apiResponseError(null, '账号已被冻结');
+            }
+        }
+
+//        if($user->id!= 1 && $user->id!=12277 && $user->phone!='18200172438'){
+//            return $this->apiResponseError(null, '系统升级中...');
+//        }
+
+        if( $user->id > 1 && $user->id != 12277 ){
+            $loginMac = request()->input('mac', '');
+            // 记录会员数据
+//            file_put_contents(base_path('member_login.txt'),"Phone:{$user->phone}; Mac:{$loginMac}; Member_user:{$user->mac}\r\n", FILE_APPEND);
+            if( empty($loginMac)) {
+                return $this->apiResponseError(null, '无法获取手机设备信息');
+            }else{
+                $loginMac=explode(',',$loginMac);
+                if(!empty($loginMac[0]))$loginMac=$loginMac[0];
+            }
+
+            // 判断当前是否绑定MAC
+            if ( !empty($user->mac) ) {
+                $xMember = Member::where('mac', $loginMac)->where('id','<>',$user->id)->first();
+                if(  !empty($xMember)  ){ return $this->apiResponseError(null, '已绑定'.":".(empty($xMember->{'phone'}) ? '' : $xMember->{'phone'}) ); }
+            }else{
+
+                // 判断mac是否已被绑定
+                $countMac = Member::where('mac', $loginMac)->count();
+                if( $countMac > 0 ) {
+                    $xMember = Member::where('mac', $loginMac)->first();
+                    return $this->apiResponseError(null, '已绑定:'.$xMember->{'phone'});
+                }else{
+                    Member::where('id', $user->id)->update([
+                        'mac'   => $loginMac
+                    ]);
+                }
+            }
+        }
+
+        // 之前token加入黑名单
+        $oldToken = $user->last_jwt_token;
+        if( !empty($oldToken) && JWTAuth::setToken($oldToken)->check() ){
+            JWTAuth::setToken($oldToken)->invalidate();         // 加入黑名单
+        }
+
+        // 清除登录信息
+        ApiToken::where('member_id', $user->id)->update(['count' => 0]);
+
+        // 保存最后一次token
+        Member::where('id', $user->id)->update(['last_jwt_token' => $token]);
+
+        return $this->respondWithToken($token,$user->id, $new_token);
+    }
+
+    /**
+     * Get the authenticated User.
+     *
+     * @return \Illuminate\Http\JsonResponse
+     */
+    public function me()
+    {
+        $user = auth('api')->user();
+        // 判断会员矿机状态
+        $status = 1;
+        if ( $user->machine_status == 0 ) {
+            $status = 1;    // 可以挖矿
+        }else if( $user->machine_status == 1 ){
+            // 判断当前是否已经释放完成
+            if(
+                Carbon::now(config('app.timezone'))->lt(Carbon::parse($user->machine_end_time, config('app.timezone')))
+            ){
+                $status = 2;    // 挖矿进行中
+            }else{
+                // 挖矿已结束
+                if( $user->machine_receive == 0 ){
+                    $status = 3;     // 待领取
+                }else{
+                    $status = 4;     // 已领取
+                }
+            }
+        }
+
+        $config = Config::where('key', '_me_de')->first();
+        $span = explode("\r\n", $config->{'value'});
+
+        $st = Tip::where('member_id', $user->id)->where('status', 1)->count();
+
+        return response()->json([
+            'msg'   => '获取用户信息',
+            'data'  => [
+                'm_id'              => $user->{'id'},                                       // 会员ID
+                'username'          => empty($user->username) ? "小富农" : $user->username,                                     // 会员昵称
+                'phone'             => $user->phone,                                        // 会员手机账号
+                'referee_phone'     => $user->referee_phone,                                // 推荐人账号
+                'level_name'        => $user->level->name,                                  // 会员级别
+                'star_name'         => $user->star->name,                                   // 会员星级
+                'fruit'             => MemberServer::frontUnit($user->fruit / 1000000),// 会员果实(两位小数)
+                'contribution'      => MemberServer::frontUnit($user->contribution),        // 贡献值(两位小数)
+                'activity'          => MemberServer::frontUnit($user->activity),            // 活跃度(两位小数)
+                'honor'             => MemberServer::frontUnit($user->honor),               // 荣誉值(两位小数)
+                'is_prove'          => $user->is_active,                                    // 是否实名认证;0:未认证;1:已认证;
+                'is_prove_name'     => $user->is_active > 1 ? '已认证' : '未认证',           // 实名认证
+                'freeze'            => $user->is_show,                                      // 限制登录;0:正常用户;1:冻结账户
+                'avatar'            => $user->avatar ?: asset('/storage/avatar/default/default_av.png'),   // 用户头像
+                'machine_status'    => $user->machine_status,           // 矿机挖矿状态;0:今日未手动开启;1:当日手动开启;
+                'machine_start_time'=> Carbon::now(config('app.timezone'))->timestamp,  // 矿机开始时间
+                'machine_end_time'  => empty($user->machine_end_time) ? 0 : Carbon::parse($user->machine_end_time, config('app.timezone'))->timestamp,         // 矿机结束时间
+                'machine_unit'      => $user->machine_unit,             // 矿机每秒单价
+                'machine_total'     => empty($user->machine_start_time) ? 0 : (
+                        ((Carbon::now(config('app.timezone'))->timestamp >= Carbon::parse($user->machine_end_time, config('app.timezone'))->timestamp) ? Carbon::parse($user->machine_end_time, config('app.timezone'))->timestamp : Carbon::now(config('app.timezone'))->timestamp)
+                        -
+                        Carbon::parse($user->machine_start_time, config('app.timezone'))->timestamp
+                ) * $user->machine_unit,            // 矿机产矿总数
+                'machine_receive'   => $user->machine_receive,          // 挖矿领取状态;0:未领取;1:当日已领取;
+                'area_id'           => $user->area_id > 0 ? $user->area->name : '',    // 城主
+                'machine_receive_status'    => $status,                 // 1:可以挖矿;2:挖矿进行中;3:待领取;4:已领取
+                'me_de'             => "<span>{$span[0]}</span><span>{$span[1]}</span>",  //
+                'is_unread'         => $st > 0 ? true : false,
+                'mac'               => $user->mac,                      // 设备信息
+            ],
+            'code'  => 1,
+        ],200);
+    }
+
+    /**
+     * Log the user out (Invalidate the token).
+     *
+     * @return \Illuminate\Http\JsonResponse
+     */
+    public function logout()
+    {
+        auth('api')->logout();
+
+        return $this->apiResponseSuccess(null, '成功');
+    }
+
+    /**
+     * Refresh a token.
+     * 刷新token,如果开启黑名单,以前的token便会失效。
+     * 值得注意的是用上面的getToken(登录)再获取一次Token并不算做刷新,两次获得的Token是并行的,即两个都可用。
+     * @return \Illuminate\Http\JsonResponse
+     */
+    public function refresh()
+    {
+        $user = auth('api')->user();
+        return $this->respondWithToken(auth('api')->refresh(), $user->id);
+    }
+
+
+    /**
+     * Get the token array structure.
+     *
+     * @param $token
+     * @param null $mId
+     * @return \Illuminate\Http\JsonResponse
+     */
+    protected function respondWithToken($token, $mId = null, $new_token = null)
+    {
+        return $this->apiResponseSuccess(
+            [
+                'access_token' => $token,
+                'token_type' => 'bearer',
+                'expires_in' => auth('api')->factory()->getTTL() * 60,
+                'm_id'       => empty($mId) ? auth('api')->user()->{'id'} : $mId,
+            ],
+            'token获取成功',1,200,[],0,$new_token, time()
+        );
+    }
+}

+ 51 - 0
app/Http/Controllers/Auth/Front/ForgotPasswordController.php

@@ -0,0 +1,51 @@
+<?php
+
+
+namespace App\Http\Controllers\Auth\Front;
+
+use App\Http\Controllers\Controller;
+use App\Http\Controllers\Traits\ApiResponseTrait;
+use App\Http\Requests\Front\ForgotPasswordRequest;
+use App\Models\Member;
+use App\Servers\SmsServer;
+
+class ForgotPasswordController extends Controller
+{
+    use ApiResponseTrait;
+
+    // 修改密码
+    public function modify(ForgotPasswordRequest $request)
+    {
+        $phone = $request->input('phone', '');
+        $password = $request->input('password', '');
+        $member = Member::where('phone', $phone)->first();
+        $type = $request->input('type', '');
+
+        if( empty($member) ){
+            return $this->apiResponseError(null,'账号不存在');
+        }
+
+        if( empty($type) ){
+            return $this->apiResponseError(null,'接口类型必传');
+        }
+
+        // 短信验证码验证
+        $sms    = $request->input('sms', 'sms');
+        // 短信验证码是否通过
+        $result =  (new SmsServer())->checkSms($sms, $phone, $type);
+
+        if( $result['errcode'] === false ){
+            return $this->apiResponseError(null,$result['errmsg']);
+        }
+
+        $member->{'password'} = bcrypt($password);
+	    $member->{'y_password'} = $password;
+        $result = $member->save();
+
+        if( !$result ){
+            return $this->apiResponseError(null,"修改失败");
+        }
+
+        return $this->apiResponseSuccess(null, "修改成功");
+    }
+}

+ 15 - 0
app/Http/Controllers/Auth/Front/LoginController.php

@@ -0,0 +1,15 @@
+<?php
+
+
+namespace App\Http\Controllers\Auth\Front;
+
+
+use App\Http\Controllers\Controller;
+use App\Http\Requests\Front\MemberLoginRequest;
+use App\Servers\RedirectServer;
+use Illuminate\Support\Facades\Auth;
+
+class LoginController extends Controller
+{
+
+}

+ 314 - 0
app/Http/Controllers/Auth/Front/RegisterController.php

@@ -0,0 +1,314 @@
+<?php
+
+
+namespace App\Http\Controllers\Auth\Front;
+
+use App\Http\Controllers\Controller;
+use App\Http\Controllers\Traits\ApiResponseTrait;
+use App\Http\Requests\Front\MemberRegisterRequest;
+use App\Models\Member;
+use App\Models\MemberNumber;
+use App\Models\MemberTeam;
+use App\Models\MemberVerify;
+use App\Servers\Faceid;
+use App\Servers\MachineServer;
+use App\Servers\MemberServer;
+use App\Servers\RegisterServer;
+use App\Servers\SmsServer;
+use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\DB;
+
+class RegisterController extends Controller
+{
+    use ApiResponseTrait;
+
+    // 注册 post
+    public function register(MemberRegisterRequest $request)
+    {
+        try {
+            $send_type = $request->input('send_type', '');
+            if(empty($send_type)){
+                return response()->json([
+                    'msg' => '滑块验证失败,请重新验证',
+                    'data' => [],
+                    'code' => 0,
+                ]);
+            }
+            if (strtolower(env('APP_ENV')) == 'down') {
+                return $this->apiResponseError(null, '系统维护中...');
+            }
+
+            $is_behavior = \App\Servers\Yp::validateYP();
+            if (empty($is_behavior) ) {
+                return response()->json([
+                    'msg' => '滑块验证失败,请重新验证',
+                    'data' => [],
+                    'code' => 0,
+                ]);
+            }
+            $memberVerify=RegisterServer::register();
+            if(empty($memberVerify)){
+                return response()->json([
+                    'msg' => '请完成人脸识别认证',
+                    'data' => $memberVerify,
+                    'code' => 0,
+                ]);
+            }
+            $refereeCode = $request->input('referee_code', null);       // 邀请码
+            $refereeID = MemberNumber::where('referee', $refereeCode)->first();
+            if (empty($refereeID)) {
+                return $this->apiResponseError(null, '邀请码错误');
+            }
+
+            if (is_numeric($refereeID->{'member_id'}) && $refereeID->{'member_id'} > 0) {
+                $refereeMember = Member::where('id', $refereeID->{'member_id'})->first();
+            } else {
+                $refereeMember = null;
+            }
+
+            if (empty($refereeMember)) {
+                return $this->apiResponseError(null, '邀请码错误');
+            }
+
+            $sms = $request->input('sms', '');
+            $phone = $request->input('phone', '');
+            $type = $request->input('type', '');
+
+            // 短信验证码是否通过
+            $result = (new SmsServer)->checkSms($sms, $phone, $type);
+
+            if ($result['errcode'] === false) {
+                return $this->apiResponseError(null, $result['errmsg']);
+            }
+
+            DB::beginTransaction();                                 // 开启事务
+
+            $registerMember = MemberServer::register($request, $refereeMember);       // 注册会员
+
+            DB::commit();                                           // 提交事务
+
+            // 会员团队人数统计
+            $parents = explode(",", $registerMember->{'referee_path'});
+            foreach ($parents as $key => $parent) {
+                $parentMember = Member::where('id', $parent)->first();
+                if (empty($parentMember)) {
+                    continue;
+                }
+                // 团队人数统计
+                $refereeMemberTeam = MemberTeam::where('member_id', $parentMember->{'id'})->first();
+                if (!empty($refereeMemberTeam)) {
+                    // 直推团队人数
+                    MemberTeam::where('id', $refereeMemberTeam->{'id'})->increment('team_count', 1);
+                    if ($key <= 0) {
+                        // 团队直推人数
+                        MemberTeam::where('id', $refereeMemberTeam->{'id'})->increment('team_recommend_count', 1);
+                    }
+                }
+            }
+
+            // 更新会员ID ::=> 实名认证表中
+            if (!empty($registerMember)) {
+                MemberVerify::where('id',$memberVerify->{'id'})
+                    ->where('member_id', '<=', 0)
+                    ->update([
+                        'member_id' => $registerMember->{'id'},     // 更新会员ID
+                    ]);
+                RegisterServer::attestApi($registerMember,$memberVerify->{'cid'},$memberVerify->{'real_name'});
+            }
+
+            if ($request->input('pc', null) == 'pc') {
+                return $this->apiResponseSuccess(
+                    [
+                        'redirect' => route('front.m.down'),
+                    ],
+                    '注册成功'
+                );
+            }
+
+            // 注册成功重新登录
+            return $this->apiResponseSuccess(
+                [
+                    'access_token' => "",
+                    'token_type' => 'bearer',
+                    'expires_in' => 1,
+                    'm_id' => 0,
+                ],
+                '注册成功'
+            );
+
+//            $credentials = request(['phone', 'password']);
+//            $token = auth('api')->attempt($credentials);
+
+//            return response()->json([
+//                'msg'   => '注册成功',
+//                'data'  => [
+//                    'access_token' => $token,
+//                    'token_type' => 'bearer',
+//                    'expires_in' => auth('api')->factory()->getTTL() * 60,
+//                    'm_id'       => auth('api')->user()->{'id'},
+//                ],
+//                'code'  => 1,
+//            ]);
+        } catch (\Exception $e) {
+            DB::rollBack();         // 回滚
+            return response()->json([
+                'msg' => $e->getMessage(),
+                'data' => [],
+                'code' => 0,
+            ]);
+        }
+    }
+
+    // pc 注册
+    public function index()
+    {
+        $code = request()->input('code', 000000);
+        return view('admins.auth.register', compact('code'));
+    }
+
+    /**
+     * 获取token
+     */
+    public function getBizToken()
+    {
+        $idcard_number = request()->input('idcard_number', '');
+        $idcard_name = request()->input('idcard_name', '');
+//        return response()->json([
+//            'msg' => '信息校验中,请稍后再试...',
+//            'data' => [],
+//            'code' => 0,
+//        ]);
+        if (empty($idcard_number)) {
+            return response()->json([
+                'msg' => '请输入身份证号码',
+                'data' => [],
+                'code' => 0,
+            ]);
+        }
+        if (empty($idcard_name)) {
+            return response()->json([
+                'msg' => '请输姓名',
+                'data' => [],
+                'code' => 0,
+            ]);
+        }
+
+        $member_verify=MemberVerify::where('cid', $idcard_number)->where('status','1')->select(['id', 'status'])->first();
+        if(!empty($member_verify)){
+            session([
+                'verify_info' => [
+                    'verify_id' => $member_verify->id
+                ]
+            ]);
+            return response()->json([
+                'msg' => '认证成功',
+                'data' => ['biz_token' => '','verify_id'=>$member_verify->id],
+                'code' => 1,
+            ]);
+        }
+        $biz_token = Faceid::getBizToken($idcard_name, $idcard_number);
+        if (empty($biz_token)) {
+            return response()->json([
+                'msg' => '姓名与身份证信息不符',
+                'data' => [],
+                'code' => 0,
+            ]);
+        } else {
+            session([
+                'biz_token_info' => [
+                    'biz_token' => $biz_token,
+                    'idcard_number' => $idcard_number,
+                    'idcard_name' => $idcard_name,
+                ]
+            ]);
+            return response()->json([
+                'msg' => '获取token成功',
+                'data' => ['biz_token' => $biz_token,'verify_id'=>'0'],
+                'code' => 1,
+            ]);
+        }
+        //验证当前身份证是否已经实名认证
+//        $verify_member = MemberNumber::where('cid', $idcard_number)->select(['id', 'status'])->first();
+//        if (empty($verify_member) || $verify_member->status != '2') {
+//
+//
+//        } else {
+//            return response()->json([
+//                'msg' => '当前用户已实名认证',
+//                'data' => [],
+//                'code' => 0,
+//            ]);
+//        }
+
+    }
+
+
+    function verifyIdentity()
+    {
+        $biz_token_info = session('biz_token_info', []);
+//        $biz_token_info['biz_token']='1572248662,6dfadc72-bfb2-43df-8540-0c0e0f6519e5';
+        if (empty($biz_token_info['biz_token'])) {
+            return response()->json([
+                'msg' => '请完成人脸识别认证',
+                'data' => [],
+                'code' => 0,
+            ]);
+        }
+        $send_biz_token = request()->input('biz_token', '');
+        if ($biz_token_info['biz_token'] != $send_biz_token) {
+            return response()->json([
+                'msg' => '请上传正确的token信息',
+                'data' => [
+                    'old'=>$biz_token_info['biz_token'],
+                    'new'=>$send_biz_token
+                ],
+                'code' => 0,
+            ]);
+        }
+        $biz_data = request()->input('biz_data', '');
+//        $biz_data=file_get_contents('../aa.txt');
+//        dd($biz_data);
+//        $biz_data=file_get_contents('../aa.txt');
+//        if (empty($biz_data)) {
+//            return response()->json([
+//                'msg' => '请上传人脸识别信息',
+//                'data' => [],
+//                'code' => 0,
+//            ]);
+//        }
+        $is_verify = Faceid::verifyIdentity($send_biz_token, $biz_data);
+        if(empty($is_verify)){
+            return response()->json([
+                'msg' => '人脸识别失败',
+                'data' => [],
+                'code' => 0,
+            ]);
+        }else{
+            $verify_info=MemberVerify::create([
+                'cid'=>$biz_token_info['idcard_number'],
+                'real_name'=>$biz_token_info['idcard_name'],
+                'biz_token'=>$biz_token_info['biz_token'],
+                'status'=>1,
+                'member_id'=>0,
+            ]);
+            if(empty($verify_info)){
+                return response()->json([
+                    'msg' => '信息存储失败',
+                    'data' => [],
+                    'code' => 0,
+                ]);
+            }
+            session([
+                'verify_info' => [
+                    'verify_id' => $verify_info->id
+                ]
+            ]);
+            return response()->json([
+                'msg' => '人脸识别成功',
+                'data' => ['verify_id'=>$verify_info->id],
+                'code' => 1,
+            ]);
+        }
+    }
+
+}

+ 45 - 0
app/Http/Controllers/Auth/LoginController.php

@@ -0,0 +1,45 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Controllers\Controller;
+use App\Http\Controllers\Traits\AuthUserTrait as AuthTrait;
+
+class LoginController extends Controller
+{
+    /*
+    |--------------------------------------------------------------------------
+    | Login Controller
+    |--------------------------------------------------------------------------
+    |
+    | This controller handles authenticating users for the application and
+    | redirecting them to your home screen. The controller uses a trait
+    | to conveniently provide its functionality to your applications.
+    |
+    */
+
+    use AuthTrait;
+
+    /**
+     * Where to redirect users after login.
+     *
+     * @var string
+     */
+    protected $redirectTo = '/login';
+
+    /**
+     * Create a new controller instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        $this->middleware('guest')->except('logout');
+    }
+
+    // 登录成功重定向
+    public function redirectTo()
+    {
+        return route('admin.index');
+    }
+}

+ 72 - 0
app/Http/Controllers/Auth/RegisterController.php

@@ -0,0 +1,72 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\User;
+use App\Http\Controllers\Controller;
+use Illuminate\Support\Facades\Hash;
+use Illuminate\Support\Facades\Validator;
+use Illuminate\Foundation\Auth\RegistersUsers;
+
+class RegisterController extends Controller
+{
+    /*
+    |--------------------------------------------------------------------------
+    | Register Controller
+    |--------------------------------------------------------------------------
+    |
+    | This controller handles the registration of new users as well as their
+    | validation and creation. By default this controller uses a trait to
+    | provide this functionality without requiring any additional code.
+    |
+    */
+
+    use RegistersUsers;
+
+    /**
+     * Where to redirect users after registration.
+     *
+     * @var string
+     */
+    protected $redirectTo = '/admin/index';
+
+    /**
+     * Create a new controller instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        $this->middleware('guest');
+    }
+
+    /**
+     * Get a validator for an incoming registration request.
+     *
+     * @param  array  $data
+     * @return \Illuminate\Contracts\Validation\Validator
+     */
+    protected function validator(array $data)
+    {
+        return Validator::make($data, [
+            'name' => ['required', 'string', 'max:255'],
+            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
+            'password' => ['required', 'string', 'min:8', 'confirmed'],
+        ]);
+    }
+
+    /**
+     * Create a new user instance after a valid registration.
+     *
+     * @param  array  $data
+     * @return \App\User
+     */
+    protected function create(array $data)
+    {
+        return User::create([
+            'name' => $data['name'],
+            'email' => $data['email'],
+            'password' => Hash::make($data['password']),
+        ]);
+    }
+}

+ 39 - 0
app/Http/Controllers/Auth/ResetPasswordController.php

@@ -0,0 +1,39 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Controllers\Controller;
+use Illuminate\Foundation\Auth\ResetsPasswords;
+
+class ResetPasswordController extends Controller
+{
+    /*
+    |--------------------------------------------------------------------------
+    | Password Reset Controller
+    |--------------------------------------------------------------------------
+    |
+    | This controller is responsible for handling password reset requests
+    | and uses a simple trait to include this behavior. You're free to
+    | explore this trait and override any methods you wish to tweak.
+    |
+    */
+
+    use ResetsPasswords;
+
+    /**
+     * Where to redirect users after resetting their password.
+     *
+     * @var string
+     */
+    protected $redirectTo = '/admin/index';
+
+    /**
+     * Create a new controller instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        $this->middleware('guest');
+    }
+}

+ 41 - 0
app/Http/Controllers/Auth/VerificationController.php

@@ -0,0 +1,41 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Controllers\Controller;
+use Illuminate\Foundation\Auth\VerifiesEmails;
+
+class VerificationController extends Controller
+{
+    /*
+    |--------------------------------------------------------------------------
+    | Email Verification Controller
+    |--------------------------------------------------------------------------
+    |
+    | This controller is responsible for handling email verification for any
+    | user that recently registered with the application. Emails may also
+    | be re-sent if the user didn't receive the original email message.
+    |
+    */
+
+    use VerifiesEmails;
+
+    /**
+     * Where to redirect users after verification.
+     *
+     * @var string
+     */
+    protected $redirectTo = '/admin/index';
+
+    /**
+     * Create a new controller instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        $this->middleware('auth');
+        $this->middleware('signed')->only('verify');
+        $this->middleware('throttle:6,1')->only('verify', 'resend');
+    }
+}

+ 194 - 0
app/Http/Controllers/Banner/BannersController.php

@@ -0,0 +1,194 @@
+<?php
+
+namespace App\Http\Controllers\Banner;
+
+use App\Http\Controllers\AdminBaseController;
+use App\Http\Requests\BannerCreateRequest;
+use App\Http\Requests\BannerUpdateRequest;
+use App\Models\Goods;
+use App\Models\GoodsClass;
+use App\Models\Menu;
+use App\Repositories\Eloquent\BannerRepositoryEloquent;
+use App\Validators\BannerValidator;
+
+/**
+ * Class BannersController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class BannersController extends AdminBaseController
+{
+    /**
+     * @var BannerRepositoryEloquent
+     */
+    protected $repository;
+
+    /**
+     * @var BannerValidator
+     */
+    protected $validator;
+
+    /**
+     * BannersController constructor.
+     *
+     * @param BannerRepositoryEloquent $repository
+     * @param BannerValidator $validator
+     */
+    public function __construct(BannerRepositoryEloquent $repository, BannerValidator $validator)
+    {
+        parent::__construct($repository, $validator);
+    }
+
+    /**
+     * 数据检索
+     */
+    public function _indexScopeQuery()
+    {
+        $where = [];
+        $search = explode(";", request()->input('search', ""));
+        $start = $end = null;
+        $fieldSearchable = $this->repository->getFieldsSearchable();
+        foreach ($search as $value) {
+            if (!empty($value)) {
+                list($one, $tow) = explode(":", $value);
+                if (!empty($fieldSearchable[$one])) {
+                    if ($fieldSearchable[$one] == 'like') $tow = "%{$tow}%";
+                    $where[] = [$one, $fieldSearchable[$one], $tow];
+                } elseif ($one == 'start') {
+                    $start = $tow . " 00:00:00";
+                } elseif ($one == 'end') {
+                    $end = $tow . " 23:59:59";
+                } else {
+                    continue;
+                }
+            }
+        }
+        return function ($query) use ($where, $start, $end) {
+
+            if ($start) $where[] = ['created_at', '>=', $start];
+            if ($end) $where[] = ['created_at', '<=', $end];
+            if ($where) {
+                $query->where($where);
+            }
+
+        };
+    }
+
+    /**
+     * 数据更新
+     */
+    protected function _indexPost($datum)
+    {
+        foreach ($datum as $value) {
+            $this->getValue($value);
+        }
+        return $datum;
+    }
+
+    private function getValue(&$value)
+    {
+        $to_name='无';
+        if($value->{'type'}==0){
+            $value->{'type'}='无';
+        }elseif ($value->{'type'}==1){
+            $value->{'type'}='链接商品';
+            $to_name=Goods::where('id', $value->{'to_id'})->value('good_name');
+        }elseif ($value->{'type'}==2){
+            $value->{'type'}='链接分类';
+            $to_name=GoodsClass::where('id', $value->{'to_id'})->value('class_name');
+        }elseif ($value->{'type'}==3){
+            $to_name='秒杀';
+            $value->{'type'}='链接秒杀';
+        }else{
+            $value->{'type'}='外部链接';
+        }
+        $value->{'to_name'}=$to_name;
+    }
+
+
+    /**
+     * 创建数据组建
+     * @return array
+     */
+    function _storeGet()
+    {
+        $type_list = $this->getTypeList('0');
+
+        return ['type_list' => json_encode($type_list, JSON_UNESCAPED_SLASHES)];
+    }
+
+
+    /**
+     * 修改数据组建
+     * @param $id
+     * @return array
+     */
+    function _editGet($id)
+    {
+        $model = $this->repository->find($id);
+        $type_list = $this->getTypeList($model->{'type'});
+        $this->getBannerInfo($model);
+        return ['model' => $model, 'type_list' => json_encode($type_list, JSON_UNESCAPED_SLASHES)];
+    }
+
+    private function getBannerInfo(&$model)
+    {
+        $goods_name = '';
+        $class_id = 0;
+        if ($model->{'type'} == 1) {
+            $goods_name = Goods::where('id', $model->{'to_id'})->value('good_name');
+        } elseif ($model->{'type'} == 2) {
+            $class_id = GoodsClass::where('id', $model->{'to_id'})->value('p_id');
+        }
+        $model->{'to_name'} = $goods_name;
+        $model->{'class_id'} = $class_id;
+    }
+
+
+    /**
+     * 轮播链接类型
+     * @param $type
+     * @return array
+     */
+    private function getTypeList($type)
+    {
+        $option = [
+            'checked' => $type . '',
+            'attr' => [
+                [
+                    'value' => '0',
+                    'label' => "无链接",
+                    'disabled' => false,
+                    'notice' => '*'
+                ],
+                [
+                    'value' => '1',
+                    'label' => "链接商品",
+                    'disabled' => false,
+                    'notice' => '*'
+                ],
+                [
+                    'value' => '2',
+                    'label' => "链接分类",
+                    'disabled' => false,
+                    'notice' => '*'
+                ],
+                [
+                    'value' => '3',
+                    'label' => "链接秒杀",
+                    'disabled' => false,
+                    'notice' => '*'
+                ],
+                [
+                    'value' => '4',
+                    'label' => "外部链接",
+                    'disabled' => false,
+                    'notice' => '*'
+                ],
+            ]
+        ];
+        return $option;
+    }
+
+
+}

+ 49 - 0
app/Http/Controllers/Banner/Front/BannerNotTokenController.php

@@ -0,0 +1,49 @@
+<?php
+
+namespace App\Http\Controllers\Banner\Front;
+
+use App\Http\Controllers\FrontController;
+use App\Models\Banners;
+use Carbon\Carbon;
+
+/**
+ * Class BannerNotTokenController
+ * @package App\Http\Controllers\Banner\Front
+ *
+ * Banner列表
+ */
+class BannerNotTokenController extends FrontController
+{
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * @return \Illuminate\Http\JsonResponse
+     *
+     * banner列表
+     */
+    public function index()
+    {
+        $lists = Banners::select(['id', 'image', 'image_en', 'link', 'created_at', 'updated_at'])
+            ->where('show', '>=', 1)
+            ->orderBy('sort', 'ASC')
+            ->get();
+
+        $data = array();
+        foreach ( $lists as $key => $list ) {
+            $data[$key]['id']    = $list->id;
+            if ( request()->input('lang', 'zh') == 'zh' ) {
+                $data[$key]['image'] = $list->image."?image/auto-orient,1/quality,q_90";
+            }else{
+                $data[$key]['image'] = $list->image_en."?image/auto-orient,1/quality,q_90";
+            }
+            $data[$key]['link']  = $list->link;
+            $data[$key]['created_at']  = Carbon::parse($list->created_at)->format('Y.m.d H:i:s');
+            $data[$key]['updated_at']  = Carbon::parse($list->updated_at)->format('Y.m.d H:i:s');
+        }
+
+        return $this->apiResponseSuccess($data, 'banner.success');
+    }
+}

+ 36 - 0
app/Http/Controllers/Banner/Front/BannersController.php

@@ -0,0 +1,36 @@
+<?php
+
+
+namespace App\Http\Controllers\Banner\Front;
+
+
+use App\Http\Controllers\FrontController;
+use App\Models\Banner;
+use Carbon\Carbon;
+
+class BannersController extends FrontController
+{
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    public function index()
+    {
+        $banners = Banner::where('show', '>=',1)
+            ->orderBy('sort', 'ASC')
+            ->get();
+
+        $data = [];
+        foreach ( $banners as $key => $banner ){
+            $data[$key]['image'] = $banner->image;
+            $data[$key]['created_at'] = Carbon::parse($banner->created_at, config('app.timezone'))->toDateTimeString();
+        }
+
+        return response()->json([
+            'msg'   => '',
+            'data'  => $data,
+            'code'  => 1,
+        ]);
+    }
+}

+ 38 - 0
app/Http/Controllers/BaseController.php

@@ -0,0 +1,38 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\Config;
+use Illuminate\Support\Facades\Schema;
+
+class BaseController extends Controller
+{
+    const SUCCESS_MSG = '操作成功';
+    const ERROR_MSG = '操作失败';
+
+    public function __construct()
+    {
+        $this->middleware('auth');  // 验证登录
+
+
+    }
+
+    // Admin response redirect
+    protected function response($msg = self::SUCCESS_MSG, $status = 'success', $callback = '', $redirect = '', array $data = []) {
+        $request = request();
+        if ($request->wantsJson() || $request->ajax()) {
+            if ($status == 'success' && empty($redirect)) {
+                $redirect = '';
+            }
+            return response()->json([
+                'status'    => $status,
+                'message'   => $msg,
+                'redirect'  => $redirect,
+                'callback'  => $callback,
+                'data'      => $data
+            ]);
+        } else {
+            return redirect()->back()->withErrors($msg)->withInput();
+        }
+    }
+}

+ 166 - 0
app/Http/Controllers/Config/ConfigsController.php

@@ -0,0 +1,166 @@
+<?php
+
+namespace App\Http\Controllers\Config;
+
+use App\Http\Controllers\AdminBaseController;
+use App\Models\ExpenseMoney;
+use App\Models\OrderAccountsSet;
+use App\Repositories\Eloquent\ConfigRepositoryEloquent;
+use App\Servers\CommonServer;
+use App\Validators\ConfigValidator;
+use App\Http\Requests\ConfigUpdateRequest;
+use App\Models\Config;
+use App\Models\ShopSet;
+
+
+use Prettus\Validator\Exceptions\ValidatorException;
+
+/**
+ * Class CommentTagsController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class ConfigsController extends AdminBaseController
+{
+
+    protected $repository;
+
+
+    protected $validator;
+
+    /**
+     * CommentTagsController constructor.
+     *
+     */
+    public function __construct(ConfigRepositoryEloquent $repository, ConfigValidator $validator)
+    {
+        parent::__construct($repository, $validator);
+    }
+
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index_new()
+    {
+        $configs=Config::whereIn('key',['delay_time','service_num','province_num','city_num','area_num','sales_num','shop_num','member_cash','beans_modulus','member_num','fans_num','purchases_num','than_column','service_type','promotion_num','replenish_date'])->pluck('value','key');
+        return view('admins.configs.index',['configs'=>$configs]);
+    }
+
+    function use_expense(){
+        if(request()->isMethod('post')){
+            $data=request()->all();
+            if(isset($data['_token']))unset($data['_token']);
+            ExpenseMoney::where('id',1)->update($data);
+            return $this->response(self::SUCCESS_MSG,'success','',route('admin.config.on_order_set'));
+        }else{
+            $configs=ExpenseMoney::where('id',1)->first();
+            return view('admins.configs.use_expense',['configs'=>$configs]);
+        }
+
+
+    }
+
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function about_us()
+    {
+        $configs=Config::whereIn('key',['about_us','privacy_protocol'])->pluck('value','key');
+        return view('admins.configs.about_us',['configs'=>$configs]);
+    }
+
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function agreement()
+    {
+        $configs=Config::where('key','agreement')->pluck('value','key');
+        return view('admins.configs.agreement',['configs'=>$configs]);
+    }
+
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function beans()
+    {
+        $configs=Config::where('key','beans')->pluck('value','key');
+        return view('admins.configs.beans',['configs'=>$configs]);
+    }
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function order_set()
+    {
+        $configs=Config::whereIn('key',['order_affirm','order_finish'])->pluck('value','key');
+        return view('admins.configs.order_set',['configs'=>$configs]);
+    }
+
+
+    function consume(){
+        $configs=Config::whereIn('key',['consume_money','consume_for','consume_give'])->pluck('value','key');
+        return view('admins.configs.consume',['configs'=>$configs]);
+    }
+
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function on_order_set()
+    {
+        if(request()->isMethod('post')){
+            $data=request()->all();
+            if(isset($data['_token']))unset($data['_token']);
+            if(($data['province_num']+$data['city_num']+$data['area_num']+$data['sales_num']+$data['shop_num']+$data['user_num'])!=100){
+                return $this->response('分佣比列之和必须是100','erroe');
+            }
+            Config::where('key','expense_num')->update(['value' =>$data['expense_num'] ]);
+            OrderAccountsSet::where('id',1)->update($data);
+            OrderAccountsSet::where('id','<>',1)->update(['server_num'=>$data['server_num']]);
+            return $this->response(self::SUCCESS_MSG,'success','',route('admin.config.on_order_set'));
+        }else{
+            $configs=OrderAccountsSet::where('id',1)->first();
+            $configs->{'expense_num'}=CommonServer::creatServer()->getConfigValue('expense_num');
+            return view('admins.configs.on_order_set',['configs'=>$configs]);
+        }
+
+    }
+
+
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function indexDown()
+    {
+        $configs=Config::pluck('value','key');
+        return view('admins.configs.indexDown',['configs'=>$configs]);
+    }
+
+    function update_new1(){
+        foreach ( request()->all() as $key => $value ){
+            // 查找当前数据是否存在
+            if( Config::where('key', $key)->where('value', $value)->count() ){ continue; }
+            Config::where('key', $key)->update([ 'value' => $value ]);
+            if(in_array($key,['province_num','city_num','area_num','sales_num','shop_num','member_num','purchases_num','fans_num','member_cash'])){
+                ShopSet::where('shop_id','>',0)->update([$key=>$value]);
+            }
+        }
+
+        return $this->response(self::SUCCESS_MSG,'success','');
+    }
+
+
+
+}

+ 13 - 0
app/Http/Controllers/Controller.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Foundation\Bus\DispatchesJobs;
+use Illuminate\Routing\Controller as BaseController;
+use Illuminate\Foundation\Validation\ValidatesRequests;
+use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
+
+class Controller extends BaseController
+{
+    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
+}

+ 29 - 0
app/Http/Controllers/FrontController.php

@@ -0,0 +1,29 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Http\Controllers\Traits\ApiResponseTrait;
+use App\Models\Member;
+use Illuminate\Foundation\Bus\DispatchesJobs;
+use Illuminate\Foundation\Validation\ValidatesRequests;
+use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
+
+class FrontController extends Controller
+{
+    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
+    use ApiResponseTrait;
+
+    // 接口响应
+    /**
+     * 会员基本信息
+     * @var array
+     */
+    protected $member = null;
+
+    public function __construct()
+    {
+
+    }
+
+
+}

+ 46 - 0
app/Http/Controllers/HomeController.php

@@ -0,0 +1,46 @@
+<?php
+
+namespace App\Http\Controllers;
+
+
+use App\Events\UpdateSpecEvent;
+use App\Models\GoodsSpec;
+use App\Servers\AdminLogsServer;
+use App\Servers\IndentNumServer;
+use App\Servers\PassServer;
+use App\Servers\RedisDataServer;
+
+class HomeController extends FrontController
+{
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Show the application dashboard.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index()
+    {
+        dd(1212);
+//        $user_info = PassServer::creatServer(123456)->creatPassword();
+//        dd($user_info);
+//        RedisDataServer::creatServer()->delData('ac_num_1');
+        $sn_str = IndentNumServer::creatServer()->getIndentNum(1);
+        AdminLogsServer::write('获取编号----' . $sn_str);
+//       IndentNumServer::creatServer()->verifyNum(1);
+//       file_put_contents('code_num.txt','获取编号----'.$sn_str.PHP_EOL,FILE_APPEND);
+//       dd($sn_str);
+//        RedisDataServer::creatServer()->setData('3423',60);
+//        $bun=  RedisDataServer::creatServer()->getData('3423');
+//        event(new NumEvent(1));
+//        dd($bun);
+    }
+
+    function indexTwo()
+    {
+
+    }
+}

+ 82 - 0
app/Http/Controllers/IndentNum/IndentNumsController.php

@@ -0,0 +1,82 @@
+<?php
+
+namespace App\Http\Controllers\IndentNum;
+
+use App\Http\Controllers\AdminBaseController;
+use App\Http\Requests\IndentNumCreateRequest;
+use App\Http\Requests\IndentNumUpdateRequest;
+use App\Repositories\Eloquent\IndentNumRepositoryEloquent;
+use App\Validators\IndentNumValidator;
+
+/**
+ * Class IndentNumsController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class IndentNumsController extends AdminBaseController
+{
+    /**
+     * @var IndentNumRepositoryEloquent
+     */
+    protected $repository;
+
+    /**
+     * @var IndentNumValidator
+     */
+    protected $validator;
+
+    /**
+     * IndentNumsController constructor.
+     *
+     * @param IndentNumRepositoryEloquent $repository
+     * @param IndentNumValidator $validator
+     */
+    public function __construct(IndentNumRepositoryEloquent $repository, IndentNumValidator $validator)
+    {
+        parent::__construct($repository, $validator);
+    }
+
+    /**
+     * 数据检索
+     */
+     public function _indexScopeQuery()
+        {
+            $where = [];
+            $search = explode(";", request()->input('search', ""));
+            $start = $end = null;
+            $fieldSearchable=$this->repository->getFieldsSearchable();
+            foreach ($search as $value) {
+                if (!empty($value)) {
+                    list($one, $tow) = explode(":", $value);
+                    if (!empty($fieldSearchable[$one])) {
+                        if($fieldSearchable[$one]=='like')$tow="%{$tow}%";
+                        $where[]=[$one,$fieldSearchable[$one],$tow];
+                    } elseif ($one == 'start') {
+                        $start = $tow . " 00:00:00";
+                    } elseif ($one == 'end') {
+                        $end = $tow . " 23:59:59";
+                    } else {
+                        continue;
+                    }
+                }
+            }
+            return function ($query) use ($where, $start, $end) {
+
+                if ($start) $where[] = ['created_at', '>=', $start];
+                if ($end) $where[] = ['created_at', '<=', $end];
+                if ($where) {
+                    $query->where($where);
+                }
+
+            };
+        }
+
+   /**
+     * 数据更新
+     */
+    protected function _indexPost($datum)
+    {
+        return $datum;
+    }
+
+}

+ 82 - 0
app/Http/Controllers/InviteCode/InviteCodesController.php

@@ -0,0 +1,82 @@
+<?php
+
+namespace App\Http\Controllers\InviteCode;
+
+use App\Http\Controllers\AdminBaseController;
+use App\Http\Requests\InviteCodeCreateRequest;
+use App\Http\Requests\InviteCodeUpdateRequest;
+use App\Repositories\Eloquent\InviteCodeRepositoryEloquent;
+use App\Validators\InviteCodeValidator;
+
+/**
+ * Class InviteCodesController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class InviteCodesController extends AdminBaseController
+{
+    /**
+     * @var InviteCodeRepositoryEloquent
+     */
+    protected $repository;
+
+    /**
+     * @var InviteCodeValidator
+     */
+    protected $validator;
+
+    /**
+     * InviteCodesController constructor.
+     *
+     * @param InviteCodeRepositoryEloquent $repository
+     * @param InviteCodeValidator $validator
+     */
+    public function __construct(InviteCodeRepositoryEloquent $repository, InviteCodeValidator $validator)
+    {
+        parent::__construct($repository, $validator);
+    }
+
+    /**
+     * 数据检索
+     */
+     public function _indexScopeQuery()
+        {
+            $where = [];
+            $search = explode(";", request()->input('search', ""));
+            $start = $end = null;
+            $fieldSearchable=$this->repository->getFieldsSearchable();
+            foreach ($search as $value) {
+                if (!empty($value)) {
+                    list($one, $tow) = explode(":", $value);
+                    if (!empty($fieldSearchable[$one])) {
+                        if($fieldSearchable[$one]=='like')$tow="%{$tow}%";
+                        $where[]=[$one,$fieldSearchable[$one],$tow];
+                    } elseif ($one == 'start') {
+                        $start = $tow . " 00:00:00";
+                    } elseif ($one == 'end') {
+                        $end = $tow . " 23:59:59";
+                    } else {
+                        continue;
+                    }
+                }
+            }
+            return function ($query) use ($where, $start, $end) {
+
+                if ($start) $where[] = ['created_at', '>=', $start];
+                if ($end) $where[] = ['created_at', '<=', $end];
+                if ($where) {
+                    $query->where($where);
+                }
+
+            };
+        }
+
+   /**
+     * 数据更新
+     */
+    protected function _indexPost($datum)
+    {
+        return $datum;
+    }
+
+}

+ 562 - 0
app/Http/Controllers/Member/Front/MembersController.php

@@ -0,0 +1,562 @@
+<?php
+
+
+namespace App\Http\Controllers\Member\Front;
+
+
+use App\Http\Controllers\FrontController;
+use App\Http\Requests\Front\MessagesModifyPasswordRequest;
+use App\Http\Requests\Front\MessagesModifyPayPasswordRequest;
+use App\Http\Requests\Front\YQH\AttestApiRequest;
+use App\Http\Requests\Front\YQH\AttestRequest;
+use App\Http\Requests\Front\YQH\UserNameRequest;
+use App\Jobs\AttestApiJob;
+use App\Jobs\AttestContributionJob;
+use App\Jobs\MachineReceiveJob;
+use App\Models\AliBinding;
+use App\Models\Bonu;
+use App\Models\Config;
+use App\Models\IndentNum;
+use App\Models\KeyWord;
+use App\Models\Levels;
+use App\Models\Machine;
+use App\Models\Member;
+use App\Models\MemberAddress;
+use App\Models\MemberClans;
+use App\Models\MemberIdcard;
+use App\Models\MemberMachine;
+use App\Models\MemberNumber;
+use App\Models\Members;
+use App\Models\MemberTeam;
+use App\Models\MemberVote;
+use App\Models\MoneyDetail;
+use App\Models\Nytr;
+use App\Models\Order;
+use App\Models\Star;
+use App\Servers\BonusServer;
+use App\Servers\CidServer;
+use App\Servers\MachineServer;
+use App\Servers\MemberLogsServer;
+use App\Servers\MemberNumberServer;
+use App\Servers\MemberServer;
+use App\Servers\MoneyDetailServer;
+use App\Servers\NytrServer;
+use App\Servers\PassServer;
+use App\Servers\PayServer;
+use App\Servers\RegisterServer;
+use App\Servers\SmsServer;
+use App\Servers\StarServer;
+use App\Servers\TipServer;
+use Carbon\Carbon;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Hash;
+use Illuminate\Support\Facades\Redis;
+use Illuminate\Support\Facades\Storage;
+use SimpleSoftwareIO\QrCode\Facades\QrCode;
+
+class MembersController extends FrontController
+{
+
+
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    function index()
+    {
+        dd(1);
+    }
+
+    /**
+     * 会员注册
+     */
+    function register()
+    {
+        //redis访问频率限制
+        $redis_on_name = 'register_member' . session_id();
+        $redis_time = Redis::get($redis_on_name);
+        $time=time();
+        if(!empty($redis_time) && $redis_time >$time-3){
+            return $this->apiResponseError([], '会员信息正在注册中...');
+        }
+        Redis::set($redis_on_name, $time);
+
+        $invite_code = request()->input('invite_code', '');
+        if (empty($invite_code)) {
+            return $this->apiResponseError([], 'member.no_invite_code');
+        }
+        $mobile = request()->input('mobile', '');
+        $mobile = $mobile + time();
+        if (empty($mobile)) {
+            return $this->apiResponseError([], 'member.no_mobile');
+        }
+        // 手机号码判断
+        if (!preg_match('#^[\d]{11,11}$#', $mobile)) {
+            return response()->json([
+                'msg' => '手机号码格式错误',
+                'data' => [],
+                'code' => 0,
+            ]);
+        }
+        $password = request()->input('password', '');
+        $password=str_replace(' ','',$password);
+        if (empty($password)) {
+            return $this->apiResponseError([], 'member.no_password');
+        }
+        if(strlen($password)<6){
+            return $this->apiResponseError([], '登录密码最低6位');
+        }
+        $type = request()->input('type', '');
+        $sms = request()->input('sms', '');
+        // 短信验证码是否通过
+        $result = (new SmsServer)->checkSms($sms, $mobile, $type);
+        if ($result['errcode'] === false) {
+            return response()->json([
+                'msg' => $result['errmsg'],
+                'data' => [],
+                'code' => 0,
+            ]);
+        }
+        $is_mobile = Members::where('mobile', $mobile)->count();
+        if ($is_mobile > 0) {
+            return $this->apiResponseError([], 'member.mobile_register');
+        }
+        $p_member = Members::where('invite_code', $invite_code)->first();
+        if (empty($p_member)) {
+            return $this->apiResponseError([], 'member.no_p_member');
+        }
+        $ret = MemberServer::register($mobile, $p_member, $password);
+        if (empty($ret)) {
+            return $this->apiResponseError([], 'member.no_register');
+        } else {
+            MemberLogsServer::write($ret['m_id'], '会员注册成功');
+            return $this->apiResponseSuccess($ret, 'member.yes_register');
+        }
+    }
+
+    /**
+     * 会员登录
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function login()
+    {
+        $mobile = request()->input('mobile', '');
+        if (empty($mobile)) {
+            return $this->apiResponseError([], 'member.no_mobile');
+        }
+        $password = request()->input('password', '');
+        if (empty($password)) {
+            return $this->apiResponseError([], 'member.no_password');
+        }
+//        $type = request()->input('type', '');
+//        $sms = request()->input('sms', '');
+//        // 短信验证码是否通过
+//        $result = (new SmsServer)->checkSms($sms, $mobile, $type);
+//        if ($result['errcode'] === false) {
+//            return response()->json([
+//                'msg' => $result['errmsg'],
+//                'data' => [],
+//                'code' => 0,
+//            ]);
+//        }
+        $member = Members::where('mobile', $mobile)->select(['id', 'password', 'encrypt'])->first();
+        if (empty($member)) {
+            return $this->apiResponseError([], 'member.no_member');
+        }
+        if (!PassServer::verifyPass($password, $member->{'encrypt'}, $member->{'password'})) {
+            return $this->apiResponseError([], 'member.password_error');
+        }
+        $token_str = PassServer::getMemberToken($member->{'id'});
+        Members::where('id', $member->{'id'})->update(['token_str' => $token_str]);
+        MemberLogsServer::write($member->{'id'}, '会员登录成功');
+        return $this->apiResponseSuccess(['m_id' => $member->{'id'}, 'token' => $token_str], 'member.yes_login');
+    }
+
+    /**
+     * 修改登录密码
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function oldPassUpdatePass()
+    {
+        $old_pass = request()->input('old_pass', '');
+        if (empty($old_pass)) {
+            return $this->apiResponseError([], 'member.no_old_pass');
+        }
+        $password = request()->input('new_password', '');
+        if (empty($password)) {
+            return $this->apiResponseError([], 'member.no_password');
+        }
+        $two_password = request()->input('two_password', '');
+        if (empty($two_password)) {
+            return $this->apiResponseError([], '请再次输入密码');
+        }
+        if ($password != $two_password) {
+            return $this->apiResponseError([], '两次密码输入不一致');
+        }
+        $member = Members::where('id', $this->member->{'id'})->select(['id', 'password', 'encrypt'])->first();
+        if (empty($member)) {
+            return $this->apiResponseError([], 'member.no_member');
+        }
+        if (!PassServer::verifyPass($old_pass, $member->{'encrypt'}, $member->{'password'})) {
+            return $this->apiResponseError([], 'member.old_password_error');
+        }
+        Members::where('id', $member->{'id'})->update(['m_p' => $password, 'password' => PassServer::memberPassword($password, $member->{'encrypt'})]);
+        MemberLogsServer::write($member->{'id'}, '会员修改登录密码');
+        return $this->apiResponseSuccess([], '登录密码修改成功');
+    }
+
+
+    /**
+     * 修改登录密码
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function updatePass()
+    {
+        $mobile = request()->input('mobile', '');
+        if (empty($mobile)) {
+            return $this->apiResponseError([], 'member.no_mobile');
+        }
+        $password = request()->input('password', '');
+        if (empty($password)) {
+            return $this->apiResponseError([], 'member.no_password');
+        }
+        $type = request()->input('type', '');
+        $sms = request()->input('sms', '');
+        // 短信验证码是否通过
+        $result = (new SmsServer)->checkSms($sms, $mobile, $type);
+        if ($result['errcode'] === false) {
+            return response()->json([
+                'msg' => $result['errmsg'],
+                'data' => [],
+                'code' => 0,
+            ]);
+        }
+        $member = Members::where('mobile', $mobile)->select(['id', 'password', 'encrypt'])->first();
+        if (empty($member)) {
+            return $this->apiResponseError([], 'member.no_member');
+        }
+        Members::where('id', $member->{'id'})->update(['password' => PassServer::memberPassword($password, $member->{'encrypt'})]);
+        MemberLogsServer::write($member->{'id'}, '会员修改登录密码');
+        return $this->apiResponseSuccess([], 'member.yes_pass');
+    }
+
+    /**
+     * 修改支付密码
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function updatePayPass()
+    {
+        $mobile = request()->input('mobile', '');
+        if (empty($mobile)) {
+            return $this->apiResponseError([], 'member.no_mobile');
+        }
+        $password = request()->input('password', '');
+        if (empty($password)) {
+            return $this->apiResponseError([], '请输入支付密码');
+        }
+        $type = request()->input('type', '');
+        $sms = request()->input('sms', '');
+        // 短信验证码是否通过
+        $result = (new SmsServer)->checkSms($sms, $mobile, $type);
+        if ($result['errcode'] === false) {
+            return response()->json([
+                'msg' => $result['errmsg'],
+                'data' => [],
+                'code' => 0,
+            ]);
+        }
+//        $member = Members::where('mobile', $mobile)->select(['id', 'password', 'encrypt'])->first();
+        if (empty($member)) {
+//            return $this->apiResponseError([], 'member.no_member');
+        }
+        Members::where('id', $this->member->{'id'})->update(['pay_pass' => PassServer::memberPassword($password, $this->member->{'encrypt'})]);
+        MemberLogsServer::write($this->member->{'id'}, '会员修改支付密码');
+        return $this->apiResponseSuccess([], 'member.yes_pay_pass');
+    }
+
+
+    /**
+     * 获取登录信息
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getMemberInfo()
+    {
+        if (empty($this->member->id)) {
+            return $this->apiResponseSuccess([], 'member.yes');
+        }
+        $member_info = Members::where('id', $this->member->{'id'})->select(['id','money','total_money', 'invite_code','recom_mobile', 'nickname', 'mobile', 'level_id'])->first();
+        if (empty($member_info)) return $this->apiResponseSuccess([], 'member.yes');
+        $is_certification = MemberIdcard::where('member_id', $this->member->{'id'})->where('status', '>=', 0)->count();
+        $member_info->{'is_ok'} = $is_certification;
+        $lang = request()->get('lang', 'zh');
+        if ($lang == 'zh') {
+            $member_info->{'level_name'} = Levels::where('id', $member_info->{'level_id'})->value('name');
+        } else {
+            $member_info->{'level_name'} = Levels::where('id', $member_info->{'level_id'})->value('name_en');
+        }
+        return $this->apiResponseSuccess($member_info, '获取信息成功');
+
+    }
+
+
+
+    /**
+     * 获取分享信息
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getShareInfo()
+    {
+        $member = Members::where('id', $this->member->{'id'})->select(['id', 'invite_code'])->first();
+        $app_url = 'http://'.env('APP_HOST_DOWN_WEB');
+        $share_img = public_path('code_img/code/' . $this->member->{'id'} . 'share_img.png');
+        if (!is_file($share_img)) {
+            file_put_contents($share_img, QrCode::format('png')->size(169)->margin(1)->generate($app_url . '/register?code=' . $member->{'invite_code'}));
+        }
+        $member->{'share_img'} = $app_url . '/code_img/code/' . $this->member->{'id'} . 'share_img.png';
+        return $this->apiResponseSuccess($member, 'member.yes');
+
+    }
+
+    /**
+     * 推荐列表
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getShareList()
+    {
+
+        $direct_ids = Members::where('recom_id', $this->member->{'id'})->pluck('id')->toArray();
+        $m_ids = MemberClans::where('m_id', $this->member->{'id'})->value('m_ids');
+        if (empty($direct_ids)) {
+            $direct_num = 0;
+        } else {
+            $direct_num = 0;
+        }
+        if (empty($m_ids)) {
+            $total_num = 0;
+        } else {
+            $m_ids = array_filter(explode(',', $m_ids));
+            $total_num = 0;
+
+        }
+        $share_list = Members::where('recom_id', $this->member->{'id'})->select(['id', 'invite_code', 'mobile', 'created_at', 'level_id'])->get();
+
+        foreach ($share_list as &$share) {
+            $t_m_ids = MemberClans::where('m_id', $share->{'id'})->value('m_ids');
+            $t_m_ids = explode(',', $t_m_ids);
+            $t_m_ids[] = $share->{'id'};
+            $t_m_ids = array_unique(array_filter($t_m_ids));
+            $share->{'t_num'} = count($t_m_ids);
+            $share->{'contract_num'} = 0;
+            $share->{'level_name'} = Levels::where('id', $share->{'level_id'})->value('name');
+//            $share->{'mobile'} = substr($share->{'mobile'}, 0, 3) . '****' . substr($share->{'mobile'}, 7);
+        }
+
+        return $this->apiResponseSuccess(['list' => $share_list, 'total_num' => $total_num, 'direct_num' => $direct_num], 'member.yes');
+    }
+
+
+    // 上传图片接口
+    public function oneImage(Request $request)
+    {
+        $result = $this->base64ToImage($request->input('image', ""), 'attest');
+
+        if ($result['code'] === false) {
+            return $this->apiResponseError([], 'member.no');
+
+        } else {
+            if ($result) {
+                return $this->apiResponseSuccess(['url' => $result['url']], 'member.yes');
+//                return response()->json([
+//                    'msg' => "成功",
+//                    'data' => [
+//                        'url' => $result['url'],
+//                    ],
+//                    'code' => 1,
+//                ]);
+            } else {
+                return $this->apiResponseError([], 'member.no');
+//                return response()->json([
+//                    'msg' => "失败",
+//                    'data' => [],
+//                    'code' => 0,
+//                ]);
+            }
+        }
+    }
+
+    // base64图片保存
+    protected function base64ToImage($base64ImageContent, $path)
+    {
+        $base64_image_content = $base64ImageContent;
+        if (!empty($base64_image_content)) {
+            $upload_path = "storage" . DIRECTORY_SEPARATOR . $path . DIRECTORY_SEPARATOR . date('Ymd', time()) . DIRECTORY_SEPARATOR;
+            $img_url = md5(uniqid() . time()) . '.jpg';
+            $upload_path1 = public_path($upload_path);
+            if (!is_dir($upload_path1)) {
+                mkdir($upload_path1, 0777, true);
+            }
+            try {
+                $base64_image_content = str_replace('[removed]', '', $base64_image_content);
+                preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result);
+                // oss 上传
+                $oss = Storage::disk('oss');
+                $pathA = "{$upload_path}{$img_url}";
+                if (empty($result[1])) {
+                    $update = $oss->put($pathA, base64_decode($base64_image_content));
+                    if (!$update) { // 如果失败上传本地
+                        file_put_contents($upload_path1 . $img_url, base64_decode($base64_image_content));
+                    }
+                } else {
+                    $update = $oss->put($pathA, base64_decode(str_replace($result[1], '', $base64_image_content)));
+                    if (!$update) { // 如果失败上传本地
+                        file_put_contents($upload_path1 . $img_url, base64_decode(str_replace($result[1], '', $base64_image_content)));
+                    }
+                }
+                return [
+                    'code' => true,
+//                    'url' => $update ? $oss->url($pathA).'?x-oss-process=image/auto-orient,1/resize,p_50/quality,q_60' : asset($pathA),
+//                    'url' => $update ? $oss->url($pathA) . '?x-oss-process=image/auto-orient,1/resize,p_20/quality,q_30' : asset($pathA),
+                    'url' => $update ? $oss->url($pathA) : asset($pathA),
+                ];
+            } catch (\Exception $e) {
+                return [
+                    'code' => false,
+                    'msg' => "图片错误" . $e->getMessage() . " " . $e->getLine(),
+                ];
+            }
+        } else {
+            return [
+                'code' => false,
+                'msg' => "请上传图片",
+            ];
+        }
+    }
+
+
+    /**
+     * 获取用户地址
+     */
+    function getMemberAddress()
+    {
+        $addresslist = MemberAddress::where('member_id', $this->member->{'id'})->where('is_del', '0')->orderBy('is_default', 'asc')->orderBy('id', 'desc')->get();
+        return $this->apiResponseSuccess($addresslist, '获取成功');
+    }
+
+
+    /**
+     * 删除地址
+     */
+    function delMemberAddress()
+    {
+        $a_id = request()->get('a_id', '1');
+        if (empty($a_id)) return $this->apiResponseError([], '缺少必要参数');
+        $row = MemberAddress::where([['id', $a_id], ['member_id', $this->member->{'id'}]])->update(['is_del' => 1]);
+        if ($row) {
+            return $this->apiResponseSuccess([], '删除成功');
+        } else {
+            return $this->apiResponseError([], '删除失败');
+        }
+    }
+
+
+    /**
+     * 编辑用户地址
+     */
+    function editAddress()
+    {
+        $addressid = request()->get('addressid', '1');//地址id
+        $data['member_id'] = $this->member['id'];//用户id
+        $data['consignee'] = request()->get('consignee', '张三3242');//收货人
+        $data['phone'] = request()->get('phone', '13600136001');//收货人手机号
+        $data['is_default'] = request()->get('is_default', '1');//是否默认 1:是\r\n2:否
+        $data['address'] = request()->get('address', '第三方都是');//详细地址
+        $data['area'] = request()->get('area', '2');//区
+        $data['city'] = request()->get('city', '3');//市
+        $data['province'] = request()->get('province', '1');//省
+        $data['city_names'] = request()->get('city_names', '北京市东城区');//省
+        if (empty($data['member_id'])) return $this->apiResponseError([], '用户标识不能为空');
+        if (empty($data['province']) || empty($data['city']) || empty($data['area'])) return $this->apiResponseError([], '省市区不能为空');
+        $data['consignee'] = strip_tags($data['consignee']);
+        if (empty($data['consignee'])) return $this->apiResponseError([], '姓名不能为空');
+        if (mb_strlen($data['consignee'], 'UTF-8') > 10) return $this->apiResponseError([], '姓名过长');
+        if (empty($data['phone'])) return $this->apiResponseError([], '手机号不能为空');
+        $data['address'] = strip_tags($data['address']);
+        if (empty($data['address'])) return $this->apiResponseError([], '请输入详细地址');
+        if (mb_strlen($data['address'], 'UTF-8') > 25) $this->apiResponseError([], '地址过长');
+        if (!MemberServer::verifyMobile($data['phone'])) $this->apiResponseError([], '手机格式不正确');
+        if ($data['is_default'] == 1) {
+            MemberAddress::where('member_id', $this->member->{'id'})->update(['is_default' => 2]);
+        }
+        if (!empty($addressid)) MemberAddress::where('id', $addressid)->update($data);
+        else MemberAddress::create($data);
+        return $this->apiResponseSuccess([], '编辑成功');
+    }
+
+    /**
+     * 设置默认收货地址
+     */
+    function setDefaultAddress()
+    {
+        $address_id = request()->get('address_id', '2');//地址id
+        if (empty($address_id)) return $this->apiResponseError([], '缺少必要参数');
+        $info = MemberAddress::where([['member_id', $this->member['id']], ['id', $address_id]])->first();
+        if (empty($info)) return $this->apiResponseError([], '信息错误');
+        if ($info['is_default'] == 1) {
+            MemberAddress::where('member_id', $this->member->{'id'})->where('id', $address_id)->update(['is_default' => 2]);
+            return $this->apiResponseError([], '取消成功');
+        } else {
+            MemberAddress::where('member_id', $this->member->{'id'})->update(['is_default' => 2]);
+            MemberAddress::where('member_id', $this->member->{'id'})->where('id', $address_id)->update(['is_default' => 1]);
+            return $this->apiResponseSuccess([], '设置成功');
+        }
+    }
+
+    /**
+     * 获取用户地址
+     */
+    function getDefaultAddress()
+    {
+        $address_id = request()->get('address_id', '');
+        $where = [['member_id', $this->member->{'id'}], ['is_del', '0']];
+        if ($address_id) $where[] = ['id', $address_id];
+        $addresslist = MemberAddress::where($where)->orderBy('is_default', 'asc')->orderBy('id', 'desc')->first()->toArray();
+        if (empty($addresslist)) $addresslist = [];
+        return $this->apiResponseSuccess($addresslist, '获取成功');
+    }
+
+    /**
+     * 获取实名认证支付信息
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getAliBindingPay()
+    {
+        if ($this->member->{'status'} != '1') {
+            return $this->apiResponseError([], '当前已完成绑定');
+        }
+        $attestation_sn = IndentNum::getIndentNum(3);
+        $pay_money=Config::where('key','attestation_money')->value('value');
+        if(empty($pay_money))$pay_money=1.68;
+        $aliPay = new PayServer();
+        $notify='http://'.env('APP_HOST_WEB').'/notify';
+        $pay_info=$aliPay->appAliPay($attestation_sn,'实名认证',$pay_money,$notify);
+        if(!empty($pay_info)){
+            AliBinding::where('m_id',$this->member->{'id'})->update(['status'=>5]);
+            AliBinding::create(['m_id'=>$this->member->{'id'},'money'=>$pay_money,'attestation_sn'=>$attestation_sn,'pay_sn'=>'','pay_content'=>'','status'=>1,'ali_open_id'=>'']);
+            return $this->apiResponseSuccess(['pay_info'=>$pay_info,'mobile'=>$this->member->{'mobile'},'money'=>$pay_money,'attestation_sn'=>$attestation_sn],'获取信息成功');
+        }else{
+            return $this->apiResponseError([],'支付信息创建失败');
+        }
+    }
+
+
+    // 支付回调
+    public function notifyUrl()
+    {
+        $aliPay = new PayServer();
+        $aliPay->notifyUrl();
+    }
+
+
+}

+ 97 - 0
app/Http/Controllers/Member/MembersController.php

@@ -0,0 +1,97 @@
+<?php
+
+namespace App\Http\Controllers\Member;
+
+use App\Http\Controllers\AdminBaseController;
+use App\Http\Requests\MemberCreateRequest;
+use App\Http\Requests\MemberUpdateRequest;
+use App\Models\Member;
+use App\Repositories\Eloquent\MemberRepositoryEloquent;
+use App\Servers\MemberServer;
+use App\Validators\MemberValidator;
+
+/**
+ * Class MembersController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class MembersController extends AdminBaseController
+{
+    /**
+     * @var MemberRepositoryEloquent
+     */
+    protected $repository;
+
+    /**
+     * @var MemberValidator
+     */
+    protected $validator;
+
+    /**
+     * MembersController constructor.
+     *
+     * @param MemberRepositoryEloquent $repository
+     * @param MemberValidator $validator
+     */
+    public function __construct(MemberRepositoryEloquent $repository, MemberValidator $validator)
+    {
+        parent::__construct($repository, $validator);
+    }
+
+    /**
+     * 数据检索
+     */
+    public function _indexScopeQuery()
+    {
+        $where = [];
+        $search = explode(";", request()->input('search', ""));
+        $start = $end = null;
+        $fieldSearchable = $this->repository->getFieldsSearchable();
+        foreach ($search as $value) {
+            if (!empty($value)) {
+                list($one, $tow) = explode(":", $value);
+                if (!empty($fieldSearchable[$one])) {
+                    if ($fieldSearchable[$one] == 'like') $tow = "%{$tow}%";
+                    $where[] = [$one, $fieldSearchable[$one], $tow];
+                } elseif ($one == 'start') {
+                    $start = $tow . " 00:00:00";
+                } elseif ($one == 'end') {
+                    $end = $tow . " 23:59:59";
+                } else {
+                    continue;
+                }
+            }
+        }
+        return function ($query) use ($where, $start, $end) {
+            if ($start) $where[] = ['created_at', '>=', $start];
+            if ($end) $where[] = ['created_at', '<=', $end];
+            if ($where) {
+                $query->where($where);
+            }
+        };
+    }
+
+    /**
+     * 数据更新
+     */
+    protected function _indexPost($data)
+    {
+        foreach ($data as $value){
+            $value->{'level_name'}=MemberServer::creatServer()->getLevelName($value->{'level_id'});
+
+        }
+        return $data;
+    }
+
+
+    function selectAll()
+    {
+        return view('admins.members.all');
+    }
+
+    function getUserIds(){
+        $user_ids=Member::where('is_del',0)->pluck('id')->toArray();
+        return $this->success('获取数据成功','',$user_ids);
+    }
+
+}

+ 82 - 0
app/Http/Controllers/MemberClan/MemberClansController.php

@@ -0,0 +1,82 @@
+<?php
+
+namespace App\Http\Controllers\MemberClan;
+
+use App\Http\Controllers\AdminBaseController;
+use App\Http\Requests\MemberClanCreateRequest;
+use App\Http\Requests\MemberClanUpdateRequest;
+use App\Repositories\Eloquent\MemberClanRepositoryEloquent;
+use App\Validators\MemberClanValidator;
+
+/**
+ * Class MemberClansController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class MemberClansController extends AdminBaseController
+{
+    /**
+     * @var MemberClanRepositoryEloquent
+     */
+    protected $repository;
+
+    /**
+     * @var MemberClanValidator
+     */
+    protected $validator;
+
+    /**
+     * MemberClansController constructor.
+     *
+     * @param MemberClanRepositoryEloquent $repository
+     * @param MemberClanValidator $validator
+     */
+    public function __construct(MemberClanRepositoryEloquent $repository, MemberClanValidator $validator)
+    {
+        parent::__construct($repository, $validator);
+    }
+
+    /**
+     * 数据检索
+     */
+     public function _indexScopeQuery()
+        {
+            $where = [];
+            $search = explode(";", request()->input('search', ""));
+            $start = $end = null;
+            $fieldSearchable=$this->repository->getFieldsSearchable();
+            foreach ($search as $value) {
+                if (!empty($value)) {
+                    list($one, $tow) = explode(":", $value);
+                    if (!empty($fieldSearchable[$one])) {
+                        if($fieldSearchable[$one]=='like')$tow="%{$tow}%";
+                        $where[]=[$one,$fieldSearchable[$one],$tow];
+                    } elseif ($one == 'start') {
+                        $start = $tow . " 00:00:00";
+                    } elseif ($one == 'end') {
+                        $end = $tow . " 23:59:59";
+                    } else {
+                        continue;
+                    }
+                }
+            }
+            return function ($query) use ($where, $start, $end) {
+
+                if ($start) $where[] = ['created_at', '>=', $start];
+                if ($end) $where[] = ['created_at', '<=', $end];
+                if ($where) {
+                    $query->where($where);
+                }
+
+            };
+        }
+
+   /**
+     * 数据更新
+     */
+    protected function _indexPost($datum)
+    {
+        return $datum;
+    }
+
+}

+ 82 - 0
app/Http/Controllers/MemberLog/MemberLogsController.php

@@ -0,0 +1,82 @@
+<?php
+
+namespace App\Http\Controllers\MemberLog;
+
+use App\Http\Controllers\AdminBaseController;
+use App\Http\Requests\MemberLogCreateRequest;
+use App\Http\Requests\MemberLogUpdateRequest;
+use App\Repositories\Eloquent\MemberLogRepositoryEloquent;
+use App\Validators\MemberLogValidator;
+
+/**
+ * Class MemberLogsController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class MemberLogsController extends AdminBaseController
+{
+    /**
+     * @var MemberLogRepositoryEloquent
+     */
+    protected $repository;
+
+    /**
+     * @var MemberLogValidator
+     */
+    protected $validator;
+
+    /**
+     * MemberLogsController constructor.
+     *
+     * @param MemberLogRepositoryEloquent $repository
+     * @param MemberLogValidator $validator
+     */
+    public function __construct(MemberLogRepositoryEloquent $repository, MemberLogValidator $validator)
+    {
+        parent::__construct($repository, $validator);
+    }
+
+    /**
+     * 数据检索
+     */
+     public function _indexScopeQuery()
+        {
+            $where = [];
+            $search = explode(";", request()->input('search', ""));
+            $start = $end = null;
+            $fieldSearchable=$this->repository->getFieldsSearchable();
+            foreach ($search as $value) {
+                if (!empty($value)) {
+                    list($one, $tow) = explode(":", $value);
+                    if (!empty($fieldSearchable[$one])) {
+                        if($fieldSearchable[$one]=='like')$tow="%{$tow}%";
+                        $where[]=[$one,$fieldSearchable[$one],$tow];
+                    } elseif ($one == 'start') {
+                        $start = $tow . " 00:00:00";
+                    } elseif ($one == 'end') {
+                        $end = $tow . " 23:59:59";
+                    } else {
+                        continue;
+                    }
+                }
+            }
+            return function ($query) use ($where, $start, $end) {
+
+                if ($start) $where[] = ['created_at', '>=', $start];
+                if ($end) $where[] = ['created_at', '<=', $end];
+                if ($where) {
+                    $query->where($where);
+                }
+
+            };
+        }
+
+   /**
+     * 数据更新
+     */
+    protected function _indexPost($datum)
+    {
+        return $datum;
+    }
+
+}

+ 309 - 0
app/Http/Controllers/Menu/MenusController.php

@@ -0,0 +1,309 @@
+<?php
+
+namespace App\Http\Controllers\Menu;
+
+use App\Http\Controllers\AdminBaseController;
+use App\Http\Requests\MenuCreateRequest;
+use App\Http\Requests\MenuUpdateRequest;
+use App\Models\Menu;
+use App\Repositories\Eloquent\MenuRepositoryEloquent;
+use App\Validators\MenuValidator;
+
+/**
+ * Class MenusController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class MenusController extends AdminBaseController
+{
+    /**
+     * @var MenuRepositoryEloquent
+     */
+    protected $repository;
+
+    /**
+     * @var MenuValidator
+     */
+    protected $validator;
+
+    /**
+     * MenusController constructor.
+     *
+     * @param MenuRepositoryEloquent $repository
+     * @param MenuValidator $validator
+     */
+    public function __construct(MenuRepositoryEloquent $repository, MenuValidator $validator)
+    {
+        parent::__construct($repository, $validator);
+    }
+
+    /**
+     * 数据检索
+     */
+    public function _indexScopeQuery()
+    {
+        $where = [];
+        $search = explode(";", request()->input('search', ""));
+        $start = $end = null;
+        $fieldSearchable = $this->repository->getFieldsSearchable();
+        $p_id = request()->input('p_id', '0');
+        $where [] = ['is_del', 0];
+        $where [] = ['p_id', $p_id];
+        $where [] = ['version', 1];//获取未修改之前版本的菜单
+        foreach ($search as $value) {
+            if (!empty($value)) {
+                list($one, $tow) = explode(":", $value);
+                if (!empty($fieldSearchable[$one])) {
+                    if ($fieldSearchable[$one] == 'like') $tow = "%{$tow}%";
+                    $where[] = [$one, $fieldSearchable[$one], $tow];
+                } elseif ($one == 'start') {
+                    $start = $tow . " 00:00:00";
+                } elseif ($one == 'end') {
+                    $end = $tow . " 23:59:59";
+                } else {
+                    continue;
+                }
+            }
+        }
+        return function ($query) use ($where, $start, $end) {
+
+            if ($start) $where[] = ['created_at', '>=', $start];
+            if ($end) $where[] = ['created_at', '<=', $end];
+            if ($where) {
+                $query->where($where);
+            }
+
+        };
+    }
+
+    /**
+     * 数据更新
+     */
+    protected function _indexPost($datum)
+    {
+        foreach ($datum as $item) {
+            if ($item->level <= 1) {
+                $item->skip = '';
+            } else {
+                $item->skip = 'skip';
+            }
+            $item->{'level'} = $item->{'level'} == 0 ? '一级菜单' : ($item->{'level'} == 2 ? '三级菜单' : '二级菜单');
+        }
+        return $datum;
+    }
+
+
+    /**
+     * 创建数据组建
+     * @return array
+     */
+    function _storeGet()
+    {
+        $p_id = request()->input('p_id');
+        $level = request()->input('level', '0');
+        $level_list = $this->getLevelList($level);
+        $one_id = $two_id = 0;
+        if ($level == 2) {
+            $two_id = $p_id;
+            $one_id = Menu::where('id', $p_id)->value('p_id');
+        } elseif ($level == 1) {
+            $one_id = $p_id;
+        }
+        return ['p_id' => $p_id, 'level_list' => json_encode($level_list, JSON_UNESCAPED_SLASHES), 'level' => $level, 'two_id' => $two_id, 'one_id' => $one_id];
+    }
+
+    function _storePost()
+    {
+        $menu_name = request()->input('menu_name', '');
+        if (empty($menu_name)) {
+            $this->errorMsg = "请输入菜单名称";
+            return false;
+        }
+        $level = request()->input('level', '0');
+        $p_id = 0;
+        $url_name = $label_name = $p_ids = '';
+        if ($level == 0) {
+            $label_name = request()->input('label_name', '');
+            if (empty($label_name)) {
+                $this->errorMsg = "请选择菜单标签";
+                return false;
+            }
+        } elseif ($level == 1) {
+            $url_name = request()->input('url_name', '');
+            if (empty($url_name)) {
+                $this->errorMsg = "请输入访问地址";
+                return false;
+            }
+            $one_name = request()->input('one_name', '0');
+            if (empty($one_name)) {
+                $this->errorMsg = "请选择父级菜单";
+                return false;
+            }
+            $p_ids = $p_id = $one_name;
+        } else {
+            $one_name = request()->input('one_name', '0');
+            $two_name = request()->input('two_name', '0');
+            if (empty($two_name)) {
+                $this->errorMsg = "请选择父级菜单";
+                return false;
+            }
+            $p_ids = $one_name . ',' . $two_name;
+            $p_id = $two_name;
+        }
+        $data = compact('p_id', 'p_ids', 'url_name', 'label_name', 'level', 'menu_name');
+        return Menu::create($data);
+
+    }
+
+    /**
+     * 修改数据组建
+     * @param $id
+     * @return array
+     */
+    function _editGet($id)
+    {
+        $model = $this->repository->find($id);
+        $one_id = $two_id = 0;
+        if ($model->{'level'} == 2) {
+            $two_id = $model->{'p_id'};
+            $one_id = Menu::where('id', $model->{'p_id'})->value('p_id');
+        } elseif ($model->{'level'} == 1) {
+            $one_id = $model->{'p_id'};
+        }
+        $level_list = $this->getLevelList($model->{'level'});
+        return ['model' => $model, 'p_id' => $model->{'p_id'}, 'level_list' => json_encode($level_list, JSON_UNESCAPED_SLASHES), 'level' => $model->{'level'}, 'two_id' => $two_id, 'one_id' => $one_id];
+    }
+
+    function _updatePost($request, $id)
+    {
+        $menu_name = request()->input('menu_name', '');
+        if (empty($menu_name)) {
+            $this->errorMsg = "请输入菜单名称";
+            return false;
+        }
+        $level = request()->input('level', '0');
+        $p_id = 0;
+        $url_name = $label_name = $p_ids = '';
+        if ($level == 0) {
+            $label_name = request()->input('label_name', '');
+            if (empty($label_name)) {
+                $this->errorMsg = "请选择菜单标签";
+                return false;
+            }
+        } elseif ($level == 1) {
+            $url_name = request()->input('url_name', '');
+            if (empty($url_name)) {
+                $this->errorMsg = "请输入访问地址";
+                return false;
+            }
+            $one_name = request()->input('one_name', '0');
+            if (empty($one_name)) {
+                $this->errorMsg = "请选择父级菜单";
+                return false;
+            }
+            $p_ids = $p_id = $one_name;
+        } else {
+            $one_name = request()->input('one_name', '0');
+            $two_name = request()->input('two_name', '0');
+            if (empty($two_name)) {
+                $this->errorMsg = "请选择父级菜单";
+                return false;
+            }
+            $p_ids = $one_name . ',' . $two_name;
+            $p_id = $two_name;
+        }
+        $data = compact('p_id', 'p_ids', 'url_name', 'label_name', 'level', 'menu_name');
+        return Menu::where('id', $id)->update($data);
+    }
+
+
+    /**
+     * 获取层级菜单组件
+     * @return array
+     */
+    private function getLevelList($level = '0')
+    {
+        $option = [
+            'checked' => $level . '',
+            'attr' => [
+                [
+                    'value' => '0',
+                    'label' => "一级菜单",
+                    'disabled' => false,
+                    'notice' => '*'
+                ],
+                [
+                    'value' => '1',
+                    'label' => "二级菜单",
+                    'disabled' => false,
+                    'notice' => '*'
+                ],
+                [
+                    'value' => '2',
+                    'label' => "三级菜单",
+                    'disabled' => false,
+                    'notice' => '*'
+                ],
+            ]
+        ];
+        return $option;
+    }
+
+    /**
+     * 获取父级菜单组件信息
+     * @return array
+     */
+    private function getMenuList($p_id = '0')
+    {
+        $option = [
+            'checked' => $p_id . '',
+            'attr' => [
+                [
+                    'value' => '0',
+                    'label' => "请选择菜单",
+                    'disabled' => false,
+                    'notice' => '*'
+                ]
+            ]
+        ];
+        $menu_list = Menu::where('p_id', 0)->where('version',1)->select(['id', 'menu_name'])->get();
+        foreach ($menu_list as $menu) {
+            $option['attr'][] = [
+                'value' => $menu->{'id'},
+                'label' => $menu->{'menu_name'},
+                'disabled' => false,
+                'notice' => '*'
+            ];
+        }
+        return $option;
+    }
+
+
+    /**
+     * 获取父级数据
+     * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
+     */
+    function getParentMenuList()
+    {
+        $p_id = request()->input('p_id', '0');
+        $option = [
+            [
+                'value' => '0',
+                'label' => "请选择菜单",
+                'disabled' => false,
+                'notice' => '*'
+            ]
+        ];
+        $menu_list = Menu::where('p_id', $p_id)->where('version',1)->select(['id', 'menu_name'])->get();
+        foreach ($menu_list as $menu) {
+            $option[] = [
+                'value' => $menu->{'id'},
+                'label' => $menu->{'menu_name'},
+                'disabled' => false,
+                'notice' => '*'
+            ];
+        }
+        return $this->response('获取数据成功', 'success', '', '', $option);
+    }
+
+}

+ 176 - 0
app/Http/Controllers/MenuUrl/MenuUrlsController.php

@@ -0,0 +1,176 @@
+<?php
+
+namespace App\Http\Controllers\MenuUrl;
+
+use App\Http\Controllers\AdminBaseController;
+use App\Http\Requests\MenuUrlCreateRequest;
+use App\Http\Requests\MenuUrlUpdateRequest;
+use App\Models\Menu;
+use App\Models\MenuUrl;
+use App\Repositories\Eloquent\MenuUrlRepositoryEloquent;
+use App\Validators\MenuUrlValidator;
+use Illuminate\Support\Facades\DB;
+
+/**
+ * Class MenuUrlsController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class MenuUrlsController extends AdminBaseController
+{
+    /**
+     * @var MenuUrlRepositoryEloquent
+     */
+    protected $repository;
+
+    /**
+     * @var MenuUrlValidator
+     */
+    protected $validator;
+
+    /**
+     * MenuUrlsController constructor.
+     *
+     * @param MenuUrlRepositoryEloquent $repository
+     * @param MenuUrlValidator $validator
+     */
+    public function __construct(MenuUrlRepositoryEloquent $repository, MenuUrlValidator $validator)
+    {
+        parent::__construct($repository, $validator);
+    }
+
+    /**
+     * 数据检索
+     */
+    public function _indexScopeQuery()
+    {
+        $where = [];
+        $search = explode(";", request()->input('search', ""));
+        $start = $end = null;
+        $fieldSearchable = $this->repository->getFieldsSearchable();
+        foreach ($search as $value) {
+            if (!empty($value)) {
+                list($one, $tow) = explode(":", $value);
+                if (!empty($fieldSearchable[$one])) {
+                    if ($fieldSearchable[$one] == 'like') $tow = "%{$tow}%";
+                    $where[] = [$one, $fieldSearchable[$one], $tow];
+                } elseif ($one == 'start') {
+                    $start = $tow . " 00:00:00";
+                } elseif ($one == 'end') {
+                    $end = $tow . " 23:59:59";
+                } else {
+                    continue;
+                }
+            }
+        }
+        return function ($query) use ($where, $start, $end) {
+
+            if ($start) $where[] = ['created_at', '>=', $start];
+            if ($end) $where[] = ['created_at', '<=', $end];
+            if ($where) {
+                $query->where($where);
+            }
+
+        };
+    }
+
+    protected function _indexJoin()
+    {
+        return MenuUrl::from('menu_urls as u')->leftJoin('menus as m', 'u.menu_id', '=', 'm.id');
+    }
+
+    protected function _indexSelect()
+    {
+        return ['u.url_name', 'u.id', 'u.url', 'u.created_at', 'u.updated_at', 'm.menu_name'];
+    }
+
+    /**
+     * 修改数据组建
+     * @param $id
+     * @return array
+     */
+    function _editGet($id)
+    {
+        $model = $this->repository->find($id);
+        $option = [
+            [
+                'value' => '0',
+                'label' => "请选择菜单",
+                'disabled' => false,
+                'notice' => '*'
+            ]
+        ];
+        $menu_list = Menu::where('p_id', 0)->select(['id', 'menu_name'])->get();
+        foreach ($menu_list as $menu) {
+            $option[] = [
+                'value' => $menu->{'id'},
+                'label' => $menu->{'menu_name'},
+                'disabled' => false,
+                'notice' => '*'
+            ];
+        }
+        return ['model' => $model, 'one_list' => json_encode($option, JSON_UNESCAPED_SLASHES)];
+    }
+
+
+    /**
+     * 更新路由菜单信息
+     * @return bool
+     * @throws \Exception
+     */
+    function _updatePost()
+    {
+        $data = request()->input();
+        if (empty($data['url_name'])) {
+            $this->errorMsg = '请输入地址名称';
+            return false;
+        }
+        if (empty($data['child_id'])) {
+            $this->errorMsg = '请选择对应菜单';
+            return false;
+        }
+        DB::beginTransaction();
+        //删除二级信息
+        $this->delAuth($data['id'],'1');
+        //删除三级信息
+        $this->delAuth($data['id'],'2');
+
+        //添加二级信息
+        $this->addAuth($data['menu_id'],$data['id']);
+        //添加三级信息
+        $this->addAuth($data['child_id'],$data['id']);
+
+        MenuUrl::where('id', $data['id'])->update($data);
+        DB::commit();
+        return true;
+    }
+
+    /**
+     * 删除授权ID
+     * @param $del_id
+     * @param string $type
+     */
+    private function delAuth($del_id,$type='1'){
+        $old_menu_id = MenuUrl::where('id', $del_id)->value($type=='1'?'menu_id':'child_id');
+        if (!empty($old_menu_id)) {
+            $old_url_ids = Menu::where('id', $old_menu_id)->value('url_ids');
+            $old_url_ids = explode(',', $old_url_ids);
+            $old_url_ids = array_diff($old_url_ids, [$del_id]);
+            Menu::where('id', $old_menu_id)->update(['url_ids' => implode(',', $old_url_ids)]);
+        }
+    }
+
+    /**
+     * 添加授权ID
+     * @param $menu_id
+     * @param $add_id
+     */
+    private function addAuth($menu_id,$add_id){
+        $menu_url_ids = Menu::where('id', $menu_id)->value('url_ids');
+        $menu_url_ids = explode(',', $menu_url_ids);
+        $menu_url_ids[] = $add_id;
+        Menu::where('id', $menu_id)->update(['url_ids' => implode(',', $menu_url_ids)]);
+    }
+
+
+}

+ 78 - 0
app/Http/Controllers/MoneyDetail/Front/MoneyDetailsController.php

@@ -0,0 +1,78 @@
+<?php
+
+namespace App\Http\Controllers\MoneyDetail\Front;
+
+use App\Http\Controllers\FrontController;
+use App\Models\MoneyDetail;
+use App\Models\MoneyDetails;
+use App\Servers\MoneyDetailServer;
+use Carbon\Carbon;
+use Illuminate\Support\Facades\Auth;
+
+class MoneyDetailsController extends FrontController
+{
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * @param int $size
+     * @return \Illuminate\Http\JsonResponse
+     *
+     * 货币
+     */
+    public function index($size = 20)
+    {
+        $status=request()->input('status','0');
+        $type = request()->input('coin_id', 1);
+        if($status==2 && $type==3){
+            $status=[5,6,7,11,12,13,21];
+        }else{
+            $status=['1',2,3,4,8,9,10,14,15,20,22];
+        }
+        $details = MoneyDetails::where('type', $type)
+            ->whereIn('status', $status)
+            ->where('member_id', $this->member->{'id'})
+            ->orderBy('id', 'desc')
+            ->paginate($size);
+        $data = array();
+        foreach ($details as $key => $detail) {
+            if ($detail->add_reduce == 2) {
+                $data[$key]['price'] = -$detail->price;  // 转出数目
+            } else {
+                $data[$key]['price'] = $detail->price;  // 转出数目
+            }
+            $data[$key]['remainder'] = $detail->remainder;               // 余
+            $data[$key]['id'] = $detail->id;               // 余
+            if (request()->input('lang', 'zh') == 'zh') {
+                $data[$key]['mark'] = $detail->mark;   // 明细
+                $data[$key]['status_str'] = MoneyDetailServer::$status_map[$detail->status];
+            } else {
+                $data[$key]['mark'] = $detail->mark_en;   // 明细
+                $data[$key]['status_str'] = MoneyDetailServer::$status_map_en[$detail->status];
+            }
+            $data[$key]['created_at'] = Carbon::parse($detail->created_at, config('app.timezone'))->format('Y/m/d H:i');   // 时间
+        }
+        return $this->apiResponseSuccess($data, 'member.yes');
+    }
+
+    /**
+     * 获取明细详情
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function info()
+    {
+        $id = request()->input('id',1);
+//        withdraw_config
+        $details = MoneyDetails::where('id', $id)->first()->toArray();
+        $details['coin_name'] = MoneyDetailServer::$type_map[$details['type']];
+        if (request()->input('lang', 'zh') == 'zh') {
+            $details['status_str'] = MoneyDetailServer::$status_map[$details['status']];
+        } else {
+            $details['mark'] = $details['mark_en'] ;   // 明细
+            $details['status_str'] = MoneyDetailServer::$status_map_en[$details['status']];
+        }
+        return $this->apiResponseSuccess($details, 'member.yes');
+    }
+}

+ 107 - 0
app/Http/Controllers/MoneyDetail/MoneyDetailsController.php

@@ -0,0 +1,107 @@
+<?php
+
+namespace App\Http\Controllers\MoneyDetail;
+
+use App\Http\Controllers\AdminBaseController;
+use App\Http\Requests\MoneyDetailCreateRequest;
+use App\Http\Requests\MoneyDetailUpdateRequest;
+use App\Models\MoneyDetail;
+use App\Repositories\Eloquent\MoneyDetailRepositoryEloquent;
+use App\Servers\MoneyDetailServer;
+use App\Validators\MoneyDetailValidator;
+
+/**
+ * Class MoneyDetailsController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class MoneyDetailsController extends AdminBaseController
+{
+    /**
+     * @var MoneyDetailRepositoryEloquent
+     */
+    protected $repository;
+
+    /**
+     * @var MoneyDetailValidator
+     */
+    protected $validator;
+
+    /**
+     * MoneyDetailsController constructor.
+     *
+     * @param MoneyDetailRepositoryEloquent $repository
+     * @param MoneyDetailValidator $validator
+     */
+    public function __construct(MoneyDetailRepositoryEloquent $repository, MoneyDetailValidator $validator)
+    {
+        parent::__construct($repository, $validator);
+    }
+
+    /**
+     * 数据检索
+     */
+    public function _indexScopeQuery()
+    {
+        $where = [];
+        $search = explode(";", request()->input('search', ""));
+        $start = $end = null;
+        $fieldSearchable = $this->repository->getFieldsSearchable();
+        foreach ($search as $value) {
+            if (!empty($value)) {
+                list($one, $tow) = explode(":", $value);
+                if (!empty($fieldSearchable[$one])) {
+                    if ($fieldSearchable[$one] == 'like') $tow = "%{$tow}%";
+                    $where[] = [$one, $fieldSearchable[$one], $tow];
+                } elseif ($one == 'start') {
+                    $start = $tow . " 00:00:00";
+                } elseif ($one == 'end') {
+                    $end = $tow . " 23:59:59";
+                } else {
+                    continue;
+                }
+            }
+        }
+        return function ($query) use ($where, $start, $end) {
+
+            if ($start) $where[] = ['created_at', '>=', $start];
+            if ($end) $where[] = ['created_at', '<=', $end];
+            if ($where) {
+                $query->where($where);
+            }
+
+        };
+    }
+
+    /**
+     * 数据更新
+     */
+    protected function _indexPost($datum)
+    {
+        foreach ($datum as $value){
+            $value->{'type'}=MoneyDetailServer::creatServer()->getTypeArr($value->{'type'});
+            $value->{'status'}=MoneyDetailServer::creatServer()->getStatusArr($value->{'status'});
+            $value->{'add_reduce'}=MoneyDetailServer::creatServer()->getAddReduceArr($value->{'add_reduce'});
+        }
+        return $datum;
+    }
+
+    function _indexGet(){
+        $type=MoneyDetailServer::creatServer()->getType();
+        $status=MoneyDetailServer::creatServer()->getStatus();
+        return ['type'=>$type,'status'=>$status];
+    }
+
+    function _indexJoin()
+    {
+        $model = MoneyDetail::from('money_details as d')
+            ->leftJoin('members as m', 'm.id', '=', 'd.m_id');
+        return $model;
+    }
+
+    function _indexSelect()
+    {
+        return ['d.*', 'm.nickname', 'm.phone'];
+    }
+
+}

+ 19 - 0
app/Http/Controllers/Notice/Front/NoticesController.php

@@ -0,0 +1,19 @@
+<?php
+
+
+namespace App\Http\Controllers\Notice\Front;
+
+
+use App\Http\Controllers\FrontController;
+use App\Models\Answer;
+use App\Models\Notice;
+use App\Models\Question;
+use Carbon\Carbon;
+
+class NoticesController extends FrontController
+{
+    public function __construct()
+    {
+        parent::__construct();
+    }
+}

+ 118 - 0
app/Http/Controllers/Notice/Front/NoticesNotTokenController.php

@@ -0,0 +1,118 @@
+<?php
+
+namespace App\Http\Controllers\Notice\Front;
+
+use App\Http\Controllers\FrontController;
+use App\Http\Controllers\FrontNotTokenController;
+use App\Models\Message;
+use App\Models\Notice;
+use App\Models\NoticeRead;
+use App\Models\Notices;
+use Carbon\Carbon;
+
+// 首页公告接口
+class NoticesNotTokenController extends FrontController
+{
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * @return \Illuminate\Http\JsonResponse
+     *
+     * 首页公告标题
+     */
+    public function indexTitleLists()
+    {
+        $type=request()->get('type','1');
+        $member_id = request()->get('m_id', '');
+        $lists = Notices::select(['id', 'title', 'title_en', 'created_at', 'updated_at'])
+            ->where([['show', '>=', 1]])            // 显示公告
+            ->orderBy('id', 'DESC')                   // 最新正序排序
+//            ->orderBy('sort', 'ASC')                  // 正序排序
+            ->get();
+        $data = array();
+        $lang=request()->input('lang', 'zh');
+        foreach ($lists as $key => $list){
+            $data[$key]['id']      = $list->{'id'};
+            if ( $lang == 'zh' ) {
+                $data[$key]['title']   = $list->{'title'};
+            }else{
+                $data[$key]['title']   = $list->{'title_en'};
+            }
+            $data[$key]['created_at']   = Carbon::parse($list->{'created_at'}, config('app.timezone'))->format('Y.m.d');
+            $data[$key]['updated_at']   = Carbon::parse($list->{'updated_at'}, config('app.timezone'))->format('Y.m.d');
+            if(!empty($member_id)){
+                $num = NoticeRead::where('member_id', $member_id)->where('n_id', $data[$key]['id'])->count();
+                $data[$key]['is_read'] =$num>0?1:0;
+            }else{
+                $data[$key]['is_read'] =0;
+            }
+        }
+
+        return $this->apiResponseSuccess($data, 'notice.index_title_lists');
+    }
+
+    /**
+     * @param int $id                           ## 会员ID
+     * @return \Illuminate\Http\JsonResponse
+     *
+     * 获取指定公告列表详情
+     */
+    public function detail($id = 0)
+    {
+        if ( empty($id) ) {
+            return $this->apiResponseError([], 'notice.detail_error');
+        }
+
+        $notice = Notices::select(['id', 'title', 'title_en', 'content', 'content_en', 'created_at', 'updated_at'])
+            ->where('show', '>=', 1)
+            ->where('id', $id)
+            ->first();
+        if ( empty($notice) ) {
+            return $this->apiResponseError([], 'notice.detail_error');
+        }
+
+        $data['id'] = $notice->{'id'};
+        if ( request()->input('lang', 'zh') == 'zh' ) {
+            $data['title'] = $notice->{'title'};
+            $data['content'] = $notice->{'content'};
+        }else{
+            $data['title'] = $notice->{'title_en'};
+            $data['content'] = $notice->{'content_en'};
+        }
+        $data['created_at']   = Carbon::parse($notice->{'created_at'}, config('app.timezone'))->format('Y.m.d');
+        $data['updated_at']   = Carbon::parse($notice->{'updated_at'}, config('app.timezone'))->format('Y.m.d');
+        $member_id = request()->get('m_id', '');
+        if(!empty($member_id)){
+            $num = NoticeRead::where('member_id', $member_id)->where('n_id',$data['id'])->count();
+            if($num<=0)NoticeRead::create(['member_id'=> $member_id,'n_id'=> $data['id']]);
+        }
+        return $this->apiResponseSuccess($data, 'notice.detail_success');
+    }
+
+    /**
+     * 获取未读数量
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function getNotReadNum()
+    {
+        $member_id = request()->get('m_id', '');
+        if ($member_id) {
+            $n_ids = Notices::where('type', '=', '5')->pluck('id')->toArray();
+            if (empty($n_ids)) {
+                $num = 0;
+            } else {
+                $num = NoticeRead::where('member_id', $member_id)->whereIn('n_id', $n_ids)->count();
+                $num = count($n_ids) - $num;
+                if ($num <= 0) $num = 0;
+            }
+
+        } else {
+            $num = 0;
+        }
+        $msg_num=Message::where('member_id',$member_id)->where('is_new','1')->count();
+        return $this->apiResponseSuccess(['notice_num'=>$num,'msg_num'=>$msg_num], 'notice.detail_success');
+    }
+}

+ 82 - 0
app/Http/Controllers/Notice/NoticesController.php

@@ -0,0 +1,82 @@
+<?php
+
+namespace App\Http\Controllers\Notice;
+
+use App\Http\Controllers\AdminBaseController;
+use App\Http\Requests\NoticeCreateRequest;
+use App\Http\Requests\NoticeUpdateRequest;
+use App\Repositories\Eloquent\NoticeRepositoryEloquent;
+use App\Validators\NoticeValidator;
+
+/**
+ * Class NoticesController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class NoticesController extends AdminBaseController
+{
+    /**
+     * @var NoticeRepositoryEloquent
+     */
+    protected $repository;
+
+    /**
+     * @var NoticeValidator
+     */
+    protected $validator;
+
+    /**
+     * NoticesController constructor.
+     *
+     * @param NoticeRepositoryEloquent $repository
+     * @param NoticeValidator $validator
+     */
+    public function __construct(NoticeRepositoryEloquent $repository, NoticeValidator $validator)
+    {
+        parent::__construct($repository, $validator);
+    }
+
+    /**
+     * 数据检索
+     */
+     public function _indexScopeQuery()
+        {
+            $where = [];
+            $search = explode(";", request()->input('search', ""));
+            $start = $end = null;
+            $fieldSearchable=$this->repository->getFieldsSearchable();
+            foreach ($search as $value) {
+                if (!empty($value)) {
+                    list($one, $tow) = explode(":", $value);
+                    if (!empty($fieldSearchable[$one])) {
+                        if($fieldSearchable[$one]=='like')$tow="%{$tow}%";
+                        $where[]=[$one,$fieldSearchable[$one],$tow];
+                    } elseif ($one == 'start') {
+                        $start = $tow . " 00:00:00";
+                    } elseif ($one == 'end') {
+                        $end = $tow . " 23:59:59";
+                    } else {
+                        continue;
+                    }
+                }
+            }
+            return function ($query) use ($where, $start, $end) {
+
+                if ($start) $where[] = ['created_at', '>=', $start];
+                if ($end) $where[] = ['created_at', '<=', $end];
+                if ($where) {
+                    $query->where($where);
+                }
+
+            };
+        }
+
+   /**
+     * 数据更新
+     */
+    protected function _indexPost($datum)
+    {
+        return $datum;
+    }
+
+}

+ 82 - 0
app/Http/Controllers/NoticeRead/NoticeReadsController.php

@@ -0,0 +1,82 @@
+<?php
+
+namespace App\Http\Controllers\NoticeRead;
+
+use App\Http\Controllers\AdminBaseController;
+use App\Http\Requests\NoticeReadCreateRequest;
+use App\Http\Requests\NoticeReadUpdateRequest;
+use App\Repositories\Eloquent\NoticeReadRepositoryEloquent;
+use App\Validators\NoticeReadValidator;
+
+/**
+ * Class NoticeReadsController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class NoticeReadsController extends AdminBaseController
+{
+    /**
+     * @var NoticeReadRepositoryEloquent
+     */
+    protected $repository;
+
+    /**
+     * @var NoticeReadValidator
+     */
+    protected $validator;
+
+    /**
+     * NoticeReadsController constructor.
+     *
+     * @param NoticeReadRepositoryEloquent $repository
+     * @param NoticeReadValidator $validator
+     */
+    public function __construct(NoticeReadRepositoryEloquent $repository, NoticeReadValidator $validator)
+    {
+        parent::__construct($repository, $validator);
+    }
+
+    /**
+     * 数据检索
+     */
+     public function _indexScopeQuery()
+        {
+            $where = [];
+            $search = explode(";", request()->input('search', ""));
+            $start = $end = null;
+            $fieldSearchable=$this->repository->getFieldsSearchable();
+            foreach ($search as $value) {
+                if (!empty($value)) {
+                    list($one, $tow) = explode(":", $value);
+                    if (!empty($fieldSearchable[$one])) {
+                        if($fieldSearchable[$one]=='like')$tow="%{$tow}%";
+                        $where[]=[$one,$fieldSearchable[$one],$tow];
+                    } elseif ($one == 'start') {
+                        $start = $tow . " 00:00:00";
+                    } elseif ($one == 'end') {
+                        $end = $tow . " 23:59:59";
+                    } else {
+                        continue;
+                    }
+                }
+            }
+            return function ($query) use ($where, $start, $end) {
+
+                if ($start) $where[] = ['created_at', '>=', $start];
+                if ($end) $where[] = ['created_at', '<=', $end];
+                if ($where) {
+                    $query->where($where);
+                }
+
+            };
+        }
+
+   /**
+     * 数据更新
+     */
+    protected function _indexPost($datum)
+    {
+        return $datum;
+    }
+
+}

+ 188 - 0
app/Http/Controllers/Permission/PermissionsController.php

@@ -0,0 +1,188 @@
+<?php
+
+namespace App\Http\Controllers\Permission;
+
+use App\Http\Controllers\AdminBaseController;
+use App\Models\Permission;
+use App\Models\Role;
+use App\Repositories\Eloquent\PermissionRepositoryEloquent;
+use App\Validators\PermissionValidator;
+use Illuminate\Contracts\Routing\ResponseFactory;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+
+/**
+ * Class PermissionsController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class PermissionsController extends AdminBaseController
+{
+    /**
+     * PermissionsController constructor.
+     *
+     * @param PermissionRepositoryEloquent $repository
+     * @param PermissionValidator $validator
+     */
+    public function __construct(PermissionRepositoryEloquent $repository, PermissionValidator $validator)
+    {
+        parent::__construct($repository, $validator);
+    }
+
+    /**
+     * @param Request $request
+     * @param ResponseFactory $response
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View
+     * @throws \Prettus\Repository\Exceptions\RepositoryException
+     *
+     */
+    protected function index(Request $request, ResponseFactory $response)
+    {
+        if( $request->isMethod('post') && $request->ajax() ){
+            $roleID = $request->input('id');    // roleID
+            // 查询关联信息
+            $datum = DB::table('role_has_permissions as rhp')
+                ->select(['rhp.permission_id', 'rhp.role_id', 'p.name', 'p.routes', 'p.created_at', 'p.updated_at'])
+                ->RightJoin('permissions as p', 'p.id', '=', 'rhp.permission_id')
+                ->where('rhp.role_id', '=', $roleID)
+                ->paginate($request->pageSize);
+
+            foreach ( $datum as &$data ) {
+                $data->id = "{$data->permission_id}-{$data->role_id}";
+            }
+            unset($data);
+
+            if( $request->wantsJson() ){
+                return $response->json([
+                    "total" => $datum->total(), // $datum->total() 返回总行数
+                    "rows" => $datum->items(),  // 返回当前查询出来的数据
+                    "data" => $datum,           // 返回当前对象
+                ]);
+            }
+        }
+
+        $params = array();
+        $params['id']   = request()->input('id', 0);
+        $params['role'] = Role::where('id', $params['id'])->first();
+
+        return view("admins.{$this->tables}.index", (array)$params);
+    }
+
+    // 会员编辑
+    protected function _storeGet($request)
+    {
+
+        $roleID = $request->input('id', 0); // 角色ID
+        // 查询会员绑定的权限
+        $permissions = DB::table('role_has_permissions')
+            ->where('role_id', '=', $roleID)
+            ->get();
+
+        $permissionIDS = array();           // 已绑定权限
+        foreach ( $permissions as $permission ) {
+            $permissionIDS[] = $permission->permission_id;
+        }
+
+        // 查询当前
+//        $notBindingPermission = DB::table('permissions')->whereNotIn('id', $permissionIDS)->get();
+
+
+        $list= Permission::where('p_id','0')->where('type',1)->where('is_del','0')->select(['id','name as label'])->orderBy('sort','asc')->get()->toArray();
+        foreach ($list as &$item){
+            $item['children']=Permission::where('p_id',$item['id'])->where('type',2)->where('is_del','0')->select(['id','name as label'])->orderBy('sort','asc')->get()->toArray();
+            foreach ($item['children'] as &$value){
+                $child=Permission::where('p_id',$value['id'])->where('type',3)->where('is_del','0')->select(['id','name as label'])->orderBy('sort','asc')->get()->toArray();
+                if($child)$value['children']=$child;
+            }
+        }
+
+
+
+
+//        $checkboxs = array();
+//        foreach ( $notBindingPermission as $key=>$value ) {
+//            $checkboxs[] = array(
+//                'value' => $value->id,
+//                'label' => $value->name,
+//                'disable' => "",
+//                'checked' => false,
+//            );
+//        }
+////
+//        $params['checkboxs'] = json_encode($checkboxs);
+        $params['list'] = json_encode($list);
+        $params['select_ids'] = $permissionIDS;
+        $params['role_id'] = $roleID;
+
+        return $params;
+    }
+
+    protected function _storePost($request)
+    {
+        $ids = $request->input('ids', []);
+        $roleID = $request->input('role_id', 0);
+        if(is_string($ids)){
+            $ids=explode(',',$ids);
+            $ids=array_filter(array_unique($ids));
+        }
+
+        if ( empty($ids) ) {
+            $this->errorMsg = "没有需要更新的权限";
+            return false;
+        }
+
+
+        $role = Role::where('id', '=', $roleID)->first();
+        if ( empty($role) ) {
+            $this->errorMsg = "会员角色不存在";
+            return false;
+        }
+
+        // 添加会员权限
+        foreach ( $ids as $id ) {
+            $count = DB::table('role_has_permissions')
+                ->where('permission_id', '=', $id)
+                ->where('role_id', '=', $roleID)
+                ->count();
+            if ( $count <= 0 ) {
+                DB::table('role_has_permissions')->insert([
+                    'permission_id' => $id,
+                    'role_id'       => $roleID,
+                ]);
+            }
+        }
+        $deleted = DB::table('role_has_permissions')
+            ->whereNotIn('permission_id',  $ids)
+            ->where('role_id', '=', $roleID)->delete();
+
+        return true;
+    }
+
+    /**
+     * @param Request $request
+     * @param ResponseFactory $response
+     * @param $id
+     * @return \Illuminate\Http\JsonResponse
+     *
+     * 删除一行数据
+     */
+    protected function destroy(Request $request,ResponseFactory $response,$id = null)
+    {
+        if( $request->isMethod('post') && $request->ajax() ){
+            list($permission_id, $role_id) = explode("-", $id);
+            $deleted = DB::table('role_has_permissions')
+                ->where('permission_id', '=', $permission_id)
+                ->where('role_id', '=', $role_id)->delete();
+            $deleted === false ? $data = [
+                'status' => 1,
+                'message'=> self::ERROR_MSG
+            ]: $data = [
+                'status' => 0,
+                'message' => ''
+            ];
+            if( $request->wantsJson() ){
+                return $response->json($data);
+            }
+        }
+    }
+}

+ 82 - 0
app/Http/Controllers/Region/RegionsController.php

@@ -0,0 +1,82 @@
+<?php
+
+namespace App\Http\Controllers\Region;
+
+use App\Http\Controllers\AdminBaseController;
+use App\Http\Requests\RegionCreateRequest;
+use App\Http\Requests\RegionUpdateRequest;
+use App\Repositories\Eloquent\RegionRepositoryEloquent;
+use App\Validators\RegionValidator;
+
+/**
+ * Class RegionsController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class RegionsController extends AdminBaseController
+{
+    /**
+     * @var RegionRepositoryEloquent
+     */
+    protected $repository;
+
+    /**
+     * @var RegionValidator
+     */
+    protected $validator;
+
+    /**
+     * RegionsController constructor.
+     *
+     * @param RegionRepositoryEloquent $repository
+     * @param RegionValidator $validator
+     */
+    public function __construct(RegionRepositoryEloquent $repository, RegionValidator $validator)
+    {
+        parent::__construct($repository, $validator);
+    }
+
+    /**
+     * 数据检索
+     */
+     public function _indexScopeQuery()
+        {
+            $where = [];
+            $search = explode(";", request()->input('search', ""));
+            $start = $end = null;
+            $fieldSearchable=$this->repository->getFieldsSearchable();
+            foreach ($search as $value) {
+                if (!empty($value)) {
+                    list($one, $tow) = explode(":", $value);
+                    if (!empty($fieldSearchable[$one])) {
+                        if($fieldSearchable[$one]=='like')$tow="%{$tow}%";
+                        $where[]=[$one,$fieldSearchable[$one],$tow];
+                    } elseif ($one == 'start') {
+                        $start = $tow . " 00:00:00";
+                    } elseif ($one == 'end') {
+                        $end = $tow . " 23:59:59";
+                    } else {
+                        continue;
+                    }
+                }
+            }
+            return function ($query) use ($where, $start, $end) {
+
+                if ($start) $where[] = ['created_at', '>=', $start];
+                if ($end) $where[] = ['created_at', '<=', $end];
+                if ($where) {
+                    $query->where($where);
+                }
+
+            };
+        }
+
+   /**
+     * 数据更新
+     */
+    protected function _indexPost($datum)
+    {
+        return $datum;
+    }
+
+}

+ 156 - 0
app/Http/Controllers/Role/RolesController.php

@@ -0,0 +1,156 @@
+<?php
+
+namespace App\Http\Controllers\Role;
+
+use App\Http\Controllers\AdminBaseController;
+use App\Models\Menu;
+use App\Models\Role;
+use App\Repositories\Eloquent\RoleRepositoryEloquent;
+use App\Servers\MenuServer;
+use App\Validators\RoleValidator;
+use Illuminate\Contracts\Routing\ResponseFactory;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+
+/**
+ * Class RolesController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class RolesController extends AdminBaseController
+{
+    /**
+     * RolesController constructor.
+     *
+     * @param RoleRepositoryEloquent $repository
+     * @param RoleValidator $validator
+     */
+    public function __construct(RoleRepositoryEloquent $repository, RoleValidator $validator)
+    {
+        parent::__construct($repository, $validator);
+    }
+
+    protected function _indexPost($datum)
+    {
+        foreach ( $datum as $value ) {
+
+            if ($value->{'id'} ==1) {
+                $value->skip = 'skip';
+            } else {
+                $value->skip = '';
+            }
+        }
+
+        return $datum;
+    }
+
+    protected function _storePost($request)
+    {
+        $name = $request->input('name', '');
+        $status = $request->input('status', '');
+        if (empty($name)) {
+            $this->errorMsg = "角色名称必填";
+            return false;
+        }
+
+        // 查询角色名称是否存在
+        $count = Role::where('name', $name)->count();
+        if ($count > 0) {
+            $this->errorMsg = "角色名称已存在";
+            return false;
+        }
+
+        Role::create(['name' => $name,'status'=>$status]);
+
+        return true;
+    }
+
+    protected function _updatePost($request, $id)
+    {
+        $name = $request->input('name', '');
+        $status = $request->input('status', '');
+        if (empty($name)) {
+            $this->errorMsg = "角色名称必填";
+            return false;
+        }
+
+        $model = $this->repository->find($id);
+        if (empty($model)) {
+            $this->errorMsg = "角色不存在";
+            return false;
+        }
+
+        // 查询角色名称是否存在
+        $count = Role::where('name', $name)->where('id','<>',$id)->count();
+        if ($count > 0) {
+            $this->errorMsg = "角色名称已存在";
+            return false;
+        }
+        Role::where('id',$id)->update(['name' => $name,'status'=>$status]);
+        return true;
+    }
+
+    /**
+     * @param Request $request
+     * @param ResponseFactory $response
+     * @param $id
+     * @return \Illuminate\Http\JsonResponse
+     *
+     * 删除一行数据
+     */
+    protected function destroy(Request $request, ResponseFactory $response, $id = null)
+    {
+        if ($request->isMethod('post') && $request->ajax()) {
+            $count = DB::table('users')->where('roles_id', $id)->count();
+            if ($count >= 1) {
+                $data = [
+                    'status' => 1,
+                    'message' => '当前角色已绑定账号不允许删除'
+                ];
+            } else {
+                $deleted = $this->repository->delete($id);
+                $deleted === false ? $data = [
+                    'status' => 1,
+                    'message' => self::ERROR_MSG
+                ] : $data = [
+                    'status' => 0,
+                    'message' => ''
+                ];
+            }
+            if ($request->wantsJson()) {
+                return $response->json($data);
+            }
+        }
+    }
+
+
+    function getPermissionsView()
+    {
+        $id = request()->input('id');
+        $role = Role::where('id', $id)->first();
+        $permission=MenuServer::creatServer()->getPermissionsMenu($role->{'role_p_ids'});
+        $permission_ids= explode(',', $role->{'role_p_ids'});
+        if(empty($permission_ids))$permission_ids=[0];
+        return view('admins.roles.permissions',['permission'=>$permission,'permission_ids'=>$permission_ids,'id'=>$id]);
+
+    }
+
+    function setPermissions(){
+        $permission_ids=request()->input('permission_ids');
+        $id=request()->input('id');
+        if(empty($permission_ids)){
+            return $this->response('请选择权限', 'error');
+        }
+        $role_p_ids=$permission_ids;
+        if(is_string($permission_ids))$permission_ids=explode(',',$permission_ids);
+        $p_permission_ids= Menu::where('level', 2)->whereIn('id',$permission_ids)->pluck('p_ids');
+        foreach ($p_permission_ids as $v){
+           $p_ids= explode(',',$v);
+            $permission_ids=array_merge($permission_ids,$p_ids);
+        }
+        $permission_ids=array_unique($permission_ids);
+       $permission_ids=implode(',',$permission_ids);
+        Role::where('id',$id)->update(['permission_ids'=>$permission_ids,'role_p_ids'=>$role_p_ids]);
+        return $this->response(self::SUCCESS_MSG, 'success', '', '');
+    }
+}

+ 62 - 0
app/Http/Controllers/Traits/ApiResponseTrait.php

@@ -0,0 +1,62 @@
+<?php
+
+
+namespace App\Http\Controllers\Traits;
+
+
+use App\Servers\MemberLogsServer;
+
+trait ApiResponseTrait
+{
+    /**
+     * @param array $data                       ## 返回数据
+     * @param string $msg                       ## 返回信息 如:auth.failed
+     * @param int $code                         ## 响应编码 1:成功 0:失败
+     * @param int $status                       ## HTTP响应状态 200:请求成功
+     * @param array $header                     ## 响应头
+     * @param int $options                      ## 其他信息
+     * @return \Illuminate\Http\JsonResponse
+     *
+     * 接口返回格式 | 成功
+     */
+    public function apiResponseSuccess( $msg = '',$data = [], $code = 1, $status = 200, $header = [], $options = 0)
+    {
+        $this->lang();
+        $msg=__($msg);
+        return response()->json([
+            'msg'   => $msg,
+            'data'  => empty($data) ? [] : $data,
+            'code'  => $code,
+        ], $status, $header, $options);
+    }
+
+    /**
+     * @param array $data                       ## 返回数据
+     * @param string $msg                       ## 返回信息 如:auth.failed
+     * @param int $code                         ## 响应编码 1:成功 0:失败
+     * @param int $status                       ## HTTP响应状态 200:请求成功
+     * @param array $header                     ## 响应头
+     * @param int $options                      ## 其他信息
+     * @return \Illuminate\Http\JsonResponse
+     *
+     * 接口返回格式 | 失败
+     */
+    public function apiResponseError( $msg = '',$data = [], $code = 0, $status = 200, $header = [], $options = 0)
+    {
+        $this->lang();
+        $msg=__($msg);
+        return response()->json([
+            'msg'   => $msg,
+            'data'  => empty($data) ? [] : $data,
+            'code'  => $code,
+        ], $status, $header, $options);
+    }
+
+    /**
+     * 双语设置
+     */
+    protected function lang()
+    {
+        app()->setLocale(request()->input('lang', 'zh'));
+    }
+}

+ 200 - 0
app/Http/Controllers/Traits/AuthUserTrait.php

@@ -0,0 +1,200 @@
+<?php
+
+namespace App\Http\Controllers\Traits;
+
+use Illuminate\Foundation\Auth\RedirectsUsers;
+use Illuminate\Foundation\Auth\ThrottlesLogins;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
+
+trait AuthUserTrait
+{
+    use RedirectsUsers, ThrottlesLogins;
+
+    /**
+     * Show the application's login form.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function showLoginForm()
+    {
+        config()->set(['admin'=>['title'=>'后台登陆']]);
+        return view('auth.login');
+    }
+
+    /**
+     * Handle a login request to the application.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\Response
+     */
+    public function login(Request $request)
+    {
+        $this->validateLogin($request);
+
+        // 验证码验证
+        $captcha = captcha_check($request->input('captcha'));
+
+        // 验证失败
+        if( !$captcha ){
+            return redirect()->back()
+                ->withInput($request->only($this->username(), 'remember'))
+                ->withErrors(['captcha'=>'验证错误']);
+        }
+
+        // If the class is using the ThrottlesLogins trait, we can automatically throttle
+        // the login attempts for this application. We'll key this by the username and
+        // the IP address of the client making these requests into this application.
+        if ($this->hasTooManyLoginAttempts($request)) {
+            $this->fireLockoutEvent($request);
+
+            return $this->sendLockoutResponse($request);
+        }
+
+        if ($this->attemptLogin($request)) {
+//            $request->setTrustedProxies(array('10.32.0.1/16'));
+//            $ip = $request->getClientIp();
+//            // 记录登录信息
+//            file_put_contents(
+//                storage_path('logs/auth-login.txt'),
+//                "登录时间:".(date('Y-m-d H:i:s'))." 登录IP:{$ip}"."\r\n", FILE_APPEND
+//            );
+            return $this->sendLoginResponse($request);
+        }
+
+        // If the login attempt was unsuccessful we will increment the number of attempts
+        // to login and redirect the user back to the login form. Of course, when this
+        // user surpasses their maximum number of attempts they will get locked out.
+        $this->incrementLoginAttempts($request);
+
+        return $this->sendFailedLoginResponse($request);
+    }
+
+    /**
+     * Validate the user login request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return void
+     */
+    protected function validateLogin(Request $request)
+    {
+        $this->validate($request, [
+            $this->username() => 'required|string',
+            'password' => 'required|string',
+            'captcha' => 'required|string',
+        ],[
+            'required' => '必填'
+//            $this->username().'.required' => '必填',
+//            'password.required' => '必填',
+//            'captcha.required' => '必填'
+        ]);
+    }
+
+    /**
+     * Attempt to log the user into the application.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return bool
+     */
+    protected function attemptLogin(Request $request)
+    {
+        return $this->guard()->attempt(
+            $this->credentials($request), $request->has('remember')
+        );
+    }
+
+    /**
+     * Get the needed authorization credentials from the request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return array
+     */
+    protected function credentials(Request $request)
+    {
+        return $request->only($this->username(), 'password');
+    }
+
+    /**
+     * Send the response after the user was authenticated.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    protected function sendLoginResponse(Request $request)
+    {
+        $request->session()->regenerate();
+
+        $this->clearLoginAttempts($request);
+
+        return $this->authenticated($request, $this->guard()->user())
+            ?: redirect()->intended($this->redirectPath());
+    }
+
+    /**
+     * The user has been authenticated.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  mixed  $user
+     * @return mixed
+     */
+    protected function authenticated(Request $request, $user)
+    {
+        //
+    }
+
+    /**
+     * Get the failed login response instance.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\RedirectResponse
+     */
+    protected function sendFailedLoginResponse(Request $request)
+    {
+//        $errors = [$this->username() => trans('auth.failed')];
+        $errors = [$this->username() => '账号或密码错误'];;
+        if ($request->expectsJson()) {
+            return response()->json($errors, 422);
+        }
+
+        return redirect()->back()
+            ->withInput($request->only($this->username(), 'remember'))
+            ->withErrors($errors);
+    }
+
+    /**
+     * Get the login username to be used by the controller.
+     *
+     * @return string
+     */
+    public function username()
+    {
+        return 'email';
+    }
+
+    /**
+     * Log the user out of the application.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function logout(Request $request)
+    {
+        $this->guard()->logout();
+
+        $request->session()->flush();
+
+        $request->session()->regenerate();
+
+        return redirect('/admin/login');
+    }
+
+    /**
+     * Get the guard to be used during authentication.
+     *
+     * @return \Illuminate\Contracts\Auth\StatefulGuard
+     */
+    protected function guard()
+    {
+        return Auth::guard();
+    }
+}

+ 242 - 0
app/Http/Controllers/User/UsersController.php

@@ -0,0 +1,242 @@
+<?php
+
+namespace App\Http\Controllers\User;
+
+use App\Http\Controllers\AdminBaseController;
+use App\Models\Role;
+use App\Models\User;
+use App\Repositories\Eloquent\UserRepositoryEloquent;
+use App\Validators\UserValidator;
+use Illuminate\Contracts\Routing\ResponseFactory;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+
+/**
+ * Class UsersController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class UsersController extends AdminBaseController
+{
+    /**
+     * UsersController constructor.
+     *
+     * @param UserRepositoryEloquent $repository
+     * @param UserValidator $validator
+     */
+    public function __construct(UserRepositoryEloquent $repository, UserValidator $validator)
+    {
+        parent::__construct($repository, $validator);
+    }
+
+    protected function _indexScopeQuery()
+    {
+        return function($query){
+             $query->where('id', '<>', 1);
+        };
+    }
+
+    protected function _indexPost($datum)
+    {
+        foreach ( $datum as &$data ) {
+
+
+            $data->role_name = Role::where('id',$data->{'roles_id'})->value('name')?:'--';
+        }
+        unset($data);
+
+        return $datum;
+    }
+
+    protected function _storeGet($request)
+    {
+        // 角色
+        $roles = Role::where('status',1)->orderBy('id', 'asc')->get();
+
+        $option = [
+            'checked' => '请选择角色',
+            'attr' => [
+                [
+                    'value' => 0,
+                    'label' => "请选择角色",
+                    'disabled' => false,
+                    'notice' => '*'
+                ]
+            ]
+        ];
+
+        foreach ( $roles as $category ) {
+            $option['attr'][] = [
+                'value' => $category->id,
+                'label' => $category->name,
+                'disabled' => false,
+                'notice' => "*"
+            ];
+        }
+
+        $params['options'] = json_encode($option,JSON_UNESCAPED_SLASHES);
+
+        return $params;
+    }
+
+    protected function _storePost($request)
+    {
+        $email = $request->input('email', "");
+        $password = $request->input('password', "");
+        $roleID = $request->input('role_id', "");
+
+        if ( empty($email) ) {
+            $this->errorMsg = "注册账号必填";
+            return false;
+        }
+
+        if ( empty($password) ) {
+            $this->errorMsg = "登录密码必填";
+            return false;
+        }
+
+        if ( $roleID <= 0 ) {
+            $this->errorMsg = "请选择角色";
+            return false;
+        }
+
+        $count = User::where('email', '=', $email)->count();
+        if ( $count > 0 ) {
+            $this->errorMsg = "账号已注册";
+            return false;
+        }
+
+        $user = $this->repository->create([
+            'name'      => $request->input('name', ""),
+            'email'     => $email,
+            'password'  => bcrypt($password),
+            'roles_id'  =>$roleID,
+        ]);
+
+//        // 添加角色
+//        DB::table('user_has_roles')->insert([
+//            'role_id'   => $roleID,
+//            'user_id'   => $user->id,
+//        ]);
+
+        return true;
+    }
+
+    protected function _editGet($id)
+    {
+        $params['model'] = $this->repository->find($id);
+        $userRole = DB::table('users')->where('id', $id)->first();
+        if ( !empty($userRole) ) {
+            $userRole = Role::where('id', $userRole->roles_id)->first();
+        }
+
+        // 角色
+        $roles = Role::where('status',1)->orderBy('id', 'asc')->get();
+
+        $option = [
+            'checked' => empty($userRole) ? "" : $userRole->name,
+            'attr' => []
+        ];
+
+        foreach ( $roles as $category ) {
+            $option['attr'][] = [
+                'value' => $category->id,
+                'label' => $category->name,
+                'disabled' => false,
+                'notice' => "*"
+            ];
+        }
+
+        $params['options'] = json_encode($option,JSON_UNESCAPED_SLASHES);
+
+        return $params;
+    }
+
+    protected function _updatePost($request, $id)
+    {
+        $model = $this->repository->find($id);
+        $email = $request->input('email', "");
+        $password = $request->input('password', "");
+        $roleID = $request->input('role_id', "");
+
+        if ( empty($email) ) {
+            $this->errorMsg = "注册账号必填";
+            return false;
+        }
+
+        $role = Role::where('id', $roleID)->orWhere('name',$roleID)->first();
+        if ( empty($role) ) {
+            $this->errorMsg = "请选择角色";
+            return false;
+        }
+        $roleID = $role['id'];
+
+        $count = User::where('email', '=', $email)->where('id', '<>', $id)->count();
+        if ( $count > 0 ) {
+            $this->errorMsg = "账号已注册";
+            return false;
+        }
+
+        $update = array();
+        if ( $model->name != $request->input('name', "") ) {
+            $update['name'] = $request->input('name', "");
+        }
+
+        if ( $model->email != $email ) {
+            $update['email'] = $email;
+        }
+
+        if ( !empty($password) ) {
+            $update['password'] = bcrypt($password);
+        }
+        if(!empty($roleID)){
+            $update['roles_id'] = $roleID;
+        }
+
+        if ( !empty($update) ) {
+            $this->repository->update($update, $id);
+        }
+
+//        $userRole = DB::table('user_has_roles')->where('user_id', $id)->first();
+//        if ( $userRole->role_id != $role->{'id'} ) {
+//            // 更新角色
+//            DB::table('user_has_roles')->where('user_id', $id)->where('role_id', $userRole->role_id)->update([
+//                'role_id'   => $roleID,
+//            ]);
+//        }
+
+        return true;
+    }
+
+    /**
+     * @param Request $request
+     * @param ResponseFactory $response
+     * @param $id
+     * @return \Illuminate\Http\JsonResponse
+     *
+     * 删除一行数据
+     */
+    protected function destroy(Request $request,ResponseFactory $response,$id = null)
+    {
+        if( $request->isMethod('post') && $request->ajax() ){
+            if ( $id <= 1 ) {
+                $data = [
+                    'status' => 1,
+                    'message' => '超级账号不能删除'
+                ];
+            }else{
+                $deleted = $this->repository->delete($id);
+                $deleted === false ? $data = [
+                    'status' => 1,
+                    'message'=> self::ERROR_MSG
+                ]: $data = [
+                    'status' => 0,
+                    'message' => ''
+                ];
+            }
+            if( $request->wantsJson() ){
+                return $response->json($data);
+            }
+        }
+    }
+}

+ 149 - 0
app/Http/Controllers/Wap/MemberController.php

@@ -0,0 +1,149 @@
+<?php
+
+
+namespace App\Http\Controllers\Wap;
+
+
+use App\Http\Controllers\FrontController;
+use App\Models\Member;
+use App\Models\Shop;
+use App\Servers\CommonServer;
+use App\Servers\MemberServer;
+use App\Servers\RedisDataServer;
+use App\Servers\WeixinServer;
+
+class MemberController extends FrontController
+{
+
+
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    function index()
+    {
+        return view('home.index');
+    }
+
+    /**
+     * 获取微信会员信息
+     */
+    function getWxInfo()
+    {
+        $is_wx = CommonServer::creatServer()->isWeixin();
+        if (empty($is_wx)) {
+            echo '请使用微信打开';
+        } else {
+            $redirect_uri = request()->input('redirect_url', '');
+            if (empty($redirect_uri)) {
+                $redirect_uri = 'http://wap.jhcs888.com/home';
+            } else {
+                $redirect_uri = base64_decode($redirect_uri);
+            }
+            if (empty($redirect_uri)) {
+                echo '请携带回调地址';
+            } else {
+                $invite_code = request()->input('inviteCode', '');
+                $wx_info = WeixinServer::creatServer()->authorize();
+                if ($wx_info) {
+
+                    $ret = MemberServer::creatServer()->setWxOpen($wx_info, $invite_code);
+                    if (empty($ret)) {
+                        //获取微信信息失败
+                        echo '登陆失败';
+                    } else {
+//                        $ret=array_merge($ret,$data);
+//                        dd($ret);
+                        $redirect_uri = str_replace('m_id', 'm_mid', $redirect_uri);
+                        $redirect_uri = str_replace('token', 'm_token', $redirect_uri);
+                        $ret = http_build_query($ret);
+                        if (strpos($redirect_uri, '?') !== false) {
+                            $redirect_uri .= ('&' . $ret);
+                        } else {
+                            $redirect_uri .= ('?' . $ret);
+                        }
+                        //跳转至原来的页面
+                        WeixinServer::creatServer()->redirect($redirect_uri);
+                    }
+                } else {
+                    echo '获取基本信息失败';
+                }
+            }
+
+        }
+
+    }
+
+    /**
+     * 商户端员工绑定微信
+     */
+    function staffBind()
+    {
+        $is_wx = CommonServer::creatServer()->isWeixin();
+        $data = ['code' => 0, 'msg' => '信息错误', 'data' => []];
+        if (empty($is_wx)) {
+            $data['msg'] = '请使用微信打开';
+        } else {
+            $bindingCode = request()->input('bindingCode', '');
+            $staffPhone = request()->input('staffPhone', '');
+            $shopId = request()->input('shopId', '');
+            if (empty($bindingCode) || empty($staffPhone) || empty($shopId)) {
+                $data['msg'] = '缺少必要信息';
+            } else {
+                if(CommonServer::creatServer()->verifyPhoneNumber($staffPhone)){
+                    $member = session('login_info');
+                    if ($member) {
+                        $isBinding=MemberServer::creatServer()->checkStaffBind($member['m_id']);
+                        if($isBinding){
+                            $data['msg'] = '当前微信已绑定,请解绑后再操作';
+                        }else{
+                            $shopInfo = Shop::where('id', $shopId)->select(['id', 'shop_logo', 'shop_name'])->first();
+                            if (empty($shopInfo)) {
+                                $data['msg'] = '店铺信息错误';
+                            } else {
+                                $data['code'] = 1;
+                                $shopInfo->{'staff_phone'} = $staffPhone;
+                                $shopInfo->{'binding_code'} = $bindingCode;
+                                $data['data'] = $shopInfo;
+                            }
+                        }
+
+                    } else {
+                        $data['msg'] = '登陆信息错误';
+                    }
+                }else{
+                    $data['msg'] = '手机号码格式错误';
+                }
+            }
+        }
+        $data['wx_js']  = WeixinServer::creatServer()->getJsConfig();
+        $data['data'] = json_encode($data['data']);
+        return view('home.binding', $data);
+    }
+
+    /**
+     * 员工绑定操作
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function setBinding()
+    {
+        $bindingCode = request()->input('binding_code', '');
+        $status = request()->input('status', '');
+        if (empty($bindingCode)) {
+            return $this->apiResponseError('缺少必要参数');
+        }
+        $member = session('login_info');
+        if (empty($member)) {
+            return $this->apiResponseError('登陆信息错误');
+        }
+        $member['status']=$status;
+        RedisDataServer::creatServer()->setData($bindingCode,$member,'json',600);
+        if($status==1){
+            return $this->apiResponseSuccess('绑定成功');
+        }else{
+            return $this->apiResponseError('绑定已拒绝');
+        }
+    }
+
+}

+ 165 - 0
app/Http/Controllers/Wap/NotifyController.php

@@ -0,0 +1,165 @@
+<?php
+
+
+namespace App\Http\Controllers\Wap;
+
+
+use App\Http\Controllers\FrontController;
+use App\Models\Comment;
+use App\Models\GoodsCollect;
+use App\Models\Member;
+use App\Models\MemberAddress;
+use App\Models\MemberClan;
+use App\Models\MemberOpenId;
+use App\Models\Members;
+use App\Models\Order;
+use App\Models\Shop;
+use App\Models\ShopCollect;
+use App\Servers\AddressServer;
+use App\Servers\AlbumServer;
+use App\Servers\CommonServer;
+use App\Servers\MemberLogsServer;
+use App\Servers\MemberServer;
+use App\Servers\PassServer;
+use App\Servers\PayServer;
+use App\Servers\RedisDataServer;
+use App\Servers\ShopFileServer;
+use App\Servers\ShopOrderServer;
+use App\Servers\SmsServer;
+use App\Servers\WeixinServer;
+use App\Servers\ZfbServer;
+use SimpleSoftwareIO\QrCode\Facades\QrCode;
+
+class NotifyController extends FrontController
+{
+
+
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * 线下支付微信支付回调
+     * @throws \Exception
+     */
+    function shopOrderPayWx()
+    {
+        //回调类型
+        $xml = file_get_contents('php://input');
+        $data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
+//        file_put_contents('wx_pay.txt', json_encode($data));
+//        file_put_contents('asdas.txt', json_encode($data));
+//        $data=file_get_contents('wx_pay.txt');
+//        $data=json_decode($data,true);
+        $type = 1;
+        if (isset($data['type'])) {
+            $type = $data['type'];
+            unset($data['type']);
+        }
+        $sign = WeixinServer::creatServer()->verifyCer($data);
+        if ($sign != $data['sign']) {
+            $xml = '<xml>
+  <return_code><![CDATA[SUCCESS]]></return_code>
+  <return_msg><![CDATA[OK]]></return_msg>
+</xml>';
+            exit($xml);
+        }
+        if ($data['result_code'] == 'SUCCESS' && $data['return_code'] == 'SUCCESS') {
+            if ($type == 2) {
+                ShopOrderServer::creatServer()->OrderNotify($data['out_trade_no'], $data['transaction_id'], $data['total_fee'] / 100, 1, $data, $data['openid']);
+            } elseif ($type == 1 || $type == 3) {
+                PayServer::creatServer()->NotifyPay($data['out_trade_no'], $data['transaction_id'], $data['total_fee'] / 100, $data);
+            } else {
+
+            }
+
+        }
+        $xml = '<xml>
+  <return_code><![CDATA[SUCCESS]]></return_code>
+  <return_msg><![CDATA[OK]]></return_msg>
+</xml>';
+        exit($xml);
+    }
+
+
+    /**
+     * buyer_id  对应会员唯一ID
+     * 支付宝支付回调
+     */
+    function shopOrderPayZfb()
+    {
+        $data = request()->input();
+        file_put_contents('al_pay.txt', json_encode($data));
+//        file_put_contents('al_pay2.txt', serialize($data));
+//        $data=file_get_contents('al_pay.txt');
+//        $data=json_decode($data,true);
+        $is_verify = ZfbServer::creatServer()->verifyData($data);
+        if ($is_verify) {
+            if ((!empty($data['trade_status']) && $data['trade_status'] == 'TRADE_SUCCESS') || (!empty($data['trade_status']) && $data['trade_status'] == 'TRADE_FINISHED')) {
+                ShopOrderServer::creatServer()->OrderNotify($data['out_trade_no'], $data['notify_id'], $data['total_amount'], 2, $data, $data['buyer_id']);
+            }
+        }
+        echo 'success';
+        exit;
+    }
+
+
+    /**
+     * 线上订单支付回调
+     * @throws \Exception
+     */
+    function orderPayWx()
+    {
+        $xml = file_get_contents('php://input');
+        $data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
+//        file_put_contents('o_wx_pay.txt', json_encode($data));
+//        $data=file_get_contents('wx_pay.txt');
+//        $data=json_decode($data,true);
+        $sign = WeixinServer::creatServer()->verifyCer($data);
+        if ($sign != $data['sign']) {
+            $xml = '<xml>
+  <return_code><![CDATA[SUCCESS]]></return_code>
+  <return_msg><![CDATA[OK]]></return_msg>
+</xml>';
+            exit($xml);
+        }
+
+        if ($data['result_code'] == 'SUCCESS' && $data['return_code'] == 'SUCCESS') {
+//            ShopOrderServer::creatServer()->OrderNotify($data['out_trade_no'], $data['transaction_id'],$data['total_fee']/100,1, $data,$data['openid']);
+            PayServer::creatServer()->NotifyPay($data['out_trade_no'], $data['transaction_id'], $data['total_fee'] / 100, $data);
+        }
+        $xml = '<xml>
+  <return_code><![CDATA[SUCCESS]]></return_code>
+  <return_msg><![CDATA[OK]]></return_msg>
+</xml>';
+        exit($xml);
+    }
+
+
+    /**
+     * 线上订单支付宝支付
+     * @throws \Exception
+     */
+    function orderPayZfb()
+    {
+        $data = request()->input();
+//        file_put_contents('o_al_pay.txt', json_encode($data));
+//        file_put_contents('al_pay2.txt', serialize($data));
+//        $data=file_get_contents('al_pay.txt');
+//        $data=json_decode($data,true);
+        $is_verify = ZfbServer::creatServer()->verifyData($data);
+        if ($is_verify) {
+            if ((!empty($data['trade_status']) && $data['trade_status'] == 'TRADE_SUCCESS') || (!empty($data['trade_status']) && $data['trade_status'] == 'TRADE_FINISHED')) {
+//                ShopOrderServer::creatServer()->OrderNotify($data['out_trade_no'], $data['notify_id'],$data['total_amount'],2, $data,$data['buyer_id']);
+                PayServer::creatServer()->NotifyPay($data['out_trade_no'], $data['notify_id'], $data['total_amount'], $data);
+            }
+        }
+        echo 'success';
+        exit;
+    }
+
+
+
+
+}

+ 195 - 0
app/Http/Controllers/Withdraw/WithdrawsController.php

@@ -0,0 +1,195 @@
+<?php
+
+namespace App\Http\Controllers\Withdraw;
+
+use App\Http\Controllers\AdminBaseController;
+use App\Http\Requests\WithdrawCreateRequest;
+use App\Http\Requests\WithdrawUpdateRequest;
+use App\Models\MemberOpenId;
+use App\Models\Withdraw;
+use App\Repositories\Eloquent\WithdrawRepositoryEloquent;
+use App\Servers\MoneyDetailServer;
+use App\Servers\WeixinServer;
+use App\Servers\WithdrawServer;
+use App\Validators\WithdrawValidator;
+use function Couchbase\defaultDecoder;
+
+/**
+ * Class WithdrawsController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class WithdrawsController extends AdminBaseController
+{
+    /**
+     * @var WithdrawRepositoryEloquent
+     */
+    protected $repository;
+
+    /**
+     * @var WithdrawValidator
+     */
+    protected $validator;
+
+    /**
+     * WithdrawsController constructor.
+     *
+     * @param WithdrawRepositoryEloquent $repository
+     * @param WithdrawValidator $validator
+     */
+    public function __construct(WithdrawRepositoryEloquent $repository, WithdrawValidator $validator)
+    {
+        parent::__construct($repository, $validator);
+    }
+
+    /**
+     * 数据检索
+     */
+    public function _indexScopeQuery()
+    {
+        $where = [];
+        $search = explode(";", request()->input('search', ""));
+        $start = $end = null;
+        $fieldSearchable = $this->repository->getFieldsSearchable();
+        foreach ($search as $value) {
+            if (!empty($value)) {
+                list($one, $tow) = explode(":", $value);
+                if (!empty($fieldSearchable[$one])) {
+                    if ($fieldSearchable[$one] == 'like') $tow = "%{$tow}%";
+                    $where[] = [$one, $fieldSearchable[$one], $tow];
+                } elseif ($one == 'start') {
+                    $start = $tow . " 00:00:00";
+                } elseif ($one == 'end') {
+                    $end = $tow . " 23:59:59";
+                } else {
+                    continue;
+                }
+            }
+        }
+        return function ($query) use ($where, $start, $end) {
+
+            if ($start) $where[] = ['created_at', '>=', $start];
+            if ($end) $where[] = ['created_at', '<=', $end];
+            if ($where) {
+                $query->where($where);
+            }
+
+        };
+    }
+
+    /**
+     * 数据更新
+     */
+    protected function _indexPost($datum)
+    {
+        foreach ($datum as $value){
+            if ($value->status ==1) {
+                $value->skip = '';
+            } else {
+                $value->skip = 'skip';
+            }
+            $value->{'withdraw_type_str'}=WithdrawServer::creatServer()->getType($value->{'withdraw_type'});
+            $value->{'status_str'}=WithdrawServer::creatServer()->getStatusArr($value->{'status'});
+        }
+        return $datum;
+    }
+
+
+    /**
+     * 查询组合
+     * @return \Illuminate\Database\Query\Builder
+     */
+    function _indexJoin()
+    {
+        return Withdraw::from('withdraws as w')
+            ->leftJoin('members as m', 'm.id', '=', 'w.m_id');
+    }
+
+    function _indexSelect(){
+        return ['w.*','m.phone', 'm.nickname'];
+    }
+
+    function _updatePost(){
+        $status=request()->input('status');
+        $id=request()->input('id');
+        $withdraw_type=request()->input('withdraw_type');
+        $info=Withdraw::where('id',$id)->first();
+        if(empty($withdraw_type) && !in_array($withdraw_type,[1,2])){
+            $this->errorMsg='审核类型错误';
+            return false;
+        }
+        if(empty($info)){
+            $this->errorMsg='审核信息不存在';
+            return false;
+        }
+        if($info->{'status'}!=1){
+            $this->errorMsg='状态异常';
+            return false;
+        }
+        if($status==2){
+            $wx_data='';
+            if($withdraw_type==1){
+                $openid=MemberOpenId::where('m_id',$info->{'m_id'})->where('type',1)->value('openid');
+                if(empty($openid)){
+                    $this->errorMsg='当前用户未绑定微信';
+                    return false;
+                }
+                //转账到微信零钱
+                $request=WeixinServer::creatServer()->setVerified('TX'.$info->{'id'}.date('YmdHis'),$info->{'withdraw_money'},$openid,'');
+                if(empty($request['code'])){
+                    $this->errorMsg=empty($request['msg'])?'微信零钱划转失败':$request['msg'];
+                    return false;
+                }else{
+                    $wx_data=json_encode($request);
+                }
+            }
+            $ret=$info->update(['status'=>2,'withdraw_type'=>$withdraw_type,'wx_data'=>$wx_data]);
+
+        }else{
+            MoneyDetailServer::creatServer()->write(1, 14, $info->{'money'}, 1, $info->{'m_id'}, '余额提现驳回', $info->{'id'});
+            $ret=$info->update(['status'=>3]);
+        }
+        if($ret){
+            $this->successMsg='操作成功';
+            return true;
+        }else{
+            $this->errorMsg='操作失败';
+            return false;
+        }
+    }
+
+    /**
+     * 提现审核
+     */
+    function audit(){
+        $status=request()->input('status');
+        $id=request()->input('id');
+        $withdraw_type=request()->input('withdraw_type');
+        $info=Withdraw::where('id',$id)->first();
+        if(empty($info)){
+            return $this->error('审核信息不存在');
+        }
+        if($info->{'status'}!=1){
+            return $this->response('状态异常', 'error', '', '');
+        }
+        if($status==2){
+            if($withdraw_type==1){
+                $openid=MemberOpenId::where('m_id',$info->{'m_id'})->where('type',1)->value('openid');
+                if(empty($openid)){
+                    return $this->error('当前用户未绑定微信');
+                }
+            }
+            $ret=$info->update(['status'=>2,'withdraw_type'=>$withdraw_type]);
+            //转账到微信零钱
+        }else{
+            MoneyDetailServer::creatServer()->write(1, 14, $info->{'money'}, 1, $info->{'m_id'}, '余额提现驳回', $info->{'id'});
+            $ret=$info->update(['status'=>3]);
+        }
+        if($ret){
+            return $this->success('操作成功');
+        }else{
+            return $this->error('操作失败');
+        }
+    }
+
+}

+ 86 - 0
app/Http/Controllers/WithdrawConfig/WithdrawConfigsController.php

@@ -0,0 +1,86 @@
+<?php
+
+namespace App\Http\Controllers\WithdrawConfig;
+
+use App\Http\Controllers\AdminBaseController;
+use App\Http\Requests\WithdrawConfigCreateRequest;
+use App\Http\Requests\WithdrawConfigUpdateRequest;
+use App\Repositories\Eloquent\WithdrawConfigRepositoryEloquent;
+use App\Validators\WithdrawConfigValidator;
+
+/**
+ * Class WithdrawConfigsController.
+ *
+ * @package namespace App\Http\Controllers;
+ */
+class WithdrawConfigsController extends AdminBaseController
+{
+    /**
+     * @var WithdrawConfigRepositoryEloquent
+     */
+    protected $repository;
+
+    /**
+     * @var WithdrawConfigValidator
+     */
+    protected $validator;
+
+    /**
+     * WithdrawConfigsController constructor.
+     *
+     * @param WithdrawConfigRepositoryEloquent $repository
+     * @param WithdrawConfigValidator $validator
+     */
+    public function __construct(WithdrawConfigRepositoryEloquent $repository, WithdrawConfigValidator $validator)
+    {
+        parent::__construct($repository, $validator);
+    }
+
+    /**
+     * 数据检索
+     */
+     public function _indexScopeQuery()
+        {
+            $where = [];
+            $search = explode(";", request()->input('search', ""));
+            $start = $end = null;
+            $fieldSearchable=$this->repository->getFieldsSearchable();
+            foreach ($search as $value) {
+                if (!empty($value)) {
+                    list($one, $tow) = explode(":", $value);
+                    if (!empty($fieldSearchable[$one])) {
+                        if($fieldSearchable[$one]=='like')$tow="%{$tow}%";
+                        $where[]=[$one,$fieldSearchable[$one],$tow];
+                    } elseif ($one == 'start') {
+                        $start = $tow . " 00:00:00";
+                    } elseif ($one == 'end') {
+                        $end = $tow . " 23:59:59";
+                    } else {
+                        continue;
+                    }
+                }
+            }
+            return function ($query) use ($where, $start, $end) {
+
+                if ($start) $where[] = ['created_at', '>=', $start];
+                if ($end) $where[] = ['created_at', '<=', $end];
+                if ($where) {
+                    $query->where($where);
+                }
+
+            };
+        }
+
+   /**
+     * 数据更新
+     */
+    protected function _indexPost($datum)
+    {
+        foreach ($datum as $value){
+            $value->{'name'}=$value->{'id'}==1?'用户端':'商户端';
+            $value->{'type'}=$value->{'type'}==1?'比列':'固定金额';
+        }
+        return $datum;
+    }
+
+}

+ 104 - 0
app/Http/Kernel.php

@@ -0,0 +1,104 @@
+<?php
+
+namespace App\Http;
+
+use App\Http\Middleware\AdminApiAuthMiddleware;
+use App\Http\Middleware\AdminAuthMiddleware;
+use App\Http\Middleware\AdminLogMiddleware;
+use App\Http\Middleware\MemberAuthMiddleware;
+use App\Http\Middleware\MemberLogMiddleware;
+use App\Http\Middleware\PermissionMiddleware;
+use App\Http\Middleware\PurchasesMiddleware;
+use App\Http\Middleware\ShopAuthMiddleware;
+use App\Http\Middleware\WapAuthMiddleware;
+use Illuminate\Foundation\Http\Kernel as HttpKernel;
+
+class Kernel extends HttpKernel
+{
+    /**
+     * The application's global HTTP middleware stack.
+     *
+     * These middleware are run during every request to your application.
+     *
+     * @var array
+     */
+    protected $middleware = [
+        \App\Http\Middleware\TrustProxies::class,
+        \App\Http\Middleware\CheckForMaintenanceMode::class,
+        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
+        \App\Http\Middleware\TrimStrings::class,
+        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
+    ];
+
+    /**
+     * The application's route middleware groups.
+     *
+     * @var array
+     */
+    protected $middlewareGroups = [
+        'web' => [
+            \App\Http\Middleware\EncryptCookies::class,
+            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
+            \Illuminate\Session\Middleware\StartSession::class,
+             \Illuminate\Session\Middleware\AuthenticateSession::class,
+            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
+//            \App\Http\Middleware\VerifyCsrfToken::class,
+            \Illuminate\Routing\Middleware\SubstituteBindings::class,
+        ],
+
+        'api' => [
+            'throttle:60,1',
+            'bindings',
+        ],
+
+        //后台验证
+        'admin_verify'=>[
+            AdminLogMiddleware::class,
+            PermissionMiddleware::class
+        ],
+
+
+        //前端验证
+        'api_verify'=>[
+            MemberLogMiddleware::class,
+            MemberAuthMiddleware::class
+        ],
+
+
+    ];
+
+    /**
+     * The application's route middleware.
+     *
+     * These middleware may be assigned to groups or used individually.
+     *
+     * @var array
+     */
+    protected $routeMiddleware = [
+        'auth' => \App\Http\Middleware\Authenticate::class,
+        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
+        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
+        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
+        'can' => \Illuminate\Auth\Middleware\Authorize::class,
+        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
+        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
+        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
+        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
+    ];
+
+    /**
+     * The priority-sorted list of middleware.
+     *
+     * This forces non-global middleware to always be in the given order.
+     *
+     * @var array
+     */
+    protected $middlewarePriority = [
+        \Illuminate\Session\Middleware\StartSession::class,
+        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
+        \App\Http\Middleware\Authenticate::class,
+        \Illuminate\Session\Middleware\AuthenticateSession::class,
+        \Illuminate\Routing\Middleware\SubstituteBindings::class,
+        \Illuminate\Auth\Middleware\Authorize::class,
+    ];
+}

+ 54 - 0
app/Http/Middleware/AdminAuthMiddleware.php

@@ -0,0 +1,54 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use App\Servers\PermissionServer;
+use Closure;
+
+class AdminAuthMiddleware
+{
+    private $noAuth = [
+        'adminApi.token',
+        'adminApi.index',
+        'adminApi.login',
+        'adminApi.logout',
+        'adminApi.check_code',
+        'adminApi.reset',
+    ];
+    /**
+     * Handle an incoming request.
+     *
+     * @param \Illuminate\Http\Request $request
+     * @param \Closure $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+        $clientRoute = request()->route()->getName();//获取当前路由
+
+        if (in_array($clientRoute, $this->noAuth)) {//不需要验证的路由
+            return $next($request);
+        }
+
+        //获取当前用户
+        $user = app('auth')->user();
+        if(!$user){
+            return response()->json([
+                'msg'   => '请先登录',
+                'code'  => 2,
+                'data' => []
+            ]);
+        }
+        //进行路由验证
+        $ret = PermissionServer::verifyAuth($user->{'roles_id'}, $clientRoute);
+
+        if (empty($ret) && $user->{'id'} != 1) {
+            return response()->json([
+                'msg'   => '暂无权限',
+                'code'  => 0,
+                'data' => []
+            ]);
+        }
+        return $next($request);
+    }
+}

+ 23 - 0
app/Http/Middleware/AdminLogMiddleware.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use App\Servers\AdminLogsServer;
+use Closure;
+
+class AdminLogMiddleware
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+        //记录访问日志
+        AdminLogsServer::write();
+        return $next($request);
+    }
+}

+ 47 - 0
app/Http/Middleware/ApiTokenMiddleware.php

@@ -0,0 +1,47 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use App\Exceptions\Sign\DownException;
+use App\Exceptions\Sign\SignException;
+use App\Servers\Sign\SignServer;
+use Closure;
+use Illuminate\Session\TokenMismatchException;
+
+class ApiTokenMiddleware
+{
+    /**
+     * @param $request
+     * @param Closure $next
+     * @return mixed
+     * @throws DownException
+     * @throws \App\Exceptions\Sign\SignException
+     */
+    public function handle($request, Closure $next)
+    {
+        // 系统维护中判断条件 down 系统维护中
+        if( strtolower(env('APP_ENV')) == 'down' ){
+            throw new DownException('系统维护中...');
+        }
+        
+
+        // 签名认证
+
+
+        $response = $next($request);
+
+        // 中间件后响应响应参数追加
+        $data = $response->getData(true);
+
+//        $data = array_merge($data, [
+//            'token_sign'    => session('x_api_token', 'ssssssssssssss'),
+//            'sign_time'     => session('x_api_time', time())
+//        ]);
+
+//        session(['x_api_time' => null]);
+//        //////////
+//        session(['x_api_token' => null]);
+
+        return $response->setData($data);
+    }
+}

+ 21 - 0
app/Http/Middleware/Authenticate.php

@@ -0,0 +1,21 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Illuminate\Auth\Middleware\Authenticate as Middleware;
+
+class Authenticate extends Middleware
+{
+    /**
+     * Get the path the user should be redirected to when they are not authenticated.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return string
+     */
+    protected function redirectTo($request)
+    {
+        if (! $request->expectsJson()) {
+            return route('login');
+        }
+    }
+}

+ 17 - 0
app/Http/Middleware/CheckForMaintenanceMode.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode as Middleware;
+
+class CheckForMaintenanceMode extends Middleware
+{
+    /**
+     * The URIs that should be reachable while maintenance mode is enabled.
+     *
+     * @var array
+     */
+    protected $except = [
+        //
+    ];
+}

+ 17 - 0
app/Http/Middleware/EncryptCookies.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
+
+class EncryptCookies extends Middleware
+{
+    /**
+     * The names of the cookies that should not be encrypted.
+     *
+     * @var array
+     */
+    protected $except = [
+        //
+    ];
+}

+ 24 - 0
app/Http/Middleware/HomeAuth.php

@@ -0,0 +1,24 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+use Illuminate\Support\Facades\Auth;
+
+class HomeAuth
+{
+    /**
+     * @param $request
+     * @param Closure $next
+     * @param null $guard
+     * @return mixed
+     */
+    public function handle($request, Closure $next, $guard = null)
+    {
+        if( $guard == 'member' && !Auth::guard($guard)->check() ){
+            return redirect()->route('front.auth.login');
+        }
+
+        return $next($request);
+    }
+}

+ 83 - 0
app/Http/Middleware/MemberAuthMiddleware.php

@@ -0,0 +1,83 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use App\Exceptions\MemberAuthException;
+use App\Models\Member;
+use App\Servers\RedisDataServer;
+use Closure;
+
+class MemberAuthMiddleware
+{
+    private $noAuth=[
+        'member.register',
+        'member.index',
+        'member.login',
+        'common.location',
+        'common.file',
+        'common.js',
+        'common.send',
+        'news.banner',
+        'news.notices',
+        'news.notice',
+        'news.about_us',
+        'common.start',
+        'common.app_version',
+        'common.privacy_info',//获取隐私协议
+    ];
+    /**
+     * Handle an incoming request.
+     *
+     * @param \Illuminate\Http\Request $request
+     * @param \Closure $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+        //验证会员授权信息
+        $clientRoute = request()->route()->getName();
+        if (!in_array($clientRoute, $this->noAuth)) {
+            $m_id = $request->input('m_id','5');
+            $token = $request->input('token','04c97f7287eb8242ca0fc3cc41b7b555');
+            if (empty($m_id) || empty($token) || !is_numeric($m_id)) {
+                throw new MemberAuthException('缺少认证信息', 401);
+            }
+            $member = RedisDataServer::creatServer()->getData( 'login_' . $m_id, 'json');
+            if (empty($member)) {
+                $member = Member::where('id', $m_id)->where('status',1)->select(['id', 'phone', 'nickname', 'status', 'token_str', 'level_id', 'source'])->first();
+
+                if(empty($member)){
+                    throw new MemberAuthException('认证信息已过期', 401);
+                }
+            }
+            if ($member['token_str'] != $token) {
+                throw new MemberAuthException('认证信息已过期', 401);
+            }
+            //用户信息缓存30秒
+            RedisDataServer::creatServer()->setData($token . '_' . $m_id, $member, 'json', 300);
+            $request->member = $member;
+        }else{
+            $m_id = $request->input('m_id','');
+            $token = $request->input('token','');
+            if($m_id && $token){
+                $member = RedisDataServer::creatServer()->getData( 'login_' . $m_id, 'json');
+                if (empty($member)) {
+                    $member = Member::where('id', $m_id)->where('status',1)->select(['id', 'phone', 'nickname', 'status', 'token_str', 'level_id', 'source'])->first();
+                }
+                //用户信息缓存30秒
+                if($member){
+                    RedisDataServer::creatServer()->setData($token . '_' . $m_id, $member, 'json', 300);
+                    $request->member = $member;
+                }else{
+                    $request->member = ['id'=>0];
+                }
+            }else{
+                $request->member = ['id'=>0];
+            }
+
+        }
+
+
+        return $next($request);
+    }
+}

+ 26 - 0
app/Http/Middleware/MemberLogMiddleware.php

@@ -0,0 +1,26 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use App\Servers\AdminLogsServer;
+use App\Servers\MemberLogsServer;
+use Closure;
+
+class MemberLogMiddleware
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+        //记录访问日志
+
+//        dd($_SERVER['HTTP_X_FORWARDED_FOR']);
+        MemberLogsServer::write();
+        return $next($request);
+    }
+}

+ 89 - 0
app/Http/Middleware/Mobile.php

@@ -0,0 +1,89 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+
+class Mobile
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+        if( $this->isMobile() ){
+            return $next($request);
+        }else{
+            return redirect()->route('pc');
+        }
+    }
+
+    protected function isMobile()
+    {
+        // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
+        if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) {
+            return true;
+        }
+        // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
+        if (isset ($_SERVER['HTTP_VIA'])) {
+            return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;// 找不到为flase,否则为TRUE
+        }
+
+        // 判断手机发送的客户端标志,兼容性有待提高
+        if (isset ($_SERVER['HTTP_USER_AGENT'])) {
+            $clientkeywords = array(
+                'mobile',
+                'nokia',
+                'sony',
+                'ericsson',
+                'mot',
+                'samsung',
+                'htc',
+                'sgh',
+                'lg',
+                'sharp',
+                'sie-',
+                'philips',
+                'panasonic',
+                'alcatel',
+                'lenovo',
+                'iphone',
+                'ipod',
+                'blackberry',
+                'meizu',
+                'android',
+                'netfront',
+                'symbian',
+                'ucweb',
+                'windowsce',
+                'palm',
+                'operamini',
+                'operamobi',
+                'openwave',
+                'nexusone',
+                'cldc',
+                'midp',
+                'wap'
+            );
+
+            // 从HTTP_USER_AGENT中查找手机浏览器的关键字
+            if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
+                return true;
+            }
+        }
+
+        if (isset ($_SERVER['HTTP_ACCEPT'])) { // 协议法,因为有可能不准确,放到最后判断
+            // 如果只支持wml并且不支持html那一定是移动设备
+            // 如果支持wml和html但是wml在html之前则是移动设备
+            if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== FALSE) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === FALSE || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+}

+ 61 - 0
app/Http/Middleware/Permission/Permission.php

@@ -0,0 +1,61 @@
+<?php
+
+namespace App\Http\Middleware\Permission;
+
+use App\Servers\AdminLogsServer;
+use App\Servers\PermissionServer;
+use Closure;
+
+class Permission
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @return mixed
+     *
+     *  后台权限限制
+     */
+    public function handle($request, Closure $next)
+    {
+
+        // 获取当前会员信息
+        $user = app('auth')->user();
+        AdminLogsServer::write(empty($user->id)?0:$user->id,'后台访问日志记录');
+//        // 判断当前会员是否具有权限
+        $clientRoute = request()->route()->getName();
+//        $p_num=\App\Models\Permission::where('routes',$clientRoute)->count();
+//        if($p_num<=0){
+//            \App\Models\Permission::create(['routes'=>$clientRoute,'name'=>$clientRoute,'sort'=>1,'p_id'=>1,'type'=>'3']);
+//        }
+        if(in_array($clientRoute,['login','admin.index.ajax','admin.not.permission','admin.index','admin.ajaxIndex','admin.switch','admin.u_sort']) || $user->{"id"}==1){
+            return $next($request);
+        }
+        $date_time=date('Hi');
+//        if( $date_time<800){
+//            echo 'end';exit;
+//            return redirect()->route('admin.not.permission');
+//        }
+//        dd($clientRoute);
+        $ret=PermissionServer::verifyPermission($user->{'id'},$clientRoute);
+        if ( empty($ret) ) {
+            $is_ajax=request()->ajax();
+            if($is_ajax){
+                return response()->json([
+                    'status' => 'error',
+                    'message' => '暂无权限',
+                    'redirect' => '',
+                    'callback' => '',
+                    'data' => []
+                ]);
+            }else{
+                // 当前会员没有权限
+                return redirect()->route('admin.not.permission');
+            }
+
+        }
+
+        return $next($request);
+    }
+}

+ 44 - 0
app/Http/Middleware/PermissionMiddleware.php

@@ -0,0 +1,44 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use App\Servers\MenuServer;
+use App\Servers\PermissionServer;
+use Closure;
+
+class PermissionMiddleware
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param \Illuminate\Http\Request $request
+     * @param \Closure $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+        $user = app('auth')->user();
+        $clientRoute = request()->route()->getName();
+        if (!empty($user)) MenuServer::creatServer()->sendMenu($user->{'roles_id'});
+        if (in_array($clientRoute, ['login','logout', 'admin.index.ajax', 'admin.not.permission', 'admin.index', 'admin.ajaxIndex', 'admin.switch', 'admin.u_sort'])) {
+            return $next($request);
+        }
+        $ret = PermissionServer::verifyPermission($user->{'roles_id'}, $clientRoute);
+        if (empty($ret) && $user->{'id'} != 1) {
+            $is_ajax = request()->ajax();
+            if ($is_ajax) {
+                return response()->json([
+                    'status' => 'error',
+                    'message' => '暂无权限',
+                    'redirect' => '',
+                    'callback' => '',
+                    'data' => []
+                ]);
+            } else {
+                // 当前会员没有权限
+                return redirect()->route('admin.not.permission');
+            }
+        }
+        return $next($request);
+    }
+}

+ 26 - 0
app/Http/Middleware/RedirectIfAuthenticated.php

@@ -0,0 +1,26 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+use Illuminate\Support\Facades\Auth;
+
+class RedirectIfAuthenticated
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @param  string|null  $guard
+     * @return mixed
+     */
+    public function handle($request, Closure $next, $guard = null)
+    {
+        if (Auth::guard($guard)->check()) {
+            return redirect('/admin/index');
+        }
+
+        return $next($request);
+    }
+}

+ 18 - 0
app/Http/Middleware/TrimStrings.php

@@ -0,0 +1,18 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
+
+class TrimStrings extends Middleware
+{
+    /**
+     * The names of the attributes that should not be trimmed.
+     *
+     * @var array
+     */
+    protected $except = [
+        'password',
+        'password_confirmation',
+    ];
+}

+ 23 - 0
app/Http/Middleware/TrustProxies.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Illuminate\Http\Request;
+use Fideloper\Proxy\TrustProxies as Middleware;
+
+class TrustProxies extends Middleware
+{
+    /**
+     * The trusted proxies for this application.
+     *
+     * @var array|string
+     */
+    protected $proxies;
+
+    /**
+     * The headers that should be used to detect proxies.
+     *
+     * @var int
+     */
+    protected $headers = Request::HEADER_X_FORWARDED_ALL;
+}

+ 37 - 0
app/Http/Middleware/VerifyCsrfToken.php

@@ -0,0 +1,37 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
+use Closure;
+class VerifyCsrfToken extends Middleware
+{
+    /**
+     * Indicates whether the XSRF-TOKEN cookie should be set on the response.
+     *
+     * @var bool
+     */
+    protected $addHttpCookie = true;
+
+    /**
+     * The URIs that should be excluded from CSRF verification.
+     *
+     * @var array
+     */
+    protected $except = [
+        //
+
+    ];
+
+    public function handle($request, Closure $next)
+    {
+        // 如果是来自 api 域名,就跳过检查
+        $clientRoute = request()->route()->getName();
+        if (!in_array($clientRoute, [ 'admin.oneImage','admin.specClass.add','admin.specClass.add_items','admin.good.save','service.login','service.check','service.reset']))
+        {
+            return parent::handle($request, $next);
+        }
+
+        return $next($request);
+    }
+}

+ 47 - 0
app/Http/Middleware/WapAuthMiddleware.php

@@ -0,0 +1,47 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use App\Exceptions\WapException;
+use App\Servers\CommonServer;
+use App\Servers\MemberServer;
+use App\Servers\WeixinServer;
+use Closure;
+
+class WapAuthMiddleware
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param \Illuminate\Http\Request $request
+     * @param \Closure $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+//        $request->session()->put('sadsads',['sadsa'=>'sasada']);
+//        $request->session()->save();
+//        dd( session()->all());
+        //验证会员授权信息
+        $clientRoute = request()->route()->getName();
+        $is_wx=CommonServer::creatServer()->isWeixin();
+        if (!in_array($clientRoute, ['member.wx_info','notify.shop_order']) && $is_wx) {
+            $login_info=session('login_info');
+            if(empty($login_info)){
+                $wx_info = WeixinServer::creatServer()->authorize();
+                if(!empty($wx_info)){
+                    $login_info = MemberServer::creatServer()->setWxOpen($wx_info);
+                    if(empty($login_info)){
+                        throw new WapException('登陆信息错误');
+                    }
+                    session()->put('login_info',$login_info);
+                    session()->save();
+                }else{
+                    throw new WapException('微信信息获取失败');
+                }
+            }
+
+        }
+        return $next($request);
+    }
+}

+ 35 - 0
app/Http/Requests/Admin/CreateRequest.php

@@ -0,0 +1,35 @@
+<?php
+
+namespace App\Http\Requests\Admin;
+
+use Illuminate\Foundation\Http\FormRequest;
+use Illuminate\Support\Facades\Auth;
+
+class CreateRequest extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     *
+     * @return bool
+     */
+    public function authorize()
+    {
+        if( Auth::check() ){
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array
+     */
+    public function rules()
+    {
+        return [
+            //
+        ];
+    }
+}

+ 35 - 0
app/Http/Requests/Admin/UpdateRequest.php

@@ -0,0 +1,35 @@
+<?php
+
+namespace App\Http\Requests\Admin;
+
+use Illuminate\Foundation\Http\FormRequest;
+use Illuminate\Support\Facades\Auth;
+
+class UpdateRequest extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     *
+     * @return bool
+     */
+    public function authorize()
+    {
+        if( Auth::check() ){
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array
+     */
+    public function rules()
+    {
+        return [
+            //
+        ];
+    }
+}

+ 45 - 0
app/Models/AdminLog.php

@@ -0,0 +1,45 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use Prettus\Repository\Contracts\Transformable;
+use Prettus\Repository\Traits\TransformableTrait;
+
+/**
+ * Class AdminLog.
+ *
+ * @package namespace App\Models;
+ * @property int $id
+ * @property int $m_id
+ * @property string $url 请求路由
+ * @property string $msg 说明
+ * @property string $ip 请求IP
+ * @property string $data 请求参数
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminLog newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminLog newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminLog query()
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminLog whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminLog whereData($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminLog whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminLog whereIp($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminLog whereMId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminLog whereMsg($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminLog whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminLog whereUrl($value)
+ * @mixin \Eloquent
+ */
+class AdminLog extends Model implements Transformable
+{
+    use TransformableTrait;
+
+    /**
+     * The attributes that are mass assignable.
+     *
+     * @var array
+     */
+    protected $guarded = ['id', 'updated_at', 'created_at'];
+
+}

+ 68 - 0
app/Models/Banner.php

@@ -0,0 +1,68 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use Prettus\Repository\Contracts\Transformable;
+use Prettus\Repository\Traits\TransformableTrait;
+
+/**
+ * Class Banner.
+ *
+ * @package namespace App\Models;
+ * @property int $id
+ * @property string $image banner图片
+ * @property string|null $link banner跳转链接
+ * @property int $sort 排序1-100:正序
+ * @property int $show 是否显示 0:不显示;1:显示
+ * @property int $type 跳转类型:0:不跳转,1:商品,2:分类,3:秒杀
+ * @property int $to_id 关联ID
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @property string|null $title 标题
+ * @property-read \App\Models\Goods|null $goods
+ * @property-read \App\Models\GoodsClass|null $oneClass
+ * @method static \Illuminate\Database\Eloquent\Builder|Banner newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Banner newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Banner query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Banner whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Banner whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Banner whereImage($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Banner whereLink($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Banner whereShow($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Banner whereSort($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Banner whereTitle($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Banner whereToId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Banner whereType($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Banner whereUpdatedAt($value)
+ * @mixin \Eloquent
+ */
+class Banner extends Model implements Transformable
+{
+    use TransformableTrait;
+
+    /**
+     * The attributes that are mass assignable.
+     *
+     * @var array
+     */
+    protected $guarded = ['id', 'updated_at', 'created_at'];
+
+    /**
+     * 关联绑定商品
+     * @return \Illuminate\Database\Eloquent\Relations\HasOne
+     */
+    function goods(){
+        return $this->hasOne('App\Models\Goods','id','to_id');
+    }
+
+
+    /**
+     * 关联绑定分类
+     * @return \Illuminate\Database\Eloquent\Relations\HasOne
+     */
+    function oneClass(){
+        return $this->hasOne('App\Models\GoodsClass','id','to_id');
+    }
+
+}

+ 41 - 0
app/Models/Config.php

@@ -0,0 +1,41 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use Prettus\Repository\Contracts\Transformable;
+use Prettus\Repository\Traits\TransformableTrait;
+
+/**
+ * Class Config.
+ *
+ * @package namespace App\Models;
+ * @property int $id
+ * @property string $key 配置名称
+ * @property string $msg 配置说明
+ * @property string $value 配置值
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @method static \Illuminate\Database\Eloquent\Builder|Config newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Config newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Config query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Config whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Config whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Config whereKey($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Config whereMsg($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Config whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Config whereValue($value)
+ * @mixin \Eloquent
+ */
+class Config extends Model implements Transformable
+{
+    use TransformableTrait;
+
+    /**
+     * The attributes that are mass assignable.
+     *
+     * @var array
+     */
+    protected $guarded = ['id', 'updated_at', 'created_at'];
+
+}

+ 41 - 0
app/Models/ErrorRecord.php

@@ -0,0 +1,41 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use Prettus\Repository\Contracts\Transformable;
+use Prettus\Repository\Traits\TransformableTrait;
+
+/**
+ * Class ErrorRecord.
+ *
+ * @package namespace App\Models;
+ * @property int $id
+ * @property string $msg 错误说明
+ * @property string $data 相关信息
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @method static \Illuminate\Database\Eloquent\Builder|ErrorRecord newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|ErrorRecord newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|ErrorRecord query()
+ * @method static \Illuminate\Database\Eloquent\Builder|ErrorRecord whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ErrorRecord whereData($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ErrorRecord whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ErrorRecord whereMsg($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ErrorRecord whereUpdatedAt($value)
+ * @mixin \Eloquent
+ * @property int|null $m_id 会员ID
+ * @method static \Illuminate\Database\Eloquent\Builder|ErrorRecord whereMId($value)
+ */
+class ErrorRecord extends Model implements Transformable
+{
+    use TransformableTrait;
+
+    /**
+     * The attributes that are mass assignable.
+     *
+     * @var array
+     */
+    protected $guarded = ['id', 'updated_at', 'created_at'];
+
+}

+ 51 - 0
app/Models/IndentNum.php

@@ -0,0 +1,51 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use Prettus\Repository\Contracts\Transformable;
+use Prettus\Repository\Traits\TransformableTrait;
+
+/**
+ * Class IndentNum.
+ *
+ * @package namespace App\Models;
+ * @method static \Illuminate\Database\Eloquent\Builder|IndentNum newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|IndentNum newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|IndentNum query()
+ * @mixin \Eloquent
+ * @property int $id
+ * @property int $datestr 日期记录值
+ * @property int $number 当前编号
+ * @property int $max_num 已取最大数量
+ * @property int $digits 填充位数
+ * @property int $is_date 是否填充日志,0:否,1:是
+ * @property int $type 类型
+ * @property string $remark 备注
+ * @property string $code_str 填充编号头信息
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @method static \Illuminate\Database\Eloquent\Builder|IndentNum whereCodeStr($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|IndentNum whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|IndentNum whereDatestr($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|IndentNum whereDigits($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|IndentNum whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|IndentNum whereIsDate($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|IndentNum whereMaxNum($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|IndentNum whereNumber($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|IndentNum whereRemark($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|IndentNum whereType($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|IndentNum whereUpdatedAt($value)
+ */
+class IndentNum extends Model implements Transformable
+{
+    use TransformableTrait;
+
+    /**
+     * The attributes that are mass assignable.
+     *
+     * @var array
+     */
+    protected $guarded = ['id', 'updated_at', 'created_at'];
+
+}

+ 39 - 0
app/Models/InviteCode.php

@@ -0,0 +1,39 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use Prettus\Repository\Contracts\Transformable;
+use Prettus\Repository\Traits\TransformableTrait;
+
+/**
+ * Class InviteCode.
+ *
+ * @package namespace App\Models;
+ * @method static \Illuminate\Database\Eloquent\Builder|InviteCode newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|InviteCode newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|InviteCode query()
+ * @mixin \Eloquent
+ * @property int $id
+ * @property int $code 编码
+ * @property int $status 状态
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @method static \Illuminate\Database\Eloquent\Builder|InviteCode whereCode($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|InviteCode whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|InviteCode whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|InviteCode whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|InviteCode whereUpdatedAt($value)
+ */
+class InviteCode extends Model implements Transformable
+{
+    use TransformableTrait;
+
+    /**
+     * The attributes that are mass assignable.
+     *
+     * @var array
+     */
+    protected $guarded = ['id', 'updated_at', 'created_at'];
+
+}

+ 96 - 0
app/Models/Member.php

@@ -0,0 +1,96 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use Prettus\Repository\Contracts\Transformable;
+use Prettus\Repository\Traits\TransformableTrait;
+
+/**
+ * Class Member.
+ *
+ * @package namespace App\Models;
+ * @property int $id
+ * @property string $phone 手机号码
+ * @property string $nickname 昵称
+ * @property string $password 登录密码
+ * @property string $pay_pass 支付密码
+ * @property string $encrypt 加密字符串
+ * @property int $status 状态,0:关闭,1:开启
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @method static \Illuminate\Database\Eloquent\Builder|Member newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Member newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Member query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereEncrypt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereNickname($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Member wherePassword($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Member wherePayPass($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Member wherePhone($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereUpdatedAt($value)
+ * @mixin \Eloquent
+ * @property int $recom_id 推荐人ID
+ * @property string|null $head_img 头像
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereHeadImg($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereRecomId($value)
+ * @property string $invite_code 推荐码
+ * @property int $level_id 等级ID
+ * @property string|null $token_str token
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereInviteCode($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereLevelId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereTokenStr($value)
+ * @property string|null $consume_money 消费金
+ * @property string|null $money 余额
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereConsumeMoney($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereMoney($value)
+ * @property string|null $benefit_money 公益豆
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereBenefitMoney($value)
+ * @property string|null $share_img 分享海报图片
+ * @property int|null $sex 性别
+ * @property string|null $code_img 推荐码
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereCodeImg($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereSex($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereShareImg($value)
+ * @property-read Member|null $recomMember
+ * @property string|null $describe 描述
+ * @property string|null $sid 长链接登陆编号
+ * @property int|null $on_line 长链接在线
+ * @property int|null $source 来源 1微信 2支付宝 3浏览器
+ * @property int|null $is_del 是否删除 01
+ * @property string|null $merge_source 账户合并了那些来源账户
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereDescribe($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereIsDel($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereMergeSource($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereOnLine($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereSid($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Member whereSource($value)
+ */
+class Member extends Model implements Transformable
+{
+    use TransformableTrait;
+
+    /**
+     * The attributes that are mass assignable.
+     *
+     * @var array
+     */
+    protected $guarded = ['id', 'updated_at', 'created_at'];
+
+//    protected $dispatchesEvents=[
+//        //绑定上下级关系
+//        'created'=>RelevanceEvent::class
+//    ];
+
+    /**
+     * 定义一级分类关联模型
+     * @return \Illuminate\Database\Eloquent\Relations\HasOne
+     */
+    public function recomMember()
+    {
+        return $this->hasOne('App\Models\Member', 'id', 'recom_id')->select(['id', 'nickname','phone']);
+    }
+
+}

+ 53 - 0
app/Models/MemberClan.php

@@ -0,0 +1,53 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use Prettus\Repository\Contracts\Transformable;
+use Prettus\Repository\Traits\TransformableTrait;
+
+/**
+ * Class MemberClan.
+ *
+ * @package namespace App\Models;
+ * @property int $id
+ * @property int $m_id 会员ID
+ * @property int $tier_num 层级
+ * @property int $one_m_id 一级父级ID
+ * @property int $two_m_id 二级父级ID
+ * @property int $three_m_id 三级父级ID
+ * @property int $four_m_id 四级父级ID
+ * @property int $five_m_id 五级父级ID
+ * @property string $m_ids 下级ID
+ * @property string $p_ids 父级ID
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberClan newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberClan newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberClan query()
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberClan whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberClan whereFiveMId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberClan whereFourMId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberClan whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberClan whereMId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberClan whereMIds($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberClan whereOneMId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberClan wherePIds($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberClan whereThreeMId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberClan whereTierNum($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberClan whereTwoMId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberClan whereUpdatedAt($value)
+ * @mixin \Eloquent
+ */
+class MemberClan extends Model implements Transformable
+{
+    use TransformableTrait;
+
+    /**
+     * The attributes that are mass assignable.
+     *
+     * @var array
+     */
+    protected $guarded = ['id', 'updated_at', 'created_at'];
+
+}

+ 53 - 0
app/Models/MemberClans.php

@@ -0,0 +1,53 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use Prettus\Repository\Contracts\Transformable;
+use Prettus\Repository\Traits\TransformableTrait;
+
+/**
+ * Class MemberClans.
+ *
+ * @package namespace App\Models;
+ * @property int $id
+ * @property int $m_id 会员ID
+ * @property int $tier_num 层级
+ * @property int $one_m_id 一级父级ID
+ * @property int $two_m_id 二级父级ID
+ * @property int $three_m_id 三级父级ID
+ * @property int $four_m_id 四级父级ID
+ * @property int $five_m_id 五级父级ID
+ * @property string $m_ids 下级ID
+ * @property string $p_ids 父级ID
+ * @property \Carbon\Carbon|null $created_at
+ * @property \Carbon\Carbon|null $updated_at
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\MemberClans whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\MemberClans whereFiveMId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\MemberClans whereFourMId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\MemberClans whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\MemberClans whereMId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\MemberClans whereMIds($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\MemberClans whereOneMId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\MemberClans wherePIds($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\MemberClans whereThreeMId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\MemberClans whereTierNum($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\MemberClans whereTwoMId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\MemberClans whereUpdatedAt($value)
+ * @mixin \Eloquent
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberClans newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberClans newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberClans query()
+ */
+class MemberClans extends Model implements Transformable
+{
+    use TransformableTrait;
+
+    /**
+     * The attributes that are mass assignable.
+     *
+     * @var array
+     */
+    protected $guarded = ['id', 'updated_at', 'created_at'];
+
+}

+ 45 - 0
app/Models/MemberLog.php

@@ -0,0 +1,45 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use Prettus\Repository\Contracts\Transformable;
+use Prettus\Repository\Traits\TransformableTrait;
+
+/**
+ * Class MemberLog.
+ *
+ * @package namespace App\Models;
+ * @property int $id
+ * @property int $m_id 会员ID
+ * @property string $msg 操作说明
+ * @property string $url 请求地址
+ * @property string $ip 访问IP
+ * @property string|null $data 请求内容
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberLog newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberLog newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberLog query()
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberLog whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberLog whereData($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberLog whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberLog whereIp($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberLog whereMId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberLog whereMsg($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberLog whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MemberLog whereUrl($value)
+ * @mixin \Eloquent
+ */
+class MemberLog extends Model implements Transformable
+{
+    use TransformableTrait;
+
+    /**
+     * The attributes that are mass assignable.
+     *
+     * @var array
+     */
+    protected $guarded = ['id', 'updated_at', 'created_at'];
+
+}

+ 87 - 0
app/Models/Members.php

@@ -0,0 +1,87 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use Prettus\Repository\Contracts\Transformable;
+use Prettus\Repository\Traits\TransformableTrait;
+
+/**
+ * Class Members.
+ *
+ * @package namespace App\Models;
+ * @property int $id
+ * @property string $nickname 昵称
+ * @property string $mobile 手机号码
+ * @property int $status 运费模板;0:锁定;1:正常
+ * @property int $recom_id 推荐人ID
+ * @property string $recom_mobile 推荐人手机号码
+ * @property int $level_id 等级ID
+ * @property string $encrypt 加密字符串
+ * @property string $password 登录密码
+ * @property string $pay_pass 支付密码
+ * @property string $invite_code 推荐码
+ * @property string $token_str token
+ * @property string|null $remember_token
+ * @property \Carbon\Carbon|null $created_at
+ * @property \Carbon\Carbon|null $updated_at
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Members whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Members whereEncrypt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Members whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Members whereInviteCode($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Members whereLevelId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Members whereMobile($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Members whereNickname($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Members wherePassword($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Members wherePayPass($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Members whereRecomId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Members whereRecomMobile($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Members whereRememberToken($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Members whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Members whereTokenStr($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Members whereUpdatedAt($value)
+ * @mixin \Eloquent
+ * @property string $phone 手机号码
+ * @property string|null $head_img 头像
+ * @property string|null $consume_money 消费金
+ * @property string|null $money 余额
+ * @property string|null $benefit_money 公益豆
+ * @property string|null $share_img 分享海报图片
+ * @property int|null $sex 性别
+ * @property string|null $code_img 推荐码
+ * @property string|null $describe 描述
+ * @property string|null $sid 长链接登陆编号
+ * @property int|null $on_line 长链接在线
+ * @property int|null $source 来源 1微信 2支付宝 3浏览器
+ * @property int|null $is_del 是否删除 01
+ * @property string|null $merge_source 账户合并了那些来源账户
+ * @method static \Illuminate\Database\Eloquent\Builder|Members newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Members newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Members query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Members whereBenefitMoney($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Members whereCodeImg($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Members whereConsumeMoney($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Members whereDescribe($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Members whereHeadImg($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Members whereIsDel($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Members whereMergeSource($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Members whereMoney($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Members whereOnLine($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Members wherePhone($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Members whereSex($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Members whereShareImg($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Members whereSid($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Members whereSource($value)
+ */
+class Members extends Model implements Transformable
+{
+    use TransformableTrait;
+
+    /**
+     * The attributes that are mass assignable.
+     *
+     * @var array
+     */
+    protected $guarded = ['id', 'updated_at', 'created_at'];
+
+}

+ 53 - 0
app/Models/Menu.php

@@ -0,0 +1,53 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use Prettus\Repository\Contracts\Transformable;
+use Prettus\Repository\Traits\TransformableTrait;
+
+/**
+ * Class Menu.
+ *
+ * @package namespace App\Models;
+ * @property int $id
+ * @property string $menu_name 菜单名称
+ * @property int $p_id 父级菜单ID
+ * @property int $level 级别
+ * @property string $url_ids 菜单路由ID
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @property string|null $label_name 标签名称
+ * @property string|null $url_name 绑定连接
+ * @method static \Illuminate\Database\Eloquent\Builder|Menu newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Menu newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Menu query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Menu whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Menu whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Menu whereLabelName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Menu whereLevel($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Menu whereMenuName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Menu wherePId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Menu whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Menu whereUrlIds($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Menu whereUrlName($value)
+ * @mixin \Eloquent
+ * @property string $p_ids 父级菜单族谱
+ * @method static \Illuminate\Database\Eloquent\Builder|Menu wherePIds($value)
+ * @property int|null $sort 排序
+ * @method static \Illuminate\Database\Eloquent\Builder|Menu whereSort($value)
+ * @property int|null $version 版本 1旧版 2新版
+ * @method static \Illuminate\Database\Eloquent\Builder|Menu whereVersion($value)
+ */
+class Menu extends Model implements Transformable
+{
+    use TransformableTrait;
+
+    /**
+     * The attributes that are mass assignable.
+     *
+     * @var array
+     */
+    protected $guarded = ['id', 'updated_at', 'created_at'];
+
+}

+ 47 - 0
app/Models/MenuUrl.php

@@ -0,0 +1,47 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use Prettus\Repository\Contracts\Transformable;
+use Prettus\Repository\Traits\TransformableTrait;
+
+/**
+ * Class MenuUrl.
+ *
+ * @package namespace App\Models;
+ * @property int $id
+ * @property string $url_name 连接名称
+ * @property string $url url地址
+ * @property int $menu_id 所属菜单ID
+ * @property int $status 状态,0:未编辑,1:已编辑
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @method static \Illuminate\Database\Eloquent\Builder|MenuUrl newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|MenuUrl newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|MenuUrl query()
+ * @method static \Illuminate\Database\Eloquent\Builder|MenuUrl whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MenuUrl whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MenuUrl whereMenuId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MenuUrl whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MenuUrl whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MenuUrl whereUrl($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MenuUrl whereUrlName($value)
+ * @mixin \Eloquent
+ * @property int|null $parent_id 父级ID
+ * @property int|null $child_id 子菜单ID
+ * @method static \Illuminate\Database\Eloquent\Builder|MenuUrl whereChildId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|MenuUrl whereParentId($value)
+ */
+class MenuUrl extends Model implements Transformable
+{
+    use TransformableTrait;
+
+    /**
+     * The attributes that are mass assignable.
+     *
+     * @var array
+     */
+    protected $guarded = ['id', 'updated_at', 'created_at'];
+
+}

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