diff --git a/beike/Repositories/ProductRepo.php b/beike/Repositories/ProductRepo.php index 28553824..8593e11e 100644 --- a/beike/Repositories/ProductRepo.php +++ b/beike/Repositories/ProductRepo.php @@ -13,7 +13,7 @@ namespace Beike\Repositories; use Beike\Models\Product; use Illuminate\Database\Eloquent\Builder; -use Beike\Shop\Http\Resources\ProductList; +use Beike\Shop\Http\Resources\ProductSimple; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\HigherOrderBuilderProxy; use Illuminate\Http\Resources\Json\AnonymousResourceCollection; @@ -43,8 +43,7 @@ class ProductRepo { $builder = self::getBuilder(['category_id' => $categoryId]); $products = $builder->with('inCurrentWishlist')->get(); - $items = ProductList::collection($products); - return $items; + return ProductSimple::collection($products); } @@ -57,7 +56,7 @@ class ProductRepo { $builder = self::getBuilder(['product_ids' => $productIds])->whereHas('master_sku'); $products = $builder->with('inCurrentWishlist')->get(); - return ProductList::collection($products); + return ProductSimple::collection($products); } diff --git a/beike/Shop/Http/Controllers/BrandController.php b/beike/Shop/Http/Controllers/BrandController.php index a68e7abe..41680ae2 100644 --- a/beike/Shop/Http/Controllers/BrandController.php +++ b/beike/Shop/Http/Controllers/BrandController.php @@ -2,9 +2,9 @@ namespace Beike\Shop\Http\Controllers; -use Beike\Repositories\BrandRepo; -use Beike\Shop\Http\Resources\ProductList; use Illuminate\Http\Request; +use Beike\Repositories\BrandRepo; +use Beike\Shop\Http\Resources\ProductSimple; class BrandController extends Controller { @@ -23,7 +23,7 @@ class BrandController extends Controller $products = BrandRepo::find($id)->products()->with('inCurrentWishlist')->paginate(20); $data = [ - 'products' => ProductList::collection($products)->jsonSerialize(), + 'products' => ProductSimple::collection($products)->jsonSerialize(), ]; return view('brand/info', $data); diff --git a/beike/Shop/Http/Controllers/CategoryController.php b/beike/Shop/Http/Controllers/CategoryController.php index 9c8029ec..9b0e40ec 100644 --- a/beike/Shop/Http/Controllers/CategoryController.php +++ b/beike/Shop/Http/Controllers/CategoryController.php @@ -3,10 +3,9 @@ namespace Beike\Shop\Http\Controllers; use Beike\Models\Category; -use Beike\Repositories\CategoryRepo; -use Beike\Repositories\ProductRepo; -use Beike\Shop\Http\Resources\ProductList; use Illuminate\Http\Request; +use Beike\Repositories\ProductRepo; +use Beike\Repositories\CategoryRepo; class CategoryController extends Controller { diff --git a/beike/Shop/Http/Controllers/ProductController.php b/beike/Shop/Http/Controllers/ProductController.php index d4452bf5..2a50f3db 100644 --- a/beike/Shop/Http/Controllers/ProductController.php +++ b/beike/Shop/Http/Controllers/ProductController.php @@ -3,20 +3,40 @@ namespace Beike\Shop\Http\Controllers; use Beike\Models\Product; +use Beike\Shop\Http\Resources\ProductSimple; +use Illuminate\Http\Request; use Beike\Repositories\ProductRepo; use Beike\Shop\Http\Resources\ProductDetail; -use Illuminate\Http\Request; +use Illuminate\Http\Resources\Json\AnonymousResourceCollection; class ProductController extends Controller { + /** + * 产品详情页 + * @param Request $request + * @param Product $product + * @return mixed + */ public function show(Request $request, Product $product) { $product = ProductRepo::getProductDetail($product); - $data = [ 'product' => (new ProductDetail($product))->jsonSerialize(), ]; - return view('product', $data); } + + + /** + * 通过关键字搜索产品 + * + * @param Request $request + * @return AnonymousResourceCollection + */ + public function search(Request $request): AnonymousResourceCollection + { + $keyword = $request->get('keyword'); + $products = ProductRepo::getBuilder(['name' => $keyword])->where('active', true)->paginate(); + return ProductSimple::collection($products); + } } diff --git a/beike/Shop/Http/Resources/ProductList.php b/beike/Shop/Http/Resources/ProductSimple.php similarity index 95% rename from beike/Shop/Http/Resources/ProductList.php rename to beike/Shop/Http/Resources/ProductSimple.php index e5a8d0e4..b35c0e0e 100644 --- a/beike/Shop/Http/Resources/ProductList.php +++ b/beike/Shop/Http/Resources/ProductSimple.php @@ -1,6 +1,6 @@ name('pages.show'); + Route::get('products/search', [ProductController::class, 'search'])->name('products.search'); Route::get('products/{product}', [ProductController::class, 'show'])->name('products.show'); Route::get('register', [RegisterController::class, 'index'])->name('register.index'); diff --git a/plugins/LatestProducts/Controllers/MenusController.php b/plugins/LatestProducts/Controllers/MenusController.php index a596347b..1c31b3c8 100644 --- a/plugins/LatestProducts/Controllers/MenusController.php +++ b/plugins/LatestProducts/Controllers/MenusController.php @@ -12,8 +12,8 @@ namespace Plugin\LatestProducts\Controllers; use Beike\Repositories\ProductRepo; -use Beike\Shop\Http\Resources\ProductList; use Beike\Shop\Http\Controllers\Controller; +use Beike\Shop\Http\Resources\ProductSimple; class MenusController extends Controller { @@ -31,7 +31,7 @@ class MenusController extends Controller $products = ProductRepo::getBuilder()->whereHas('master_sku')->with('inCurrentWishlist')->orderByDesc('updated_at')->paginate(40); $data = [ 'products' => $products, - 'items' => ProductList::collection($products)->jsonSerialize(), + 'items' => ProductSimple::collection($products)->jsonSerialize(), ]; return view("LatestProducts::latest_products", $data); }