NoticesController.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <?php
  2. namespace App\Http\Controllers\Admin\News;
  3. use App\Http\Controllers\Controller;
  4. use App\Repositories\Enums\ModelStatusEnum;
  5. use App\Repositories\Enums\ResponseCodeEnum;
  6. use App\Repositories\Models\News\Notice;
  7. use Illuminate\Http\Request;
  8. use Jiannei\Response\Laravel\Support\Facades\Response;
  9. use Prettus\Validator\Contracts\ValidatorInterface;
  10. use App\Contracts\Repositories\News\NoticeRepository;
  11. use App\Repositories\Validators\News\NoticeValidator;
  12. /**
  13. * Class NoticesController.
  14. *
  15. * @package namespace App\Http\Controllers\News;
  16. */
  17. class NoticesController extends Controller
  18. {
  19. /**
  20. * @var NoticeRepository
  21. */
  22. protected $repository;
  23. /**
  24. * @var NoticeValidator
  25. */
  26. protected $validator;
  27. /**
  28. * NoticesController constructor.
  29. *
  30. * @param NoticeRepository $repository
  31. * @param NoticeValidator $validator
  32. */
  33. public function __construct(NoticeRepository $repository, NoticeValidator $validator)
  34. {
  35. parent::__construct();
  36. $this->repository = $repository;
  37. $this->validator = $validator;
  38. }
  39. /**
  40. * 列表
  41. * @param Request $request
  42. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  43. * Author: Mead
  44. */
  45. public function index(Request $request)
  46. {
  47. $lists = $this->repository->paginate($request->get('per_page', self::PAGE_NUM));
  48. return Response::success($lists);
  49. }
  50. /**
  51. * 添加
  52. * @param Request $request
  53. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource|void
  54. * @throws \Illuminate\Validation\ValidationException
  55. * Author: Mead
  56. */
  57. public function store(Request $request)
  58. {
  59. $this->validate($request, $this->validator->getRules(ValidatorInterface::RULE_CREATE));
  60. try {
  61. $data = $request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_CREATE)));
  62. $data['admin_id'] = login_admin_id();
  63. $model = $this->repository->create($data);
  64. return Response::success($model);
  65. } catch (\Exception $e) {
  66. return $this->error($e);
  67. }
  68. }
  69. /**
  70. * 详情
  71. * @param $id
  72. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  73. * Author: Mead
  74. */
  75. public function show($id)
  76. {
  77. $data = $this->repository->find($id);
  78. Notice::query()->where('id', $id)->increment('view_count');
  79. return Response::success($data);
  80. }
  81. /**
  82. * 更新
  83. * @param Request $request
  84. * @param $id
  85. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  86. * @throws \Illuminate\Validation\ValidationException
  87. * Author: Mead
  88. */
  89. public function update(Request $request, $id)
  90. {
  91. $this->validate($request, $this->validator->getRules(ValidatorInterface::RULE_UPDATE));
  92. try {
  93. $data = $request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_CREATE)));
  94. $model = $this->repository->update($data, $id);
  95. return Response::success($model);
  96. } catch (\Exception $e) {
  97. $this->error($e);
  98. }
  99. }
  100. /**
  101. * 删除
  102. * @param $id
  103. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  104. * Author: Mead
  105. */
  106. public function destroy($id)
  107. {
  108. try {
  109. $this->repository->skipPresenter()->delete($id);
  110. return Response::success(null, T('successfully delete.'));
  111. } catch (\Exception $exception) {
  112. return Response::fail(T('Delete failed.'), ResponseCodeEnum::SERVICE_UPDATE_DATA_ERROR);
  113. }
  114. }
  115. /**
  116. * 批量删除
  117. * @param Request $request
  118. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  119. * Author: Mead
  120. */
  121. public function delete(Request $request)
  122. {
  123. try {
  124. $this->validate($request, [
  125. 'ids' => 'required|array',
  126. ]);
  127. $ids = $request->get('ids');
  128. $this->repository->whereIn('id', $ids)->delete();
  129. return Response::success(null, T('successfully delete.'));
  130. } catch (\Exception $exception) {
  131. return Response::fail(T('Delete failed.'), ResponseCodeEnum::SERVICE_UPDATE_DATA_ERROR);
  132. }
  133. }
  134. /**
  135. * 选项
  136. * @param Request $request
  137. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  138. * Author: Mead
  139. */
  140. public function selectOptions(Request $request)
  141. {
  142. $data = $this->repository->skipPresenter()->all(['name', 'room_no', 'id']);
  143. return Response::success($data);
  144. }
  145. /**
  146. * 暂停
  147. * @param Request $request
  148. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  149. * @throws \Illuminate\Validation\ValidationException
  150. */
  151. public function pause(Request $request)
  152. {
  153. $this->validate($request, [
  154. 'id' => 'required|integer',
  155. 'type' => 'sometimes|nullable|integer',
  156. ]);
  157. $status = ModelStatusEnum::PAUSE;
  158. if ($request->get('type')) {
  159. $status = ModelStatusEnum::OK;
  160. }
  161. $re = Notice::query()->where('id', $request->get('id'))->update(['status' => $status]);
  162. if ($re) {
  163. return Response::success([]);
  164. }
  165. return $this->error('操作失败');
  166. }
  167. }