6
0
Fork 0

分区商品spu

release
panliang 2022-06-01 15:51:44 +08:00
parent 91eccc1761
commit 1b44673f05
7 changed files with 74 additions and 15 deletions

View File

@ -3,11 +3,11 @@
namespace App\Admin\Controllers; namespace App\Admin\Controllers;
use App\Admin\Actions\Grid\PartCoupon; use App\Admin\Actions\Grid\PartCoupon;
use App\Admin\Renderable\ProductPartSkuTable; use App\Admin\Renderable\ProductPartSpuTable;
use App\Admin\Renderable\ProductSkuSimpleTable; use App\Admin\Renderable\ProductSpuSimpleTable;
use App\Admin\Repositories\ProductPart; use App\Admin\Repositories\ProductPart;
use App\Models\ProductPart as ProductPartModel; use App\Models\ProductPart as ProductPartModel;
use App\Models\ProductSku; use App\Models\ProductSpu;
use Dcat\Admin\Admin; use Dcat\Admin\Admin;
use Dcat\Admin\Form; use Dcat\Admin\Form;
use Dcat\Admin\Grid; use Dcat\Admin\Grid;
@ -29,9 +29,9 @@ class ProductPartController extends AdminController
$grid->column('id')->sortable(); $grid->column('id')->sortable();
$grid->column('key'); $grid->column('key');
$grid->column('name'); $grid->column('name');
$grid->column('skus')->display('分区商品')->modal(function ($modal) { $grid->column('spus')->display('分区商品')->modal(function ($modal) {
$modal->title('商品'); $modal->title('商品');
return ProductPartSkuTable::make(['id'=>$this->id]); return ProductPartSpuTable::make(['id'=>$this->id]);
}); });
$grid->column('is_show') $grid->column('is_show')
@ -102,7 +102,7 @@ class ProductPartController extends AdminController
*/ */
protected function form() protected function form()
{ {
$builder = ProductPart::with(['skus']); $builder = ProductPart::with(['spus']);
return Form::make($builder, function (Form $form) { return Form::make($builder, function (Form $form) {
$form->display('id'); $form->display('id');
if ($form->isCreating()) { if ($form->isCreating()) {
@ -113,9 +113,9 @@ class ProductPartController extends AdminController
$form->text('name'); $form->text('name');
// if ($form->isCreating()) { // if ($form->isCreating()) {
$form->multipleSelectTable('skus') $form->multipleSelectTable('spus')
->from(ProductSkuSimpleTable::make()) ->from(ProductSpuSimpleTable::make())
->model(ProductSku::class, 'id', 'name') ->model(ProductSpu::class, 'id', 'name')
->customFormat(function ($v) { ->customFormat(function ($v) {
if (!$v) { if (!$v) {
return []; return [];
@ -126,7 +126,7 @@ class ProductPartController extends AdminController
// } else { // } else {
// $form->hasMany('partSkus', function (Form\NestedForm $form) { // $form->hasMany('partSkus', function (Form\NestedForm $form) {
// $form->select('sku_id')->options(function ($id) { // $form->select('sku_id')->options(function ($id) {
// $sku = ProductSku::find($id); // $sku = ProductSpu::find($id);
// if ($sku) { // if ($sku) {
// return [$sku->id => $sku->name]; // return [$sku->id => $sku->name];
// } // }

View File

@ -0,0 +1,25 @@
<?php
namespace App\Admin\Renderable;
use App\Models\ProductPartSku;
use Dcat\Admin\Grid;
use Dcat\Admin\Grid\LazyRenderable;
class ProductPartSpuTable extends LazyRenderable
{
public function grid(): Grid
{
$partId = $this->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();
});
}
}

View File

@ -0,0 +1,21 @@
<?php
namespace App\Admin\Renderable;
use App\Models\ProductSpu;
use Dcat\Admin\Grid;
use Dcat\Admin\Grid\LazyRenderable;
class ProductSpuSimpleTable extends LazyRenderable
{
public function grid(): Grid
{
$builder = ProductSpu::query();
return Grid::make($builder, function (Grid $grid) {
$grid->disableRowSelector(false);
$grid->column('name');
$grid->quickSearch(['name']);
$grid->disableActions();
});
}
}

View File

@ -4,7 +4,7 @@ namespace App\Endpoint\Api\Http\Controllers\Product;
use App\Endpoint\Api\Http\Controllers\Controller; use App\Endpoint\Api\Http\Controllers\Controller;
use App\Endpoint\Api\Http\Resources\ProductSkuTinyResource; use App\Endpoint\Api\Http\Resources\ProductSkuTinyResource;
use App\Models\ProductSku; use App\Models\ProductSpu;
class HotController extends Controller class HotController extends Controller
{ {
@ -15,10 +15,12 @@ class HotController extends Controller
*/ */
public function __invoke() public function __invoke()
{ {
$skus = ProductSku::online() $skus = ProductSpu::whereHas('skus', function ($q) {
->latest('sales') $q->online();
->limit(20) })
->get(); ->latest('sales')
->limit(20)
->get();
return ProductSkuTinyResource::collection($skus); return ProductSkuTinyResource::collection($skus);
} }

View File

@ -53,6 +53,11 @@ class ProductPart extends Model
return $this->belongsToMany(ProductSku::class, ProductPartSku::class, 'part_id', 'sku_id')->withTimestamps(); 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();
}
/** /**
* 此分区购买赠送的券关系 * 此分区购买赠送的券关系
*/ */

View File

@ -40,6 +40,11 @@ class ProductPartSku extends Model
return $this->belongsTo(ProductSku::class, 'sku_id'); return $this->belongsTo(ProductSku::class, 'sku_id');
} }
public function spu()
{
return $this->belongsTo(ProductSpu::class, 'sku_id');
}
/** /**
* 此分区商品所属的分区 * 此分区商品所属的分区
*/ */

View File

@ -11,6 +11,7 @@ return [
'is_show' => '显示', 'is_show' => '显示',
'partSkus' => '分区商品', 'partSkus' => '分区商品',
'skus'=> '分区商品', 'skus'=> '分区商品',
'spus'=> '分区商品',
'sku_id' => '商品名称', 'sku_id' => '商品名称',
'sort' => '排序', 'sort' => '排序',
'coupons'=>'赠券配置', 'coupons'=>'赠券配置',