wesmiler 1 jaar geleden
bovenliggende
commit
f8e59a2336

+ 29 - 0
app/Http/Controllers/Api/v1/VideoController.php

@@ -3,6 +3,7 @@
 namespace App\Http\Controllers\Api\v1;
 
 use App\Http\Controllers\Api\webApp;
+use App\Services\Api\VideoCollectService;
 use App\Services\Api\VideoService;
 use App\Services\RedisService;
 use Illuminate\Http\Request;
@@ -107,6 +108,34 @@ class VideoController extends webApp
     }
 
     /**
+     * 点赞
+     * @return array|mixed
+     */
+    public function like()
+    {
+        $params = request()->post();
+        if(!$result = VideoCollectService::make()->collect($this->userId, $params)){
+            return message(VideoService::make()->getError(), false);
+        }else{
+            return message(VideoService::make()->getError(), true, $result);
+        }
+    }
+
+    /**
+     * 收藏
+     * @return array|mixed
+     */
+    public function collect()
+    {
+        $params = request()->post();
+        if(!$result = VideoCollectService::make()->collect($this->userId, $params)){
+            return message(VideoService::make()->getError(), false);
+        }else{
+            return message(VideoService::make()->getError(), true, $result);
+        }
+    }
+
+    /**
      * 状态/上下架
      * @return array|mixed
      */

+ 44 - 0
app/Models/VideoCommentModel.php

@@ -0,0 +1,44 @@
+<?php
+// +----------------------------------------------------------------------
+// | LARAVEL8.0 框架 [ LARAVEL ][ RXThinkCMF ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 LARAVEL研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: laravel开发员 <laravel.qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Models;
+
+/**
+ * 短视频评论-模型
+ * @author laravel开发员
+ * @since 2020/11/11
+ * @package App\Models
+ */
+class VideoCommentModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'video_comments';
+
+    /**
+     * 发布用户
+     * @return \Illuminate\Database\Eloquent\Relations\HasOne
+     */
+    public function member()
+    {
+        return $this->hasOne(MemberModel::class, 'id','user_id')
+            ->select(['id','nickname','avatar','status']);
+    }
+
+    /**
+     * 回复用户
+     * @return \Illuminate\Database\Eloquent\Relations\HasOne
+     */
+    public function replyUser()
+    {
+        return $this->hasOne(MemberModel::class, 'id','reply_to_uid')
+            ->select(['id','nickname','avatar','status']);
+    }
+}

+ 170 - 0
app/Services/Api/VideoCommentService.php

