CmsSubjectController.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  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. 'city_id',
  42. 'is_open',
  43. 'used_mall'
  44. ],
  45. 'columns' => [
  46. 'id',
  47. 'city_name',
  48. 'used_mall',
  49. 'title',
  50. 'is_open',
  51. 'product_count',
  52. ]
  53. ];
  54. return $data;
  55. }
  56. //新建专题
  57. public function create(Request $request)
  58. {
  59. $validator = Validator::make($request->all(), [
  60. 'product_id' => 'required',
  61. 'sort' => 'required',
  62. 'title' => 'required|string',
  63. 'show_type' => ['required', Rule::in(0,1,2,3)],
  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. 'title' => 'required|string',
  79. 'show_type' => ['required', Rule::in(0,1,2,3)],
  80. 'is_open' => ['required', Rule::in(0,1)],
  81. ]);
  82. if ($validator->fails()) {
  83. return $this->response->error($validator->errors()->first(), 500);
  84. }
  85. return $this->cmsSubjectRepository->edit($request->all());
  86. }
  87. //查看某专题
  88. public function view(Request $request)
  89. {
  90. $all = $request->all();
  91. $validator = Validator::make($all, [
  92. 'id' => 'required|integer',
  93. ]);
  94. if ($validator->fails()) {
  95. return $this->response->error($validator->errors()->first(), 500);
  96. }
  97. $getSubject = $this->cmsSubjectRepository->detail($request->all());
  98. if (count($getSubject->toArray()) > 0) {
  99. $product = CmsSubjectProduct::select('subject_id', 'product_id', 'sort')->where('subject_id', $getSubject->id)->orderBy('sort', 'asc')->get();
  100. $num = $product->toArray();
  101. $product_arr = array_column($num, 'product_id');
  102. $getSubject->product_id = implode(',', $product_arr);
  103. $sort_arry = array_column($num, 'sort');
  104. $getSubject->sort = implode(',', $sort_arry);
  105. }
  106. return $this->response->item($getSubject, new CmsSubjectViewTransformer());
  107. }
  108. //删除专题
  109. public function delete(Request $request)
  110. {
  111. $validator = Validator::make($request->all(), [
  112. 'id' => 'required|exists:cms_subject'
  113. ]);
  114. if ($validator->fails()) {
  115. return $this->response->error($validator->errors()->first(), 500);
  116. }
  117. return $this->cmsSubjectRepository->delete($request->all());
  118. }
  119. //修改专题状态
  120. public function editStatus(Request $request)
  121. {
  122. $validator = Validator::make($request->all(), [
  123. 'id' => 'required|exists:cms_subject',
  124. 'is_open' => ['required', Rule::in(0,1)],
  125. ]);
  126. if ($validator->fails()) {
  127. return $this->response->error($validator->errors()->first(), 500);
  128. }
  129. return $this->cmsSubjectRepository->editStatus($request->all());
  130. }
  131. }