Ver código fonte

修改热门视频

zhangchangchun 5 anos atrás
pai
commit
58f3d40a7a

+ 27 - 0
app/Helper/helper.php

@@ -15,4 +15,31 @@ if ( ! function_exists('config_path'))
     {
         return app()->basePath() . '/config' . ($path ? '/' . $path : $path);
     }
+}
+
+/**
+ * @param $url 地址
+ * @param $param 参数
+ * @param bool $isCheck 是否检查返回结果
+ * @param string $method 请求方式
+ * @return array|mixed
+ * @throws \GuzzleHttp\Exception\GuzzleException
+ */
+function http($url, $param, $isCheck = true, $method = 'post')
+{
+    try {
+        $client = new \GuzzleHttp\Client();
+        $response = $client->request($method, $url, $param);
+        $result = json_decode($response->getBody()->getContents(), true);
+        \Illuminate\Support\Facades\Log::debug('url:'.$url.'param:'.json_encode($param).'response:'.json_encode($result));
+        if ($isCheck == true) {
+            return $result['data'];
+        } else {
+            return $result;
+        }
+
+    } catch (\Exception $exception) {
+        return [];
+    }
+
 }

+ 36 - 5
app/Http/Controllers/V2/VideoGroupController.php

@@ -12,6 +12,7 @@ namespace App\Http\Controllers\V2;
 use App\Http\Controllers\Controller;
 use App\Repositories\V2\VideoGroupRepository;
 use App\Transformers\DetailVideoGroupTansformer;
+use App\Transformers\VideoGroupInfoTransformer;
 use App\Transformers\VideoGroupTransformer;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Validator;
@@ -49,7 +50,7 @@ class VideoGroupController extends Controller {
     public function create(Request $request){
         $data = $request->only('name');
         $validator = Validator::make($data, [
-            'name' => 'required|string|max:12',
+            'name' => 'required|string|max:20',
         ]);
         if ($validator->fails()) {
             return $this->response->error($validator->errors()->first(), 500);
@@ -58,7 +59,7 @@ class VideoGroupController extends Controller {
     }
     //详情
     public function view(Request $request){
-        $data = $request->only('id');
+        $data = $request->all();
         $validator = Validator::make($data, [
             'id' => 'required|integer|max:12',
         ]);
@@ -66,16 +67,35 @@ class VideoGroupController extends Controller {
             return $this->response->error($validator->errors()->first(), 500);
         }
         $info = $this->videoGroupRepository->view($data);
-        return $this->response->item($info, new DetailVideoGroupTansformer());
+        $videoInfo = $this->videoGroupRepository->VideoInfoIndex($data);
+        $fractal = new Manager();
+        $resource = new Collection($videoInfo, new VideoGroupInfoTransformer());
+        $resource->setPaginator(new IlluminatePaginatorAdapter($videoInfo));
+        $data = $fractal->createData($resource)->toArray();
+        $data['extra'] = [
+            'filters' => [
+                'name',
+            ],
+            'columns' => [
+                'id',
+                'name',
+                'video_count',
+                'created_at',
+            ],
+            'name'=>$info['name'],
+            'id'=>$info['id'],
+        ];
+        return $data;
     }
     //设置排序
     public function edit(Request $request){
-        $data = $request->only('name','name','info');
+        $data = $request->only('id','name','video_info');
         $validator = Validator::make($data, [
             'id' => 'required|integer|max:12',
             'name' => 'required|string|max:12',
-            'info' => 'string'
+            'video_info' => 'string'
         ]);
+
         if ($validator->fails()) {
             return $this->response->error($validator->errors()->first(), 500);
         }
@@ -93,4 +113,15 @@ class VideoGroupController extends Controller {
         }
         return  $this->videoGroupRepository->addVideoInfo($data);
     }
+    //删除内容
+    public function deleteVideoInfo(Request $request){
+        $data = $request->only('id');
+        $validator = Validator::make($data, [
+            'id' => 'required|integer|max:12',
+        ]);
+        if ($validator->fails()) {
+            return $this->response->error($validator->errors()->first(), 500);
+        }
+        return  $this->videoGroupRepository->deleteVideoInfo($data['id']);
+    }
 }

+ 52 - 3
app/Repositories/V2/VideoGroupRepository.php

@@ -72,7 +72,26 @@ class VideoGroupRepository {
             ]);
         }
         $videoGroup->name = $request['name'];
