From 7b972f73b3e00224cf5f31b3695c94626515674d Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Wed, 30 Apr 2025 10:10:26 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=96=87=E7=AB=A0=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E6=96=B0=E5=A2=9E/=E6=9B=B4=E6=96=B0=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=9B=BE=E7=89=87=E5=8F=8A=E5=94=AF=E4=B8=80=E6=A0=87?= =?UTF-8?q?=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/v1/ArticleCategory.php | 10 ++++++++-- app/admin/validate/v1/ArticleCategoryValidate.php | 11 +++++++++++ app/common/model/ArticleCategoryBaseModel.php | 1 + 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/app/admin/controller/v1/ArticleCategory.php b/app/admin/controller/v1/ArticleCategory.php index be4dde56..b0464632 100644 --- a/app/admin/controller/v1/ArticleCategory.php +++ b/app/admin/controller/v1/ArticleCategory.php @@ -76,13 +76,18 @@ class ArticleCategory public function save() { $post = request()->post([ + 'unique_label', 'name', + 'icon', 'pid', 'sort' => 0, 'is_show' => 1 ]); - $data = array_merge($post, ['language_id' => request()->lang_id]); + $data = array_merge($post, [ + 'language_id' => request()->lang_id, + 'unique_label' => $post['unique_label'] ?? uniqid('BANNER_') + ]); $valiate = new ArticleCategoryValidate; if (!$valiate->scene('add')->check($data)) { return error($valiate->getError()); @@ -101,6 +106,7 @@ class ArticleCategory $id = request()->param('id'); $put = request()->put([ 'name', + 'icon', 'pid', 'sort', 'is_show' @@ -108,7 +114,7 @@ class ArticleCategory $data = array_merge($put, ['language_id' => request()->lang_id]); $valiate = new ArticleCategoryValidate; - if (!$valiate->check(array_merge($data, ['id' => $id]))) { + if (!$valiate->scene('edit')->check(array_merge($data, ['id' => $id]))) { return error($valiate->getError()); } diff --git a/app/admin/validate/v1/ArticleCategoryValidate.php b/app/admin/validate/v1/ArticleCategoryValidate.php index 0654ae88..b818684d 100644 --- a/app/admin/validate/v1/ArticleCategoryValidate.php +++ b/app/admin/validate/v1/ArticleCategoryValidate.php @@ -19,7 +19,9 @@ class ArticleCategoryValidate extends Validate 'id' => 'require|integer', 'language_id' => 'require|integer', 'name' => 'require|unique:article_category,name^language_id|max:64', + 'icon' => 'max:125', 'pid' => 'integer|different:id|checkPidNotBeChildren', // 验证pid + 'unique_label' => 'require|max:64', 'sort' => 'require|integer', 'is_show' => 'require|in:0,1', 'seo_title' => 'max:255', @@ -41,9 +43,12 @@ class ArticleCategoryValidate extends Validate 'name.require' => '分类名称不能为空', 'name.unique' => '分类名称已存在', 'name.max' => '分类名称最多64个字符', + 'icon.max' => '分类图片最多125个字符', 'pid.integer' => '父级分类ID必须为整数', 'pid.different' => '父级分类ID不能为自身', 'pid.checkPidNotBeChildren' => '父级分类不能为自身或自身的子分类', + 'unique_label.require' => '分类唯一标识不能为空', + 'unique_label.max' => '分类唯一标识最多64个字符', 'sort.require' => '排序不能为空', 'sort.integer' => '排序必须为整数', 'is_show.require' => '是否显示不能为空', @@ -84,4 +89,10 @@ class ArticleCategoryValidate extends Validate { $this->remove('id', 'require|integer')->remove('pid', 'different|checkPidNotBeChildren'); } + + // 更新分类验证场景 + protected function sceneEdit() + { + $this->remove('unique_label', 'require|max:64'); + } } diff --git a/app/common/model/ArticleCategoryBaseModel.php b/app/common/model/ArticleCategoryBaseModel.php index a5f1abfe..15f4e03c 100644 --- a/app/common/model/ArticleCategoryBaseModel.php +++ b/app/common/model/ArticleCategoryBaseModel.php @@ -19,6 +19,7 @@ class ArticleCategoryBaseModel extends BaseModel 'id' => 'int', 'language_id' => 'int', 'pid' => 'int', + 'unique_label' => 'string', 'name' => 'string', 'short_name' => 'string', 'icon' => 'string',