CmsSubjectController.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\CmsSubjectProduct;
  4. use App\Repositories\CmsSubjectRepository;
  5. use App\Transformers\CmsSubjectTransformer;
  6. use App\Transformers\CmsSubjectViewTransformer;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\Validator;
  9. use League\Fractal\Resource\Collection;
  10. use League\Fractal\Manager;
  11. use Illuminate\Validation\Rule;
  12. use League\Fractal\Pagination\IlluminatePaginatorAdapter;
  13. /**
  14. * Created by PhpStorm.
  15. * User: qinyaer
  16. * Date: 2019/4/28
  17. * Time: 下午15:12
  18. */
  19. class CmsSubjectController extends BaseController
  20. {
  21. public function __construct(CmsSubjectRepository $cmsSubjectRepository)
  22. {
  23. $this->cmsSubjectRepository = $cmsSubjectRepository;
  24. }
  25. //专题列表
  26. public function index(Request $request)
  27. {
  28. $cmsSubject = $this->cmsSubjectRepository->index($request->all());
  29. if (count($cmsSubject)>0) {
  30. foreach ($cmsSubject as $k => $v) {
  31. $v->product_count = 0;
  32. $product = CmsSubjectProduct::where('subject_id',$v['id'])->get();
  33. $count = $product->toArray();
  34. foreach ($count as $key => $value){
  35. if ($value['subject_id'] == $v['id']){
  36. $v->product_count ++ ;
  37. }
  38. }
  39. }
  40. }
  41. $fractal = new Manager();
  42. $resource = new Collection($cmsSubject, new CmsSubjectTransformer());
  43. $resource->setPaginator(new IlluminatePaginatorAdapter($cmsSubject));
  44. $data = $fractal->createData($resource)->toArray();
  45. $data['extra'] = [
  46. 'filters' => [
  47. 'id'
  48. ],
  49. 'columns' => [
  50. 'id',
  51. 'city_id',
  52. 'city_name',
  53. 'title',
  54. 'show_type',
  55. 'is_open',
  56. 'product_count',
  57. ]
  58. ];
  59. return $data;
  60. }
  61. //新建专题
  62. public function create(Request $request)
  63. {
  64. $validator = Validator::make($request->all(), [
  65. 'product_id' => 'required',
  66. 'sort' => 'required',
  67. 'city_id' => 'required|integer',
  68. 'city_name' => 'required|string',
  69. 'title' => 'required|string',
  70. 'show_type' => ['required', Rule::in(0,1,2)],
  71. 'is_open' => ['required', Rule::in(0,1)],
  72. ]);
  73. if ($validator->fails()) {
  74. return $this->response->error($validator->errors()->first(), 500);
  75. }
  76. return $this->cmsSubjectRepository->create($request->all());
  77. }
  78. //编辑专题
  79. public function edit(Request $request)
  80. {
  81. $validator = Validator::make($request->all(), [
  82. 'id' => 'required|exists:cms_subject',
  83. 'product_id' => 'required',
  84. 'sort' => 'required',
  85. 'city_id' => 'required|integer',
  86. 'city_name' => 'required|string',
  87. 'title' => 'required|string',
  88. 'show_type' => ['required', Rule::in(0,1,2)],
  89. 'is_open' => ['required', Rule::in(0,1)],
  90. ]);
  91. if ($validator->fails()) {
  92. return $this->response->error($validator->errors()->first(), 500);
  93. }
  94. return $this->cmsSubjectRepository->edit($request->all());
  95. }
  96. //查看某专题
  97. public function view(Request $request)
  98. {
  99. $all = $request->all();
  100. $validator = Validator::make($all, [
  101. 'id' => 'required|integer',
  102. ]);
  103. if($validator->fails()) {
  104. return $this->response->error($validator->errors()->first(), 500);
  105. }
  106. $getSubject = $this->cmsSubjectRepository->index($request->all());
  107. if (count($getSubject)>0) {
  108. foreach ($getSubject as $k => $v) {
  109. $product = CmsSubjectProduct::select('subject_id','product_id','sort')->where('subject_id',$v['id'])->get();
  110. $num = $product->toArray();
  111. $product_arr = array_column($num,'product_id');
  112. $getSubject[$k]->product_id = implode(',',$product_arr);
  113. $sort_arry = array_column($num,'sort');
  114. $getSubject[$k]->sort = implode(',',$sort_arry);
  115. }
  116. }
  117. if(!$getSubject){
  118. return $this->response->error($validator->errors()->first(), 500);
  119. }
  120. $fractal = new Manager();
  121. $resource = new Collection($getSubject, new CmsSubjectViewTransformer());
  122. $resource->setPaginator(new IlluminatePaginatorAdapter($getSubject));
  123. $data = $fractal->createData($resource)->toArray();
  124. $data['extra'] = [
  125. 'filters' => [
  126. 'id'
  127. ],
  128. 'columns' => [
  129. 'id',
  130. 'city_id',
  131. 'city_name',
  132. 'title',
  133. 'show_type',
  134. 'is_open',
  135. 'product_id',
  136. 'sort',
  137. ]
  138. ];
  139. return $data;
  140. }
  141. //删除专题
  142. public function delete(Request $request)
  143. {
  144. $validator = Validator::make($request->all(), [
  145. 'id' => 'required|exists:cms_subject'
  146. ]);
  147. if ($validator->fails()) {
  148. return $this->response->error($validator->errors()->first(), 500);
  149. }
  150. return $this->cmsSubjectRepository->delete($request->all());
  151. }
  152. }