diff --git a/app/AdminSupplier/Controllers/ProductController.php b/app/AdminSupplier/Controllers/ProductController.php new file mode 100644 index 0000000..fc278d8 --- /dev/null +++ b/app/AdminSupplier/Controllers/ProductController.php @@ -0,0 +1,123 @@ +model()->where('supplier_id', Admin::user()->id); + + $grid->column('id')->sortable(); + $grid->column('category.name', '产品分类'); + $grid->column('title'); + $grid->column('picture')->image(60, 60); + $grid->column('price'); + $grid->column('original_price'); + $grid->column('stock'); + $grid->column('sale'); + $grid->column('status')->using(ProductStatus::array()); + $grid->column('created_at'); + $grid->column('updated_at'); + + $grid->filter(function (Grid\Filter $filter) { + $filter->equal('id'); + + }); + }); + } + + /** + * Make a show builder. + * + * @param mixed $id + * + * @return Show + */ + protected function detail($id) + { + return Show::make($id, new Product(), function (Show $show) { + $show->field('id'); + $show->field('supplier_id'); + $show->field('category_id'); + $show->field('title'); + $show->field('price'); + $show->field('original_price'); + $show->field('pictures')->image(80, 80); + $show->field('stock'); + $show->field('sale'); + $show->field('status'); + $show->field('know')->unescape()->as(fn($v) => preg_replace('/.*?<\/script>/is', '', $v)); + $show->field('content')->unescape()->as(fn($v) => preg_replace('/.*?<\/script>/is', '', $v)); + $show->field('created_at'); + $show->field('updated_at'); + }); + } + + /** + * Make a form builder. + * + * @return Form + */ + protected function form() + { + return Form::make(new Product(), function (Form $form) { + //不允许编辑非自己数据 + if ($form->isEditing() && $form->model()->supplier_id != Admin::user()->id) { + return $form->response()->error('数据不存在'); + } + + $form->display('id'); + + $options = Category::selectOptions(fn($query) => $query->where('agent_id', 0)); + $form->select('category_id')->options(array_slice($options, 1))->required(); + $form->text('title')->required(); + $form->text('price')->required(); + $form->text('original_price')->required(); + $form->multipleImage('pictures')->required(); + $form->text('stock')->default(9999)->required(); + $form->editor('know'); + $form->editor('content')->required(); + })->saving(function (Form $form) { + //不允许编辑非自己数据 + if ($form->isEditing() && $form->model()->supplier_id != Admin::user()->id) { + return $form->response()->error('数据不存在'); + } + + //不允许编辑的字段 + $form->ignore(['id', 'supplier_id', 'sale', 'created_at', 'updated_at', 'deleted_at']); + + //null字段转为'' + foreach ($form->input() as $k => $v) { + if (is_null($v)) { + $form->$k = ''; + } + } + + //特殊字段处理 + $form->status = ProductStatus::UNAUDITED; + $form->supplier_id = Admin::user()->id; + })->deleting(function (Form $form) { + //这里获取字段值和saving不同 + if ($form->model()[0]['supplier_id'] != Admin::user()->id) { + return $form->response()->error('删除失败'); + } + }); + } +} diff --git a/app/AdminSupplier/Repositories/Product.php b/app/AdminSupplier/Repositories/Product.php new file mode 100644 index 0000000..b92db1a --- /dev/null +++ b/app/AdminSupplier/Repositories/Product.php @@ -0,0 +1,16 @@ +get('/', 'HomeController@index'); + $router->resource('product/list', 'ProductController'); }); diff --git a/dcat_admin_ide_helper.php b/dcat_admin_ide_helper.php index 475709e..7eb90b7 100644 --- a/dcat_admin_ide_helper.php +++ b/dcat_admin_ide_helper.php @@ -67,6 +67,7 @@ namespace Dcat\Admin { * @property Grid\Column|Collection license_pic * @property Grid\Column|Collection director * @property Grid\Column|Collection contact_phone + * @property Grid\Column|Collection rate * @property Grid\Column|Collection author * @property Grid\Column|Collection image * @property Grid\Column|Collection pid @@ -162,6 +163,7 @@ namespace Dcat\Admin { * @method Grid\Column|Collection license_pic(string $label = null) * @method Grid\Column|Collection director(string $label = null) * @method Grid\Column|Collection contact_phone(string $label = null) + * @method Grid\Column|Collection rate(string $label = null) * @method Grid\Column|Collection author(string $label = null) * @method Grid\Column|Collection image(string $label = null) * @method Grid\Column|Collection pid(string $label = null) @@ -262,6 +264,7 @@ namespace Dcat\Admin { * @property Show\Field|Collection license_pic * @property Show\Field|Collection director * @property Show\Field|Collection contact_phone + * @property Show\Field|Collection rate * @property Show\Field|Collection author * @property Show\Field|Collection image * @property Show\Field|Collection pid @@ -357,6 +360,7 @@ namespace Dcat\Admin { * @method Show\Field|Collection license_pic(string $label = null) * @method Show\Field|Collection director(string $label = null) * @method Show\Field|Collection contact_phone(string $label = null) + * @method Show\Field|Collection rate(string $label = null) * @method Show\Field|Collection author(string $label = null) * @method Show\Field|Collection image(string $label = null) * @method Show\Field|Collection pid(string $label = null) diff --git a/resources/lang/zh_CN/product.php b/resources/lang/zh_CN/product.php index f997e24..151e444 100644 --- a/resources/lang/zh_CN/product.php +++ b/resources/lang/zh_CN/product.php @@ -5,6 +5,7 @@ return [ 'product' => '云产品', ], 'fields' => [ + 'category_id' => '产品分类ID', 'content' => '产品详情', 'know' => '旅客须知', 'original_price' => '原价',