HomeService.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace App\Services;
  3. use App\Models\User;
  4. use Illuminate\Support\Facades\DB;
  5. class HomeService
  6. {
  7. /**
  8. * 获取首页内容
  9. * @param $param
  10. */
  11. public function get_list($param){
  12. $query = User::query()
  13. ->leftJoin("users_info",'users.id','=','users_info.user_id')
  14. ->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'])
  15. ->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"));
  16. if($param['keyword']!=""){
  17. $query = $query->where('users_info.nickname','like','%'.$param['keyword'].'%');
  18. }
  19. if($param['online']==1){
  20. $query = $query->where(['users.online'=>$param['online']]);
  21. }
  22. if($param['new']==1){
  23. $query = $query->orderBy('users.created_at','desc');
  24. }
  25. if($param['nearby']==1){
  26. $query = $query->orderBy('distance','ASC');
  27. }
  28. $query = $query->paginate(request('perPage',20));
  29. $query = $query->toArray();
  30. foreach ($query['data'] as $k=>$v){
  31. $query['data'][$k]['age'] =!empty($v['birthday'])? birthday($v['birthday']):0;
  32. //计算距离
  33. $query['data'][$k]['distance'] = $v['distance']>1000?round($v['distance']/1000,2).'km':round($v['distance']).'m';
  34. }
  35. return $query;
  36. }
  37. //用户详情
  38. public function user_detail($user_id){
  39. $user = auth('api')->user();
  40. if($user){
  41. //登录状态 增加 谁看了我记录
  42. look_log($user->id,$user_id);
  43. }
  44. }
  45. }