소스 검색

feat: 检索

xiansin 2 년 전
부모
커밋
e01a67b71a
31개의 변경된 파일424개의 추가작업 그리고 412개의 파일을 삭제
  1. 114 0
      server/app/Admin/Controllers/Episode/EpisodeController.php
  2. 5 2
      server/app/Admin/Controllers/Episode/EpisodesCategoryController.php
  3. 0 92
      server/app/Admin/Controllers/EpisodeController.php
  4. 4 0
      server/app/Admin/Controllers/Market/RechargeComboController.php
  5. 0 80
      server/app/Admin/Controllers/Market/UserConsumeRecordController.php
  6. 13 4
      server/app/Admin/Controllers/Market/UserRechargeRecordController.php
  7. 23 17
      server/app/Admin/Controllers/Market/VipComboController.php
  8. 27 10
      server/app/Admin/Controllers/Order/UserEpisodesRecordController.php
  9. 26 15
      server/app/Admin/Controllers/Order/UserRechargeRecordController.php
  10. 1 1
      server/app/Admin/Controllers/Program/BannerController.php
  11. 1 1
      server/app/Admin/Controllers/Program/HomeColumnController.php
  12. 1 1
      server/app/Admin/Controllers/Program/HomeController.php
  13. 1 1
      server/app/Admin/Controllers/Program/NavBarController.php
  14. 1 1
      server/app/Admin/Controllers/Program/TabbarController.php
  15. 27 13
      server/app/Admin/Controllers/UserController.php
  16. 0 16
      server/app/Admin/Repositories/Episode.php
  17. 0 18
      server/app/Admin/Repositories/EpisodesCategory.php
  18. 0 16
      server/app/Admin/Repositories/User.php
  19. 0 16
      server/app/Admin/Repositories/UserConsumeRecord.php
  20. 0 16
      server/app/Admin/Repositories/UserEpisodesRecord.php
  21. 0 16
      server/app/Admin/Repositories/UserRechargeRecord.php
  22. 0 16
      server/app/Admin/Repositories/VipCombo.php
  23. 69 36
      server/app/Admin/routes.php
  24. 59 2
      server/app/Models/Episode.php
  25. 1 1
      server/app/Models/User.php
  26. 19 0
      server/app/Models/UserEpisodesRecord.php
  27. 13 11
      server/resources/lang/zh/episode.php
  28. 2 1
      server/resources/lang/zh/user-episodes-record.php
  29. 1 0
      server/resources/lang/zh/user-recharge-record.php
  30. 9 6
      server/resources/lang/zh/user.php
  31. 7 3
      server/resources/lang/zh/vip-combo.php

+ 114 - 0
server/app/Admin/Controllers/Episode/EpisodeController.php

xqd
@@ -0,0 +1,114 @@
+<?php
+
+namespace App\Admin\Controllers\Episode;
+
+use App\Models\Episode;
+use App\Models\EpisodesCategory;
+use Dcat\Admin\Form;
+use Dcat\Admin\Grid;
+use Dcat\Admin\Show;
+use Dcat\Admin\Http\Controllers\AdminController;
+
+class EpisodeController extends AdminController
+{
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        return Grid::make(Episode::with(['category','userEpisodesRecords']), function (Grid $grid) {
+            $grid->model()->orderByDesc('id');
+            $grid->model()->orderByDesc('sort');
+            $grid->column('id')->sortable();
+            $grid->column('sort')->editable()->sortable();
+            $grid->column('category.name','分类');
+            $grid->column('name');
+            $grid->column('episodes_price')->editable();
+            $grid->column('sale_count','已售出')->display(function (){
+                return $this->userEpisodesRecords->count();
+            })->label('primary');
+            $grid->column('status')->using(['持续更新中','已完结'])->label(['gray', 'primary'])->sortable();
+            $grid->column('created_at');
+
+            $grid->filter(function (Grid\Filter $filter) {
+                $filter->panel();
+                $filter->like('name')->width(2);
+                $filter->equal('category_id')->select(function (){
+                    return EpisodesCategory::select(['id','name'])->get()->pluck('name','id')->toArray();
+                })->width(2);
+                $filter->equal('status')->select(function (){
+                    return ['持续更新中','已完结'];
+                })->width(2);
+                $filter->equal('is_opend')->select(function (){
+                    return ['已下架','已上架'];
+                })->width(2);
+                $filter->between('created_at','添加时间')->datetime()->width(4);
+
+            });
+        });
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed $id
+     *
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        return Show::make($id, Episode::with(['category','userEpisodesRecords']), function (Show $show) {
+            $show->field('id');
+            $show->field('name');
+            $show->field('category.name','分类');
+            $show->field('cover_img')->image();
+            $show->field('status')->using(['持续更新中','已完结']);
+            $show->field('is_opend')->using(['已下架','已上架']);
+            $show->field('sort');
+            $show->field('is_vip_watch')->using(['否','是']);
+            $show->field('free_episodes');
+            $show->field('paid_episodes');
+            $show->field('episodes_price');
+        });
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        return Form::make(new Episode(), function (Form $form) {
+            $form->display('id');
+            $form->text('name')->required();
+            $categoryModel = app(\App\Models\EpisodesCategory::class);
+            $cates = $categoryModel::select(['id','name'])->get()->toArray();
+            $form->select('category_id')->options(array_column($cates,'name','id'))->required();
+            $form->image('cover_img')->saveFullUrl()
+                ->uniqueName()->autoUpload()
+                ->autoSave(false)
+                ->removable(false)
+                ->width(4)->required();
+            $form->switch('status')->default(1);
+            $form->switch('is_opend')->default(1);
+            $form->number('sort');
+            $form->switch('is_vip_watch')->default(1);
+            $form->number('free_episodes')->required();
+            $form->number('paid_episodes')->required();
+            $form->number('episodes_price')->required();
+
+            $form->display('created_at');
+            $form->display('updated_at');
+
+            $form->disableViewButton();
+            $form->disableDeleteButton();
+            $form->disableListButton();
+            $form->disableEditingCheck();
+            $form->disableViewCheck();
+            $form->disableCreatingCheck();
+        });
+    }
+}

