Browse Source

视频分类

moshaorui 5 months ago
parent
commit
d4b89bf53f

+ 3 - 1
app/Admin/Controllers/BaseProductController.php

@@ -36,6 +36,7 @@ class BaseProductController extends AdminController
                 return CommonHelper::displayImage($dataImages,80);
             });
             $grid->column('order')->orderable();
+            $grid->column('is_pinned')->switch();
             $grid->column('enabled')->switch();
             $grid->column('created_at');
             $grid->column('updated_at')->sortable();
@@ -50,7 +51,7 @@ class BaseProductController extends AdminController
                 ]);
             });
             //排序
-           $grid->model()->orderBy("order",'asc')->orderBy('id', 'desc');
+            $grid->model()->orderBy("is_pinned",'desc')->orderBy("order",'desc');
         });
     }
 
@@ -144,6 +145,7 @@ class BaseProductController extends AdminController
                 });
             $form->editor('content');
             //$form->number('order');
+            $form->switch('is_pinned')->default(0);
             $form->switch('enabled')->default(1);
             //插入JS
             $this->addParametersJs();

+ 0 - 2
app/Admin/Controllers/BaseVideoCategoryController.php

@@ -49,8 +49,6 @@ class BaseVideoCategoryController extends AdminController
         });
     }
 
-
-
     /**
      * Make a form builder.
      *

+ 103 - 0
app/Admin/Controllers/BaseVideoController.php

@@ -0,0 +1,103 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Admin\Repositories\BaseProductCategory;
+use App\Admin\Repositories\BaseVideo;
+use App\Admin\Repositories\BaseVideoCategory;
+use Dcat\Admin\Form;
+use Dcat\Admin\Grid;
+use Dcat\Admin\Show;
+use Dcat\Admin\Http\Controllers\AdminController;
+use Dcat\Admin\Layout\Content;
+
+class BaseVideoController extends AdminController
+{
+    /**
+     * page index
+     */
+    public function index(Content $content)
+    {
+        return $content
+            ->header('Video Management')
+            ->description('all')
+            ->breadcrumb(['text'=>'Video Management','url'=>''])
+            ->body($this->grid());
+    }
+
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        return Grid::make(new BaseVideo(), function (Grid $grid) {
+            $grid->column('id')->sortable();
+            $grid->column('title');
+            $grid->column('base_video_category.name','Category Name');
+            $grid->column('order')->orderable();
+            $grid->column('is_pinned')->switch();
+            $grid->column('enabled')->switch();
+            $grid->column('created_at');
+            $grid->column('updated_at')->sortable();
+            // 筛选
+            $grid->filter(function (Grid\Filter $filter) {
+                $filter->equal('sku');
+                $filter->like('title');
+                $filter->equal('category_id','Category')->select(BaseVideoCategory::selectOptions());
+                $filter->equal('enabled', 'enabled')->select([
+                    1 => 'Yes',
+                    0 => 'No',
+                ]);
+            });
+            //排序
+           // $grid->orderby->()->orderBy("order",'asc');
+            //按钮
+        });
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed $id
+     *
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        return Show::make($id, BaseVideo::with(['']), function (Show $show) {
+            $show->field('id');
+            $show->field('title');
+            $show->field('base_video_category.name','Category Name');
+            $show->field('remark');
+            $show->field('enabled')->using([
+                '0' => 'No',   // 显示的状态名称
+                '1' => 'Yes',
+            ]);
+            $show->field('created_at');
+            $show->field('updated_at');
+        });
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        return Form::make(new BaseVideo(), function (Form $form) {
+            $form->display('id');
+            $form->text('title')->required();
+            $form->select('category_id', 'Category Name')
+                ->options(BaseVideoCategory::selectOptions())
+                ->required();
+            $form->url("video_url")->required();
+            $form->editor('remark');
+            $form->switch('is_pinned')->default(0);
+            $form->switch('enabled')->default(1);
+
+        });
+    }
+}

+ 16 - 0
app/Admin/Repositories/BaseVideo.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Admin\Repositories;
+
+use App\Models\BaseVideo as Model;
+use Dcat\Admin\Repositories\EloquentRepository;
+
+class BaseVideo extends EloquentRepository
+{
+    /**
+     * Model.
+     *
+     * @var string
+     */
+    protected $eloquentClass = Model::class;
+}

+ 2 - 0
app/Admin/routes.php

@@ -23,4 +23,6 @@ Route::group([
     $router->resource('product-parameter', 'BaseProductParameterController');
     //视频分类
     $router->resource('video-category', 'BaseVideoCategoryController');
+    //视频管理
+    $router->resource('base-video', 'BaseVideoController');
 });

+ 36 - 0
app/Http/Middleware/DistAuth.php

