From 6fde28a2b8b13c53c3d939b7427acaec9b38a86e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=9D=99?= Date: Thu, 25 Nov 2021 14:29:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=9B=AE=E5=BD=95=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Api/Http/Controllers/AdController.php | 45 +++++++++++++++++++ .../Http/Controllers}/CaptchaController.php | 21 ++++----- .../Api/Http/Controllers/Controller.php | 15 +++++++ .../Api/Http/Controllers}/LoginController.php | 7 ++- .../Http/Controllers}/RegisterController.php | 7 ++- .../Http/Controllers}/SmsCodeController.php | 8 ++-- .../Api/Http/Requests}/LoginRequest.php | 2 +- .../Api/Http/Requests}/RegisterRequest.php | 2 +- .../Api/Http/Requests/StoreCaptchaRequest.php | 32 +++++++++++++ .../Http/Requests/StoreSmsCodeRequest.php} | 4 +- .../Api}/Http/Resources/AdResource.php | 8 ++-- app/Endpoint/Api/routes.php | 21 +++++++++ app/Http/Controllers/Api/V1/AdController.php | 26 ----------- app/Http/Controllers/Api/V1/Controller.php | 9 ---- app/Http/Resources/AdAddressResource.php | 22 --------- app/Providers/RouteServiceProvider.php | 2 +- routes/api.php | 12 ----- routes/api/v1/auth.php | 8 ---- routes/api/v1/common.php | 12 ----- 19 files changed, 141 insertions(+), 122 deletions(-) create mode 100644 app/Endpoint/Api/Http/Controllers/AdController.php rename app/{Http/Controllers/Api/V1 => Endpoint/Api/Http/Controllers}/CaptchaController.php (75%) create mode 100644 app/Endpoint/Api/Http/Controllers/Controller.php rename app/{Http/Controllers/Api/V1/Auth => Endpoint/Api/Http/Controllers}/LoginController.php (84%) rename app/{Http/Controllers/Api/V1/Auth => Endpoint/Api/Http/Controllers}/RegisterController.php (89%) rename app/{Http/Controllers/Api/V1 => Endpoint/Api/Http/Controllers}/SmsCodeController.php (84%) rename app/{Http/Requests/Api/V1 => Endpoint/Api/Http/Requests}/LoginRequest.php (93%) rename app/{Http/Requests/Api/V1 => Endpoint/Api/Http/Requests}/RegisterRequest.php (95%) create mode 100644 app/Endpoint/Api/Http/Requests/StoreCaptchaRequest.php rename app/{Http/Requests/Api/V1/SmsCode/StoreRequest.php => Endpoint/Api/Http/Requests/StoreSmsCodeRequest.php} (87%) rename app/{ => Endpoint/Api}/Http/Resources/AdResource.php (66%) create mode 100644 app/Endpoint/Api/routes.php delete mode 100644 app/Http/Controllers/Api/V1/AdController.php delete mode 100644 app/Http/Controllers/Api/V1/Controller.php delete mode 100644 app/Http/Resources/AdAddressResource.php delete mode 100644 routes/api.php delete mode 100644 routes/api/v1/auth.php delete mode 100644 routes/api/v1/common.php diff --git a/app/Endpoint/Api/Http/Controllers/AdController.php b/app/Endpoint/Api/Http/Controllers/AdController.php new file mode 100644 index 00000000..359be45b --- /dev/null +++ b/app/Endpoint/Api/Http/Controllers/AdController.php @@ -0,0 +1,45 @@ +query('keys'); + + if (empty($keys)) { + return response()->json([]); + } + + $addresses = AdAddress::with([ + 'ads' => function ($query) { + $query->showable()->latest('sort'); + }, + ])->showable()->whereIn('key', $keys)->get(); + + $mapAddresses = $addresses->mapWithKeys(function ($item) use ($request) { + return [ + $item->key => AdResource::collection($item->ads)->resolve($request), + ]; + }); + + foreach ($keys as $key) { + if (! $mapAddresses->has($key)) { + $mapAddresses->put($key, []); + } + } + + return response()->json($mapAddresses); + } +} diff --git a/app/Http/Controllers/Api/V1/CaptchaController.php b/app/Endpoint/Api/Http/Controllers/CaptchaController.php similarity index 75% rename from app/Http/Controllers/Api/V1/CaptchaController.php rename to app/Endpoint/Api/Http/Controllers/CaptchaController.php index 7188be44..ea5280dc 100644 --- a/app/Http/Controllers/Api/V1/CaptchaController.php +++ b/app/Endpoint/Api/Http/Controllers/CaptchaController.php @@ -1,7 +1,8 @@ filled('key') ? $request->input('key') : Str::random(16); - $builder = $this->builder(); - $builder->build( - (int) $request->input('w', 150), - (int) $request->input('h', 40), - ); + $builder->build($request->input('w', 150), $request->input('h', 40)); - if (strlen($key) <= 32) { - $captchaService->put($key, $builder->getPhrase()); - } + $captchaService->put( + $key = $request->input('key', Str::random(16)), + $builder->getPhrase() + ); return response()->json([ 'key' => $key, diff --git a/app/Endpoint/Api/Http/Controllers/Controller.php b/app/Endpoint/Api/Http/Controllers/Controller.php new file mode 100644 index 00000000..f3c87001 --- /dev/null +++ b/app/Endpoint/Api/Http/Controllers/Controller.php @@ -0,0 +1,15 @@ + ['bail', 'filled', 'string', 'max:32'], + 'w' => ['bail', 'int'], + 'h' => ['bail', 'int'], + ]; + } +} diff --git a/app/Http/Requests/Api/V1/SmsCode/StoreRequest.php b/app/Endpoint/Api/Http/Requests/StoreSmsCodeRequest.php similarity index 87% rename from app/Http/Requests/Api/V1/SmsCode/StoreRequest.php rename to app/Endpoint/Api/Http/Requests/StoreSmsCodeRequest.php index 12908329..398d1ff1 100644 --- a/app/Http/Requests/Api/V1/SmsCode/StoreRequest.php +++ b/app/Endpoint/Api/Http/Requests/StoreSmsCodeRequest.php @@ -1,11 +1,11 @@ $this->image, - 'jump_type'=>$this->jump_type, - 'jump_link'=>$this->jump_link ?: '', + 'image' => (string) $this->image, + 'jump_type' => $this->jump_type, + 'jump_link' => (string) $this->jump_link, ]; } } diff --git a/app/Endpoint/Api/routes.php b/app/Endpoint/Api/routes.php new file mode 100644 index 00000000..a3162b9c --- /dev/null +++ b/app/Endpoint/Api/routes.php @@ -0,0 +1,21 @@ + 'v1', +], function () { + Route::post('captchas', [CaptchaController::class, 'store']); + Route::get('captchas/{captcha}', [CaptchaController::class, 'show']); + Route::post('sms-codes', [SmsCodeController::class, 'store']); + + Route::post('login', LoginController::class); + Route::post('register', RegisterController::class); + + Route::get('ads', [AdController::class, 'index']); +}); diff --git a/app/Http/Controllers/Api/V1/AdController.php b/app/Http/Controllers/Api/V1/AdController.php deleted file mode 100644 index fcd4b395..00000000 --- a/app/Http/Controllers/Api/V1/AdController.php +++ /dev/null @@ -1,26 +0,0 @@ -input('address_key'); - - $list = AdAddress::with(['ads'=>function ($query) { - $query->where('is_show', 1)->orderBy('sort', 'desc'); - }])->where('is_show', 1)->whereIn('key', $addreseKeys)->get(); - - $data = []; - foreach ($addreseKeys as $key) { - $data[$key] = []; - } - $data = array_merge($data, array_column(AdAddressResource::collection($list)->toArray($request), 'ads', 'key')); - return $data; - } -} diff --git a/app/Http/Controllers/Api/V1/Controller.php b/app/Http/Controllers/Api/V1/Controller.php deleted file mode 100644 index 77e6cdc6..00000000 --- a/app/Http/Controllers/Api/V1/Controller.php +++ /dev/null @@ -1,9 +0,0 @@ - $this->key, - 'ads' => AdResource::collection($this->ads), - ]; - } -} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 3bd3c81e..620fa261 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -41,7 +41,7 @@ class RouteServiceProvider extends ServiceProvider Route::prefix('api') ->middleware('api') ->namespace($this->namespace) - ->group(base_path('routes/api.php')); + ->group(app_path('Endpoint/Api/routes.php')); Route::middleware('web') ->namespace($this->namespace) diff --git a/routes/api.php b/routes/api.php deleted file mode 100644 index 9f44fd55..00000000 --- a/routes/api.php +++ /dev/null @@ -1,12 +0,0 @@ - 'v1', -], function () { - foreach (File::allFiles(base_path('routes/api/v1')) as $file) { - require $file; - } -}); diff --git a/routes/api/v1/auth.php b/routes/api/v1/auth.php deleted file mode 100644 index 804161aa..00000000 --- a/routes/api/v1/auth.php +++ /dev/null @@ -1,8 +0,0 @@ -