获取商品分类
parent
133b52200e
commit
991b2ce7b6
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -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']);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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 = [
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Reference in New Issue