CmsSubjectController.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  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 = CmsSubjectProduct::where('subject_id', $v['id'])->count();
  32. }
  33. }
  34. $fractal = new Manager();
  35. $resource = new Collection($cmsSubject, new CmsSubjectTransformer());
  36. $resource->setPaginator(new IlluminatePaginatorAdapter($cmsSubject));
  37. $data = $fractal->createData($resource)->toArray();
  38. $data['extra'] = [
  39. 'filters' => [
  40. 'id'
  41. ],
  42. 'columns' => [
  43. 'id',
  44. 'city_id',
  45. 'city_name',
  46. 'title',
  47. 'show_type',
  48. 'is_open',
  49. 'product_count',
  50. ]
  51. ];
  52. return $data;
  53. }
  54. //新建专题
  55. public function create(Request $request)
  56. {
  57. $validator = Validator::make($request->all(), [
  58. 'product_id' => 'required',
  59. 'sort' => 'required',
  60. 'city_id' => 'required|integer',
  61. 'city_name' => 'required|string',
  62. 'title' => 'required|string',
  63. 'show_type' => ['required', Rule::in(0,1,2)],
  64. 'is_open' => ['required', Rule::in(0,1)],
  65. ]);
  66. if ($validator->fails()) {
  67. return $this->response->error($validator->errors()->first(), 500);
  68. }
  69. return $this->cmsSubjectRepository->create($request->all());
  70. }
  71. //编辑专题
  72. public function edit(Request $request)
  73. {
  74. $validator = Validator::make($request->all(), [
  75. 'id' => 'required|exists:cms_subject',
  76. 'product_id' => 'required',
  77. 'sort' => 'required',
  78. 'city_id' => 'required|integer',
  79. 'city_name' => 'required|string',
  80. 'title' => 'required|string',
  81. 'show_type' => ['required', Rule::in(0,1,2)],
  82. 'is_open' => ['required', Rule::in(0,1)],
  83. ]);
  84. if ($validator->fails()) {
  85. return $this->response->error($validator->errors()->first(), 500);
  86. }
  87. return $this->cmsSubjectRepository->edit($request->all());
  88. }
  89. //查看某专题
  90. public function view(Request $request)
  91. {
  92. $all = $request->all();
  93. $validator = Validator::make($all, [
  94. 'id' => 'required|integer',
  95. ]);
  96. if($validator->fails()) {
  97. return $this->response->error($validator->errors()->first(), 500);
  98. }
  99. $getSubject = $this->cmsSubjectRepository->index($request->all());
  100. if (count($getSubject)>0) {
  101. foreach ($getSubject as $k => $v) {
  102. $product = CmsSubjectProduct::select('subject_id','product_id','sort')->where('subject_id',$v['id'])->orderBy('sort','asc')->get();
  103. $num = $product->toArray();
  104. $product_arr = array_column($num,'product_id');
  105. $getSubject[$k]->product_id = implode(',',$product_arr);
  106. $sort_arry = array_column($num,'sort');
  107. $getSubject[$k]->sort = implode(',',$sort_arry);
  108. }
  109. }
  110. if(!$getSubject){
  111. return $this->response->error($validator->errors()->first(), 500);
  112. }
  113. $fractal = new Manager();
  114. $resource = new Collection($getSubject, new CmsSubjectViewTransformer());
  115. $resource->setPaginator(new IlluminatePaginatorAdapter($getSubject));
  116. $data = $fractal->createData($resource)->toArray();
  117. $data['extra'] = [
  118. 'filters' => [
  119. 'id'
  120. ],
  121. 'columns' => [
  122. 'id',
  123. 'city_id',
  124. 'city_name',
  125. 'title',
  126. 'show_type',
  127. 'is_open',
  128. 'product_id',
  129. 'sort',
  130. ]
  131. ];
  132. return $data;
  133. }
  134. //删除专题
  135. public function delete(Request $request)
  136. {
  137. $validator = Validator::make($request->all(), [
  138. 'id' => 'required|exists:cms_subject'
  139. ]);
  140. if ($validator->fails()) {
  141. return $this->response->error($validator->errors()->first(), 500);
  142. }
  143. return $this->cmsSubjectRepository->delete($request->all());
  144. }
  145. //修改专题状态
  146. public function editStatus(Request $request)
  147. {
  148. $validator = Validator::make($request->all(), [
  149. 'id' => 'required|exists:cms_subject',
  150. 'is_open' => ['required', Rule::in(0,1)],
  151. ]);
  152. if ($validator->fails()) {
  153. return $this->response->error($validator->errors()->first(), 500);
  154. }
  155. return $this->cmsSubjectRepository->editStatus($request->all());
  156. }
  157. }