EpisodesBatchUploadController.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. namespace App\Admin\Controllers\Episode;
  3. /* 设置内存 保证上传到 OSS */
  4. ini_set('memory_limit', '512M');
  5. use App\Models\Episode;
  6. use App\Models\EpisodesList;
  7. use Dcat\Admin\Form;
  8. use Dcat\Admin\Layout\Content;
  9. use Dcat\Admin\Http\Controllers\AdminController;
  10. class EpisodesBatchUploadController extends AdminController
  11. {
  12. private $id;
  13. public function index(Content $content, $id = 0)
  14. {
  15. $this->id = $id;
  16. $episode = Episode::find($id);
  17. $form = $this->form();
  18. return $content
  19. ->title($episode->name)
  20. ->breadcrumb(
  21. ['text' => $episode->name, 'url' => "/episodes/{$episode->id}/lists"],
  22. ['text' => '剧集上传'],
  23. )
  24. ->body($form)
  25. ->description('剧集上传');
  26. }
  27. public function store($id = 0)
  28. {
  29. $req = request()->post();
  30. $form = new Form();
  31. $response = $form->response();
  32. if (isset($req['lists']) && empty($req['lists'])) {
  33. return $response->error('请上传剧集');
  34. } elseif (!isset($req['lists'])) {
  35. return $this->form()->store();
  36. }
  37. $lists = explode(',', $req['lists']);
  38. $sort = EpisodesList::where('episodes_id', $id)->max('sort');
  39. foreach ($lists as $list) {
  40. $episode = new EpisodesList();
  41. $episode->episodes_id = $id;
  42. $episode->sort = ++$sort;
  43. $episode->url = $list;
  44. $episode->save();
  45. }
  46. return $response->success(__('admin.save_succeeded'))
  47. ->redirect(admin_url("/episodes/{$id}/lists"));
  48. }
  49. public function form()
  50. {
  51. $id = $this->id;
  52. return new Form(new EpisodesList(), function (Form $form) use ($id) {
  53. $form->action(admin_url("/episodes/batch/{$id}/upload"));
  54. $form->tools(
  55. function (Form\Tools $tools) {
  56. $tools->disableList();
  57. }
  58. );
  59. $form->disableHeader();
  60. $form->disableCreatingCheck();
  61. $form->disableEditingCheck();
  62. $form->disableViewCheck();
  63. $form->multipleFile('lists', '剧集')
  64. ->mimeTypes('video/*')
  65. ->chunkSize(4096)
  66. ->maxSize(1024 * 1024)
  67. ->saveFullUrl()
  68. ->uniqueName()
  69. ->autoUpload()
  70. ->autoSave(false)
  71. ->removable(false)
  72. ->required();
  73. $form->saved(function (Form $form) use ($id) {
  74. return $form
  75. ->response()
  76. ->success(trans('admin.update_succeeded'))
  77. ->redirect(admin_url("/episodes/{$id}/lists"));
  78. });
  79. });
  80. }
  81. }