success('请求成功'); } /** * 搜索 * @param string $min_age 最小年龄 * @param string $max_age 最大年龄 * @param string $min_height 最小身高 * @param string $max_height 最大身高 * @param string $region_province 家乡所在省份id * @param string $region_city 家乡所在市区id * @param string $province 所在城市省份id * @param string $city 所在城市市区id * @param string $education 学历 * @param string $gender 男女1男0女 */ public function search(){ $where = [ 'status'=>'normal', 'id'=>['neq',$this->auth->id] ]; $where['height']=['Between',[input('min_height'),input('max_height')]]; if(input('region_province')){ $where['region_province']=input('region_province'); $where['region_city']=input('region_city'); } if(input('province')){ $where['province']=input('province'); $where['city']=input('city'); } input('education')?$where['education']=input('education'):''; if(input('gender')!='')$where['gender']=input('gender'); //屏蔽用户 $shield = Shield::where(['uid'=>$this->auth->id])->field('nid')->select(); $shieldArr = []; foreach ($shield as $v){ array_push($shieldArr,$v['nid']); } if($shieldArr){ $data = User::where($where) ->where(['id_authentication'=>1]) ->whereNotIn('id',$shieldArr) ->field('id,avatar,height,region_province,region_city,province,city,birthday,education,nickname,gender') ->select(); }else{ $data = User::where($where) ->where(['id_authentication'=>1]) ->field('id,avatar,height,region_province,region_city,province,city,birthday,education,nickname,gender') ->select(); } foreach ($data as $k=>&$v){ $v['birthday'] = getAge($v['birthday']); if($v['birthday']input('max_age')){ unset($data[$k]); } } $data = array_values($data); $this->success('',$data); } /** * 搜索内容详情 * @ApiMethod (POST) * @param string $nid 解锁用户id */ public function searchDetails(){ $where = [ 'uid'=>$this->auth->id, 'nid'=>input('nid') ]; $res = User::where('id',input('nid')) ->with('userObject.education,education,marriedtime') ->find(); $unlockprogress = Unlockprogress::where($where)->find(); if($unlockprogress){ $res['unlockprogress'] =$unlockprogress['status']; }else{ $res['unlockprogress'] =0; } $res['birthday'] = getAge($res['birthday']); $res['province'] = Area::where('id',$res['province'])->value('name'); $res['city'] = Area::where('id',$res['city'])->value('name'); $res['area'] = Area::where('id',$res['area'])->value('name'); Like::where($where)->where('type',1)->find()?$res['like']=1:$res['like']=0; $u_user = user::get(['id'=>$this->auth->id]); if($u_user&&$u_user['constellation']&&$u_user['birthday']&&$u_user['height']&&$u_user['marriage']&&$u_user['children']&&$u_user['marriedtime']&&$u_user['education']&&$u_user['school']&&$u_user['house']&&$u_user['car']&&$u_user['father_work']&&$u_user['mother_work']&&$u_user['brother']){ $res['is_about_yourself'] = 1; }else{ $res['is_about_yourself'] = 0; } $UserObject = UserObject::get(['uid'=>input('nid')]); if($UserObject&&$UserObject['constellation']&&$UserObject['min_age']&&$UserObject['min_height']&&$UserObject['education']&&$UserObject['car']&&$UserObject['house']&&$UserObject['marry']&&$UserObject['children']&&$UserObject['locality']){ $res['is_about_object'] = 1; }else{ $res['is_about_object'] = 0; } if($res)$this->success('',$res); } /** * 解锁进度页 * @ApiMethod (POST) * @param string $nid 解锁用户id * @param string $type 解锁类型1照片2资料3微信 */ public function unlockProgress(){ $type = input('type'); $uid = $this->auth->id; if($type > 1) { $user = Unlockprogress::where(['uid'=>$this->auth->id,'nid'=>input('nid')])->find(); if(isset($user)){ if($user['status'] == input('type')){ $this->error('无需重复解锁'); } }else{ $this->error('非法操作'); } } if($type == 1){ $cost = config('site.expenditure_grain')['解锁用户照片']; if($cost>$this->auth->money)$this->error('余额不足'); Db::startTrans(); try { $data = [ 'uid'=>$this->auth->id, 'nid'=>input('nid'), 'status'=>1 ]; Unlockprogress::insert($data); user::money(-$cost,$uid,'解锁用户照片'); Db::commit(); $this->success('解锁照片成功'); }catch (Exception $e){ Db::rollback(); $this->error($e); return false; } }elseif($type == 2){ $cost = config('site.expenditure_grain')['解锁用户资料']; if($cost>$this->auth->money)$this->error('余额不足'); Db::startTrans(); try { $update = ['status'=>2]; $user->save($update); $look = [ 'uid'=>$this->auth->id, 'nid'=>input('nid'), 'type'=>2, 'status'=>0 ]; Like::insert($look); user::money(-$cost,$uid,'解锁用户资料'); Db::commit(); $this->success('解锁资料成功'); }catch (Exception $e){ Db::rollback(); $this->error($e); return false; } }elseif($type == 3){ $cost = config('site.expenditure_grain')['申请认识支出']; if($cost>$this->auth->money)$this->error('余额不足'); Db::startTrans(); try { $update = ['status'=>3]; $user->save($update); $apply=[ 'uid'=>$this->auth->id, 'nid'=>input('nid'), 'status'=>0, 'grain'=>$cost ]; Apply::insert($apply); user::money(-$cost,$uid,'申请认识支出'); Apply::wxMessage(input('nid'),Date('Y-m-d H:i:s')); Db::commit(); $this->success('解锁成功'); }catch (Exception $e){ Db::rollback(); $this->error($e); return false; } } } /** * 轮播图 */ public function slideshow(){ $this->success('',Banner::all()); } /** * 首页推荐会员 * @ApiMethod (POST) * @param string $gender 性别 * @param string $city 城市 */ public function recommend(){ $uid = $this->auth->id; $city = $this->request->post('city'); if($this->auth->gender){ $gender = 0; }else{ $gender = 1; } //屏蔽用户 $shield = Shield::where(['uid'=>$uid])->field('nid')->select(); $shieldArr = []; foreach ($shield as $v){ array_push($shieldArr,$v['nid']); } $where = [ 'gender'=>input('gender',$gender), 'is_recommend'=>1 ]; if($city)$where['city']=$city; if($shieldArr){ $recommenduser = user::where($where)->whereNotIn('id',$shieldArr)->order('recommend_weight','desc')->paginate(3); }else{ $recommenduser = user::where($where)->order('recommend_weight','desc')->paginate(3); } foreach ($recommenduser as $k=>&$v){ $v['birthday'] = $v['birthday']?getAge($v['birthday']):''; Like::get(['uid'=>$uid,'nid'=>$v['id'],'type'=>1])?$v['is_like']=1:$v['is_like']=0; Apply::get(['uid'=>$uid,'nid'=>$v['id'],'status'=>['in','1,2']])?$v['is_apply']=1:$v['is_apply']=0; $v['province'] = $v['province']?Area::where('id',$v['province'])->value('name'):''; $v['city'] = $v['city']?Area::where('id',$v['city'])->value('name'):''; $v['area'] = $v['area']?Area::where('id',$v['area'])->value('name'):''; } $this->success('',$recommenduser); } /** * 会员详情 * @ApiMethod (POST) * @param string $id 会员id */ public function recommendUserDetail(){ $recommenduser = user::where('id',input('id')) ->with('userObject.education,education,marriedtime') ->find(); $recommenduser['birthday'] = $recommenduser['birthday']?getAge($recommenduser['birthday']):0; $recommenduser['photo'] = explode(',',$recommenduser['photo']); $recommenduser['province'] = Area::where('id',$recommenduser['province'])->value('name'); $recommenduser['city'] = Area::where('id',$recommenduser['city'])->value('name'); $recommenduser['area'] = Area::where('id',$recommenduser['area'])->value('name'); $recommenduser['age'] = $recommenduser['birthday']; Like::where([ 'uid'=>$this->auth->id, 'nid'=>input('id') ])->where('type',1)->find()?$recommenduser['like']=1:$recommenduser['like']=0; $u_user = user::get(['id'=>$this->auth->id]); if($u_user&&$u_user['constellation']&&$u_user['birthday']&&$u_user['height']&&$u_user['marriage']&&$u_user['children']&&$u_user['marriedtime']&&$u_user['education']&&$u_user['school']&&$u_user['house']&&$u_user['car']&&$u_user['father_work']&&$u_user['mother_work']&&$u_user['brother']){ $recommenduser['is_about_yourself'] = 1; }else{ $recommenduser['is_about_yourself'] = 0; } $UserObject = UserObject::get(['uid'=>$this->auth->id]); if($UserObject&&$UserObject['constellation']&&$UserObject['min_age']&&$UserObject['min_height']&&$UserObject['education']&&$UserObject['car']&&$UserObject['house']&&$UserObject['marry']&&$UserObject['children']&&$UserObject['locality']){ $recommenduser['is_about_object'] = 1; }else{ $recommenduser['is_about_object'] = 0; } //查看 $look = Like::get(['uid'=>$this->auth->id,'nid'=>input('id')]); if(!$look){ $look = [ 'uid'=>$this->auth->id, 'nid'=>input('id'), 'type'=>2, 'status'=>0 ]; Like::insert($look); } Apply::get(['nid'=>$recommenduser['id'],'uid'=>$this->auth->id])?$recommenduser['is_user_wx']=1:$recommenduser['is_user_wx']=0; //发送微信模板消息 Apply::wxVisitorMessage($u_user['username'],input('id'),Date('Y-m-d H:i:s')); $this->success('',$recommenduser); } /** * 喜欢 * @ApiMethod (POST) * @param string $nid 喜欢用户id */ public function like(){ $uid = $this->auth->id; if($this->auth->score > 0){ $data = [ 'uid'=>$uid, 'nid'=>input('nid'), 'type'=>1 ]; $user = Like::where($data)->find(); if($user)$this->error('您已喜欢该用户'); User::score(-1,$uid,'喜欢用户'); if(Like::insert($data)){ //查询是否喜欢我 $mutually = [ 'uid' => input('nid'), 'nid' => $uid ]; $mutually_data = Like::get($mutually); if($mutually_data){ $like_mutually = [ 'uid'=>$uid, 'nid'=>input('nid') ]; LikeMutually::create($like_mutually); $like_mutually2 = [ 'uid'=>input('nid'), 'nid'=>$uid ]; LikeMutually::create($like_mutually2); } $this->success('已喜欢'); }else{ $this->error('系统异常'); } }else{ $this->error('喜欢额度不足'); } } /** * 解锁微信 * @ApiMethod (POST) * @param (name="id",description='解锁用户id') */ public function unlockWx(){ $cost = config('site.expenditure_grain')['申请认识支出']; if($cost>$this->auth->money)$this->error('余额不足'); $apply_=Apply::where(['nid'=>input('id'),'status'=>0])->find(); $apply_?$this->error('您已申请认识'):''; Db::startTrans(); try { $apply=[ 'uid'=>$this->auth->id, 'nid'=>input('id'), 'status'=>0, 'grain'=>$cost ]; Apply::insert($apply); user::money(-$cost,$this->auth->id,'申请认识支出'); Apply::wxMessage(input('id'),Date('Y-m-d H:i:s')); Db::commit(); $this->success('解锁成功'); }catch (Exception $e){ Db::rollback(); $this->error($e); return false; } } /** * 举报 * @ApiMethod (POST) * @param string $nid 举报用户id * @param string $content 举报内容 * @param string $image 举报图片 */ public function report(){ $rule = [ 'content|举报内容'=>'require', 'image|图片'=>'require', 'nid|举报用户'=>'require' ]; $data = $this->_validate($rule); $data['uid'] = $this->auth->id; $res = Report::insert($data); if($res){ $this->success('提交成功'); } $this->error('提交失败'); } /** * 屏蔽 * @ApiMethod (POST) * @param string $type 1屏蔽2解除屏蔽 * @param string $nid 屏蔽用户id(type为1时传) * @param string $id id(type为2时传) */ public function shield(){ if(input('type') == 1){ $data = [ 'uid'=>$this->auth->id, 'nid'=>input('nid') ]; Shield::where($data)->find()?$this->error('您已屏蔽该用户,无需重复操作'):Shield::insert($data); $this->success('操作成功'); }else{ Shield::where('id',input('id'))->delete()?$this->success('解除成功'):$this->error('解除失败'); } } /** * 申请认识你弹窗 * @ApiReturnParams (name='count',description='会员个数') */ public function applyList(){ $data = Apply::all(['nid'=>$this->auth->id,'n_is_read'=>0],['uidinfo']); $count = count($data); $this->success('',['data'=>$data,'count'=>$count]); } }