+ 5 - 2
server/app/Admin/Controllers/EpisodesCategoryController.php → server/app/Admin/Controllers/Episode/EpisodesCategoryController.php

xqd xqd
@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Admin\Controllers;
+namespace App\Admin\Controllers\Episode;
 
 use App\Models\EpisodesCategory;
 use Dcat\Admin\Form;
@@ -24,8 +24,11 @@ class EpisodesCategoryController extends AdminController
             $grid->column('pid','父分类')->display(function () {
                 /* @var EpisodesCategory $this*/
                 return $this->parent ?$this->parent->name : '';
-            });;
+            });
             $grid->column('created_at');
+
+            $grid->disableRowSelector();
+            $grid->disableViewButton();
         });
     }
 

+ 0 - 92
server/app/Admin/Controllers/EpisodeController.php

xqd
@@ -1,92 +0,0 @@
-<?php
-
-namespace App\Admin\Controllers;
-
-use App\Admin\Repositories\Episode;
-use App\Models\EpisodesCategory;
-use Dcat\Admin\Form;
-use Dcat\Admin\Grid;
-use Dcat\Admin\Show;
-use Dcat\Admin\Http\Controllers\AdminController;
-
-class EpisodeController extends AdminController
-{
-    /**
-     * Make a grid builder.
-     *
-     * @return Grid
-     */
-    protected function grid()
-    {
-        return Grid::make(new Episode(), function (Grid $grid) {
-            $grid->column('id')->sortable();
-            $grid->column('name');
-            $grid->column('cover_img')->image();
-            $grid->column('status');
-            $grid->column('is_opend');
-            $grid->column('sort');
-            $grid->column('is_vip_watch');
-            $grid->column('free_episodes');
-            $grid->column('paid_episodes');
-            $grid->column('episodes_price');
-            $grid->column('created_at');
-
-            $grid->filter(function (Grid\Filter $filter) {
-                $filter->equal('id');
-
-            });
-        });
-    }
-
-    /**
-     * Make a show builder.
-     *
-     * @param mixed $id
-     *
-     * @return Show
-     */
-    protected function detail($id)
-    {
-        return Show::make($id, new Episode(), function (Show $show) {
-            $show->field('id');
-            $show->field('name');
-            $show->field('cover_img');
-            $show->field('status');
-            $show->field('is_opend');
-            $show->field('sort');
-            $show->field('is_vip_watch');
-            $show->field('free_episodes');
-            $show->field('paid_episodes');
-            $show->field('episodes_price');
-            $show->field('created_at');
-            $show->field('updated_at');
-        });
-    }
-
-    /**
-     * Make a form builder.
-     *
-     * @return Form
-     */
-    protected function form()
-    {
-        return Form::make(new Episode(), function (Form $form) {
-            $form->display('id');
-            $form->text('name')->required();
-            $categoryModel = app(\App\Models\EpisodesCategory::class);
-            $cates = $categoryModel::select(['id','name'])->get()->toArray();
-            $form->select('category_id')->options(array_column($cates,'name','id'))->required();
-            $form->image('cover_img')->uniqueName()->autoUpload()->required();
-            $form->switch('status')->default(0);
-            $form->switch('is_opend')->default(0);
-            $form->text('sort');
-            $form->switch('is_vip_watch')->default(0);
-            $form->text('free_episodes')->required();
-            $form->text('paid_episodes')->required();
-            $form->text('episodes_price')->required();
-
-            $form->display('created_at');
-            $form->display('updated_at');
-        });
-    }
-}

