50 lines
1.3 KiB
PHP
50 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Endpoint\Api\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Store;
|
|
use App\Endpoint\Api\Http\Resources\StoreResource;
|
|
use App\Endpoint\Api\Http\Resources\ProductSkuTinyResource;
|
|
use App\Models\ProductSku;
|
|
use App\Helpers\Paginator;
|
|
|
|
class StoreController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
$query = Store::effective()->sort();
|
|
if ($request->filled('title')) {
|
|
$query->where('title', 'like', '%'.$request->input('title').'%');
|
|
}
|
|
|
|
$list = $query->simplePaginate($request->input('per_page', 10));
|
|
|
|
return StoreResource::collection($list);
|
|
}
|
|
|
|
public function show($id)
|
|
{
|
|
$info = Store::findOrFail($id);
|
|
|
|
return StoreResource::make($info);
|
|
}
|
|
|
|
public function products($id, Request $request)
|
|
{
|
|
$store = Store::findOrFail($id);
|
|
|
|
$input = $request->all();
|
|
|
|
if ($request->isNotFilled('sort')) {
|
|
$input['sort'] = '-id';
|
|
}
|
|
|
|
$fields = ['id', 'name', 'cover', 'sell_price', 'vip_price', 'market_price'];
|
|
|
|
$skus = $store->productSkus()->select($fields)->filter($input)->online()->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50));
|
|
|
|
return ProductSkuTinyResource::collection($skus);
|
|
}
|
|
}
|