|
@@ -15,18 +15,31 @@ class HomeService
|
|
*/
|
|
*/
|
|
public function get_list($param){
|
|
public function get_list($param){
|
|
|
|
|
|
- // DB::select();
|
|
|
|
-
|
|
|
|
$query = User::query()
|
|
$query = User::query()
|
|
->leftJoin("users_info",'users.id','=','users_info.user_id')
|
|
->leftJoin("users_info",'users.id','=','users_info.user_id')
|
|
->select(['users.id','users.is_vip','users.tencent_im_user_id','users.sex','users.is_auth','users.latitude','users.longitude','users.online','users_info.avatar','users_info.nickname','users_info.area','users_info.birthday','users_info.height','users_info.weight'])
|
|
->select(['users.id','users.is_vip','users.tencent_im_user_id','users.sex','users.is_auth','users.latitude','users.longitude','users.online','users_info.avatar','users_info.nickname','users_info.area','users_info.birthday','users_info.height','users_info.weight'])
|
|
- ->addSelect(DB::raw("acos(cos(" .$param['latitude'] . "*pi()/180)*cos(cl_users.latitude*pi()/180)*cos(" . $param['longitude'] . "*pi()/180-cl_users.longitude*pi()/180)+sin(" . $param['latitude'] . "*pi()/180)*sin(cl_users.latitude * pi()/180)) * 6367000 AS distance"))
|
|
|
|
- ->orderBy('distance','ASC')
|
|
|
|
- ->paginate(request('perPage',20));
|
|
|
|
|
|
+ ->addSelect(DB::raw("acos(cos(" .$param['latitude'] . "*pi()/180)*cos(cl_users.latitude*pi()/180)*cos(" . $param['longitude'] . "*pi()/180-cl_users.longitude*pi()/180)+sin(" . $param['latitude'] . "*pi()/180)*sin(cl_users.latitude * pi()/180)) * 6367000 AS distance"));
|
|
|
|
+
|
|
|
|
+ if($param['keyword']!=""){
|
|
|
|
+ $query = $query->where('users_info.nickname','like','%'.$param['keyword'].'%');
|
|
|
|
+ }
|
|
|
|
+ if($param['online']==1){
|
|
|
|
+ $query = $query->where(['users.online'=>$param['online']]);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if($param['new']==1){
|
|
|
|
+ $query = $query->orderBy('users.created_at','desc');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if($param['nearby']==1){
|
|
|
|
+ $query = $query->orderBy('distance','ASC');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ $query = $query->paginate(request('perPage',20));
|
|
$query = $query->toArray();
|
|
$query = $query->toArray();
|
|
foreach ($query['data'] as $k=>$v){
|
|
foreach ($query['data'] as $k=>$v){
|
|
$query['data'][$k]['age'] =!empty($v['birthday'])? birthday($v['birthday']):0;
|
|
$query['data'][$k]['age'] =!empty($v['birthday'])? birthday($v['birthday']):0;
|
|
-
|
|
|
|
//计算距离
|
|
//计算距离
|
|
$query['data'][$k]['distance'] = $v['distance']>1000?round($v['distance']/1000,2).'km':round($v['distance']).'m';
|
|
$query['data'][$k]['distance'] = $v['distance']>1000?round($v['distance']/1000,2).'km':round($v['distance']).'m';
|
|
}
|
|
}
|