From 101c59a515e0527681f7a17348d7a7647ee71d47 Mon Sep 17 00:00:00 2001 From: reidier Date: Mon, 14 Sep 2026 14:32:22 +0800 Subject: [PATCH] =?UTF-8?q?feat(category):=20=E6=B7=BB=E5=8A=A0=E6=A0=8F?= =?UTF-8?q?=E7=9B=AE=E7=8A=B6=E6=80=81=E6=9B=B4=E6=96=B0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在路由文件中添加 updateStatus POST 接口 - 在 CategoryController 中实现 updateStatus 方法处理状态更新请求 - 在 CategoryService 中添加 updateStatus 业务逻辑 - 引入 Nav 模型用于缓存清理 - 更新栏目状态时同时清理 Category 和 Nav 的关联缓存 - 添加参数验证确保 id 和 status 字段的有效性 --- app/controller/backend/CategoryController.php | 11 +++++++++++ app/service/CategoryService.php | 14 ++++++++++++++ route/admin.php | 1 + 3 files changed, 26 insertions(+) diff --git a/app/controller/backend/CategoryController.php b/app/controller/backend/CategoryController.php index d5dde5e..af5b856 100644 --- a/app/controller/backend/CategoryController.php +++ b/app/controller/backend/CategoryController.php @@ -517,4 +517,15 @@ class CategoryController extends BaseController return json($categoryService -> copyCategoryToOtherLang($param['from'],$param['to'],$param['site_id'],$this->admin['seller_id'])); } + + public function updateStatus(CategoryService $categoryService): \think\response\Json + { + $param = $this->request->only(['id','status']); + try { + validate(CategoryValidate::class)->scene('updateStatus')->check($param); + } catch (ValidateException $e) { + return jsonReturn(-1, $e->getError()); + } + return json($categoryService -> updateStatus($param['id'],$param['status'],$this->admin['seller_id'])); + } } diff --git a/app/service/CategoryService.php b/app/service/CategoryService.php index 9af0270..9a0a36b 100644 --- a/app/service/CategoryService.php +++ b/app/service/CategoryService.php @@ -7,6 +7,7 @@ use app\exception\ModelException; use app\model\Attachment; use app\model\Category; use app\model\CategoryCheck; +use app\model\Nav; use app\model\Route; use app\model\WebsiteLang; use think\facade\Cache; @@ -381,5 +382,18 @@ class CategoryService $Category->saveAll($cateData); } + /** + * 修改栏目状态 + * @throws \ReflectionException + * @throws ModelException + */ + public function updateStatus($id, $status, $seller_id): array + { + $Category = new Category(); + $res = $Category->updateCategory(['id' => $id, 'seller_id' => $seller_id], ['status' => $status]); + CacheService::deleteRelationCacheByObject($Category); + CacheService::deleteRelationCacheByObject(Nav::class); + return $res; + } } diff --git a/route/admin.php b/route/admin.php index 9d12a97..c5f7a1b 100644 --- a/route/admin.php +++ b/route/admin.php @@ -155,6 +155,7 @@ Route::group(function () { // 导入excel文章列表 Route::post('/importExcel', '/importExcel'); // 内容复制到其他语言 + Route::post('updateStatus', '/updateStatus'); Route::post('/copyToOtherLang', '/copyToOtherLang'); })->prefix(config('route.admin') . '.content');