update goods detail
parent
073eda2d5d
commit
55cc3ace9a
|
|
@ -149,6 +149,28 @@ class GoodsSeeder extends Seeder
|
|||
]],
|
||||
],
|
||||
],
|
||||
[
|
||||
'category_id' => $category_id,
|
||||
'type_id' => null,
|
||||
'brand_id' => null,
|
||||
'goods_sn' => '100026941752',
|
||||
'name' => 'K8蓝牙双模机械键盘',
|
||||
'cover_image' => 'https://img10.360buyimg.com/N6/s60x60_jfs/t1/93689/26/29208/314387/62c2ba03E05e1a7be/4bc834afac6df7bb.jpg',
|
||||
'description' => '',
|
||||
'content' => ['https://img30.360buyimg.com/sku/jfs/t1/11779/12/19259/52944/62fdf030E2a066294/99d11515015b29a4.jpg', 'https://img30.360buyimg.com/sku/jfs/t1/211607/38/4986/702616/6165654eE212dd412/ece0aab240b5db9b.jpg'],
|
||||
'images' => ['https://img12.360buyimg.com/n1/s450x450_jfs/t1/93689/26/29208/314387/62c2ba03E05e1a7be/4bc834afac6df7bb.jpg', 'https://img12.360buyimg.com/n1/s450x450_jfs/t1/208948/14/4177/99717/61600a26Efbdbbf8b/c9e1abd339f119f1.jpg'],
|
||||
'stock' => 100,
|
||||
'price' => 449,
|
||||
'attr' => [
|
||||
['name' => '基本信息', 'values' => [
|
||||
['name' => '商品名称', 'value' => '京东京造K3'],
|
||||
['name' => '商品毛重', 'value' => '0.785kg'],
|
||||
['name' => '兼容系统', 'value' => 'Windows,MacOS,iOS'],
|
||||
]]
|
||||
],
|
||||
'spec' => null,
|
||||
'part' => null,
|
||||
]
|
||||
];
|
||||
|
||||
$service = GoodsService::make();
|
||||
|
|
|
|||
|
|
@ -33,11 +33,6 @@ return [
|
|||
'goods_sn' => '编号',
|
||||
'cover_image' => '封面图',
|
||||
'price' => '售价',
|
||||
'vip_price' => '会员价',
|
||||
'score_max_amount' => '积分最大抵扣',
|
||||
'weight' => '重量',
|
||||
'volume' => '体积',
|
||||
'shipping_tmp_id' => '运费模板',
|
||||
'spec' => '规格',
|
||||
'attr' => '属性',
|
||||
'part' => '配件',
|
||||
|
|
@ -48,13 +43,6 @@ return [
|
|||
'content' => '内容',
|
||||
'created_at' => '创建时间',
|
||||
'updated_at' => '更新时间',
|
||||
'check_remarks' => '未通过原因',
|
||||
'check_status' => '审核状态',
|
||||
'check_user_id' => '审核人',
|
||||
'check_user' => [
|
||||
'name' => '审核人',
|
||||
],
|
||||
'check_at' => '审核时间',
|
||||
'is_recommend' => '推荐',
|
||||
],
|
||||
];
|
||||
|
|
|
|||
|
|
@ -2,15 +2,15 @@
|
|||
|
||||
namespace Peidikeji\Goods;
|
||||
|
||||
use Dcat\Admin\Admin;
|
||||
use Dcat\Admin\Form;
|
||||
use Dcat\Admin\Layout\Menu;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Peidikeji\Goods\Form\Attr;
|
||||
use Peidikeji\Goods\Form\Spec;
|
||||
|
||||
class GoodsServiceProvider extends ServiceProvider
|
||||
{
|
||||
protected $menu = [
|
||||
['title' => '商品模块', 'icon' => 'feather icon-layers', 'uri' => ''],
|
||||
['parent' => '商品模块', 'title' => '商品分类', 'icon' => '', 'uri' => '/goods-category'],
|
||||
];
|
||||
|
||||
public function register()
|
||||
{
|
||||
}
|
||||
|
|
@ -33,5 +33,19 @@ class GoodsServiceProvider extends ServiceProvider
|
|||
// ], 'dcat-admin-goods-migrations');
|
||||
|
||||
$this->loadTranslationsFrom(__DIR__.'/../lang', 'dcat-admin-goods');
|
||||
|
||||
// 添加默认菜单
|
||||
Admin::menu(function (Menu $menu) {
|
||||
$menu->add([
|
||||
['id' => 1, 'parent_id' => 0, 'title' => '商品模块', 'icon' => 'feather icon-layers', 'uri' => ''],
|
||||
['id' => 2, 'parent_id' => 1, 'title' => '商品分类', 'icon' => '', 'uri' => '/goods-category'],
|
||||
['id' => 3, 'parent_id' => 1, 'title' => '商品品牌', 'icon' => '', 'uri' => '/goods-brand'],
|
||||
['id' => 4, 'parent_id' => 1, 'title' => '商品类型', 'icon' => '', 'uri' => '/goods-type'],
|
||||
['id' => 5, 'parent_id' => 1, 'title' => '商品管理', 'icon' => '', 'uri' => '/goods'],
|
||||
]);
|
||||
});
|
||||
|
||||
Form::extend('spec', Spec::class);
|
||||
Form::extend('attr', Attr::class);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,10 @@ use Dcat\Admin\Grid\Displayers\Actions;
|
|||
use Dcat\Admin\Grid\Tools\Selector;
|
||||
use Dcat\Admin\Http\Controllers\AdminController;
|
||||
use Dcat\Admin\Layout\Content;
|
||||
use Dcat\Admin\Layout\Row;
|
||||
use Dcat\Admin\Show;
|
||||
use Dcat\Admin\Show\Tools;
|
||||
use Dcat\Admin\Widgets\Card;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Peidikeji\Goods\Action\RowGoodsSale;
|
||||
|
|
@ -172,11 +175,15 @@ class GoodsController extends AdminController
|
|||
]);
|
||||
$info = Goods::with(['category', 'brand', 'type'])->findOrFail($id);
|
||||
$show = Show::make($info);
|
||||
$show->field('goods_sn');
|
||||
$show->field('category.name');
|
||||
$show->field('brand.name');
|
||||
$show->field('type.name');
|
||||
$show->field('name');
|
||||
$show->field('category_id')->as(function () {
|
||||
if (!$this->category) {
|
||||
return $this->category_id;
|
||||
}
|
||||
$parents = GoodsCategory::whereIn('id', $this->category->parent_ids)->orderBy('level')->pluck('name');
|
||||
$parents->push($this->category->name);
|
||||
return $parents;
|
||||
})->label();
|
||||
$show->field('price');
|
||||
$show->field('cover_image')->image('', 100);
|
||||
$show->field('images')->image('', 100);
|
||||
|
|
@ -184,13 +191,31 @@ class GoodsController extends AdminController
|
|||
$show->field('spec')->view('dcat-admin-goods::goods.grid-attr');
|
||||
$show->field('attr')->view('dcat-admin-goods::goods.grid-attr');
|
||||
$show->field('part')->view('dcat-admin-goods::goods.grid-attr');
|
||||
$show->field('on_sale')->bool();
|
||||
$show->field('is_recommend')->bool();
|
||||
$show->field('sold_count');
|
||||
$show->field('created_at');
|
||||
$show->field('updated_at');
|
||||
|
||||
return $show;
|
||||
$row = new Row();
|
||||
|
||||
$row->column(7, $show);
|
||||
$row->column(5, Show::make($info, function (Show $show) {
|
||||
$show->panel()
|
||||
->title('其他信息')
|
||||
->tools(function (Tools $tools) {
|
||||
$tools->disableEdit();
|
||||
$tools->disableList();
|
||||
$tools->disableDelete();
|
||||
$tools->disableBack();
|
||||
});
|
||||
|
||||
$show->field('goods_sn');
|
||||
$show->field('brand.name');
|
||||
$show->field('type.name');
|
||||
$show->field('on_sale')->bool();
|
||||
$show->field('is_recommend')->bool();
|
||||
$show->field('sold_count');
|
||||
$show->field('created_at');
|
||||
$show->field('updated_at');
|
||||
}));
|
||||
|
||||
return $row;
|
||||
}
|
||||
|
||||
protected function form()
|
||||
|
|
@ -209,7 +234,7 @@ class GoodsController extends AdminController
|
|||
$unique->ignore($model->id);
|
||||
}
|
||||
$form->select('category_id')->options(GoodsCategory::selectOptions(null, false))->required();
|
||||
// $form->select('brand_id')->options(GoodsBrand::pluck('name', 'id'));
|
||||
$form->select('brand_id')->options(GoodsBrand::pluck('name', 'id'));
|
||||
$form->text('name')->required();
|
||||
$form->text('goods_sn')->rules([$unique], [
|
||||
'unique' => '商品编号已经存在',
|
||||
|
|
@ -230,7 +255,6 @@ class GoodsController extends AdminController
|
|||
|
||||
if ($isCreating || !$model->spec) {
|
||||
$form->number('price')->min(0)->attribute('step', 0.01);
|
||||
$form->number('vip_price')->min(0)->attribute('step', 0.01);
|
||||
} else {
|
||||
$form->display('help', '提示')->value('商品其他信息, 请到 <a href="'.admin_route('goods_sku.index', ['goods' => $model->id]).'" target="_blank">货品列表<a/> 去修改');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ namespace Peidikeji\Goods\Models;
|
|||
|
||||
use Dcat\Admin\Traits\ModelTree;
|
||||
use EloquentFilter\Filterable;
|
||||
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Peidikeji\Goods\Filters\GoodsCategoryFilter;
|
||||
|
||||
|
|
@ -42,12 +43,6 @@ class GoodsCategory extends Model
|
|||
});
|
||||
|
||||
static::deleting(function ($category) {
|
||||
// 所有下级分类
|
||||
$ids = GoodsCategory::where('path', 'like', '%-'.$category->id.'-%')->pluck('id');
|
||||
// 检查下级分类是否包含商品
|
||||
if (Goods::whereIn('category_id', array_merge($ids, [$category->id]))->exists()) {
|
||||
// todo 阻止删除该分类
|
||||
}
|
||||
// 删除所有下级分类
|
||||
GoodsCategory::where('path', 'like', '%-'.$category->id.'-%')->delete();
|
||||
});
|
||||
|
|
@ -82,4 +77,14 @@ class GoodsCategory extends Model
|
|||
{
|
||||
return $q->where('is_enable', 1);
|
||||
}
|
||||
|
||||
// 所有上级 id
|
||||
// '-1-2-3' => ['1', '2', '3']
|
||||
// '-' => []
|
||||
public function parentIds(): Attribute
|
||||
{
|
||||
return Attribute::make(
|
||||
get: fn() => array_slice(explode('-', $this->path), 1, -1),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue