Pārlūkot izejas kodu

feat: 前端排行榜,最新,检索,后台相关优化

xiansin 2 gadi atpakaļ
vecāks
revīzija
ed5c9f322e
32 mainītis faili ar 354 papildinājumiem un 61 dzēšanām
  1. 9 1
      mini/api/episode.js
  2. 8 1
      mini/api/setting.js
  3. 4 4
      mini/components/NavBar/index.vue
  4. 21 0
      mini/pages.json
  5. 39 6
      mini/pages/index/index.vue
  6. 56 0
      mini/pages/index/news.vue
  7. 57 0
      mini/pages/index/rank.vue
  8. 58 0
      mini/pages/index/search.vue
  9. 3 3
      server/app/Admin/Controllers/Episode/EpisodeController.php
  10. 4 4
      server/app/Admin/Controllers/Episode/EpisodesBatchUploadController.php
  11. 3 3
      server/app/Admin/Controllers/Episode/EpisodesListController.php
  12. 4 4
      server/app/Admin/routes.php
  13. 42 2
      server/app/Http/Controllers/V1/EpisodeController.php
  14. 11 0
      server/app/Http/Controllers/V1/SettingController.php
  15. 1 1
      server/app/Http/Controllers/V1/User/CollectController.php
  16. 1 1
      server/app/Http/Controllers/V1/User/FavoriteController.php
  17. 1 1
      server/app/Models/EpisodesList.php
  18. 1 1
      server/app/Models/UserCollect.php
  19. 1 1
      server/app/Models/UserEpisodesRecord.php
  20. 1 1
      server/app/Models/UserFavorite.php
  21. 1 1
      server/app/Models/UserWatchRecord.php
  22. 3 3
      server/config/global.php
  23. 8 8
      server/database/zhangsiye_db.sql
  24. 3 3
      server/resources/lang/zh/episode.php
  25. 2 2
      server/resources/lang/zh/episodes-category.php
  26. 4 4
      server/resources/lang/zh/episodes-list.php
  27. 1 1
      server/resources/lang/zh/user-episodes-record.php
  28. 1 1
      server/resources/lang/zh_CN/episodes-category.php
  29. 2 2
      server/resources/lang/zh_CN/episodes-list.php
  30. 2 2
      server/resources/lang/zh_CN/user-episodes-record.php
  31. 2 0
      server/routes/api.php
  32. BIN
      server/server.zip

+ 9 - 1
mini/api/episode.js

xqd
@@ -36,10 +36,18 @@ export function shared(id) {
   )
 }
 
+export function search(params) {
+  return request.get(
+    `episode/search`,
+    { params }
+  )
+}
+
 export default {
   recommend,
   news,
   rank,
   detail,
-  trace
+  trace,
+  search
 }

+ 8 - 1
mini/api/setting.js

xqd
@@ -24,9 +24,16 @@ export function rechargeCombo() {
   )
 }
 
+export function homeColumn() {
+  return request.get(
+    'setting/homeColumn'
+  )
+}
+
 export default {
   tabBar,
   navBar,
   banner,
-  rechargeCombo
+  rechargeCombo,
+  homeColumn
 }

+ 4 - 4
mini/components/NavBar/index.vue

