EpisodeController.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace Modules\Video\Http\Controllers;
  3. use Catch\Base\CatchController;
  4. use Illuminate\Foundation\Validation\ValidatesRequests;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\DB;
  7. use Modules\Common\Errors\Errors;
  8. use Modules\Common\Exceptions\CommonBusinessException;
  9. use Modules\User\Http\Controllers\UserTrait;
  10. use Modules\User\Models\User;
  11. use Modules\Video\Services\VideoService;
  12. class EpisodeController extends CatchController
  13. {
  14. use UserTrait;
  15. use ValidatesRequests;
  16. public function list(Request $request) {
  17. $this->validate($request, [
  18. 'video_id' => 'required'
  19. ]);
  20. $video = VideoService::getVideoByIdOrException($request->input('video_id'));
  21. VideoService::updateVideoChargeInfo($video, $this->getUserContext($request->input('operateUserId')));
  22. $videoSeries = DB::table('video_series')
  23. ->where([
  24. 'video_id' => $request->integer('video_id'),
  25. 'is_enabled' => 1
  26. ])->select('series_name', 'series_sequence', 'video_url', 'duration')
  27. ->orderBy('series_sequence', 'asc')
  28. ->paginate($request->integer('per_page', 15));
  29. foreach ($videoSeries as $series) {
  30. $series->series_name = sprintf('第%s集', $series->series_sequence);
  31. $series->is_charge = $series->series_sequence >= $video->charge_sequence;
  32. $series->duration_str = gmdate('H:i:s', $series->duration);
  33. }
  34. return $videoSeries;
  35. }
  36. public function add(Request $request) {
  37. $this->validate($request, [
  38. 'video_id' => 'required',
  39. 'videos' => 'required|array|min:1',
  40. 'videos.*.url' => 'required',
  41. 'videos.*.name' => 'required',
  42. 'videos.*.duration' => 'required|integer|min:1'
  43. ]);
  44. VideoService::getVideoByIdOrException($request->input('video_id'));
  45. $videos = $request->input('videos');
  46. $data = [];
  47. $now = date('Y-m-d H:i:s');
  48. foreach ($videos as $item) {
  49. $data[] = [
  50. 'video_id' => $request->input('video_id'),
  51. 'video_url' => $item['url'],
  52. 'series_name' => $item['name'],
  53. 'series_sequence' => intval(explode('_', $item['name'])[0]),
  54. 'duration' => $item['duration'],
  55. 'created_at' => $now,
  56. 'updated_at' => $now,
  57. ];
  58. }
  59. DB::table('video_series')->insert($data);
  60. return 1;
  61. }
  62. }