6
0
Fork 0
jiqu-library-server/app/Endpoint/Api/Http/Controllers/Product/PartController.php

61 lines
2.0 KiB
PHP

<?php
namespace App\Endpoint\Api\Http\Controllers\Product;
use App\Endpoint\Api\Http\Controllers\Controller;
use App\Endpoint\Api\Http\Resources\CouponResource;
use App\Endpoint\Api\Http\Resources\ProductSkuTinyResource;
use App\Helpers\Paginator;
use App\Models\ProductPart;
use App\Models\ProductPartSku;
use Illuminate\Http\Request;
class PartController extends Controller
{
/**
* 分区商品
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function index(Request $request)
{
$part = null;
if (filled($key = $request->query('part'))) {
$part = ProductPart::where('key', $key)->first();
}
$paginator = ProductPartSku::with('sku:id,name,cover,sell_price,vip_price,market_price')
->whereHas('sku', function ($query) {
return $query->online();
})
->when($part, function ($query, $part) {
$query->where('part_id', $part->id);
}, function ($query) {
$query->whereRaw('1!=1');
})
->latest('sort')
->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50));
return ProductSkuTinyResource::collection(
$paginator->through(function ($item) {
return $item->sku;
})
);
}
public function coupons(Request $request)
{
$part = null;
if (filled($partKey = $request->query('part'))) {
$part = ProductPart::where('key', $partKey)->first();
}
return response()->json([
'coupons'=> $part ? CouponResource::collection($part->getCoupons()->get()) : [],
'description' => $part?->description,
]);
}
}