validate($request, [ 'video_id' => 'required' ]); $video = VideoService::getVideoByIdOrException($request->input('video_id')); VideoService::updateVideoChargeInfo($video, $this->getUserContext($request->input('operateUserId'))); $videoSeries = DB::table('video_series') ->where([ 'video_id' => $request->integer('video_id'), 'is_enabled' => 1 ])->select('series_name', 'series_sequence', 'video_url', 'duration') ->orderBy('series_sequence', 'asc') ->paginate($request->integer('per_page', 15)); foreach ($videoSeries as $series) { $series->series_name = sprintf('第%s集', $series->series_sequence); $series->is_charge = $series->series_sequence >= $video->charge_sequence; $series->duration_str = gmdate('H:i:s', $series->duration); $series->public_video_url = QiniuTokenService::getPrivateSourceDownloadUrl($series->video_url); } return $videoSeries; } public function add(Request $request) { $this->validate($request, [ 'video_id' => 'required', 'videos' => 'required|array|min:1', 'videos.*.url' => 'required', 'videos.*.name' => 'required', 'videos.*.duration' => 'required|integer|min:1' ]); VideoService::getVideoByIdOrException($request->input('video_id')); $videos = $request->input('videos'); $data = []; $now = date('Y-m-d H:i:s'); foreach ($videos as $item) { $data[] = [ 'video_id' => $request->input('video_id'), 'video_url' => $item['url'], 'series_name' => $item['name'], 'series_sequence' => intval(explode('_', $item['name'])[0]), 'duration' => $item['duration'], 'created_at' => $now, 'updated_at' => $now, ]; } DB::table('video_series')->insert($data); return 1; } }