OrganizationController.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: zilongs
  5. * Date: 20-10-29
  6. * Time: 下午3:43
  7. */
  8. namespace App\Http\Controllers\Api\V1;
  9. use App\Models\Area;
  10. use App\Models\Organization;
  11. use DB;
  12. class OrganizationController extends AuthController
  13. {
  14. public function organizationList()
  15. {
  16. $req = request()->post();
  17. $this->validate(request(), [
  18. 'latitude' => 'numeric',
  19. 'longitude' => 'numeric',
  20. 'city_id' => 'integer',
  21. ]);
  22. $user = $this->user;
  23. $distance_field = get_user_distance_field($user);
  24. $builder = Organization::with('docter')->select(['id', 'type', 'name', 'province_id', 'city_id', 'area_id', 'address', 'latitude', 'longitude', DB::raw($distance_field)]);
  25. if (!empty($req['city_id'])) {
  26. $builder->where('city_id', $req['city_id']);
  27. }
  28. $data = $builder->orderBy('distance', 'asc')->paginate();
  29. return out($data);
  30. }
  31. public function organizationCityList()
  32. {
  33. $city_ids = Organization::pluck('city_id')->toArray();
  34. $data = Area::select(['id', 'name'])->whereIn('id', $city_ids)->get();
  35. return out($data);
  36. }
  37. }