+ 4 - 0
server/app/Admin/Controllers/Market/RechargeComboController.php

xqd
@@ -18,12 +18,16 @@ class RechargeComboController extends AdminController
     protected function grid()
     {
         return Grid::make(new RechargeCombo(), function (Grid $grid) {
+            $grid->model()->orderByDesc('status');
             $grid->column('id')->sortable();
             $grid->column('name');
             $grid->column('price');
             $grid->column('gold');
             $grid->column('gift');
             $grid->column('status')->switch();
+
+            $grid->disableViewButton();
+            $grid->disableRowSelector();
         });
     }
 

+ 0 - 80
server/app/Admin/Controllers/Market/UserConsumeRecordController.php

xqd
@@ -1,80 +0,0 @@
-<?php
-
-namespace App\Admin\Controllers\Market;
-
-use App\Models\UserConsumeRecord;
-use Dcat\Admin\Form;
-use Dcat\Admin\Grid;
-use Dcat\Admin\Show;
-use Dcat\Admin\Http\Controllers\AdminController;
-
-class UserConsumeRecordController extends AdminController
-{
-    /**
-     * Make a grid builder.
-     *
-     * @return Grid
-     */
-    protected function grid()
-    {
-        return Grid::make(new UserConsumeRecord(), function (Grid $grid) {
-            $grid->column('id')->sortable();
-            $grid->column('user_id');
-            $grid->column('before');
-            $grid->column('change');
-            $grid->column('current');
-            $grid->column('remark');
-            $grid->column('order_id');
-            $grid->column('created_at');
-            $grid->column('updated_at')->sortable();
-        
-            $grid->filter(function (Grid\Filter $filter) {
-                $filter->equal('id');
-        
-            });
-        });
-    }
-
-    /**
-     * Make a show builder.
-     *
-     * @param mixed $id
-     *
-     * @return Show
-     */
-    protected function detail($id)
-    {
-        return Show::make($id, new UserConsumeRecord(), function (Show $show) {
-            $show->field('id');
-            $show->field('user_id');
-            $show->field('before');
-            $show->field('change');
-            $show->field('current');
-            $show->field('remark');
-            $show->field('order_id');
-            $show->field('created_at');
-            $show->field('updated_at');
-        });
-    }
-
-    /**
-     * Make a form builder.
-     *
-     * @return Form
-     */
-    protected function form()
-    {
-        return Form::make(new UserConsumeRecord(), function (Form $form) {
-            $form->display('id');
-            $form->text('user_id');
-            $form->text('before');
-            $form->text('change');
-            $form->text('current');
-            $form->text('remark');
-            $form->text('order_id');
-        
-            $form->display('created_at');
-            $form->display('updated_at');
-        });
-    }
-}

+ 13 - 4
server/app/Admin/Controllers/Market/UserRechargeRecordController.php

xqd xqd xqd
@@ -2,6 +2,7 @@
 
 namespace App\Admin\Controllers\Market;
 
+use App\Models\RechargeCombo;
 use App\Models\UserRechargeRecord;
 use Dcat\Admin\Form;
 use Dcat\Admin\Grid;
@@ -19,7 +20,7 @@ class UserRechargeRecordController extends AdminController
     {
         return Grid::make(UserRechargeRecord::with(['user','combo','pay']), function (Grid $grid) {
             $grid->model()->where('status',1)
-                ->orderBy('id','desc');
+                ->orderByDesc('id');
             $grid->column('id')->sortable();
             $grid->column('user.nickname','昵称');
             $grid->column('combo.name','充值套餐');
@@ -28,11 +29,19 @@ class UserRechargeRecordController extends AdminController
             $grid->column('created_at','充值时间');
 
             $grid->filter(function (Grid\Filter $filter) {
-                $filter->like('user.nickname','昵称');
-                $filter->like('combo.name','充值套餐');
-                $filter->between('created_at','充值时间')->datetime();
+                $filter->panel();
+                $filter->like('user.nickname','昵称')->width(3);
+                $filter->equal('combo.id','充值套餐')->select(function (){
+                    return RechargeCombo::select(['id','name'])->get()->pluck('name','id')->toArray();
+                })->width(3);
+                $filter->between('created_at','充值时间')->datetime()->width(3);
 
             });
+
+            $grid->disableDeleteButton();
+            $grid->disableCreateButton();
+            $grid->disableViewButton();
+            $grid->disableRowSelector();
         });
     }
 

+ 23 - 17
server/app/Admin/Controllers/VipComboController.php → server/app/Admin/Controllers/Market/VipComboController.php

