ParkingController.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Filters\ParkingFilter;
  4. use App\Http\Requests\ParkingRequest;
  5. use App\Http\Resources\ParkingResource;
  6. use App\Models\AdminUser;
  7. use App\Models\AdminUserArea;
  8. use App\Models\Area;
  9. use App\Models\Parking;
  10. use App\Utils\Admin;
  11. use App\Utils\GaodeMaps;
  12. use Illuminate\Http\Request;
  13. use App\Http\Controllers\Controller;
  14. use Illuminate\Support\Facades\Log;
  15. class ParkingController extends Controller
  16. {
  17. /**
  18. * index 停车点列表
  19. *
  20. * @param Request $request
  21. * @param ParkingFilter $filter
  22. * @return \Illuminate\Http\JsonResponse
  23. * @author Fx
  24. *
  25. */
  26. public function index(Request $request, ParkingFilter $filter)
  27. {
  28. $admin_id = Admin::user()->id;
  29. $parking = Parking::query()->filter($filter)->orderByDesc('id');
  30. if (!Admin::isAdministrator()) {
  31. $area_ids = AdminUser::getAreaIdsByAdminId($admin_id);
  32. if (count($area_ids) !== 0) {
  33. $parking = $parking->whereIn('area_id', $area_ids);
  34. } else {
  35. $area_id = AdminUserArea::query()->where('admin_id', $admin_id)->first('area_id');
  36. $area_id = $area_id->area_id ?? 0;
  37. $parking = $parking->where('area_id', $area_id);
  38. }
  39. }
  40. //暂时没有写分页
  41. $parking = $parking->get();
  42. return $this->ok(ParkingResource::collection($parking));
  43. //
  44. }
  45. /**
  46. * Show the form for creating a new resource.
  47. *
  48. * @return \Illuminate\Http\Response
  49. */
  50. public function create()
  51. {
  52. //
  53. }
  54. /**
  55. * store 添加停车点
  56. *
  57. * @param ParkingRequest $request
  58. * @param Parking $model
  59. * @return \Illuminate\Http\JsonResponse
  60. * @author Fx
  61. *
  62. */
  63. public function store(ParkingRequest $request, Parking $model)
  64. {
  65. //
  66. $inputs = $request->validated();
  67. $parking_fence = object_array($inputs['parking_fence']);
  68. $parking_centre = GetCenterFromDegrees($parking_fence);
  69. $inputs['parking_radius'] = round(maxDistance($parking_centre, $parking_fence) + 1, 4);
  70. $inputs['parking_centre'] = json_encode($parking_centre);
  71. $inputs['description'] = GaodeMaps::getAddress([$parking_centre['lng'], $parking_centre['lat']]) ?? '';
  72. $res = $model->create($inputs);
  73. return $this->created(ParkingResource::make($res));
  74. }
  75. /**
  76. * Display the specified resource.
  77. *
  78. * @param int $id
  79. * @return \Illuminate\Http\Response
  80. */
  81. public function show($id)
  82. {
  83. //
  84. }
  85. /**
  86. * edit 编辑停车点
  87. *
  88. * @param Parking $parking
  89. * @return \Illuminate\Http\JsonResponse
  90. * @author Fx
  91. *
  92. */
  93. public function edit(Parking $parking)
  94. {
  95. //
  96. return $this->ok(ParkingResource::make($parking));
  97. }
  98. /**
  99. * update 更新停车点
  100. *
  101. * @param ParkingRequest $request
  102. * @param Parking $parking
  103. * @return \Illuminate\Http\JsonResponse
  104. * @author Fx
  105. *
  106. */
  107. public function update(ParkingRequest $request, Parking $parking)
  108. {
  109. //
  110. $inputs = $request->validated();
  111. unset($inputs['parking_fence']);
  112. $parking->update($inputs);
  113. $parking->description = GaodeMaps::getAddress(json_decode($parking->parking_centre)) ?? '';
  114. $parking->save();
  115. return $this->ok(ParkingResource::make($parking));
  116. }
  117. /**
  118. * updateStatus 禁用启用停车点
  119. *
  120. * @param Request $request
  121. * @return \Illuminate\Http\JsonResponse
  122. * @author Fx
  123. *
  124. */
  125. public function updateStatus(Request $request)
  126. {
  127. $status = $request->get('status');
  128. $parking_id = $request->get('id') ?? '';
  129. if (empty($parking_id)) return $this->error('参数错误');
  130. $bool = Parking::query()->where('id', $parking_id)->update(['status' => $status]);
  131. if ($bool) {
  132. return $this->created();
  133. } else {
  134. return $this->error("修改失败,请联系管理员");
  135. }
  136. }
  137. /**
  138. * Remove the specified resource from storage.
  139. *
  140. * @param int $id
  141. * @return \Illuminate\Http\Response
  142. */
  143. public function destroy(Parking $parking)
  144. {
  145. $parking->delete();
  146. return $this->noContent();
  147. }
  148. }