-        $videoGroup->save();
+        DB::beginTransaction();
+        try{
+            $group = $videoGroup->save();
+            if(!empty($request['video_info'])){
+              $videoGroupInfo = json_decode($request['video_info']);
+              foreach ($videoGroupInfo as $key=>$value){
+                  $this->videoGroupInfo->where('id',$value->id)->update(['sort'=>$value->sort]);
+              }
+            }
+            DB::commit();
+            return Response::create();
+        }catch (QueryException $exception){
+            DB::rollBack();
+            Log::debug('新增热门视频分组:'.$exception->getMessage());
+            return Response::create([
+                'message'  => '新增热门视频失败,请重试',
+                'error' => $exception->getMessage(),
+                'status_code'   => 500
+            ]);
+        }
     }
     //视频详情
     public function videoList($video_group_id){
@@ -80,7 +99,7 @@ class VideoGroupRepository {
     }
     //添加分组视频
     public function addVideoInfo($request){
-        $videoGroup = $this->videoGroup->where(['video_group_id'=>$request['video_group_id']])->first();
+        $videoGroup = $this->videoGroup->where(['id'=>$request['video_group_id']])->first();
         if(!$videoGroup){
             return Response::create([
                 'message'  => '该分组不存在',
@@ -91,6 +110,36 @@ class VideoGroupRepository {
             'video_group_id'=>$request['video_group_id'],
             'post_id'=>$request['post_id']
         ];
-        return $this->videoGroupInfo->create($data);
+        $info = $this->videoGroupInfo->where($data)->first();
+        if($info){
+            return Response::create([
+                'message'  => '该内容已添加',
+                'status_code'   => 500
+            ]);
+        }
+        $res = $this->videoGroupInfo->create($data);
+        if(!$res){
+            return Response::create([
+                'message'  => '添加失败',
+                'status_code'   => 500
+            ]);
+        }
+        return Response::create();
+    }
+    //删除内容
+    public function deleteVideoInfo($id){
+        $res = $this->videoGroupInfo->where('id',$id)->delete();
+        if(!$res){
+            return Response::create([
+                'message'  => '删除失败',
+                'status_code'   => 500
+            ]);
+        }
+        return Response::create();
+    }
+    //列表
+    public function VideoInfoIndex($request){
+        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
+        return $this->videoGroupInfo->paginate($perPage);
     }
 }

+ 30 - 9
app/Transformers/DetailVideoGroupTansformer.php

@@ -9,12 +9,25 @@
 namespace App\Transformers;
 use App\Models\VideoGroup;
 use League\Fractal\TransformerAbstract;
-
+use Illuminate\Support\Carbon;
+use Tymon\JWTAuth\Facades\JWTAuth;
 
 class DetailVideoGroupTansformer extends TransformerAbstract{
     public function transform(VideoGroup $videoGroup)
     {
-        $video = $this->getVideoInfoList();
+        $video = [];
+//        foreach ($videoGroup->vgi as $key=>$value){
+//            $videoInfo = $this->getVideo($value->post_id);
+//            if($videoInfo){
+//                $value['username']= $videoInfo['username'];
+//                $value['topic']= $videoInfo['topic'];
+//                $value['video']= $videoInfo['video'];
+//                $value['pv']= $videoInfo['pv'];
+//                $value['praise_count']= $videoInfo['praise_count'];
+//            }
+//            $video[] = $value;
+//        }
+
         return [
             'id' => $videoGroup['id'],
             'name' => $videoGroup['name'],
@@ -22,11 +35,19 @@ class DetailVideoGroupTansformer extends TransformerAbstract{
             'video_list'=>$video
         ];
     }
-    public function getVideoInfoList(VideoGroup $videoGroup){
-        $video = [];
-        foreach ($videoGroup->vgi as $key=>$value){
-            $video[] = $value;
-        }
-        return $video;
-    }
+//    public function getVideo($id) {
+//        try {
+//           // $sign = generateSign(['id'=>$id], config('customer.app_secret'));
+//           // $url = config("customer.manage_service_url").'/community/post/detail';
+//            $url = 'https://manage.dev.caihongxingqiu.com/community/post/detail';
+//            //$url = 'http://localhost:8080/userInfo';
+//            $array = [
+//                'json' => ['id'=>$id], 'query' => [], 'http_errors' => false,'headers'=>['Authorization'=>"Bearer ".JWTAuth::getToken()]
+//            ];
+//            $res = http($url,$array,true,'get');
+//            return $res;
+//        } catch (\Exception $e) {
+//            return [];
+//        }
+//    }
 }

+ 49 - 0
app/Transformers/VideoGroupInfoTransformer.php

@@ -0,0 +1,49 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019-06-12
+ * Time: 14:51
+ */
+
+namespace App\Transformers;
+
+use App\Models\VideoGroupInfo;
+use League\Fractal\TransformerAbstract;
+use Illuminate\Support\Carbon;
+use Tymon\JWTAuth\Facades\JWTAuth;
+
+
+class VideoGroupInfoTransformer extends  TransformerAbstract{
+    public function transform(VideoGroupInfo $videoGroupInfo)
+    {
+        $videoInfo = $this->getVideo($videoGroupInfo['post_id']);
+        return [
+            'id' => $videoGroupInfo['id'],
+            'video_group_id' => $videoGroupInfo['name'],
+            'created_at' => Carbon::parse($videoGroupInfo['created_at'])->toDateTimeString(),
+            'post_id'=> $videoGroupInfo['post_id'],
+            'sort'=>$videoGroupInfo['sort'],
+            'username'=> $videoInfo['username'],
+            'topic'=> $videoInfo['topic'],
+            'video'=> $videoInfo['video'],
+            'pv'=> $videoInfo['pv'],
+            'praise_count'=> $videoInfo['praise_count'],
+        ];
+    }
+    public function getVideo($id) {
+        try {
+            // $sign = generateSign(['id'=>$id], config('customer.app_secret'));
+            // $url = config("customer.manage_service_url").'/community/post/detail';
+            $url = 'https://manage.dev.caihongxingqiu.com/community/post/detail';
+            //$url = 'http://localhost:8080/userInfo';
+            $array = [
+                'json' => ['id'=>$id], 'query' => [], 'http_errors' => false,'headers'=>['Authorization'=>"Bearer ".JWTAuth::getToken()]
+            ];
+            $res = http($url,$array,true,'get');
+            return $res;
+        } catch (\Exception $e) {
+            return [];
+        }
+    }
+}

+ 2 - 0
app/Transformers/VideoGroupTransformer.php

@@ -11,6 +11,8 @@ namespace App\Transformers;
 
 use App\Models\VideoGroup;
 use League\Fractal\TransformerAbstract;
+use Illuminate\Support\Carbon;
+
 
 class VideoGroupTransformer extends TransformerAbstract {
 

+ 2 - 1
composer.json

@@ -15,7 +15,8 @@
         "multilinguals/apollo-client": "^0.1.2",
         "vlucas/phpdotenv": "^3.3",
         "illuminate/redis": "^5.8",
-        "predis/predis": "^1.1"
+        "predis/predis": "^1.1",
+        "guzzlehttp/guzzle": "^6.3"
     },
     "require-dev": {
         "fzaninotto/faker": "^1.4",

+ 13 - 0
routes/api.php

@@ -124,6 +124,19 @@ $api->version('v1', [
             $api->get('TopicGroupView', 'TopicGroupController@view');
             //删除
             $api->delete('TopicGroupDelete', 'TopicGroupController@delete');
+            //新增视频组
+            $api->post('VideoGroupCreate', 'VideoGroupController@create');
+            //视频组列表
+            $api->get('VideoGroupIndex', 'VideoGroupController@index');
+            //视频组详情
+            $api->get('VideoGroupView', 'VideoGroupController@view');
+            //修改
+            $api->put('VideoGroupEdit', 'VideoGroupController@edit');
+            //新增视频组内容
+            $api->post('VideoGroupAddVideoInfo', 'VideoGroupController@addVideoInfo');
+            //删除内容
+            $api->delete('VideoGroupDeleteVideoInfo', 'VideoGroupController@deleteVideoInfo');
+
         });
 
     });