分区商品spu
parent
91eccc1761
commit
1b44673f05
|
|
@ -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];
|
||||||
// }
|
// }
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 此分区购买赠送的券关系
|
* 此分区购买赠送的券关系
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -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');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 此分区商品所属的分区
|
* 此分区商品所属的分区
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ return [
|
||||||
'is_show' => '显示',
|
'is_show' => '显示',
|
||||||
'partSkus' => '分区商品',
|
'partSkus' => '分区商品',
|
||||||
'skus'=> '分区商品',
|
'skus'=> '分区商品',
|
||||||
|
'spus'=> '分区商品',
|
||||||
'sku_id' => '商品名称',
|
'sku_id' => '商品名称',
|
||||||
'sort' => '排序',
|
'sort' => '排序',
|
||||||
'coupons'=>'赠券配置',
|
'coupons'=>'赠券配置',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue