From 248f97e5cd960812aff1e2dfb3b844fc0cea9d56 Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Thu, 20 Feb 2025 17:55:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E5=88=86=E9=A1=B5/=E8=AF=A6=E6=83=85/?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0/=E6=9B=B4=E6=96=B0/=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E5=80=BC/=E5=88=A0=E9=99=A4=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/v1/VideoCategoory.php | 156 ++++++++++++++++++ app/admin/model/v1/VideoCategoryModel.php | 9 +- app/admin/route/v1.php | 21 +++ .../validate/v1/VideoCategoryValidate.php | 64 +++++++ 4 files changed, 249 insertions(+), 1 deletion(-) create mode 100644 app/admin/controller/v1/VideoCategoory.php create mode 100644 app/admin/validate/v1/VideoCategoryValidate.php diff --git a/app/admin/controller/v1/VideoCategoory.php b/app/admin/controller/v1/VideoCategoory.php new file mode 100644 index 00000000..ddaafc2b --- /dev/null +++ b/app/admin/controller/v1/VideoCategoory.php @@ -0,0 +1,156 @@ +param([ + 'name' => '', + 'page/d' => 1, + 'size/d' => 10, + ]); + + $categorys = VideoCategoryModel::withoutField([ + 'languange_id', + 'created_at', + 'updated_at' + ]) + ->withSearch(['name'], [ + 'name' => $param['name']??null + ]) + ->order(['sort' => 'asc', 'id' => 'desc']) + ->paginate([ + 'list_rows' => $param['size'], + 'page' => $param['page'], + ]); + + return success('获取成功', $categorys); + } + + /** + * 视频分类详情 + */ + public function read() + { + $id = request()->param('id'); + + $category = VideoCategoryModel::withoutField([ + 'created_at', + 'updated_at' + ]) + ->bypk($id) + ->find(); + if (empty($category)) { + return error('分类不存在'); + } + + return success('获取成功', $category); + } + + /** + * 视频分类添加 + */ + public function save() + { + $post = request()->post([ + 'name', + 'sort', + 'is_show' + ]); + $data = array_merge($post, ['language_id' => request()->lang_id]); + + $validate = new VideoCategoryValidate; + if (!$validate->scene('create')->check($data)) { + return error($validate->getError()); + } + + $category = new VideoCategoryModel; + if (!$category->save($data)) { + return error('操作失败'); + } + return success('操作成功'); + } + + /** + * 视频分类更新 + */ + public function update() + { + $id = request()->param('id'); + $put = request()->put([ + 'name', + 'sort', + 'is_show' + ]); + + $validate = new VideoCategoryValidate; + if (!$validate->scene('update')->check(array_merge($put, ['id' => $id]))) { + return error($validate->getError()); + } + + $category = VideoCategoryModel::bypk($id)->find(); + if (empty($category)) { + return error('请确认操作对象是否存在'); + } + + if (!$category->save($put)) { + return error('操作失败'); + } + return success('操作成功'); + } + + /** + * 设置视频分类排序值 + */ + public function sort() + { + $id = request()->param('id'); + $sort = request()->post('sort'); + + $validate = new VideoCategoryValidate; + if (!$validate::scene('sort')->check(['id' => $id,'sort' => $sort])) { + return error($validate::getError()); + } + + $category = VideoCategoryModel::bypk($id)->find(); + if (!$category) { + return error('请确认操作对象是否存在'); + } + + $category->sort = $sort; + if (!$category->save()) { + return error('操作失败'); + } + return success('操作成功'); + } + + /** + * 视频分类删除 + */ + public function delete() + { + $id = request()->param('id'); + + $category = VideoCategoryModel::bypk($id)->find(); + if (!$category) { + return error('请确认操作对象是否存在'); + } + + if (!$category->delete()) { + return error('操作失败'); + } + return success('操作成功'); + } +} diff --git a/app/admin/model/v1/VideoCategoryModel.php b/app/admin/model/v1/VideoCategoryModel.php index e18ef866..f2062865 100644 --- a/app/admin/model/v1/VideoCategoryModel.php +++ b/app/admin/model/v1/VideoCategoryModel.php @@ -11,5 +11,12 @@ use app\common\model\VideoCategoryBaseModel; */ class VideoCategoryModel extends VideoCategoryBaseModel { - // + // 分类名称搜索 + public function searchNameAttr($query, $value) + { + if (empty($value)) { + return; + } + $query->where('name', 'like', '%' . $value . '%'); + } } diff --git a/app/admin/route/v1.php b/app/admin/route/v1.php index 54965e31..170a2b37 100644 --- a/app/admin/route/v1.php +++ b/app/admin/route/v1.php @@ -66,6 +66,27 @@ Route::group('v1', function () { // 视频信息删除 Route::delete('delete/:id', 'Video/delete'); + + // 视频分类 + Route::group('category', function () { + // 视频分类分页数据 + Route::get('index', 'VideoCategory/index'); + + // 视频分类详情 + Route::get('read/:id', 'VideoCategory/read'); + + // 视频分类添加 + Route::post('save', 'VideoCategory/save'); + + // 视频分类更新 + Route::put('update/:id', 'VideoCategory/update'); + + // 设置视频分类排序值 + Route::put('sort/:id', 'VideoCategory/sort'); + + // 视频分类删除 + Route::delete('delete/:id', 'VideoCategory/delete'); + }); }); // 文章模块 diff --git a/app/admin/validate/v1/VideoCategoryValidate.php b/app/admin/validate/v1/VideoCategoryValidate.php new file mode 100644 index 00000000..bf198fb9 --- /dev/null +++ b/app/admin/validate/v1/VideoCategoryValidate.php @@ -0,0 +1,64 @@ + ['规则1','规则2'...] + * + * @var array + */ + protected $rule = [ + 'id' => 'require|integer', + 'language_id' => 'require|integer', + 'name' => 'require|max:64', + 'sort' => 'integer', + 'is_show' => 'in:0,1', + ]; + + /** + * 定义错误信息 + * 格式:'字段名.规则名' => '错误信息' + * + * @var array + */ + protected $message = [ + 'id.require' => 'ID不能为空', + 'id.integer' => 'ID必须是整数', + 'language_id.require' => '语言ID不能为空', + 'language_id.integer' => '语言ID必须是整数', + 'name.require' => '名称不能为空', + 'name.max' => '名称不能超过64个字符', + 'sort.integer' => '排序必须是整数', + 'is_show.in' => '是否显示必须是0或1', + ]; + + /** + * 新增场景 + */ + public function sceneCreate() + { + return $this->remove('id', 'require|integer'); + } + + /** + * 更新场景 + */ + public function sceneUpdate() + { + return $this->remove('language_id', 'require|integer'); + } + + /** + * 设置排序值场景 + */ + public function sceneSort() + { + return $this->only(['sort']); + } +}