xqd xqd xqd xqd
@@ -1,8 +1,8 @@
 <?php
 
-namespace App\Admin\Controllers;
+namespace App\Admin\Controllers\Market;
 
-use App\Admin\Repositories\VipCombo;
+use App\Models\VipCombo;
 use Dcat\Admin\Form;
 use Dcat\Admin\Grid;
 use Dcat\Admin\Show;
@@ -18,18 +18,18 @@ class VipComboController extends AdminController
     protected function grid()
     {
         return Grid::make(new VipCombo(), function (Grid $grid) {
+            $grid->model()->orderByDesc('status');
             $grid->column('id')->sortable();
-            $grid->column('name');
+            $grid->column('name')->editable();
             $grid->column('price');
             $grid->column('valid_day');
             $grid->column('desc');
-            $grid->column('created_at');
-            $grid->column('updated_at')->sortable();
-        
-            $grid->filter(function (Grid\Filter $filter) {
-                $filter->equal('id');
-        
-            });
+           // $grid->column('status')->switch();
+
+            $grid->disableViewButton();
+            $grid->disableDeleteButton();
+            $grid->disableRowSelector();
+            $grid->disableCreateButton();
         });
     }
 
@@ -48,6 +48,7 @@ class VipComboController extends AdminController
             $show->field('price');
             $show->field('valid_day');
             $show->field('desc');
+            $show->field('status');
             $show->field('created_at');
             $show->field('updated_at');
         });
@@ -62,13 +63,18 @@ class VipComboController extends AdminController
     {
         return Form::make(new VipCombo(), function (Form $form) {
             $form->display('id');
-            $form->text('name');
-            $form->text('price');
-            $form->text('valid_day');
-            $form->text('desc');
-        
-            $form->display('created_at');
-            $form->display('updated_at');
+            $form->text('name')->required();
+            $form->decimal('price')->required();
+            $form->number('valid_day')->required();
+            $form->textarea('desc');
+           //$form->switch('status')->default(1);
+
+            $form->disableViewButton();
+            $form->disableDeleteButton();
+            $form->disableListButton();
+            $form->disableEditingCheck();
+            $form->disableViewCheck();
+            $form->disableCreatingCheck();
         });
     }
 }

+ 27 - 10
server/app/Admin/Controllers/UserEpisodesRecordController.php → server/app/Admin/Controllers/Order/UserEpisodesRecordController.php

xqd xqd
@@ -1,8 +1,9 @@
 <?php
 
-namespace App\Admin\Controllers;
+namespace App\Admin\Controllers\Order;
 
-use App\Admin\Repositories\UserEpisodesRecord;
+use App\Models\Episode;
+use App\Models\UserEpisodesRecord;
 use Dcat\Admin\Form;
 use Dcat\Admin\Grid;
 use Dcat\Admin\Show;
