From 1b44673f055801babe354167c5532183c073243d Mon Sep 17 00:00:00 2001 From: panliang <1163816051@qq.com> Date: Wed, 1 Jun 2022 15:51:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E5=8C=BA=E5=95=86=E5=93=81spu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ProductPartController.php | 20 +++++++-------- app/Admin/Renderable/ProductPartSpuTable.php | 25 +++++++++++++++++++ .../Renderable/ProductSpuSimpleTable.php | 21 ++++++++++++++++ .../Controllers/Product/HotController.php | 12 +++++---- app/Models/ProductPart.php | 5 ++++ app/Models/ProductPartSku.php | 5 ++++ resources/lang/zh_CN/product-part.php | 1 + 7 files changed, 74 insertions(+), 15 deletions(-) create mode 100644 app/Admin/Renderable/ProductPartSpuTable.php create mode 100644 app/Admin/Renderable/ProductSpuSimpleTable.php diff --git a/app/Admin/Controllers/ProductPartController.php b/app/Admin/Controllers/ProductPartController.php index 5e2a50cd..71a837ba 100644 --- a/app/Admin/Controllers/ProductPartController.php +++ b/app/Admin/Controllers/ProductPartController.php @@ -3,11 +3,11 @@ namespace App\Admin\Controllers; use App\Admin\Actions\Grid\PartCoupon; -use App\Admin\Renderable\ProductPartSkuTable; -use App\Admin\Renderable\ProductSkuSimpleTable; +use App\Admin\Renderable\ProductPartSpuTable; +use App\Admin\Renderable\ProductSpuSimpleTable; use App\Admin\Repositories\ProductPart; use App\Models\ProductPart as ProductPartModel; -use App\Models\ProductSku; +use App\Models\ProductSpu; use Dcat\Admin\Admin; use Dcat\Admin\Form; use Dcat\Admin\Grid; @@ -29,9 +29,9 @@ class ProductPartController extends AdminController $grid->column('id')->sortable(); $grid->column('key'); $grid->column('name'); - $grid->column('skus')->display('分区商品')->modal(function ($modal) { + $grid->column('spus')->display('分区商品')->modal(function ($modal) { $modal->title('商品'); - return ProductPartSkuTable::make(['id'=>$this->id]); + return ProductPartSpuTable::make(['id'=>$this->id]); }); $grid->column('is_show') @@ -102,7 +102,7 @@ class ProductPartController extends AdminController */ protected function form() { - $builder = ProductPart::with(['skus']); + $builder = ProductPart::with(['spus']); return Form::make($builder, function (Form $form) { $form->display('id'); if ($form->isCreating()) { @@ -113,9 +113,9 @@ class ProductPartController extends AdminController $form->text('name'); // if ($form->isCreating()) { - $form->multipleSelectTable('skus') - ->from(ProductSkuSimpleTable::make()) - ->model(ProductSku::class, 'id', 'name') + $form->multipleSelectTable('spus') + ->from(ProductSpuSimpleTable::make()) + ->model(ProductSpu::class, 'id', 'name') ->customFormat(function ($v) { if (!$v) { return []; @@ -126,7 +126,7 @@ class ProductPartController extends AdminController // } else { // $form->hasMany('partSkus', function (Form\NestedForm $form) { // $form->select('sku_id')->options(function ($id) { - // $sku = ProductSku::find($id); + // $sku = ProductSpu::find($id); // if ($sku) { // return [$sku->id => $sku->name]; // } diff --git a/app/Admin/Renderable/ProductPartSpuTable.php b/app/Admin/Renderable/ProductPartSpuTable.php new file mode 100644 index 00000000..888f9ffb --- /dev/null +++ b/app/Admin/Renderable/ProductPartSpuTable.php @@ -0,0 +1,25 @@ +payload['id']; + // dd($partId); + $builder = ProductPartSku::query(); + $builder->with('spu')->where('part_id', $partId); + return Grid::make($builder, function (Grid $grid) { + $grid->column('spu.name', __('product-sku.fields.name')); + $grid->column('sort'); + $grid->quickSearch(['spu.name']); + $grid->model()->orderBy('sort', 'desc'); + $grid->disableActions(); + }); + } +} diff --git a/app/Admin/Renderable/ProductSpuSimpleTable.php b/app/Admin/Renderable/ProductSpuSimpleTable.php new file mode 100644 index 00000000..b15087ac --- /dev/null +++ b/app/Admin/Renderable/ProductSpuSimpleTable.php @@ -0,0 +1,21 @@ +disableRowSelector(false); + $grid->column('name'); + $grid->quickSearch(['name']); + $grid->disableActions(); + }); + } +} diff --git a/app/Endpoint/Api/Http/Controllers/Product/HotController.php b/app/Endpoint/Api/Http/Controllers/Product/HotController.php index fe5024c6..b610bb21 100644 --- a/app/Endpoint/Api/Http/Controllers/Product/HotController.php +++ b/app/Endpoint/Api/Http/Controllers/Product/HotController.php @@ -4,7 +4,7 @@ namespace App\Endpoint\Api\Http\Controllers\Product; use App\Endpoint\Api\Http\Controllers\Controller; use App\Endpoint\Api\Http\Resources\ProductSkuTinyResource; -use App\Models\ProductSku; +use App\Models\ProductSpu; class HotController extends Controller { @@ -15,10 +15,12 @@ class HotController extends Controller */ public function __invoke() { - $skus = ProductSku::online() - ->latest('sales') - ->limit(20) - ->get(); + $skus = ProductSpu::whereHas('skus', function ($q) { + $q->online(); + }) + ->latest('sales') + ->limit(20) + ->get(); return ProductSkuTinyResource::collection($skus); } diff --git a/app/Models/ProductPart.php b/app/Models/ProductPart.php index 33064b9f..3695bf34 100644 --- a/app/Models/ProductPart.php +++ b/app/Models/ProductPart.php @@ -53,6 +53,11 @@ class ProductPart extends Model return $this->belongsToMany(ProductSku::class, ProductPartSku::class, 'part_id', 'sku_id')->withTimestamps(); } + public function spus() + { + return $this->belongsToMany(ProductSpu::class, ProductPartSku::class, 'part_id', 'sku_id')->withTimestamps(); + } + /** * 此分区购买赠送的券关系 */ diff --git a/app/Models/ProductPartSku.php b/app/Models/ProductPartSku.php index 890182e3..1da2e28d 100644 --- a/app/Models/ProductPartSku.php +++ b/app/Models/ProductPartSku.php @@ -40,6 +40,11 @@ class ProductPartSku extends Model return $this->belongsTo(ProductSku::class, 'sku_id'); } + public function spu() + { + return $this->belongsTo(ProductSpu::class, 'sku_id'); + } + /** * 此分区商品所属的分区 */ diff --git a/resources/lang/zh_CN/product-part.php b/resources/lang/zh_CN/product-part.php index b22a024f..1c55839a 100644 --- a/resources/lang/zh_CN/product-part.php +++ b/resources/lang/zh_CN/product-part.php @@ -11,6 +11,7 @@ return [ 'is_show' => '显示', 'partSkus' => '分区商品', 'skus'=> '分区商品', + 'spus'=> '分区商品', 'sku_id' => '商品名称', 'sort' => '排序', 'coupons'=>'赠券配置',