Example #1
0
 /**
  * search user
  * @author Kydz
  * @return json user list
  */
 public function search()
 {
     $u_id = Input::get('u_id', 0);
     $token = Input::get('token', '');
     $keyWord = Input::get('key', '');
     $school = Input::get('school', 0);
     $range = Input::get('range', 0);
     $lat = Input::get('lat', 0);
     $lng = Input::get('lng', 0);
     $perPage = Input::get('per_page', 30);
     try {
         User::chkUserByToken($token, $u_id);
         $query = User::with(['school'])->where('u_id', '<>', $u_id);
         if ($keyWord) {
             $query = $query->where(function ($q) use($keyWord) {
                 $q->where('u_name', 'LIKE', '%' . $keyWord . '%')->orWhere('u_mobile', '=', $keyWord)->orWhere('u_nickname', 'LIKE', '%' . $keyWord . '%');
             });
         }
         if ($school > 0) {
             $query = $query->where('u_school_id', '=', $school);
         }
         if ($range) {
             if (!$lat || !$lng) {
                 throw new Exception("请传入有效的经纬度", 1);
             }
             $distance = ['0' => 0.0, '1' => 0.5, '2' => 1.0, '3' => 1.5, '4' => 3.0, '5' => 5.0];
             if (!array_key_exists($range, $distance)) {
                 throw new Exception("请传入有效的距离档位", 1);
             }
             $user_ids = User::filterByDistance($lat, $lng, $distance[$range]);
             $query = $query->whereIn('u_id', $user_ids);
         }
         $data = $query->paginate($perPage);
         $list = [];
         foreach ($data as $key => $user) {
             $list[] = $user->showInList();
         }
         $re = Tools::reTrue('搜索用户成功', $list, $data);
     } catch (Exception $e) {
         $re = Tools::reFalse($e->getCode(), '搜索用户失败:' . $e->getMessage());
     }
     return Response::json($re);
 }