12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?php
- namespace Modules\Video\Http\Controllers;
- use Catch\Base\CatchController;
- use Illuminate\Foundation\Validation\ValidatesRequests;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- use Modules\Common\Errors\Errors;
- use Modules\Common\Exceptions\CommonBusinessException;
- use Modules\Common\Services\Qiniu\QiniuTokenService;
- use Modules\User\Http\Controllers\UserTrait;
- use Modules\User\Models\User;
- use Modules\Video\Services\VideoService;
- class EpisodeController extends CatchController
- {
- use UserTrait;
- use ValidatesRequests;
- public function list(Request $request) {
- $this->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_key', 'duration')
- ->orderBy('series_sequence', 'asc')
- ->paginate($request->integer('limit', 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(
- config('common.qiniu.publicVideoLinkDomain') . DIRECTORY_SEPARATOR . $series->video_key);
- $series->download_video_url = QiniuTokenService::getPrivateSourceDownloadUrl(
- config('common.qiniu.downloadVideoLinkDomain') . DIRECTORY_SEPARATOR .
- $series->video_key.'?attname='.urlencode($series->series_name).'.mp4');
- }
- return $videoSeries;
- }
- public function downloadList(Request $request) {
- return $this->list($request);
- }
- public function add(Request $request) {
- $this->validate($request, [
- 'video_id' => 'required',
- 'videos' => 'required|array|min:1',
- 'videos.*.name' => 'required',
- 'videos.*.duration' => 'required|integer|min:1',
- 'videos.*.key' => 'required',
- ]);
- 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_key' => $item['key'],
- 'series_name' => $item['name'],
- 'series_sequence' => intval(explode('_', $item['name'])[0]),
- 'duration' => $item['duration'],
- 'created_at' => $now,
- 'updated_at' => $now,
- ];
- }
- $allSequence = DB::table('video_series')->where(['video_id' => $request->input('video_id')])
- ->select('series_sequence')->get()->pluck('series_sequence');
- $alreadySeries = collect($data)->pluck('series_sequence')->intersect($allSequence)->map(function ($item) use ($data) {
- return collect($data)->keyBy('series_sequence')->get($item)['series_name'];
- });
- if($alreadySeries->isNotEmpty()) {
- CommonBusinessException::throwError([-1, $alreadySeries->join(', ') . ' 已经存在']);
- }
- DB::table('video_series')->insert($data);
- DB::table('videos')
- ->where(['id' => $request->input('video_id')])
- ->update(['updated_episode_num' => DB::table('video_series')
- ->where(['video_id' => $request->input('video_id')])->count(),'updated_at' => $now]);
- return 1;
- }
- }
|