From 5806108a167a8746a9bf2f8047432b08f9d8897a Mon Sep 17 00:00:00 2001 From: liapples Date: Tue, 17 Aug 2021 19:03:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E7=B1=BB=E4=B8=8B=E5=A6=82=E6=9E=9C?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E6=9C=89=E4=BA=A7=E5=93=81=EF=BC=8C=E4=B8=8D?= =?UTF-8?q?=E5=85=81=E8=AE=B8=E5=88=A0=E9=99=A4=E5=88=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Controllers/CategoryController.php | 28 ++++++++++++++++++- .../Controllers/CategoryController.php | 25 +++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/app/Admin/Controllers/CategoryController.php b/app/Admin/Controllers/CategoryController.php index 0a539fb..f845cbe 100644 --- a/app/Admin/Controllers/CategoryController.php +++ b/app/Admin/Controllers/CategoryController.php @@ -3,6 +3,8 @@ namespace App\Admin\Controllers; use App\Models\Category; +use App\Models\Product; +use Dcat\Admin\Admin; use Dcat\Admin\Form; use Dcat\Admin\Grid; use Dcat\Admin\Layout\Content; @@ -82,6 +84,30 @@ class CategoryController extends AdminController //后台管理员的agent_id为0 $form->agent_id = 0; $form->sort = $form->sort ?? 255; - }); + })->deleting(function (Form $form) { + //获取到要删除分类的ID + $category_id = (int)$form->getKey(); + + //获取要删除类目的所有下级ID + $category = Category::where('agent_id', 0)->pluck('pid', 'id')->toArray(); + $ids = getChildCate($category_id, $category); + + if (Product::query()->whereIn('category_id', $ids)->exists()) { + return $form->response()->error('该分类下已经发布产品,不允许删除'); + } + return $form->response()->error('不允许删除'); + }); } } + +//获取$pid下的所有子类目 +function getChildCate($pid, $category): array +{ + $cate_arr = [$pid]; + foreach ($category as $k => $v) { + if ($v == $pid) { + $cate_arr = array_merge($cate_arr, getChildCate($k, $category)); + } + } + return $cate_arr; +} diff --git a/app/AdminAgent/Controllers/CategoryController.php b/app/AdminAgent/Controllers/CategoryController.php index db31856..25b3126 100644 --- a/app/AdminAgent/Controllers/CategoryController.php +++ b/app/AdminAgent/Controllers/CategoryController.php @@ -2,6 +2,7 @@ namespace App\AdminAgent\Controllers; +use App\Models\AgentProduct; use App\Models\Category; use Dcat\Admin\Admin; use Dcat\Admin\Form; @@ -85,6 +86,30 @@ class CategoryController extends AdminController $form->agent_id = Admin::user()->id; $form->sort = $form->sort ?? 255; + })->deleting(function (Form $form) { + //获取到要删除分类的ID + $category_id = (int)$form->getKey(); + + //获取要删除类目的所有下级ID + $agent_id = Admin::user()->id; + $category = Category::where('agent_id', $agent_id)->pluck('pid', 'id')->toArray(); + $ids = getChildCate($category_id, $category); + + if (AgentProduct::query()->where('agent_id', $agent_id)->whereIn('category_id', $ids)->exists()) { + return $form->response()->error('该分类下已经发布产品,不允许删除'); + } }); } } + +//获取$pid下的所有子类目 +function getChildCate($pid, $category): array +{ + $cate_arr = [$pid]; + foreach ($category as $k => $v) { + if ($v == $pid) { + $cate_arr = array_merge($cate_arr, getChildCate($k, $category)); + } + } + return $cate_arr; +}