AreaController.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Filters\AreaFilter;
  4. use App\Http\Requests\AreaRequest;
  5. use App\Http\Resources\AreaResource;
  6. use App\Models\AdminUser;
  7. use App\Models\AdminUserArea;
  8. use App\Models\Area;
  9. use App\Models\AreaSetting;
  10. use App\Utils\Admin;
  11. use Illuminate\Http\Request;
  12. use App\Http\Controllers\Controller;
  13. use Illuminate\Support\Facades\Log;
  14. /**
  15. * Class AreaController
  16. * @package App\Http\Controllers\Admin
  17. */
  18. class AreaController extends AdminBaseController
  19. {
  20. /**
  21. * index
  22. *
  23. * @param Request $request
  24. * @param AreaFilter $filter
  25. * @return \Illuminate\Http\JsonResponse
  26. * @author Fx
  27. *
  28. */
  29. public function index(Request $request, AreaFilter $filter)
  30. {
  31. //
  32. $admin_id = Admin::user()->id;
  33. $area = Area::query()
  34. ->filter($filter)
  35. ->orderByDesc('id');
  36. if (!Admin::isAdministrator()) {
  37. $area_ids = AdminUser::getAreaIdsByAdminId($admin_id);
  38. $area = $area->where('admin_id', $admin_id)->orWhereIn('id', $area_ids);
  39. }
  40. $area = $request->get('all') ? $area->get() : $area->paginate();
  41. return $this->ok(AreaResource::collection($area));
  42. }
  43. /**
  44. * Show the form for creating a new resource.
  45. *
  46. * @return \Illuminate\Http\Response
  47. */
  48. public function create()
  49. {
  50. //
  51. }
  52. /**
  53. * store
  54. *
  55. * @param AreaRequest $request
  56. * @param Area $model
  57. * @return \Illuminate\Http\JsonResponse
  58. * @author Fx
  59. *
  60. */
  61. public function store(AreaRequest $request, Area $model)
  62. {
  63. $id = Admin::user()->id;
  64. //
  65. $inputs = $request->validated();
  66. $inputs['admin_id'] = 0;
  67. if ($id != 1) {
  68. $inputs['admin_id'] = $id;
  69. }
  70. $area_fence = $inputs['area_fence'];
  71. $area_fushe_fence = $inputs['area_fushe_fence'];
  72. $area_centre = GetCenterFromDegrees($area_fence);
  73. $inputs['area_radius'] = round(maxDistance($area_centre, $area_fence) + 1, 4);
  74. // $inputs['area_centre'] = json_encode($area_centre);
  75. $inputs['area_centre'] = json_encode($inputs['area_centre']);
  76. $inputs['area_fence'] = json_encode($area_fence);
  77. $inputs['area_fushe_fence'] = json_encode($area_fushe_fence);
  78. $res = $model->create($inputs);
  79. //创建区域设置
  80. $areaSetting = new AreaSetting();
  81. $areaSetting->area_id = $res->id;
  82. $areaSetting->save();
  83. return $this->created(AreaResource::make($res));
  84. }
  85. /**
  86. * show
  87. *
  88. * @param $id
  89. * @return \Illuminate\Http\JsonResponse
  90. * @author Fx
  91. *
  92. */
  93. public function show($id)
  94. {
  95. //
  96. $area = Area::query()->find($id);
  97. return $this->ok(AreaResource::make($area));
  98. }
  99. /**
  100. * edit
  101. *
  102. * @param Area $area
  103. * @return \Illuminate\Http\JsonResponse
  104. * @author Fx
  105. *
  106. */
  107. public function edit(Area $area)
  108. {
  109. //
  110. return $this->ok(AreaResource::make($area));
  111. }
  112. /**
  113. * update
  114. *
  115. * @param AreaRequest $request
  116. * @param Area $area
  117. * @return \Illuminate\Http\JsonResponse
  118. * @author Fx
  119. *
  120. */
  121. public function update(AreaRequest $request, Area $area)
  122. {
  123. //
  124. $inputs = $request->validated();
  125. $area_centre = GetCenterFromDegrees($inputs['area_fence']);
  126. $area_fence = object_array($inputs['area_fence']);
  127. $inputs['admin_id'] = $inputs['admin_id'] ?? Admin::user()->id; // 创建者id
  128. $inputs['area_radius'] = round(maxDistance($area_centre, $area_fence) + 1, 4);
  129. //$inputs['area_centre'] = json_encode(GetCenterFromDegrees($inputs['area_fence']));
  130. $inputs['area_centre'] = json_encode($inputs['area_centre']);
  131. $inputs['area_fence'] = json_encode(object_array($inputs['area_fence']));
  132. $inputs['area_fushe_fence'] = json_encode(object_array($inputs['area_fushe_fence']));
  133. $area->update($inputs);
  134. return $this->ok(AreaResource::make($area));
  135. }
  136. /**
  137. * destroy
  138. *
  139. * @param Area $area
  140. * @return \Illuminate\Http\JsonResponse
  141. * @author Fx
  142. *
  143. */
  144. public function destroy(Area $area)
  145. {
  146. //
  147. $area->delete();
  148. return $this->noContent();
  149. }
  150. }