@@ -17,19 +18,35 @@ class UserEpisodesRecordController extends AdminController
      */
     protected function grid()
     {
-        return Grid::make(new UserEpisodesRecord(), function (Grid $grid) {
+        return Grid::make(UserEpisodesRecord::with(['user','episodes']), function (Grid $grid) {
             $grid->column('id')->sortable();
-            $grid->column('user_id');
-            $grid->column('episodes_id');
-            $grid->column('list_id');
+            $grid->column('user_id')->display(function () {
+                $str  = "";
+                $str .= "<div style='margin-right:10px;display: flex;align-items: center'>";
+                $str .= '<img data-action="preview-img" src="' . $this->user->avatar . '" style="height:50px;width:50px;cursor:pointer;margin-right:10px;" class="img img-thumbnail">';
+                $str .= '<div>';
+                $str .= '<p style="margin-bottom: 5px">' . $this->user->nickname . '</p>';
+                $str .= '<p style="margin-bottom: 0px">' . $this->user->mobile . '</p>';
+                $str .= "</div>";
+                $str .= "</div>";
+                return $str;
+            });
+            $grid->column('episodes.name','短剧名称')->label('info');
+            $grid->column('list_id')->label('primary');
             $grid->column('price');
-            $grid->column('discount');
             $grid->column('created_at');
 
             $grid->filter(function (Grid\Filter $filter) {
-                $filter->equal('user_id');
-                $filter->equal('price');
-                $filter->equal('created_at')->date();
+                $filter->panel();
+                $filter->equal('user_id','用户ID')->width(3);
+                $filter->like('user.nickname','用户昵称')->width(3);
+                $filter->equal('episodes_id','手机号')->width(3);
+                $filter->equal('episodes_id')->select(function (){
+                    return Episode::select(['id','name'])->get()->pluck('name','id')->toArray();
+                })->width(3);
+                $filter->equal('user.mobile','手机号')->width(3);
+                $filter->between('price')->width(3);
+                $filter->between('created_at')->date()->width(4);
 
             });
 

+ 26 - 15
server/app/Admin/Controllers/UserRechargeRecordController.php → server/app/Admin/Controllers/Order/UserRechargeRecordController.php

xqd xqd
@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Admin\Controllers;
+namespace App\Admin\Controllers\Order;
 
 use App\Models\UserRechargeRecord;
 use Dcat\Admin\Form;
@@ -17,24 +17,35 @@ class UserRechargeRecordController extends AdminController
      */
     protected function grid()
     {
-        return Grid::make(new UserRechargeRecord(), function (Grid $grid) {
+        return Grid::make(UserRechargeRecord::with(['user','combo']), function (Grid $grid) {
+            $grid->model()->where('status',1);
             $grid->column('id')->sortable();
-            $grid->column('user_id')->display(function (){
-                return $this->user->nickname;
+            $grid->column('user_id')->display(function () {
+                $str  = "";
+                $str .= "<div style='margin-right:10px;display: flex;align-items: center'>";
+                $str .= '<img data-action="preview-img" src="' . $this->user->avatar . '" style="height:50px;width:50px;cursor:pointer;margin-right:10px;" class="img img-thumbnail">';
+                $str .= '<div>';
+                $str .= '<p style="margin-bottom: 5px">' . $this->user->nickname . '</p>';
+                $str .= '<p style="margin-bottom: 0px">' . $this->user->mobile . '</p>';
+                $str .= "</div>";
+                $str .= "</div>";
+                return $str;
             });
-            $grid->column('combo_id')->display(function (){
-                return $this->combo->name;
-            });
-            $grid->column('price');
-            $grid->column('gift');
-            $grid->column('pay_id');
-            $grid->column('created_at');
-            $grid->column('updated_at')->sortable();
+            $grid->column('pay_id','订单号');
+            $grid->column('combo.name','充值套餐');
+            $grid->column('price')->label('danger');
+            $grid->column('gold')->label('info');
+            $grid->column('gift')->label('primary');
+            //$grid->column('pay_id');
+            $grid->column('created_at')->sortable();
 
             $grid->filter(function (Grid\Filter $filter) {
-                $filter->equal('user_id');
-                $filter->equal('price');
-                $filter->equal('created_at')->date();
+                $filter->panel();
+                $filter->equal('user_id','用户ID')->width(3);
+                $filter->like('user.nickname','用户昵称')->width(3);
+                $filter->equal('user.mobile','手机号')->width(3);
+                $filter->between('price')->width(3);
+                $filter->between('created_at')->date()->width(4);
             });
 
             $grid->disableCreateButton();

+ 1 - 1
server/app/Admin/Controllers/BannerController.php → server/app/Admin/Controllers/Program/BannerController.php

xqd
@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Admin\Controllers;
+namespace App\Admin\Controllers\Program;
 
 use App\Models\Banner;
 use Dcat\Admin\Form;

+ 1 - 1
server/app/Admin/Controllers/HomeColumnController.php → server/app/Admin/Controllers/Program/HomeColumnController.php

xqd
@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Admin\Controllers;
+namespace App\Admin\Controllers\Program;
 
 use App\Models\HomeColumn;
 use Dcat\Admin\Form;

+ 1 - 1
server/app/Admin/Controllers/HomeController.php → server/app/Admin/Controllers/Program/HomeController.php

xqd
@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Admin\Controllers;
+namespace App\Admin\Controllers\Program;
 
 use App\Admin\Metrics\Examples;
 use App\Http\Controllers\Controller;

+ 1 - 1
server/app/Admin/Controllers/NavBarController.php → server/app/Admin/Controllers/Program/NavBarController.php

xqd
@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Admin\Controllers;
+namespace App\Admin\Controllers\Program;
 
 use App\Models\NavBar;
 use Dcat\Admin\Form;

+ 1 - 1
server/app/Admin/Controllers/TabbarController.php → server/app/Admin/Controllers/Program/TabbarController.php

xqd
@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Admin\Controllers;
+namespace App\Admin\Controllers\Program;
 
 use App\Models\Tabbar;
 use Dcat\Admin\Form;

+ 27 - 13
server/app/Admin/Controllers/UserController.php

xqd xqd
@@ -2,7 +2,7 @@
 
 namespace App\Admin\Controllers;
 
-use App\Admin\Repositories\User;
+use App\Models\User;
 use Dcat\Admin\Form;
 use Dcat\Admin\Grid;
 use Dcat\Admin\Show;
@@ -17,28 +17,42 @@ class UserController extends AdminController
      */
     protected function grid()
     {
-        return Grid::make(new User(), function (Grid $grid) {
+        return Grid::make(User::with(['info']), function (Grid $grid) {
+            $grid->model()->orderByDesc('id');
             $grid->column('id')->sortable();
-            $grid->column('nickname','昵称');
-            $grid->column('avatar','头像')->image('',50,50);
-            $grid->column('is_vip','是否会员')->display(function (){
-                return $this->info->is_vip?'是':'否';
+            $grid->column('avatar')->display(function () {
+                $str  = "";
+                $str .= "<div style='margin-right:10px;display: flex;align-items: center'>";
+                $str .= '<img data-action="preview-img" src="' . $this->avatar . '" style="height:50px;width:50px;cursor:pointer;margin-right:10px;" class="img img-thumbnail">';
+                $str .= '<div>';
+                $str .= '<p style="margin-bottom: 5px">' . $this->nickname . '</p>';
+                $str .= '<p style="margin-bottom: 0px">' . $this->mobile . '</p>';
+                $str .= "</div>";
+                $str .= "</div>";
+                return $str;
             });
-            $grid->column('mobile','手机号');
-            $grid->column('integral','金币余额');
+            $grid->column('info.is_vip','是否会员')->using([0 => '否', 1 => '是'])->label(['gray', 'primary']);
+            $grid->column('info.integral','金币余额');
+            $grid->column('info.platform','注册平台')->using([1 => '抖音', 2 => '快手'])->label(['gray', 'primary']);;
             $grid->column('created_at','注册时间');
 
             $grid->filter(function (Grid\Filter $filter) {
-                $filter->equal('id','ID');
-                $filter->equal('nickname','昵称');
-                $filter->equal('mobile','手机号');
-                $filter->equal('is_vip','是否会员')->select(function (){
+                $filter->panel();
+                $filter->equal('id','ID')->width(3);
+                $filter->like('nickname')->width(3);
+                $filter->equal('mobile')->width(3);
+                $filter->equal('info.is_vip','是否会员')->select(function (){
                     return ['否','是'];
-                });
+                })->width(3);
+                $filter->equal('info.platform','是否会员')->select(function (){
+                    return [1 => '抖音', 2 => '快手'];
+                })->width(3);
 
             });
 
             $grid->disableCreateButton();
+            $grid->disableDeleteButton();
+            $grid->disableRowSelector();
         });
     }
 

+ 0 - 16
server/app/Admin/Repositories/Episode.php

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

+ 0 - 18
server/app/Admin/Repositories/EpisodesCategory.php

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

+ 0 - 16
server/app/Admin/Repositories/User.php

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

+ 0 - 16
server/app/Admin/Repositories/UserConsumeRecord.php

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

+ 0 - 16
server/app/Admin/Repositories/UserEpisodesRecord.php

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

+ 0 - 16
server/app/Admin/Repositories/UserRechargeRecord.php

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

+ 0 - 16
server/app/Admin/Repositories/VipCombo.php

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

+ 69 - 36
server/app/Admin/routes.php

xqd
@@ -13,45 +13,78 @@ Route::group([
 ], function (Router $router) {
 
     $router->get('/', 'HomeController@index');
-    // 程序管理 --banner
-    $router->resource('/program/banner','BannerController');
-    // 程序管理 --导航
-    $router->resource('/program/navbar','NavBarController');
-    // 程序管理 --标签
-    $router->resource('/program/tabbar','TabbarController');
-    // 程序管理 --首页栏目
-    $router->resource('/program/home_column','HomeColumnController');
-
-    // 短剧管理 --剧集列表
-    $router->resource('/episodes/lists','EpisodeController');
-    // 短剧管理 --剧集分类
-    $router->resource('/episodes/category','EpisodesCategoryController');
-
-    // 订单管理 --金币消费记录
-    $router->resource('/order/consume','UserConsumeRecordController');
-    // 订单管理 --充值记录
-    $router->resource('/order/recharge','UserRechargeRecordController');
-    // 订单管理 --用户剧集消费记录
-    $router->resource('/order/episodes','UserEpisodesRecordController');
+
+    //  程序管理
+    $router->group([
+        'namespace' => 'Program',
+        'prefix' => 'program',
+    ],function ($router){
+        // 程序管理 --banner
+        $router->resource('/banner','BannerController');
+        // 程序管理 --导航
+        $router->resource('/navbar','NavBarController');
+        // 程序管理 --标签
+        $router->resource('/tabbar','TabbarController');
+        // 程序管理 --首页栏目
+        $router->resource('/home_column','HomeColumnController');
+    });
+
+    //  短剧管理
+    $router->group([
+        'namespace' => 'Episode',
+        'prefix' => 'episodes',
+    ],function ($router){
+        // 短剧管理 --剧集列表
+        $router->resource('/lists','EpisodeController');
+        // 短剧管理 --剧集分类
+        $router->resource('/category','EpisodesCategoryController');
+    });
+
+    //  订单
+    $router->group([
+        'namespace' => 'Order',
+        'prefix' => 'order',
+    ],function ($router){
+        // 订单管理 --金币消费记录
+        $router->resource('/consume','UserConsumeRecordController');
+        // 订单管理 --充值记录
+        $router->resource('/recharge','UserRechargeRecordController');
+        // 订单管理 --用户剧集消费记录
+        $router->resource('/episodes','UserEpisodesRecordController');
+    });
+
     // 用户列表
     $router->resource('/users','UserController');
 
-    //营销 --金币 基础设置
-    $router->resource('/market/setting/gold','Setting\\SettingController');
-    //营销 --金币 充值设置
-    $router->resource('/market/recharge/setting','Market\\RechargeComboController');
-    //营销 --金币 充值记录
-    $router->resource('/market/recharge/records','Market\\UserRechargeRecordController');
-
-
-    //设置 --基础设置
-    $router->resource('/setting/base/basic','Setting\\SettingController');
-    //设置 --订单设置
-    $router->resource('/setting/pay','Setting\\PayConfigController');
-    //设置 --支付设置
-    $router->resource('/setting/pay','Setting\\PayConfigController');
-    //设置 --消息设置
-    $router->resource('/setting/base/tips','Setting\\SettingController');
+    //  营销
+    $router->group([
+        'namespace' => 'Market',
+        'prefix' => 'market',
+    ],function ($router){
+        // --会员 充值套餐
+        $router->resource('/member/combo','VipComboController');
+        // --金币 充值设置
+        $router->resource('/recharge/setting','RechargeComboController');
+        // --金币 充值记录
+        $router->resource('/recharge/records','UserRechargeRecordController');
+    });
+
+    //  设置
+    $router->group([
+        'namespace' => 'Setting',
+        'prefix' => 'setting',
+    ],function ($router){
+        //营销 --金币 基础设置
+        $router->resource('/market/setting/gold','Setting\\SettingController');
+        // --基础设置
+        $router->resource('/base/basic','SettingController');
+        // --消息设置
+        $router->resource('/base/tips','SettingController');
+        // --订单设置
+        $router->resource('/pay','PayConfigController');
+        // --支付设置
+        $router->resource('/pay','PayConfigController');
+    });
 
 
 });

+ 59 - 2
server/app/Models/Episode.php

xqd
@@ -6,8 +6,65 @@ use Dcat\Admin\Traits\HasDateTimeFormatter;
 use Illuminate\Database\Eloquent\SoftDeletes;
 use Illuminate\Database\Eloquent\Model;
 
+/**
+ * App\Models\Episode
+ *
+ * @property int $id
+ * @property int $category_id 分类
+ * @property string $name 名称
+ * @property string $cover_img 名称
+ * @property int $status 状态 0-更新中 1-已完结
+ * @property int $is_opend 上架状态 0-下架 1-上架
+ * @property int $sort 排序
+ * @property int $is_vip_watch 是否限定VIP观看
+ * @property int $free_episodes 免费集数
+ * @property int $paid_episodes 付费集数
+ * @property string $episodes_price 单集价格设置
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @property \Illuminate\Support\Carbon|null $deleted_at
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property-read \App\Models\EpisodesCategory|null $category
+ * @property-read \App\Models\EpisodesList|null $lists
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode newQuery()
+ * @method static \Illuminate\Database\Query\Builder|Episode onlyTrashed()
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode whereCategoryId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode whereCoverImg($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode whereDeletedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode whereEpisodesPrice($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode whereFreeEpisodes($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode whereIsOpend($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode whereIsVipWatch($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode whereName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode wherePaidEpisodes($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode whereSort($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Query\Builder|Episode withTrashed()
+ * @method static \Illuminate\Database\Query\Builder|Episode withoutTrashed()
+ * @mixin \Eloquent
+ * @property-read \App\Models\UserEpisodesRecord|null $userEpisodesRecords
+ */
 class Episode extends Model
 {
-	use HasDateTimeFormatter;
-    use SoftDeletes;
+	use HasDateTimeFormatter,SoftDeletes;
+
+
+    public function category()
+    {
+        return $this->belongsTo(EpisodesCategory::class,'category_id','id');
+	}
+
+    public function lists()
+    {
+        return $this->belongsTo(EpisodesList::class,'id','episodes_id');
+    }
+
+    public function userEpisodesRecords()
+    {
+        return $this->hasMany(UserEpisodesRecord::class,'episodes_id','id');
     }
+}

+ 1 - 1
server/app/Models/User.php

xqd
@@ -105,6 +105,6 @@ class User extends Authenticatable implements JWTSubject
 
     public function info()
     {
-        return $this->belongsTo(UserInfo::class,'user_id','id');
+        return $this->belongsTo(UserInfo::class,'id','user_id');
     }
 }

+ 19 - 0
server/app/Models/UserEpisodesRecord.php

xqd
@@ -30,8 +30,27 @@ use Illuminate\Database\Eloquent\Model;
  * @method static \Illuminate\Database\Eloquent\Builder|UserEpisodesRecord whereUpdatedAt($value)
  * @method static \Illuminate\Database\Eloquent\Builder|UserEpisodesRecord whereUserId($value)
  * @mixin \Eloquent
+ * @property int $statust 状态
+ * @property-read \App\Models\User|null $user
+ * @method static \Illuminate\Database\Eloquent\Builder|UserEpisodesRecord whereStatust($value)
+ * @property-read \App\Models\Episode|null $episodes
  */
 class UserEpisodesRecord extends Model
 {
     use HasFactory;
+
+    protected function serializeDate(\DateTimeInterface $date)
+    {
+        return $date->format($this->dateFormat ?: 'Y-m-d H:i:s');
+    }
+
+    public function user()
+    {
+        return $this->belongsTo(User::class,'user_id','id');
+    }
+
+    public function episodes()
+    {
+        return $this->belongsTo(Episode::class,'episodes_id','id');
+    }
 }

+ 13 - 11
server/resources/lang/zh/episode.php

xqd
@@ -1,19 +1,21 @@
 <?php
 return [
-    'labels' => [
+    'labels'  => [
+        'episodes' => '剧集',
+        'lists' => '列表',
         'Episode' => '剧集',
         'episode' => '剧集',
     ],
-    'fields' => [
-        'name' => '名称',
-        'category_id' => '分类',
-        'cover_img' => '封面图',
-        'status' => '状态', //  0-更新中 1-已完结
-        'is_opend' => '上架状态', //  0-下架 1-上架
-        'sort' => '排序',
-        'is_vip_watch' => '是否限定VIP观看',
-        'free_episodes' => '免费集数',
-        'paid_episodes' => '付费集数',
+    'fields'  => [
+        'name'           => '名称',
+        'category_id'    => '分类',
+        'cover_img'      => '封面图',
+        'status'         => '状态', //  0-更新中 1-已完结
+        'is_opend'       => '上架状态', //  0-下架 1-上架
+        'sort'           => '排序',
+        'is_vip_watch'   => '是否限定VIP观看',
+        'free_episodes'  => '免费集数',
+        'paid_episodes'  => '付费集数',
         'episodes_price' => '单集价格设置',
     ],
     'options' => [

+ 2 - 1
server/resources/lang/zh/user-episodes-record.php

xqd
@@ -7,9 +7,10 @@ return [
     'fields' => [
         'user_id' => '用户',
         'episodes_id' => '剧集',
-        'list_id' => '具体多少集集',
+        'list_id' => '集数',
         'price' => '支付金额',
         'discount' => '折扣金币',
+        'created_at' => '购买时间',
     ],
     'options' => [
     ],

+ 1 - 0
server/resources/lang/zh/user-recharge-record.php

xqd
@@ -14,6 +14,7 @@ return [
         'gold' => '充值奖励金币',
         'gift' => '赠送金币',
         'pay_id' => '支付ID',
+        'created_at' => '充值时间',
     ],
     'options' => [
     ],

+ 9 - 6
server/resources/lang/zh/user.php

xqd
@@ -1,15 +1,18 @@
-<?php 
+<?php
 return [
     'labels' => [
-        'User' => 'User',
-        'user' => 'User',
+        'market' => '营销',
+        'member' => '会员',
+        'users' => '用户',
+        'User' => '用户',
+        'user' => '用户',
     ],
     'fields' => [
-        'nickname' => 'nickname',
-        'avatar' => 'avatar',
+        'nickname' => '昵称',
+        'avatar' => '头像',
         'password' => 'password',
         'email' => 'email',
-        'mobile' => 'mobile',
+        'mobile' => '手机号',
         'open_id' => 'open_id',
         'union_id' => 'union_id',
         'status' => 'status',

+ 7 - 3
server/resources/lang/zh/vip-combo.php

xqd
@@ -1,14 +1,18 @@
-<?php 
+<?php
 return [
     'labels' => [
-        'VipCombo' => 'VipCombo',
-        'vip-combo' => 'VipCombo',
+        'market' => '营销',
+        'member' => '会员',
+        'combo' => '会员套餐',
+        'VipCombo' => '会员套餐',
+        'vip-combo' => '会员套餐',
     ],
     'fields' => [
         'name' => '名称',
         'price' => '价格',
         'valid_day' => '有效天数',
         'desc' => '描述',
+        'status' => '启用状态',
     ],
     'options' => [
     ],