auth->cityname); $where = [ 'user.id' => ['neq',$this->auth->id], 'user.status' => 1, 'user.photo_images' => ['neq',''], 'user.cityname' => $cityname, 'power.yinshen' => 0, ]; //性别 $gender = input('gender','all'); if($gender != 'all'){ $where['user.gender'] = $gender; } //属性 $attribute = input('attribute','all'); if($attribute != 'all' && $attribute != 'BOTH'){ $where['user.attribute'] = $attribute; } //排除黑名单的 $black_ids = Db::name('user_black')->where(['uid'=>$this->auth->id])->column('black_uid'); if(!empty($black_ids)){ $where['user.id'] = ['NOTIN',$black_ids]; } //年龄 $agemin = input('agemin',18); if($agemin > 18){ $where['user.birthday'] = ['lt',time()-$agemin*31536000]; } $agemax = input('agemax',100); if($agemax < 100){ $where['user.birthday'] = ['gt',time()-$agemax*31536000]; } if($agemin > 18 && $agemax < 100){ $where['user.birthday'] = ['between',[time()-$agemax*31536000,time()-$agemin*31536000]]; } //距离 $distancemin = input('distancemin',0); if($distancemin > 0){ $where['distance'] = ['gt',$distancemin]; } $distancemax = input('distancemax',0); if($distancemax > 0){ $where['distance'] = ['lt',$distancemax]; } if($distancemin > 0 && $distancemax > 0){ $where['distance'] = ['between',[$distancemin,$distancemax]]; } $field = [ 'user.id', 'user.username', 'user.nickname', 'user.avatar', 'user.photo_images', 'user.gender', 'user.birthday', 'user.cityname', 'user.longitude', 'user.latitude', 'user.attribute', 'wallet.vip_endtime', '(st_distance(point (' . $this->auth->longitude . ', ' . $this->auth->latitude . '),point(user.longitude,user.latitude))*111195) as distance', 'active.requesttime', ]; $list = Db::name('user')->alias('user')->field($field) ->join('user_wallet wallet','user.id = wallet.user_id','LEFT') ->join('user_power power' ,'user.id = power.user_id','LEFT') ->join('user_active active' ,'user.id = active.user_id','LEFT') ->where($where) ->order('distance asc') ->autopage() ->select(); $list = list_domain_image($list,['avatar','photo_images']); foreach($list as $key => &$val){ $val['age'] = birthtime_to_age($val['birthday']); $val['photo_images'] = explode(',',$val['photo_images'])[0]; $val['is_vip'] = $val['vip_endtime'] > time() ? 1 : 0; $val['distance'] = bcdiv(intval($val['distance']),1000,2).'km'; $val['active_info'] = $this->user_activeinfo($val['id'],$val['requesttime']); } $this->success(1,$list); } //推荐 //真人认证的,是推荐用户的,可能也要限制vip的 public function tuijian(){ $cityname = input('cityname',$this->auth->cityname); $where = [ 'user.id' => ['neq',$this->auth->id], 'user.status' => 1, 'user.photo_images' => ['neq',''], 'user.cityname' => $cityname, 'power.yinshen' => 0, ]; //推荐条件 $where_tuijian = [ 'user.idcard_status' => 1, 'user.is_tuijian' => 1, ]; if(config('site.index_tuijian_vip_limit') == 1){ $where_tuijian['wallet.vip_endtime'] = ['gt',time()]; } //推荐条件 $where = array_merge($where,$where_tuijian); //性别 $gender = input('gender','all'); if($gender != 'all'){ $where['user.gender'] = $gender; } //属性 $attribute = input('attribute','all'); if($attribute != 'all' && $attribute != 'BOTH'){ $where['user.attribute'] = $attribute; } //排除黑名单的 $black_ids = Db::name('user_black')->where(['uid'=>$this->auth->id])->column('black_uid'); if(!empty($black_ids)){ $where['user.id'] = ['NOTIN',$black_ids]; } //年龄 $agemin = input('agemin',18); if($agemin > 18){ $where['user.birthday'] = ['lt',time()-$agemin*31536000]; } $agemax = input('agemax',100); if($agemax < 100){ $where['user.birthday'] = ['gt',time()-$agemax*31536000]; } if($agemin > 18 && $agemax < 100){ $where['user.birthday'] = ['between',[time()-$agemax*31536000,time()-$agemin*31536000]]; } //距离 $distancemin = input('distancemin',0); if($distancemin > 0){ $where['distance'] = ['gt',$distancemin]; } $distancemax = input('distancemax',0); if($distancemax > 0){ $where['distance'] = ['lt',$distancemax]; } if($distancemin > 0 && $distancemax > 0){ $where['distance'] = ['between',[$distancemin,$distancemax]]; } $field = [ 'user.id', 'user.username', 'user.nickname', 'user.avatar', 'user.photo_images', 'user.gender', 'user.birthday', 'user.cityname', 'user.longitude', 'user.latitude', 'user.attribute', 'wallet.vip_endtime', '(st_distance(point (' . $this->auth->longitude . ', ' . $this->auth->latitude . '),point(user.longitude,user.latitude))*111195) as distance', 'active.requesttime', ]; $list = Db::name('user')->alias('user')->field($field) ->join('user_wallet wallet','user.id = wallet.user_id','LEFT') ->join('user_power power' ,'user.id = power.user_id','LEFT') ->join('user_active active' ,'user.id = active.user_id','LEFT') ->where($where) ->order('distance asc') ->autopage() ->select(); $list = list_domain_image($list,['avatar','photo_images']); foreach($list as $key => &$val){ $val['age'] = birthtime_to_age($val['birthday']); $val['photo_images'] = explode(',',$val['photo_images'])[0]; $val['is_vip'] = $val['vip_endtime'] > time() ? 1 : 0; $val['distance'] = bcdiv(intval($val['distance']),1000,2).'km'; $val['active_info'] = $this->user_activeinfo($val['id'],$val['requesttime']); } $this->success(1,$list); } //匹配 //做防止重复处理,参照荔枝 public function pipei(){ //检查剩余次数 $where = [ 'user.id' => ['neq',$this->auth->id], 'user.status' => 1, ]; //性别 $gender = input('gender','all'); if($gender != 'all'){ $where['user.gender'] = $gender; } //排除黑名单的 $black_ids = Db::name('user_black')->where(['uid'=>$this->auth->id])->column('black_uid'); if(!empty($black_ids)){ $where['user.id'] = ['NOTIN',$black_ids]; } $list = Db::name('user')->alias('user') ->join('user_active active' ,'user.id = active.user_id','LEFT') ->where($where) ->column('user.id'); $this->success(1,$list); } }