diff --git a/catch/cms/model/Category.php b/catch/cms/model/Category.php index 8773744..e351295 100644 --- a/catch/cms/model/Category.php +++ b/catch/cms/model/Category.php @@ -61,6 +61,8 @@ class Category extends BaseModel 'deleted_at', ); + protected $updateChildrenFields = ['status']; + const LIST_TYPE = 1; // 列表 const PAGE_TYPE = 2; // 单页 const COVER_TYPE = 3; // 封面 diff --git a/catch/cms/model/events/CategoryEvent.php b/catch/cms/model/events/CategoryEvent.php index dd4e591..96f52de 100644 --- a/catch/cms/model/events/CategoryEvent.php +++ b/catch/cms/model/events/CategoryEvent.php @@ -13,6 +13,7 @@ namespace catchAdmin\cms\model\events; +use catcher\exceptions\CatchException; use catcher\exceptions\FailedException; use catcher\Utils; @@ -24,10 +25,15 @@ trait CategoryEvent * @time 2021年03月03日 * @param \think\Model $category * @return void + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @throws \think\db\exception\DataNotFoundException */ public static function onBeforeInsert(\think\Model $category): void { - + if (self::where('name', $category->getData('name'))->find()) { + throw new FailedException('分类名称重复,请重新填写'); + } } /** @@ -36,10 +42,21 @@ trait CategoryEvent * @time 2021年03月03日 * @param \think\Model $category * @return mixed|void + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @throws \think\db\exception\DataNotFoundException */ public static function onBeforeUpdate(\think\Model $category) { - + $data = $category->getData(); + + if (isset($data['name'])) { + $where = $category->getWhere(); + + if (self::where('name', $category->getData('name'))->where('id', '<>', $where['id'])->find()) { + throw new FailedException('分类名称重复,请重新填写'); + } + } } /** diff --git a/extend/catcher/traits/db/BaseOptionsTrait.php b/extend/catcher/traits/db/BaseOptionsTrait.php index 0e14c6a..c2caf07 100644 --- a/extend/catcher/traits/db/BaseOptionsTrait.php +++ b/extend/catcher/traits/db/BaseOptionsTrait.php @@ -184,7 +184,7 @@ trait BaseOptionsTrait if (!empty($this->updateChildrenFields)) { if (is_array($this->updateChildrenFields)) { foreach ($data as $field => $value) { - if (in_array($field, $this->updateChildrenFields)) { + if (! in_array($field, $this->updateChildrenFields)) { unset($data[$field]); } }