id; $parking = Parking::query()->where(AdminMerchant::getMerchantWhere())->filter($filter)->orderByDesc('id'); if (!Admin::isAdministrator()) { $area_ids = self::$areaIds; if (count($area_ids) !== 0) { $parking = $parking->whereIn('area_id', $area_ids); } else { $area_id = AdminUserArea::query()->where('admin_id', $admin_id)->first('area_id'); $area_id = $area_id->area_id ?? 0; $parking = $parking->where('area_id', $area_id); } } //暂时没有写分页 $parking = $parking->get(); $result_array = ParkingResource::collection($parking)->toResponse($request)->getData(true); return $this->ok([ 'parking_area' => array_column($result_array, 'parking_area'), 'point' => array_column($result_array, 'point'), ]); //return $this->ok(ParkingResource::collection($parking)); // } /** * store 添加停车点 * * @param ParkingRequest $request * @param Parking $model * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function store(ParkingRequest $request, Parking $model) { // $inputs = $request->validated(); $admin_id = Admin::user()->id; $area_ids = self::$areaIds; $area_id = $inputs['area_id']; if (!in_array($area_id, $area_ids)) { return $this->error('暂无权限'); } $parking_fence = object_array(json_decode($inputs['parking_fence'])); $parking_centre = GetCenterFromDegrees($parking_fence); if (!$parking_centre) { return $this->error('参数错误'); } $inputs['parking_radius'] = round(maxDistance($parking_centre, $parking_fence) + 1, 4); $inputs['parking_centre'] = json_encode($parking_centre); $inputs['description'] = GaodeMaps::getAddress([$parking_centre['lng'], $parking_centre['lat']]) ?? ''; $res = $model->create($inputs); return $this->created(ParkingResource::make($res)); } public function show(Parking $parking) { $data = [ 'id' => $parking->id, 'name' => $parking->name, 'status' => $parking->status ]; return $this->ok($data); } /** * update 更新停车点 * @param ParkingRequest $request * @param Parking $parking * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function update(ParkingRequest $request, Parking $parking) { // $inputs = $request->validated(); // 判断权限 $admin_id = Admin::user()->id; $area_ids = self::$areaIds; $area_id = $parking->area_id; if (!in_array($area_id, $area_ids)) { return $this->error('暂无权限'); } // if (!Admin::isAdministrator()) { // // } unset($inputs['parking_fence']); $parking->update($inputs); $parking->description = GaodeMaps::getAddress(json_decode($parking->parking_centre)) ?? ''; $parking->save(); return $this->ok(ParkingResource::make($parking)); } /** * destroy 删除停车点 * * @param Parking $parking * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function destroy(Parking $parking) { // 判断权限 $admin_id = Admin::user()->id; $area_ids = self::$areaIds; $area_id = $parking->area_id; if (!in_array($area_id, $area_ids)) { return $this->error('暂无权限'); } $parking->delete(); return $this->noContent(); } /** * updateStatus 更新停车点status * * @param Request $request * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function updateStatus(Request $request) { $status = $request->get('status'); $parking_id = $request->get('id') ?? ''; if (empty($parking_id)) return $this->error('参数错误'); // 判断权限 $admin_id = Admin::user()->id; $area_ids = self::$areaIds; $parking = Parking::query()->where(AdminMerchant::getMerchantWhere())->find($parking_id); if (empty($parking)) return $this->error('找不到停车区,请检查参数'); $area_id = $parking->area_id; if (!in_array($area_id, $area_ids)) { return $this->error('暂无权限'); } $parking->status = $status; $bool = $parking->save(); if ($bool) { return $this->ok('修改成功'); } else { return $this->error("修改失败,请联系管理员"); } } /** * UniqueParkingName 检查停车点名称是否唯一 * * @param Request $request * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function UniqueParkingName(Request $request) { $name = $request->get('name') ?? ''; if (empty($name)) return $this->error('参数错误'); $parking = Parking::query()->where(AdminMerchant::getMerchantWhere())->where('name', $name)->first(); if (empty($parking)) { return $this->ok(['status' => 1]); } else { return $this->ok(['status' => 0]); } } }