xqd
@@ -28,15 +28,15 @@ export default {
   data() {
     return {
       types: {
-        1: { href: '/pages/' },
-        2: { href: '/pages/' },
+        1: { href: '/pages/index/rank' },
+        2: { href: '/pages/index/news' },
         3: { href: '/pages/member/index' },
         4: { href: '/pages/sign/index' },
         5: { type: 'recharge' }
       },
       navItem: [
-        { icon: '', name: '排行榜', href: '/pages/' },
-        { icon: '', name: '最新', href: '/pages/' },
+        { icon: '', name: '排行榜', href: '/pages/index/rank' },
+        { icon: '', name: '最新', href: '/pages/index/news' },
         { icon: '', name: '会员', href: '/pages/member/index' },
         { icon: '', name: '签到', href: '/pages/sign/index' },
         { icon: '', name: '充值', type: 'recharge' }

+ 21 - 0
mini/pages.json

xqd
@@ -12,6 +12,27 @@
         "enablePullDownRefresh": false
       }
     },
+    {
+      "path": "pages/index/rank",
+      "style": {
+        "navigationBarTitleText": "排行榜",
+        "enablePullDownRefresh": false
+      }
+    },
+    {
+      "path": "pages/index/news",
+      "style": {
+        "navigationBarTitleText": "最新",
+        "enablePullDownRefresh": false
+      }
+    },
+    {
+      "path": "pages/index/search",
+      "style": {
+        "navigationBarTitleText": "搜索结果",
+        "enablePullDownRefresh": false
+      }
+    },
     {
       "path": "pages/trace/index",
       "style": {

+ 39 - 6
mini/pages/index/index.vue

xqd xqd xqd xqd
@@ -4,7 +4,7 @@
     <view class="search-box main-center cross-center">
       <u-input
         v-model="keywords"
-        placeholder="请输入剧名 /演员"
+        placeholder="请输入剧名"
         color="#fff"
         border="none"
         prefix-icon="search"
@@ -21,6 +21,7 @@
           borderRadius: '36rpx',
           color: '#fff'
         }"
+        @confirm="handleSearch"
       />
     </view>
     <!--swpier-->
@@ -28,9 +29,14 @@
     <!--栏目分类-->
     <nav-bar />
     <!--分类-->
-    <episode-box title="短剧推荐" type="recommend" />
-    <episode-box title="最新热剧" type="news" />
-    <episode-box title="排行榜" type="rank" />
+    <template v-for="(item,index) in homeColumn">
+      <episode-box
+        v-if="item.type !== homeColumnType[2]"
+        :key="index"
+        :title="item.name"
+        :type="item.type"
+      />
+    </template>
     <!--tab bar-->
     <tab-bar />
     <!--最近播放-->
@@ -48,15 +54,42 @@ export default {
   components: { Recent, NavBar, TabBar, EpisodeBox, SwiperBox },
   data() {
     return {
-      keywords: ''
+      keywords: '',
+      homeColumnType: {
+        1: 'recommend',
+        2: 'todayRecommend',
+        3: 'news',
+        4: 'rank'
+      },
+      homeColumn: []
     }
   },
   computed: {
   },
   onLoad(options) {
+    this.getHomeColumn()
   },
   methods: {
-
+    handleSearch() {
+      if (!this.keywords) {
+        this.$u.toast('请输入剧集名称')
+        return
+      }
+      this.$u.route({
+        url: '/pages/index/search',
+        params: {
+          keywords: this.keywords
+        }
+      })
+    },
+    getHomeColumn() {
+      this.$api.setting.homeColumn().then(res => {
+        this.homeColumn = res.data
+        this.homeColumn.forEach(obj => {
+          obj.type = this.homeColumnType[obj.type]
+        })
+      })
+    }
   }
 }
 </script>

+ 56 - 0
mini/pages/index/news.vue

xqd
@@ -0,0 +1,56 @@
+<template>
+  <view class="free-container dir-left-wrap">
+    <episode
+      v-for="(episode,index) in episodes"
+      :key="index"
+      :episode="episode"
+      :custom-style="{
+        marginRight: ((index+1) % 3 !== 0 ? '20rpx' :''),
+      }"
+    />
+  </view>
+</template>
+
+<script>
+import Episode from '../../components/Episode/index'
+export default {
+  name: 'Free',
+  components: { Episode },
+  data() {
+    return {
+      limit: 30,
+      page: 1,
+      isMore: true,
+      episodes: []
+    }
+  },
+  computed: {},
+  methods: {
+    getNews() {
+      this.loading = true
+      this.$api.episode.news({ limit: this.limit, page: this.page }).then(res => {
+        this.loading = false
+        if (res.data.length) {
+          this.episodes = this.episodes.concat(res.data)
+        } else {
+          this.isMore = false
+        }
+      })
+    }
+  },
+  onLoad() {
+    this.getNews()
+  },
+  onReachBottom(e) {
+    if (!this.isMore) return
+    this.page += 1
+    this.getNews()
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .free-container {
+    padding: 20rpx;
+  }
+</style>

+ 57 - 0
mini/pages/index/rank.vue

xqd
@@ -0,0 +1,57 @@
+<template>
+  <view class="free-container dir-left-wrap">
+    <episode
+      v-for="(episode,index) in episodes"
+      :key="index"
+      :episode="episode"
+      :rank="episode.rank"
+      :custom-style="{
+        marginRight: ((index+1) % 3 !== 0 ? '20rpx' :''),
+      }"
+    />
+  </view>
+</template>
+
+<script>
+import Episode from '../../components/Episode/index'
+export default {
+  name: 'Free',
+  components: { Episode },
+  data() {
+    return {
+      limit: 30,
+      page: 1,
+      isMore: true,
+      episodes: []
+    }
+  },
+  computed: {},
+  methods: {
+    getRank() {
+      this.loading = true
+      this.$api.episode.rank({ limit: this.limit, page: this.page }).then(res => {
+        this.loading = false
+        if (res.data.length) {
+          this.episodes = this.episodes.concat(res.data)
+        } else {
+          this.isMore = false
+        }
+      })
+    }
+  },
+  onLoad() {
+    this.getRank()
+  },
+  onReachBottom(e) {
+    if (!this.isMore) return
+    this.page += 1
+    this.getRank()
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .free-container {
+    padding: 20rpx;
+  }
+</style>

+ 58 - 0
mini/pages/index/search.vue

xqd
@@ -0,0 +1,58 @@
+<template>
+  <view class="free-container dir-left-wrap">
+    <episode
+      v-for="(episode,index) in episodes"
+      :key="index"
+      :episode="episode"
+      :custom-style="{
+        marginRight: ((index+1) % 3 !== 0 ? '20rpx' :''),
+      }"
+    />
+  </view>
+</template>
+
+<script>
+import Episode from '../../components/Episode/index'
+export default {
+  name: 'Free',
+  components: { Episode },
+  data() {
+    return {
+      limit: 30,
+      page: 1,
+      isMore: true,
+      keywords: '',
+      episodes: []
+    }
+  },
+  computed: {},
+  methods: {
+    getSearch() {
+      this.loading = true
+      this.$api.episode.search({ limit: this.limit, page: this.page, keywords: this.keywords }).then(res => {
+        this.loading = false
+        if (res.data.length) {
+          this.episodes = this.episodes.concat(res.data)
+        } else {
+          this.isMore = false
+        }
+      })
+    }
+  },
+  onLoad(options) {
+    this.keywords = options?.keywords
+    this.getSearch()
+  },
+  onReachBottom(e) {
+    if (!this.isMore) return
+    this.page += 1
+    this.getSearch()
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .free-container {
+    padding: 20rpx;
+  }
+</style>

+ 3 - 3
server/app/Admin/Controllers/Episode/EpisodeController.php

xqd
@@ -33,16 +33,16 @@ class EpisodeController extends AdminController
             })->label('primary');
             $grid->column('status')->using(config('global.episode_status'))->label(['gray', 'primary'])->sortable();
             $grid->column('is_opend')->using(config('global.episode_opend'))->label(['gray', 'primary'])->sortable();
-            $grid->column('','剧上传')->display(function (){
+            $grid->column('','剧上传')->display(function (){
                 $url = admin_url('/episodes/batch/'.$this->id.'/upload');
-                return '<a href="'.$url.'"><i class="fa fa-upload"></i> 上传剧</a>';
+                return '<a href="'.$url.'"><i class="fa fa-upload"></i> 上传剧</a>';
             });
             $grid->column('created_at');
 
             $grid->actions(function (Grid\Displayers\Actions $actions) {
                 $id = $actions->getKey();
                 // append一个操作
-                $actions->append('<a href="/admin/episodes/'.$id.'/lists"><i class="fa fa-upload"></i> 剧管理</a>');
+                $actions->append('<a href="/admin/episodes/'.$id.'/lists"><i class="fa fa-upload"></i> 剧管理</a>');
             });
 
             $grid->filter(function (Grid\Filter $filter) {

+ 4 - 4
server/app/Admin/Controllers/Episode/EpisodesBatchUploadController.php

xqd xqd xqd
@@ -25,10 +25,10 @@ class EpisodesBatchUploadController extends AdminController
             ->title($episode->name)
             ->breadcrumb(
                 ['text' => $episode->name],
-                ['text' => '剧上传'],
+                ['text' => '剧上传'],
             )
             ->body($form)
-            ->description('剧上传');
+            ->description('剧上传');
     }
 
     public function store($id = 0)
@@ -37,7 +37,7 @@ class EpisodesBatchUploadController extends AdminController
         $form = new Form();
         $response = $form->response();
         if(isset($req['lists']) && empty($req['lists'])) {
-            return $response->error('请上传剧');
+            return $response->error('请上传剧');
         }else if(!isset($req['lists'])){
             return $this->form()->store();
         }
@@ -74,7 +74,7 @@ class EpisodesBatchUploadController extends AdminController
             $form->disableViewCheck();
 
 
-            $form->multipleFile('lists', '剧')
+            $form->multipleFile('lists', '剧')
                 ->chunkSize(1024)
                 ->maxSize(1024 * 1024)
                 ->saveFullUrl()

+ 3 - 3
server/app/Admin/Controllers/Episode/EpisodesListController.php

xqd xqd
@@ -28,10 +28,10 @@ class EpisodesListController extends AdminController
             ->translation($this->translation())
             ->breadcrumb(
                 ['text' => $this->episode->name],
-                ['text' => '剧上传'],
+                ['text' => '剧上传'],
             )
             ->title($this->title())
-            ->description('剧上传');
+            ->description('剧上传');
     }
 
     public function index(Content $content,$episodeId = 0)
@@ -77,7 +77,7 @@ class EpisodesListController extends AdminController
             $grid->column('sort')->display(function (){
                 return '第'.$this->sort.'集';
             })->editable();
-            $grid->column('episode.name','剧名称');
+            $grid->column('episode.name','剧名称');
             $grid->column('is_free')
                 ->using(config('global.episode_free'))
                 ->label(['success', 'primary'])->sortable();

+ 4 - 4
server/app/Admin/routes.php

xqd xqd
@@ -34,16 +34,16 @@ Route::group([
         'namespace' => 'Episode',
         'prefix' => 'episodes',
     ],function ($router){
-        // 短剧管理 --剧列表
+        // 短剧管理 --剧列表
         /* @var Route $router*/
         $router->resource('/index','EpisodeController');
-        // 短剧管理 --剧分类
+        // 短剧管理 --剧分类
         $router->resource('/category','EpisodesCategoryController');
         // 短剧批量上传
         $router->resource('/batch/{id}/upload','EpisodesBatchUploadController');
         //$router->put('batch', 'SettingController@setting');
     });
-    // 短剧管理 --剧列表
+    // 短剧管理 --剧列表
     $router->resource('episodes/{episodes}/lists','Episode\\EpisodesListController')->shallow();
 
 
@@ -56,7 +56,7 @@ Route::group([
         // $router->resource('/consume','UserConsumeRecordController');
         // 订单管理 --充值记录
         $router->resource('/recharge','UserRechargeRecordController');
-        // 订单管理 --用户剧消费记录
+        // 订单管理 --用户剧消费记录
         $router->resource('/episodes','UserEpisodesRecordController');
         // 消费记录
         $router->resource('/consume','UserConsumeRecordController');

+ 42 - 2
server/app/Http/Controllers/V1/EpisodeController.php

xqd xqd xqd
@@ -86,12 +86,16 @@ class EpisodeController extends Controller
      */
     public function news()
     {
+        $limit = request()->input('limit',3);
+        $page = request()->input('page',1);
+        $offset = ($page - 1) * $limit;
         $episodes = Episode::withCount(['lists'])
             ->where('is_opend', 1)
             ->where('platform', \user()->info->platform)
             ->inRandomOrder()
             ->orderByDesc('id')
-            ->limit(3)
+            ->limit($limit)
+            ->offset($offset)
             ->get();
 
         $lists = [];
@@ -112,15 +116,18 @@ class EpisodeController extends Controller
     public function rank()
     {
         $limit = request()->input('limit',3);
+        $page = request()->input('page',1);
+        $offset = ($page - 1) * $limit;
         $episodes = Episode::withCount(['userEpisodesRecords','lists'])
             ->where('is_opend', 1)
             ->where('platform', \user()->info->platform)
             ->orderByDesc('user_episodes_records_count')
             ->limit($limit)
+            ->offset($offset)
             ->get();
 
         $lists = [];
-        $rank = 1;
+        $rank = (($page - 1) * $limit) + 1;
         /* @var Episode $episode*/
         foreach ($episodes as $episode){
             $episode->status_text = $episode->status;
@@ -155,6 +162,39 @@ class EpisodeController extends Controller
         return $this->success($lists);
     }
 
+    /**
+     * 最新
+     */
+    public function search()
+    {
+        $keywords = request()->input('keywords','');
+        $limit = request()->input('limit',3);
+        $page = request()->input('page',1);
+        $offset = ($page - 1) * $limit;
+        $episodes = Episode::withCount(['lists'])
+            ->where('is_opend', 1)
+            ->where('platform', \user()->info->platform)
+            ->when($keywords, function ($query, $keywords) {
+                /* @var Builder  $query*/
+                return $query->where('name','like', "%$keywords%");
+            })
+            ->inRandomOrder()
+            ->orderByDesc('id')
+            ->limit($limit)
+            ->offset($offset)
+            ->get();
+
+        $lists = [];
+        /* @var Episode $episode*/
+        foreach ($episodes as $episode){
+            $episode->status_text = $episode->status;
+            $episode->total = $episode->lists_count;
+            $lists[] = $episode;
+        }
+
+        return $this->success($lists);
+    }
+
     public function detail($id)
     {
         $episodes = Episode::withCount(['userWatchRecord','userCollect','userFavorite','lists'])

+ 11 - 0
server/app/Http/Controllers/V1/SettingController.php

xqd xqd
@@ -1,6 +1,7 @@
 <?php
 namespace App\Http\Controllers\V1;
 use App\Models\Banner;
+use App\Models\HomeColumn;
 use App\Models\NavBar;
 use App\Models\RechargeCombo;
 use App\Models\Tabbar;
@@ -46,6 +47,16 @@ class SettingController extends Controller
         return $this->success($all);
     }
 
+    public function homeColumn()
+    {
+        $all = HomeColumn::select(['name','type'])
+            ->where('status',1)
+            ->orderByDesc('sort')
+            ->get();
+
+        return $this->success($all);
+    }
+
     public function rechargeCombo()
     {
         $lists = RechargeCombo::all();

+ 1 - 1
server/app/Http/Controllers/V1/User/CollectController.php

xqd
@@ -34,7 +34,7 @@ class CollectController extends Controller
         return $this->success($lists);
     }
 
-    // 检查当前剧是否收藏
+    // 检查当前剧是否收藏
     public function check($id)
     {
         $res = UserCollect::filterUser()->where('episode_id',$id)->count();

+ 1 - 1
server/app/Http/Controllers/V1/User/FavoriteController.php

xqd
@@ -14,7 +14,7 @@ use Illuminate\Database\Eloquent\Builder;
 class FavoriteController extends Controller
 {
 
-    // 检查当前剧是否喜欢
+    // 检查当前剧是否喜欢
     public function check($id)
     {
         $res = UserFavorite::filterUser()->where('episode_id',$id)->count();

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

xqd
@@ -11,7 +11,7 @@ use Illuminate\Database\Eloquent\Model;
  * App\Models\EpisodesList
  *
  * @property int $id
- * @property int|null $episodes_id 剧ID
+ * @property int|null $episodes_id 剧ID
  * @property int $sort 第几集
  * @property string $url 视频链接
  * @property \Illuminate\Support\Carbon|null $updated_at

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

xqd
@@ -12,7 +12,7 @@ use Illuminate\Database\Eloquent\SoftDeletes;
  *
  * @property int $id
  * @property int $user_id user_id
- * @property int $episode_id 剧ID
+ * @property int $episode_id 剧ID
  * @property \Illuminate\Support\Carbon|null $updated_at
  * @property \Illuminate\Support\Carbon|null $deleted_at
  * @property \Illuminate\Support\Carbon|null $created_at

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

xqd
@@ -11,7 +11,7 @@ use Illuminate\Database\Eloquent\Model;
  *
  * @property int $id id
  * @property int $user_id user_id
- * @property int $episodes_id 剧ID
+ * @property int $episodes_id 剧ID
  * @property int $list_id 具体多少集集ID
  * @property string $price 支付金额 1:1 金币
  * @property string $discount 折扣金币

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

xqd
@@ -12,7 +12,7 @@ use Illuminate\Database\Eloquent\SoftDeletes;
  *
  * @property int $id
  * @property int $user_id user_id
- * @property int $episode_id 剧ID
+ * @property int $episode_id 剧ID
  * @property \Illuminate\Support\Carbon|null $updated_at
  * @property \Illuminate\Support\Carbon|null $deleted_at
  * @property \Illuminate\Support\Carbon|null $created_at

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

xqd
@@ -12,7 +12,7 @@ use Illuminate\Database\Eloquent\SoftDeletes;
  *
  * @property int $id
  * @property int $user_id user_id
- * @property int $episode_id 剧ID
+ * @property int $episode_id 剧ID
  * @property int $list_id 具体集数ID
  * @property \Illuminate\Support\Carbon|null $updated_at
  * @property string|null $deleted_at

+ 3 - 3
server/config/global.php

xqd
@@ -5,11 +5,11 @@
 return [
     // 平台
     'platform' => [1 => '抖音', 2 => '快手'],
-    // 剧状态
+    // 剧状态
     'episode_status' => ['持续更新中','已完结'],
-    // 剧免费
+    // 剧免费
     'episode_free' => ['付费','免费'],
-    // 剧上架状态
+    // 剧上架状态
     'episode_opend' => ['已下架','销售中'],
     // 是否状态
     'bool_status' => ['否','是'],

+ 8 - 8
server/database/zhangsiye_db.sql

xqd xqd xqd xqd xqd xqd xqd
@@ -92,7 +92,7 @@ INSERT INTO `t_admin_menu` VALUES (19, 15, 27, '消息提醒', NULL, '/setting/t
 INSERT INTO `t_admin_menu` VALUES (20, 10, 17, '充值订单', NULL, '/order/recharge', '', 1, '2022-08-03 21:49:57', '2022-08-05 15:35:50');
 INSERT INTO `t_admin_menu` VALUES (21, 10, 18, '消费记录', NULL, '/order/episodes', '', 1, '2022-08-03 21:50:56', '2022-08-05 15:35:50');
 INSERT INTO `t_admin_menu` VALUES (22, 9, 14, '分类', NULL, '/episodes/category', '', 1, '2022-08-03 22:00:35', '2022-08-05 15:35:50');
-INSERT INTO `t_admin_menu` VALUES (23, 9, 15, '剧', NULL, '/episodes/lists', '', 1, '2022-08-03 22:00:56', '2022-08-05 15:35:50');
+INSERT INTO `t_admin_menu` VALUES (23, 9, 15, '剧', NULL, '/episodes/lists', '', 1, '2022-08-03 22:00:56', '2022-08-05 15:35:50');
 INSERT INTO `t_admin_menu` VALUES (24, 8, 10, '导航图标', NULL, '/program/navbar', '', 1, '2022-08-05 15:21:07', '2022-08-05 15:35:50');
 INSERT INTO `t_admin_menu` VALUES (25, 8, 11, '标签栏', NULL, '/program/tabbar', '', 1, '2022-08-05 15:22:03', '2022-08-05 15:35:50');
 INSERT INTO `t_admin_menu` VALUES (26, 8, 12, '首页布局', NULL, '/program/home_column', '', 1, '2022-08-05 15:23:01', '2022-08-05 15:35:50');
@@ -440,7 +440,7 @@ CREATE TABLE `t_episodes`  (
   `deleted_at` timestamp(0) NULL DEFAULT NULL,
   `created_at` timestamp(0) NULL DEFAULT NULL,
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '剧' ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '剧' ROW_FORMAT = Dynamic;
 
 -- ----------------------------
 -- Table structure for t_episodes_category
@@ -456,7 +456,7 @@ CREATE TABLE `t_episodes_category`  (
   `deleted_at` timestamp(0) NULL DEFAULT NULL,
   `created_at` timestamp(0) NULL DEFAULT NULL,
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '剧分类' ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '剧分类' ROW_FORMAT = Dynamic;
 
 -- ----------------------------
 -- Records of t_episodes_category
@@ -472,14 +472,14 @@ INSERT INTO `t_episodes_category` VALUES (5, '热舞热无', 4, NULL, 0, '2022-0
 DROP TABLE IF EXISTS `t_episodes_lists`;
 CREATE TABLE `t_episodes_lists`  (
   `id` int(11) NOT NULL AUTO_INCREMENT,
-  `episodes_id` int(10) UNSIGNED NULL DEFAULT 0 COMMENT '剧ID',
+  `episodes_id` int(10) UNSIGNED NULL DEFAULT 0 COMMENT '剧ID',
   `serial` int(11) NOT NULL DEFAULT 0 COMMENT '第几集',
   `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '视频链接',
   `updated_at` timestamp(0) NULL DEFAULT NULL,
   `deleted_at` timestamp(0) NULL DEFAULT NULL,
   `created_at` timestamp(0) NULL DEFAULT NULL,
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '剧列表' ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '剧列表' ROW_FORMAT = Dynamic;
 
 -- ----------------------------
 -- Table structure for t_helps
@@ -724,7 +724,7 @@ DROP TABLE IF EXISTS `t_user_episodes_records`;
 CREATE TABLE `t_user_episodes_records`  (
   `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
   `user_id` int(11) UNSIGNED NOT NULL COMMENT 'user_id',
-  `episodes_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '剧ID',
+  `episodes_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '剧ID',
   `list_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '具体多少集集ID',
   `price` decimal(10, 2) NOT NULL DEFAULT 0 COMMENT '支付金额 1:1 金币',
   `discount` decimal(10, 2) NOT NULL DEFAULT 0 COMMENT '折扣金币',
@@ -732,7 +732,7 @@ CREATE TABLE `t_user_episodes_records`  (
   `deleted_at` datetime(0) NOT NULL COMMENT '删除时间',
   `created_at` datetime(0) NOT NULL COMMENT '创建时间',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户购买剧记录' ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户购买剧记录' ROW_FORMAT = Dynamic;
 
 -- ----------------------------
 -- Table structure for t_user_feedbacks
@@ -820,7 +820,7 @@ DROP TABLE IF EXISTS `t_user_watch_records`;
 CREATE TABLE `t_user_watch_records`  (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `user_id` int(11) UNSIGNED NOT NULL COMMENT 'user_id',
-  `episode_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '剧ID',
+  `episode_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '剧ID',
   `list_id` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '具体集数ID',
   `updated_at` timestamp(0) NULL DEFAULT NULL,
   `deleted_at` timestamp(0) NULL DEFAULT NULL,

+ 3 - 3
server/resources/lang/zh/episode.php

xqd
@@ -1,10 +1,10 @@
 <?php
 return [
     'labels'  => [
-        'episodes' => '剧',
+        'episodes' => '剧',
         'index' => '列表',
-        'Episode' => '剧',
-        'episode' => '剧',
+        'Episode' => '剧',
+        'episode' => '剧',
     ],
     'fields'  => [
         'name'           => '名称',

+ 2 - 2
server/resources/lang/zh/episodes-category.php

xqd
@@ -1,8 +1,8 @@
 <?php
 return [
     'labels' => [
-        'EpisodesCategory' => '剧分类',
-        'episodes' => '剧',
+        'EpisodesCategory' => '剧分类',
+        'episodes' => '剧',
         'category' => '分类',
     ],
     'fields' => [

+ 4 - 4
server/resources/lang/zh/episodes-list.php

xqd
@@ -1,13 +1,13 @@
 <?php
 return [
     'labels' => [
-        'EpisodesList' => '剧列表',
-        'episodes-list' => '剧列表',
-        'episodes' => '剧',
+        'EpisodesList' => '剧列表',
+        'episodes-list' => '剧列表',
+        'episodes' => '剧',
         'lists' => '列表',
     ],
     'fields' => [
-        'episodes_id' => '剧ID',
+        'episodes_id' => '剧ID',
         'sort' => '第几集',
         'is_free' => '是否免费',
         'sale_price' => '价格',

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

xqd
@@ -6,7 +6,7 @@ return [
     ],
     'fields' => [
         'user_id' => '用户',
-        'episodes_id' => '剧',
+        'episodes_id' => '剧',
         'list_id' => '集数',
         'price' => '消费金币',
         'discount' => '折扣金币',

+ 1 - 1
server/resources/lang/zh_CN/episodes-category.php

xqd
@@ -1,6 +1,6 @@
 <?php
 return [
-    'title' => '剧分类',
+    'title' => '剧分类',
     'labels' => [
         'EpisodesCategory' => 'EpisodesCategory',
         'episodes-category' => 'EpisodesCategory',

+ 2 - 2
server/resources/lang/zh_CN/episodes-list.php

xqd
@@ -1,11 +1,11 @@
-<?php 
+<?php
 return [
     'labels' => [
         'EpisodesList' => 'EpisodesList',
         'episodes-list' => 'EpisodesList',
     ],
     'fields' => [
-        'episodes_id' => '剧ID',
+        'episodes_id' => '剧ID',
         'sort' => '第几集',
         'url' => '视频链接',
     ],

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

xqd xqd
@@ -1,4 +1,4 @@
-<?php 
+<?php
 return [
     'labels' => [
         'UserEpisodesRecord' => 'UserEpisodesRecord',
@@ -6,7 +6,7 @@ return [
     ],
     'fields' => [
         'user_id' => 'user_id',
-        'episodes_id' => '剧ID',
+        'episodes_id' => '剧ID',
         'list_id' => '具体多少集集ID',
         'price' => '支付金额 1:1 金币',
         'discount' => '折扣金币',

+ 2 - 0
server/routes/api.php

xqd xqd
@@ -115,6 +115,7 @@ $api->version('v1', ['namespace' => 'App\Http\Controllers\V1'], function ($api)
             $api->get('tabBar', 'SettingController@tabBar'); // 底部导航
             $api->get('navBar', 'SettingController@navBar'); // 首页顶部分类
             $api->get('banner', 'SettingController@banner'); // banner
+            $api->get('homeColumn', 'SettingController@homeColumn'); // homeColumn
             $api->get('rechargeCombo', 'SettingController@rechargeCombo'); // 充值
         });
 
@@ -125,6 +126,7 @@ $api->version('v1', ['namespace' => 'App\Http\Controllers\V1'], function ($api)
             $api->get('news', 'EpisodeController@news'); // 最新
             $api->get('rank', 'EpisodeController@rank'); // 排行
             $api->get('trace', 'EpisodeController@trace'); // 追剧
+            $api->get('search', 'EpisodeController@search'); // 搜索
             $api->get('{id}/detail', 'EpisodeController@detail'); // 详情
         });
 

BIN
server/server.zip