Browse Source

供应商产品列表及管理

dev
李可松 4 years ago
parent
commit
76dcd3a800
  1. 123
      app/AdminSupplier/Controllers/ProductController.php
  2. 16
      app/AdminSupplier/Repositories/Product.php
  3. 1
      app/AdminSupplier/routes.php
  4. 4
      dcat_admin_ide_helper.php
  5. 1
      resources/lang/zh_CN/product.php

123
app/AdminSupplier/Controllers/ProductController.php

@ -0,0 +1,123 @@
<?php
namespace App\AdminSupplier\Controllers;
use App\AdminSupplier\Repositories\Product;
use App\Common\ProductStatus;
use App\Models\Category;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
class ProductController extends AdminController
{
protected $title = '产品';
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new Product(['category:id,name']), function (Grid $grid) {
$grid->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.*?>.*?<\/script>/is', '', $v));
$show->field('content')->unescape()->as(fn($v) => preg_replace('/<script.*?>.*?<\/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('删除失败');
}
});
}
}

16
app/AdminSupplier/Repositories/Product.php

@ -0,0 +1,16 @@
<?php
namespace App\AdminSupplier\Repositories;
use App\Models\Product as Model;
use Dcat\Admin\Repositories\EloquentRepository;
class Product extends EloquentRepository
{
/**
* Model.
*
* @var string
*/
protected $eloquentClass = Model::class;
}

1
app/AdminSupplier/routes.php

@ -14,4 +14,5 @@ Route::group([
$router->get('/', 'HomeController@index'); $router->get('/', 'HomeController@index');
$router->resource('product/list', 'ProductController');
}); });

4
dcat_admin_ide_helper.php

@ -67,6 +67,7 @@ namespace Dcat\Admin {
* @property Grid\Column|Collection license_pic * @property Grid\Column|Collection license_pic
* @property Grid\Column|Collection director * @property Grid\Column|Collection director
* @property Grid\Column|Collection contact_phone * @property Grid\Column|Collection contact_phone
* @property Grid\Column|Collection rate
* @property Grid\Column|Collection author * @property Grid\Column|Collection author
* @property Grid\Column|Collection image * @property Grid\Column|Collection image
* @property Grid\Column|Collection pid * @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 license_pic(string $label = null)
* @method Grid\Column|Collection director(string $label = null) * @method Grid\Column|Collection director(string $label = null)
* @method Grid\Column|Collection contact_phone(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 author(string $label = null)
* @method Grid\Column|Collection image(string $label = null) * @method Grid\Column|Collection image(string $label = null)
* @method Grid\Column|Collection pid(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 license_pic
* @property Show\Field|Collection director * @property Show\Field|Collection director
* @property Show\Field|Collection contact_phone * @property Show\Field|Collection contact_phone
* @property Show\Field|Collection rate
* @property Show\Field|Collection author * @property Show\Field|Collection author
* @property Show\Field|Collection image * @property Show\Field|Collection image
* @property Show\Field|Collection pid * @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 license_pic(string $label = null)
* @method Show\Field|Collection director(string $label = null) * @method Show\Field|Collection director(string $label = null)
* @method Show\Field|Collection contact_phone(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 author(string $label = null)
* @method Show\Field|Collection image(string $label = null) * @method Show\Field|Collection image(string $label = null)
* @method Show\Field|Collection pid(string $label = null) * @method Show\Field|Collection pid(string $label = null)

1
resources/lang/zh_CN/product.php

@ -5,6 +5,7 @@ return [
'product' => '云产品', 'product' => '云产品',
], ],
'fields' => [ 'fields' => [
'category_id' => '产品分类ID',
'content' => '产品详情', 'content' => '产品详情',
'know' => '旅客须知', 'know' => '旅客须知',
'original_price' => '原价', 'original_price' => '原价',

Loading…
Cancel
Save