@@ -0,0 +1,36 @@
+<?php
+
+namespace App\Http\Middleware;
+use Closure;
+use Dcat\Admin\Admin;
+use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
+
+class DistAuth
+{
+    private  $excludeList = [
+        '/auth/users',
+        '/auth/roles',
+        '/auth/permissions',
+        '/auth/menu',
+        '/auth/extensions',
+        '/helpers/scaffold',
+        '/helpers/icons',
+    ];
+
+    public function handle($request, Closure $next)
+    {
+        //如果用户非管理员角色,判断是否含以上URL,含有则触发404
+        foreach ($this->excludeList as $item) {
+            if (strpos($request->url(), $item) !== false) {
+                if (!Admin::user()->isAdministrator()) {
+                    throw new NotFoundHttpException; // 触发404
+                }
+            }
+        }
+
+        //否则继续处理当前请求
+        return $next($request);
+
+    }
+
+}

+ 5 - 5
app/Models/BaseProductCategory.php

@@ -15,11 +15,6 @@ class BaseProductCategory extends Model implements Sortable
         ModelTree::boot as treeBoot;
     }
 
-    protected $casts = [
-        'created_at' => 'datetime:Y-m-d H:i:s',
-        'updated_at' => 'datetime:Y-m-d H:i:s',
-    ];
-
     //名称
     protected $titleColumn = 'name';
     //排序
@@ -29,6 +24,11 @@ class BaseProductCategory extends Model implements Sortable
 
     protected $table = 'base_product_category';
 
+    protected $casts = [
+        'created_at' => 'datetime:Y-m-d H:i:s',
+        'updated_at' => 'datetime:Y-m-d H:i:s',
+    ];
+
     /*
      * 关联产品参数
      */

+ 36 - 0
app/Models/BaseVideo.php

@@ -0,0 +1,36 @@
+<?php
+
+namespace App\Models;
+
+use Dcat\Admin\Traits\HasDateTimeFormatter;
+
+use Illuminate\Database\Eloquent\Model;
+use Spatie\EloquentSortable\Sortable;
+use Spatie\EloquentSortable\SortableTrait;
+
+class BaseVideo extends Model implements Sortable
+{
+	use HasDateTimeFormatter;
+    use SortableTrait;
+    protected $table = 'base_video';
+
+    // 可选:你可以在这里自定义排序配置
+    public $sortable = [
+        'order_column_name' => 'order',  // 排序字段
+        'sort_when_creating' => true,    // 创建时自动排序
+    ];
+
+    protected $casts = [
+        'created_at' => 'datetime:Y-m-d H:i:s',
+        'updated_at' => 'datetime:Y-m-d H:i:s',
+    ];
+
+    /*
+     * 分类一对多关联
+     */
+    public function baseVideoCategory()
+    {
+        return $this->hasOne(BaseVideoCategory::class,'id','category_id');
+    }
+
+}

+ 4 - 0
app/Models/BaseVideoCategory.php

@@ -22,4 +22,8 @@ class BaseVideoCategory extends Model implements Sortable
     //父级
     protected $parentColumn = 'parent_id';
 
+    protected $casts = [
+        'created_at' => 'datetime:Y-m-d H:i:s',
+        'updated_at' => 'datetime:Y-m-d H:i:s',
+    ];
 }

+ 0 - 4
dcat_admin_ide_helper.php

@@ -36,7 +36,6 @@ namespace Dcat\Admin {
      * @property Grid\Column|Collection password
      * @property Grid\Column|Collection avatar
      * @property Grid\Column|Collection remember_token
-     * @property Grid\Column|Collection body
      * @property Grid\Column|Collection keywords
      * @property Grid\Column|Collection sku
      * @property Grid\Column|Collection category_id
@@ -88,7 +87,6 @@ namespace Dcat\Admin {
      * @method Grid\Column|Collection password(string $label = null)
      * @method Grid\Column|Collection avatar(string $label = null)
      * @method Grid\Column|Collection remember_token(string $label = null)
-     * @method Grid\Column|Collection body(string $label = null)
      * @method Grid\Column|Collection keywords(string $label = null)
      * @method Grid\Column|Collection sku(string $label = null)
      * @method Grid\Column|Collection category_id(string $label = null)
@@ -145,7 +143,6 @@ namespace Dcat\Admin {
      * @property Show\Field|Collection password
      * @property Show\Field|Collection avatar
      * @property Show\Field|Collection remember_token
-     * @property Show\Field|Collection body
      * @property Show\Field|Collection keywords
      * @property Show\Field|Collection sku
      * @property Show\Field|Collection category_id
@@ -197,7 +194,6 @@ namespace Dcat\Admin {
      * @method Show\Field|Collection password(string $label = null)
      * @method Show\Field|Collection avatar(string $label = null)
      * @method Show\Field|Collection remember_token(string $label = null)
-     * @method Show\Field|Collection body(string $label = null)
      * @method Show\Field|Collection keywords(string $label = null)
      * @method Show\Field|Collection sku(string $label = null)
      * @method Show\Field|Collection category_id(string $label = null)

+ 16 - 0
lang/en/base-video.php

@@ -0,0 +1,16 @@
+<?php 
+return [
+    'labels' => [
+        'BaseVideo' => 'BaseVideo',
+        'base-video' => 'BaseVideo',
+    ],
+    'fields' => [
+        'title' => 'title',
+        'category_id' => 'category_id',
+        'remark' => 'remark',
+        'enabled' => 'enabled',
+        'order' => 'order',
+    ],
+    'options' => [
+    ],
+];