6
0
Fork 0

获取商品分类

release
李静 2021-11-25 16:27:59 +08:00
parent 133b52200e
commit 991b2ce7b6
8 changed files with 172 additions and 3 deletions

View File

@ -0,0 +1,18 @@
<?php
namespace App\Endpoint\Api\Filters;
use EloquentFilter\ModelFilter;
class ProductCategoryFilter extends ModelFilter
{
public function pid($pid)
{
return $this->where('parent_id', $pid);
}
public function setup()
{
$this->showable();
}
}

View File

@ -0,0 +1,23 @@
<?php
namespace App\Endpoint\Api\Http\Controllers;
use App\Endpoint\Api\Http\Resources\ProductCategoryResource;
use App\Models\ProductCategory;
use Illuminate\Http\Request;
class ProductCategoryController extends Controller
{
/**
* 商品分类
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function index(Request $request)
{
$categories = ProductCategory::filter($request->all())->latest('sort')->get();
return ProductCategoryResource::collection($categories);
}
}

View File

@ -0,0 +1,23 @@
<?php
namespace App\Endpoint\Api\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class ConfigModelFilter
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
config(['eloquentfilter.namespace' => 'App\\Endpoint\\Api\\Filters\\']);
return $next($request);
}
}

View File

@ -0,0 +1,23 @@
<?php
namespace App\Endpoint\Api\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class ProductCategoryResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'icon' => (string) $this->icon,
];
}
}

View File

@ -4,13 +4,17 @@ use App\Endpoint\Api\Http\Controllers\AdController;
use App\Endpoint\Api\Http\Controllers\CaptchaController;
use App\Endpoint\Api\Http\Controllers\LoginController;
use App\Endpoint\Api\Http\Controllers\LogoutController;
use App\Endpoint\Api\Http\Controllers\ProductCategoryController;
use App\Endpoint\Api\Http\Controllers\RegisterController;
use App\Endpoint\Api\Http\Controllers\SmsCodeController;
use Illuminate\Support\Facades\Route;
Route::group([
'prefix' => 'v1',
'middleware' => ['guard:api'],
'middleware' => [
'guard:api',
\App\Endpoint\Api\Http\Middleware\ConfigModelFilter::class,
],
], function () {
Route::post('captchas', [CaptchaController::class, 'store']);
Route::get('captchas/{captcha}', [CaptchaController::class, 'show']);
@ -21,4 +25,6 @@ Route::group([
Route::post('register', RegisterController::class);
Route::get('ads', [AdController::class, 'index']);
Route::get('product-categories', [ProductCategoryController::class, 'index']);
});

View File

@ -5,14 +5,18 @@ namespace App\Models;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use Dcat\Admin\Traits\ModelTree;
use EloquentFilter\Filterable;
use Illuminate\Database\Eloquent\Model;
use Kalnoy\Nestedset\NodeTrait;
class ProductCategory extends Model
{
use Concerns\HasShowable;
use Filterable;
use NodeTrait;
use ModelTree;
use HasDateTimeFormatter;
protected $table = 'product_categories';
protected $casts = [

View File

@ -20,7 +20,8 @@
"laravel/framework": "^8.65",
"laravel/sanctum": "^2.12",
"laravel/tinker": "^2.5",
"overtrue/easy-sms": "^2.0"
"overtrue/easy-sms": "^2.0",
"tucker-eric/eloquentfilter": "^3.0"
},
"require-dev": {
"facade/ignition": "^2.5",

73
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "d93e7912aa10ac47d7b1923ce5dd28aa",
"content-hash": "bf84da9e525e883eda04018255f63cda",
"packages": [
{
"name": "asm89/stack-cors",
@ -6366,6 +6366,77 @@
},
"time": "2020-07-13T06:12:54+00:00"
},
{
"name": "tucker-eric/eloquentfilter",
"version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/Tucker-Eric/EloquentFilter.git",
"reference": "050dd36f788edaa413a5e5e16748a575df040bca"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Tucker-Eric/EloquentFilter/zipball/050dd36f788edaa413a5e5e16748a575df040bca",
"reference": "050dd36f788edaa413a5e5e16748a575df040bca",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"illuminate/config": "~6.0|~7.0|~8.0",
"illuminate/console": "~6.0|~7.0|~8.0",
"illuminate/database": "~6.0|~7.0|~8.0",
"illuminate/filesystem": "~6.0|~7.0|~8.0",
"illuminate/pagination": "~6.0|~7.0|~8.0",
"illuminate/support": "~6.0|~7.0|~8.0",
"php": ">=7.2"
},
"require-dev": {
"mockery/mockery": "^1.3",
"phpunit/phpunit": "^8"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"EloquentFilter\\ServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"EloquentFilter\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Eric Tucker",
"email": "tucker.ericm@gmail.com"
}
],
"description": "An Eloquent way to filter Eloquent Models",
"keywords": [
"eloquent",
"filter",
"laravel",
"model",
"query",
"search"
],
"support": {
"issues": "https://github.com/Tucker-Eric/EloquentFilter/issues",
"source": "https://github.com/Tucker-Eric/EloquentFilter/tree/3.0.0"
},
"time": "2021-05-12T16:08:43+00:00"
},
{
"name": "vlucas/phpdotenv",
"version": "v5.4.0",