@@ -0,0 +1,170 @@
+<?php
+// +----------------------------------------------------------------------
+// | LARAVEL8.0 框架 [ LARAVEL ][ RXThinkCMF ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 LARAVEL研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: laravel开发员 <laravel.qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services\Api;
+
+use App\Models\MemberCollectModel;
+use App\Models\VideoCollectModel;
+use App\Models\VideoCommentModel;
+use App\Models\VideoModel;
+use App\Services\BaseService;
+use App\Services\RedisService;
+use BN\Red;
+
+/**
+ * 短视频评论管理-服务类
+ * @author laravel开发员
+ * @since 2020/11/11
+ * @package App\Services\Api
+ */
+class VideoCommentService extends BaseService
+{
+    // 静态对象
+    protected static $instance = null;
+
+    /**
+     * 构造函数
+     * @author laravel开发员
+     * @since 2020/11/11
+     * MemberCollectService constructor.
+     */
+    public function __construct()
+    {
+        $this->model = new VideoCommentModel();
+    }
+
+    /**
+     * 静态入口
+     * @return static|null
+     */
+    public static function make()
+    {
+        if (!self::$instance) {
+            self::$instance = (new static());
+        }
+        return self::$instance;
+    }
+
+    /**
+     * 列表数据
+     * @param $params
+     * @param int $pageSize
+     * @return array
+     */
+    public function getDataList($params, $pageSize = 15, $field='', $userId=0)
+    {
+        $where = ['a.mark' => 1,'a.status'=>1,'b.status'=>1,'b.mark'=>1];
+        $field = $field? $field : 'lev_a.*,lev_b.id as cid,lev_b.user_id as collect_user_id,lev_a.type as collect_type';
+        $sortType = isset($params['sort_type']) ? $params['sort_type'] : 1;
+        $order = 'id desc';
+        if($sortType == 1){
+            $order = 'lev_b.create_time desc, lev_b.id desc';
+        }
+        $list = $this->model->with(['member'])
+            ->from('video_comments as b')
+            ->leftJoin('video as a', 'a.id', '=', 'b.collect_id')
+            ->where($where)
+            ->where(function ($query) use ($params) {
+                $userId = isset($params['user_id']) ? $params['user_id'] : 0;
+                if ($userId > 0) {
+                    $query->where('a.user_id', $userId);
+                }
+
+                $collectUserId = isset($params['collect_uid']) ? $params['collect_uid'] : 0;
+                if ($collectUserId > 0) {
+                    $query->where('a.collect_uid', $collectUserId);
+                }
+
+                $isRead = isset($params['is_read'])? $params['is_read'] : 0;
+                $isRead = $isRead>0? $isRead : 0;
+                if ($isRead > 0) {
+                    $query->where('a.is_read', $isRead);
+                }
+
+                $type = isset($params['type'])? $params['type'] : 0;
+                $type = $type>0? $type : 1;
+                if ($type > 0) {
+                    $query->where('a.type', $type);
+                }
+
+            })
+            ->where(function ($query) use ($params) {
+                $keyword = isset($params['kw']) ? $params['kw'] : '';
+                if ($keyword) {
+                    $query->where('a.title', 'like', "%{$keyword}%")
+                        ->orWhere('a.tags','like',"%{$keyword}%")
+                        ->orWhere('a.description','like',"%{$keyword}%");
+                }
+            })
+            ->selectRaw($field)
+            ->orderByRaw($order)
+            ->paginate($pageSize > 0 ? $pageSize : 9999999);
+        $list = $list ? $list->toArray() : [];
+        if ($list) {
+            foreach ($list['data'] as &$item) {
+                $item['time_text'] = isset($item['create_time']) && $item['create_time']? dateFormat($item['create_time']) : '';
+                $item['thumb'] = isset($item['thumb']) && $item['thumb'] ? get_image_url($item['thumb']) : '';
+                $item['file_url'] = isset($item['file_url']) && $item['file_url'] ? get_image_url($item['file_url']) : '';
+                if(isset($item['albums'])){
+                    $albums = $item['albums']? json_decode($item['albums'], true):[];
+                    $item['albums'] = $albums? get_images_preview($albums) : [];
+                }
+                if(isset($item['music_url'])){
+                    $item['music_url'] = $item['music_url']? get_image_url($item['music_url']) : '';
+                }
+                $member = isset($item['member'])? $item['member'] : [];
+                if($member){
+                    $member['avatar'] = isset($member['avatar'])? get_image_url($member['avatar']) : '';
+                }
+                $item['tags'] = isset($item['tags']) && $item['tags']? explode(',', $item['tags']) : [];
+                $item['like_num'] = isset($item['like_num']) && $item['like_num']? format_num($item['like_num']) : 0;
+                $item['collect_num'] = isset($item['collect_num']) && $item['collect_num']? format_num($item['collect_num']) : 0;
+                $item['views'] = isset($item['views']) && $item['views']? format_num($item['views']) : 0;
+                $item['member'] = $member;
+            }
+        }
+
+        return [
+            'pageSize' => $pageSize,
+            'total' => isset($list['total']) ? $list['total'] : 0,
+            'list' => isset($list['data']) ? $list['data'] : []
+        ];
+    }
+
+
+    /**
+     * 取消
+     * @param $userId
+     * @return bool
+     */
+    public function cancel($userId)
+    {
+        // 参数
+        $ids = request()->post('ids','');
+        $ids = $ids? explode(',', $ids) : [];
+        $type = request()->post('type',0);
+        if (empty($ids) && $type == 0) {
+            $this->error = 1033;
+            return false;
+        }
+
+        if($type){
+            $this->model->where(['user_id'=> $userId,'status'=>1,'mark'=>1])->update(['status'=>2,'update_time'=>time()]);
+        }else {
+            $this->model->where(['user_id'=> $userId,'status'=>1,'mark'=>1])->whereIn('id', $ids)->update(['status'=>2,'update_time'=>time()]);
+        }
+
+        $this->error = 1002;
+        return true;
+    }
+
+
+}

+ 17 - 6
app/Services/Api/VideoService.php

