54 lines
1.5 KiB
PHP
54 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Endpoint\Api\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Store\Store;
|
|
use App\Models\ProductSku;
|
|
use App\Helpers\Paginator;
|
|
use App\Endpoint\Api\Http\Resources\{StoreResource, StoreProductResource};
|
|
|
|
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 = ['product_skus.id', 'product_skus.name', 'product_skus.cover', 'product_skus.sell_price', 'product_skus.vip_price', 'product_skus.market_price', 'store_product_skus.amount'];
|
|
|
|
$skus = $store->productSkus()
|
|
->select($fields)
|
|
->filter($input)
|
|
->online()
|
|
->wherePivot('status', 1)
|
|
->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50));
|
|
|
|
return StoreProductResource::collection($skus);
|
|
}
|
|
}
|