VideoGroupController.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019-06-12
  6. * Time: 9:35
  7. */
  8. namespace App\Http\Controllers\V2;
  9. use App\Http\Controllers\Controller;
  10. use App\Repositories\V2\VideoGroupRepository;
  11. use App\Transformers\DetailVideoGroupTansformer;
  12. use App\Transformers\VideoGroupInfoTransformer;
  13. use App\Transformers\VideoGroupTransformer;
  14. use Illuminate\Http\Request;
  15. use Illuminate\Support\Facades\Validator;
  16. use League\Fractal\Manager;
  17. use League\Fractal\Pagination\IlluminatePaginatorAdapter;
  18. use League\Fractal\Resource\Collection;
  19. use League\Fractal\Resource\Item;
  20. class VideoGroupController extends Controller {
  21. public function __construct(VideoGroupRepository $videoGroupRepository) {
  22. $this->videoGroupRepository = $videoGroupRepository;
  23. }
  24. //列表
  25. public function index(Request $request){
  26. $topicGroup = $this->videoGroupRepository->index($request->all());
  27. $fractal = new Manager();
  28. $resource = new Collection($topicGroup, new VideoGroupTransformer());
  29. $resource->setPaginator(new IlluminatePaginatorAdapter($topicGroup));
  30. $data = $fractal->createData($resource)->toArray();
  31. $data['extra'] = [
  32. 'filters' => [
  33. 'name',
  34. ],
  35. 'columns' => [
  36. 'id',
  37. 'name',
  38. 'video_count',
  39. 'created_at',
  40. ]
  41. ];
  42. return $data;
  43. }
  44. //创建
  45. public function create(Request $request){
  46. $data = $request->only('name');
  47. $validator = Validator::make($data, [
  48. 'name' => 'required|string|max:20',
  49. ]);
  50. if ($validator->fails()) {
  51. return $this->response->error($validator->errors()->first(), 500);
  52. }
  53. return $this->videoGroupRepository->create($data);
  54. }
  55. //详情
  56. public function view(Request $request){
  57. $data = $request->all();
  58. $validator = Validator::make($data, [
  59. 'id' => 'required|integer|max:12',
  60. ]);
  61. if ($validator->fails()) {
  62. return $this->response->error($validator->errors()->first(), 500);
  63. }
  64. $info = $this->videoGroupRepository->view($data);
  65. $videoInfo = $this->videoGroupRepository->VideoInfoIndex($data);
  66. $fractal = new Manager();
  67. $resource = new Collection($videoInfo, new VideoGroupInfoTransformer());
  68. $resource->setPaginator(new IlluminatePaginatorAdapter($videoInfo));
  69. $data = $fractal->createData($resource)->toArray();
  70. $data['extra'] = [
  71. 'filters' => [
  72. 'name',
  73. ],
  74. 'columns' => [
  75. 'post_id',
  76. 'username',
  77. 'topic',
  78. 'video',
  79. 'pv',
  80. 'praise_count',
  81. ],
  82. 'name'=>$info['name'],
  83. 'id'=>$info['id'],
  84. ];
  85. return $data;
  86. }
  87. //设置排序
  88. public function edit(Request $request){
  89. $data = $request->only('id','name','video_info');
  90. $validator = Validator::make($data, [
  91. 'id' => 'required|integer|max:12',
  92. 'name' => 'required|string|max:12',
  93. 'video_info' => 'string'
  94. ]);
  95. if ($validator->fails()) {
  96. return $this->response->error($validator->errors()->first(), 500);
  97. }
  98. return $this->videoGroupRepository->edit($data);
  99. }
  100. //删除内容
  101. public function delete(Request $request){
  102. $data = $request->only('id');
  103. $validator = Validator::make($data, [
  104. 'id' => 'required|integer|max:12',
  105. ]);
  106. if ($validator->fails()) {
  107. return $this->response->error($validator->errors()->first(), 500);
  108. }
  109. return $this->videoGroupRepository->delete($data['id']);
  110. }
  111. //添加分组内容
  112. public function addVideoInfo(Request $request){
  113. $data = $request->only('video_group_id','post_id');
  114. $validator = Validator::make($data, [
  115. 'video_group_id' => 'required|integer',
  116. 'post_id' => 'required|integer',
  117. ]);
  118. if ($validator->fails()) {
  119. return $this->response->error($validator->errors()->first(), 500);
  120. }
  121. return $this->videoGroupRepository->addVideoInfo($data);
  122. }
  123. //删除内容
  124. public function deleteVideoInfo(Request $request){
  125. $data = $request->only('id');
  126. $validator = Validator::make($data, [
  127. 'id' => 'required|integer|max:12',
  128. ]);
  129. if ($validator->fails()) {
  130. return $this->response->error($validator->errors()->first(), 500);
  131. }
  132. return $this->videoGroupRepository->deleteVideoInfo($data['id']);
  133. }
  134. }