|
@@ -25,13 +25,13 @@ class Index extends Api
|
|
|
* 首页
|
|
|
*
|
|
|
*/
|
|
|
- public function index()
|
|
|
+ /*public function index()
|
|
|
{
|
|
|
// 强制关闭需要退出正在房间的用户
|
|
|
$tenim = new \app\api\controller\Tenim();
|
|
|
$tenim->outMemberFromRoom(4);
|
|
|
$this->success('请求成功');
|
|
|
- }
|
|
|
+ }*/
|
|
|
|
|
|
|
|
|
// /**
|
|
@@ -626,22 +626,7 @@ class Index extends Api
|
|
|
return $text;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 年龄段列表
|
|
|
- * @return void
|
|
|
- */
|
|
|
- public function ageList()
|
|
|
- {
|
|
|
- try {
|
|
|
- $field = 'id,name';
|
|
|
- $where['status'] = 1;
|
|
|
- $result = model('Age')->field($field)->where($where)->order('weigh asc')->select();
|
|
|
|
|
|
- $this->success('获取成功',$result);
|
|
|
- } catch (Exception $e) {
|
|
|
- $this->error($e->getMessage());
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
/**
|
|
|
* 星座列表
|
|
@@ -662,30 +647,8 @@ class Index extends Api
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 轮播图列表
|
|
|
- * @return void
|
|
|
- */
|
|
|
- public function bannerList()
|
|
|
- {
|
|
|
- try {
|
|
|
- $field = 'id,title,image,url';
|
|
|
- $where['status'] = 1;
|
|
|
- $result = model('Banner')->field($field)->where($where)->order('weigh asc')->select();
|
|
|
- if (!$result) {
|
|
|
- $result = list_domain_image($result,['image']);
|
|
|
- }
|
|
|
- $this->success('获取成功',$result);
|
|
|
- } catch (Exception $e) {
|
|
|
- $this->error($e->getMessage());
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- //关键字过滤
|
|
|
- public function keyworldconfig(){
|
|
|
- $config = config('keyworld');
|
|
|
- $this->success('success',$config);
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
//开关设置
|
|
|
public function switchenum(){
|
|
@@ -697,4 +660,238 @@ class Index extends Api
|
|
|
$this->success('success',$rs);
|
|
|
}
|
|
|
|
|
|
+ /////////////
|
|
|
+
|
|
|
+ public function index(){
|
|
|
+ echo 'apisuccess';
|
|
|
+ exit;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //附近
|
|
|
+ public function fujin(){
|
|
|
+ $where = [
|
|
|
+ 'user.id' => ['neq',$this->auth->id],
|
|
|
+ 'user.status' => 1,
|
|
|
+ 'user.city_id' => $this->auth->city_id,
|
|
|
+ ];
|
|
|
+
|
|
|
+ //排除黑名单的
|
|
|
+ $where_black = [];
|
|
|
+ $black_ids = Db::name('user_blacklist')->where(['user_id'=>$this->auth->id])->column('black_user_id');
|
|
|
+ if(!empty($black_ids)){
|
|
|
+ $where_black['user.id'] = ['NOTIN',$black_ids];
|
|
|
+ }
|
|
|
+
|
|
|
+ $field = [
|
|
|
+ 'user.id',
|
|
|
+ 'user.u_id',
|
|
|
+ 'user.username',
|
|
|
+ 'user.nickname',
|
|
|
+ 'user.avatar',
|
|
|
+ 'user.gender',
|
|
|
+ 'user.desc',
|
|
|
+ 'age.name as age_text',
|
|
|
+ 'job.name as job_text',
|
|
|
+ 'area.name as city_text',
|
|
|
+ '(st_distance(point (' . $this->auth->longitude . ', ' . $this->auth->latitude . '),point(user.longitude,user.latitude))*111195) as distance',
|
|
|
+ ];
|
|
|
+ $list = Db::name('user')->alias('user')->field($field)
|
|
|
+ ->join('age age','user.age_id = age.id','LEFT')
|
|
|
+ ->join('enum_job job','user.job_id = job.id','LEFT')
|
|
|
+ ->join('shopro_area area','user.city_id = area.id','LEFT')
|
|
|
+ ->where($where)
|
|
|
+ ->where($where_black)
|
|
|
+ ->order('distance asc')
|
|
|
+ ->autopage()
|
|
|
+ ->select();
|
|
|
+ $list = list_domain_image($list,['avatar']);
|
|
|
+ foreach($list as $key => &$val){
|
|
|
+ $val['distance'] = bcdiv(intval($val['distance']),1000,2).'km';
|
|
|
+ }
|
|
|
+
|
|
|
+ $this->success(1,$list);
|
|
|
+ }
|
|
|
+
|
|
|
+ //同城
|
|
|
+ public function samecity(){
|
|
|
+
|
|
|
+ $where = [
|
|
|
+ 'user.id' => ['neq',$this->auth->id],
|
|
|
+ 'user.status' => 1,
|
|
|
+ 'user.city_id' => $this->auth->city_id,
|
|
|
+ ];
|
|
|
+
|
|
|
+ //排除黑名单的
|
|
|
+ $where_black = [];
|
|
|
+ $black_ids = Db::name('user_blacklist')->where(['user_id'=>$this->auth->id])->column('black_user_id');
|
|
|
+ if(!empty($black_ids)){
|
|
|
+ $where_black['user.id'] = ['NOTIN',$black_ids];
|
|
|
+ }
|
|
|
+
|
|
|
+ $field = [
|
|
|
+ 'user.id',
|
|
|
+ 'user.u_id',
|
|
|
+ 'user.username',
|
|
|
+ 'user.nickname',
|
|
|
+ 'user.avatar',
|
|
|
+ 'user.gender',
|
|
|
+ 'user.desc',
|
|
|
+ 'age.name as age_text',
|
|
|
+ 'job.name as job_text',
|
|
|
+ 'area.name as city_text',
|
|
|
+ ];
|
|
|
+ $list = Db::name('user')->alias('user')->field($field)
|
|
|
+ ->join('age age','user.age_id = age.id','LEFT')
|
|
|
+ ->join('enum_job job','user.job_id = job.id','LEFT')
|
|
|
+ ->join('shopro_area area','user.city_id = area.id','LEFT')
|
|
|
+ ->where($where)
|
|
|
+ ->where($where_black)
|
|
|
+ ->autopage()
|
|
|
+ ->select();
|
|
|
+ $list = list_domain_image($list,['avatar']);
|
|
|
+
|
|
|
+ $this->success(1,$list);
|
|
|
+ }
|
|
|
+
|
|
|
+ //匹配配置
|
|
|
+ public function pipei_config(){
|
|
|
+ $result = [
|
|
|
+ 'index_pipei_switch' => config('site.index_pipei_switch'), //匹配开关
|
|
|
+ ];
|
|
|
+
|
|
|
+ //首页匹配每天每人匹配次数
|
|
|
+ $user_id = $this->auth->id;
|
|
|
+ $is_vip = $this->is_vip($this->auth->id);
|
|
|
+ $times_limit = $is_vip == 1 ? config('site.pipei_oneday_vipuser_times') : config('site.index_pipei_oneday_user_times');
|
|
|
+
|
|
|
+ $times_limit_redis = 'pipei_times_limit_'.$user_id;
|
|
|
+ $user_times = Cache::get($times_limit_redis) ?: 0;
|
|
|
+
|
|
|
+ if($times_limit > -1){
|
|
|
+ $remain_times = $times_limit - $user_times;
|
|
|
+ if($remain_times < 0){
|
|
|
+ $remain_times = 0;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ $remain_times = -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ $result['remain_times'] = $remain_times;
|
|
|
+
|
|
|
+ $this->success(1,$result);
|
|
|
+ }
|
|
|
+
|
|
|
+ //匹配
|
|
|
+ //做防止重复处理,参照荔枝
|
|
|
+ public function pipei(){
|
|
|
+
|
|
|
+ //首页匹配功能开关
|
|
|
+ $index_pipei_switch = config('site.index_pipei_switch');
|
|
|
+ if($index_pipei_switch != 1){
|
|
|
+ $this->error('匹配功能维护中,请稍后再试');
|
|
|
+ }
|
|
|
+
|
|
|
+ //缓存,防重复
|
|
|
+ $user_id = $this->auth->id;
|
|
|
+ $user_id_redis = 'pipei_repeat_'.$user_id;
|
|
|
+ $redis_ids = json_decode(Cache::get($user_id_redis),true);
|
|
|
+
|
|
|
+ //首页匹配每天每人匹配次数
|
|
|
+ $is_vip = $this->is_vip($this->auth->id);
|
|
|
+ $times_limit = $is_vip == 1 ? config('site.pipei_oneday_vipuser_times') : config('site.index_pipei_oneday_user_times');
|
|
|
+
|
|
|
+ $times_limit_redis = 'pipei_times_limit_'.$user_id;
|
|
|
+ $user_times = Cache::get($times_limit_redis) ?: 0;
|
|
|
+
|
|
|
+ if($times_limit > -1 && $user_times >= $times_limit){
|
|
|
+ $this->error('今日已超匹配上限'.$times_limit.'次');
|
|
|
+ }
|
|
|
+
|
|
|
+ //where
|
|
|
+ $where = [
|
|
|
+ 'user.id' => ['neq',$this->auth->id],
|
|
|
+ 'user.status' => 1,
|
|
|
+ ];
|
|
|
+
|
|
|
+ //性别
|
|
|
+ $gender = input('gender','all');
|
|
|
+ if($gender != 'all'){
|
|
|
+ $where['user.gender'] = $gender;
|
|
|
+ }
|
|
|
+
|
|
|
+ //排除黑名单的
|
|
|
+ $where_black = [];
|
|
|
+ $black_ids = Db::name('user_black')->where(['uid'=>$this->auth->id])->column('black_uid');
|
|
|
+ if(!empty($black_ids)){
|
|
|
+ $where_black['user.id'] = ['NOTIN',$black_ids];
|
|
|
+ }
|
|
|
+
|
|
|
+ //匹配一个
|
|
|
+ $result = $this->pipei_action($redis_ids,$where,$where_black);
|
|
|
+
|
|
|
+ //匹配不到,移除防重复
|
|
|
+ if(!$result) {
|
|
|
+ Cache::rm($user_id_redis);
|
|
|
+ $redis_ids = [];
|
|
|
+ $result = $this->pipei_action($redis_ids,$where,$where_black);
|
|
|
+ }
|
|
|
+ // 追加一个防重复
|
|
|
+ if($result){
|
|
|
+ if($redis_ids) {
|
|
|
+ $redis_ids[] = $result;
|
|
|
+ } else {
|
|
|
+ $redis_ids = [$result];
|
|
|
+ }
|
|
|
+ Cache::set($user_id_redis,json_encode($redis_ids));
|
|
|
+
|
|
|
+ //设置次数
|
|
|
+ $second = strtotime(date('Y-m-d'))+86400 - time();
|
|
|
+ Cache::set($times_limit_redis,$user_times+1,$second);
|
|
|
+ }else{
|
|
|
+ Cache::rm($user_id_redis);
|
|
|
+ }
|
|
|
+
|
|
|
+ $this->success(1,$result);
|
|
|
+ }
|
|
|
+
|
|
|
+ private function pipei_action($redis_ids,$where,$where_black){
|
|
|
+ $where_op = [];
|
|
|
+ if(!empty($redis_ids)){
|
|
|
+ $where_op['user.id'] = ['NOTIN',$redis_ids];
|
|
|
+ }
|
|
|
+
|
|
|
+ $result = Db::name('user')->alias('user')
|
|
|
+ ->join('user_active active' ,'user.id = active.user_id','LEFT')
|
|
|
+ ->where($where)
|
|
|
+ ->where($where_op)
|
|
|
+ ->where($where_black)
|
|
|
+ ->orderRaw('rand()')
|
|
|
+ ->value('user.id');
|
|
|
+
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function test(){
|
|
|
+ //缓存,防重复
|
|
|
+ $user_id = $this->auth->id;
|
|
|
+ $user_id_redis = 'pipei_repeat_'.$user_id;
|
|
|
+ $redis_ids = json_decode(Cache::get($user_id_redis),true);
|
|
|
+ dump($redis_ids);
|
|
|
+
|
|
|
+
|
|
|
+ $times_limit_redis = 'pipei_times_limit_'.$user_id;
|
|
|
+ $user_times = Cache::get($times_limit_redis) ?: 0;
|
|
|
+ dump($user_times);
|
|
|
+ }
|
|
|
+ public function testrm(){
|
|
|
+ $user_id = $this->auth->id;
|
|
|
+ $user_id_redis = 'pipei_repeat_'.$user_id;
|
|
|
+ Cache::rm($user_id_redis);
|
|
|
+
|
|
|
+ $times_limit_redis = 'pipei_times_limit_'.$user_id;
|
|
|
+ Cache::rm($times_limit_redis);
|
|
|
+ }
|
|
|
+
|
|
|
}
|