@@ -119,6 +119,7 @@ class VideoService extends BaseService
                 $item['tags'] = isset($item['tags']) && $item['tags']? explode(',', $item['tags']) : [];
                 $item['like_num'] = isset($item['like_num']) && $item['like_num']? format_num($item['like_num']) : 0;
                 $item['collect_num'] = isset($item['collect_num']) && $item['collect_num']? format_num($item['collect_num']) : 0;
+                $item['comment_num'] = isset($item['comment_num']) && $item['comment_num']? format_num($item['comment_num']) : 0;
                 $item['views'] = isset($item['views']) && $item['views']? format_num($item['views']) : 0;
                 $item['member'] = $member;
             }
@@ -209,7 +210,7 @@ class VideoService extends BaseService
         $list = $list ? $list->toArray() : [];
         if ($list && $list['data']) {
             foreach ($list['data'] as &$item) {
-                $item['create_time'] = isset($item['create_time']) ? datetime($item['create_time'], 'Y-m-d H.i.s') : '';
+                $item['time_text'] = isset($item['create_time']) ? dateFormat($item['create_time'], 'Y-m-d H:i') : '';
                 $item['thumb'] = isset($item['thumb']) && $item['thumb'] ? get_image_url($item['thumb']) : '';
                 if(isset($item['albums'])){
                     $albums = $item['albums']? json_decode($item['albums'], true):[];
@@ -229,9 +230,12 @@ class VideoService extends BaseService
                     $member['avatar'] = isset($member['avatar']) && $member['avatar']? get_image_url($member['avatar']) : get_image_url('/images/member/logo.png');
                 }
                 $item['tags'] = isset($item['tags']) && $item['tags']? explode(',', $item['tags']) : [];
-                $item['like_num'] = isset($item['like_num']) && $item['like_num']? format_num($item['like_num']) : 0;
-                $item['collect_num'] = isset($item['collect_num']) && $item['collect_num']? format_num($item['collect_num']) : 0;
-                $item['views'] = isset($item['views']) && $item['views']? format_num($item['views']) : 0;
+                $item['like_num'] = isset($item['like_num']) && $item['like_num']? intval($item['like_num']) : 0;
+                $item['collect_num'] = isset($item['collect_num']) && $item['collect_num']? intval($item['collect_num']) : 0;
+                $item['views'] = isset($item['views']) && $item['views']? intval($item['views']) : 0;
+                $item['comment_num'] = isset($item['comment_num']) && $item['comment_num']? intval($item['comment_num']) : 0;
+                $item['is_like'] = VideoCollectService::make()->checkCollect($userId, $item['id'], 3);
+                $item['is_collect'] = VideoCollectService::make()->checkCollect($userId, $item['id'], 2);
                 $item['member'] = $member;
             }
         }
@@ -278,7 +282,14 @@ class VideoService extends BaseService
                 $member['avatar'] = isset($member['avatar']) && $member['avatar']? get_image_url($member['avatar']) : get_image_url('/images/member/logo.png');
             }
             $info['member'] = $member;
-
+            $info['tags'] = isset($info['tags']) && $info['tags']? explode(',', $info['tags']) : [];
+            $info['like_num'] = isset($info['like_num']) && $info['like_num']? intval($info['like_num']) : 0;
+            $info['collect_num'] = isset($info['collect_num']) && $info['collect_num']? intval($info['collect_num']) : 0;
+            $info['views'] = isset($info['views']) && $info['views']? intval($info['views']) : 0;
+            $info['comment_num'] = isset($info['comment_num']) && $info['comment_num']? intval($info['comment_num']) : 0;
+            $info['is_like'] = VideoCollectService::make()->checkCollect($userId, $info['id'], 3);
+            $info['is_collect'] = VideoCollectService::make()->checkCollect($userId, $info['id'], 2);
+            $info['time_text'] = isset($info['create_time']) ? dateFormat($info['create_time'], 'Y-m-d H:i') : '';
             // 浏览历史
             if(!VideoCollectService::make()->getCollectCacheInfo($userId, $id, 1)){
                 $data = [
@@ -339,7 +350,7 @@ class VideoService extends BaseService
         // 浏览量
         $this->updateView($userId, $id);
         $this->error = 1010;
-        return true;
+        return ;
     }
 
     /**