|
@@ -2,19 +2,19 @@
|
|
|
|
|
|
namespace App\Distributor\Controllers;
|
|
|
|
|
|
+use App\Admin\Repositories\BaseProductImage;
|
|
|
+use App\Distributor\Actions\Extensions\DistProductImport;
|
|
|
+use App\Distributor\Repositories\DistProduct;
|
|
|
+use App\Distributor\Repositories\DistProductCategory;
|
|
|
+use App\Libraries\CommonHelper;
|
|
|
use Dcat\Admin\Admin;
|
|
|
-use Dcat\Admin\Layout\Content;
|
|
|
use Dcat\Admin\Form;
|
|
|
use Dcat\Admin\Grid;
|
|
|
-use Dcat\Admin\Show;
|
|
|
use Dcat\Admin\Http\Controllers\AdminController;
|
|
|
-
|
|
|
-use App\Distributor\Repositories\DistProduct;
|
|
|
-use App\Distributor\Repositories\DistProductCategory;
|
|
|
-use App\Distributor\Repositories\DistProductImage;
|
|
|
-
|
|
|
+use Dcat\Admin\Layout\Content;
|
|
|
+use Dcat\Admin\Show;
|
|
|
use Illuminate\Http\Request;
|
|
|
-use App\Libraries\CommonHelper;
|
|
|
+
|
|
|
class DistProductController extends AdminController
|
|
|
{
|
|
|
/**
|
|
@@ -26,8 +26,10 @@ class DistProductController extends AdminController
|
|
|
->header(admin_trans( 'admin.products_list'))
|
|
|
->description(admin_trans('admin.all'))
|
|
|
->description('all')
|
|
|
- ->breadcrumb(['text'=>'Product Management','url'=>''])
|
|
|
+ //->breadcrumb(['text'=>'Product Management','url'=>''])
|
|
|
+
|
|
|
->body($this->grid());
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -55,8 +57,8 @@ class DistProductController extends AdminController
|
|
|
*/
|
|
|
public function create(Content $content)
|
|
|
{
|
|
|
-
|
|
|
return $content
|
|
|
+ ->header('Product')
|
|
|
->translation($this->translation())
|
|
|
->title(admin_trans('admin.product'))
|
|
|
->description($this->description()['create'] ?? trans('admin.create'))
|
|
@@ -70,17 +72,26 @@ class DistProductController extends AdminController
|
|
|
protected function grid()
|
|
|
{
|
|
|
return Grid::make(DistProduct::with(['distProductCategory','images']), function (Grid $grid) {
|
|
|
+ $grid->model()->where('dist_id', getDistributorId());
|
|
|
$grid->column('id','ID')->sortable();
|
|
|
$grid->column('title');
|
|
|
$grid->column('sku');
|
|
|
$grid->column('dist_product_category.name',admin_trans_label('category_name'));
|
|
|
$grid->column('issuance_date');
|
|
|
$grid->column('images')->display(function ($images) {
|
|
|
+
|
|
|
$images = $images->toArray();
|
|
|
$dataImages = array_column($images, 'image_url');
|
|
|
- return CommonHelper::displayImage($dataImages,150);
|
|
|
+
|
|
|
+ // 限制最多显示2个缩略图
|
|
|
+ $dataImages = array_slice($dataImages, 0, 2);
|
|
|
+
|
|
|
+ return CommonHelper::displayImage($dataImages,60);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
});
|
|
|
- $grid->column('order')->orderable();
|
|
|
+ //$grid->column('order')->orderable();
|
|
|
$grid->column('is_pinned')->switch();
|
|
|
$grid->column('enabled')->switch();
|
|
|
$grid->column('created_at');
|
|
@@ -89,11 +100,16 @@ class DistProductController extends AdminController
|
|
|
$grid->filter(function (Grid\Filter $filter) {
|
|
|
$filter->equal('sku');
|
|
|
$filter->like('title');
|
|
|
- $filter->equal('category_id','Category')->select(DistProductCategory::selectOptions());
|
|
|
- $filter->equal('enabled', 'enabled')->select(config('dictionary.enabled'));
|
|
|
+ $filter->equal('category_id',admin_trans_label('category'))->select(DistProductCategory::selectOptions());
|
|
|
+ $filter->equal('enabled', admin_trans_label('enabled'))->select(array_map('admin_trans_label', config('dictionary.enabled')));
|
|
|
});
|
|
|
//排序
|
|
|
$grid->model()->orderBy("is_pinned",'desc')->orderBy("order",'desc');
|
|
|
+ // 传入数组
|
|
|
+ $grid->tools([
|
|
|
+ new DistProductImport(),
|
|
|
+ ]);
|
|
|
+
|
|
|
});
|
|
|
|
|
|
}
|
|
@@ -108,6 +124,10 @@ class DistProductController extends AdminController
|
|
|
protected function detail($id)
|
|
|
{
|
|
|
return Show::make($id, DistProduct::with(['distProductCategory','images']), function (Show $show) {
|
|
|
+ // 比较 dist_id 和 getDistributorId(),如果不相同则返回 404
|
|
|
+ if ($show->model()->dist_id !== getDistributorId()) {
|
|
|
+ abort(404);
|
|
|
+ }
|
|
|
$show->field('id');
|
|
|
$show->field('title');
|
|
|
$show->field('keywords');
|
|
@@ -187,8 +207,32 @@ class DistProductController extends AdminController
|
|
|
$form->editor('content');
|
|
|
$form->switch('is_pinned')->default(0);
|
|
|
$form->switch('enabled')->default(1);
|
|
|
+ $form->hidden('dist_id'); // 隐藏dist_id字段,用于保存
|
|
|
+
|
|
|
//插入JS
|
|
|
$this->addParametersJs();
|
|
|
+ // 在保存时进行验证
|
|
|
+ $form->saving(function (Form $form) {
|
|
|
+ $form->dist_id =getDistributorId();//保存时直接写死dist_id
|
|
|
+
|
|
|
+ if (!$form->isCreating()) {
|
|
|
+ // 验证主键 ID 的 dist_id 是否与 session 的 dist_id 一致
|
|
|
+ $currentDistProduct = DistProduct::findById($form->getKey());
|
|
|
+ if ($currentDistProduct && $currentDistProduct->dist_id !== $form->dist_id) {
|
|
|
+ throw new \Exception('Unable to modify the product because the distributor ID does not match.');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //保存前回调删除图片
|
|
|
+ if (!$form->isCreating()) {
|
|
|
+ //清空图片
|
|
|
+ $id = $form->getKey();
|
|
|
+ $baseProductImage = new BaseProductImage();
|
|
|
+ $baseProductImage->model()->where('product_id', $id)->delete();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ });
|
|
|
});
|
|
|
}
|
|
|
|