<?php /** * Created by PhpStorm. * User: Administrator * Date: 2019/1/19 * Time: 11:32 */ namespace app\portal\controller; use cmf\controller\HomeBaseController; use cmf\controller\WeChatBaseController; use EasyWeChat\Foundation\Application; use think\Db; class OpenServerController extends HomeBaseController { public function index(){ if(!isset($_GET["echostr"])){ $this->responseMsg(); }else{ $this->valid(); } } public function valid() { $echoStr = $_GET["echostr"]; echo $echoStr; exit; } public function test(){ // dump(cache('referrer')); dump(cache('aaa')); dump(cache('bcc')); dump(cache('c')); dump(cache('data_id')); exit(); dump(cache('result')); dump(cache('result1')); dump(cache('third_party_user')); dump(cache('user')); } public function responseMsg() { $conf = config('wechat_config'); $app=new Application($conf); $server = $app->server; $server->setMessageHandler(function ($message) { switch ($message->MsgType) { case 'event': switch ($message->Event) { case 'subscribe': if(empty($message->EventKey)){ return '感谢您关注我,学考君帮助您的孩子爱上阅读,快速提分! 这里有热门的教育资讯,海量的免费资源,优质的学习干货! 点击右下角【学考商城】→进入【校园团购】→选择您想要的优惠书籍,即可点击购买! 您在购买过程中有任何质疑,欢迎拨打投诉电话:15300081769 回复关键词“中华国学”有11节精彩的国学课可以听哦!'; }else{ //获取用户openid $openid=$message->FromUserName; $param=substr($message->EventKey,8); $data = explode("-",$param); $my_user_id = $data[0]; $status = $data[1]; $third_party_user = Db::name('third_party_user')->where('openid',$openid)->find(); if(!$third_party_user){ //获取用户信息 $options=config('wechat_config'); $app = new Application($options); $accessToken = $app->access_token; // EasyWeChat\Core\AccessToken 实例 $token = $accessToken->getToken(false); $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$token&openid=$openid&lang=zh_CN"; $user_data = json_decode($this->http_get($url),true); $user_id = $this->new_user($user_data,$openid,$options['app_id']); }else{ $user_id = $third_party_user['user_id']; } $new_data = [ 'my_user_id' => $my_user_id, 'status_id' => $status, ]; $this->bind($user_id,$new_data); return '感谢您关注我,学考君帮助您的孩子爱上阅读,快速提分! 这里有热门的教育资讯,海量的免费资源,优质的学习干货! 点击右下角【学考商城】→进入【校园团购】→选择您想要的优惠书籍,即可点击购买! 您在购买过程中有任何质疑,欢迎拨打投诉电话:010-57257538 回复关键词“中华国学”有11节精彩的国学课可以听哦!'; } break; case 'SCAN': //获取用户openid $openid=$message->FromUserName; $param=$message->EventKey; $data = explode("-",$param); cache(null); cache('data',$data); $my_user_id = $data[0]; $status = $data[1]; $third_party_user = Db::name('third_party_user')->where('openid',$openid)->find(); if(!$third_party_user){ //获取用户信息 $options=config('wechat_config'); $app = new Application($options); $accessToken = $app->access_token; // EasyWeChat\Core\AccessToken 实例 $token = $accessToken->getToken(false); $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$token&openid=$openid&lang=zh_CN"; $user_data = json_decode($this->http_get($url),true); $user_id = $this->new_user($user_data,$openid,$options['app_id']); }else{ $user_id = $third_party_user['user_id']; } $new_data = [ 'my_user_id' => $my_user_id, 'status_id' => $status, ]; $this->bind($user_id,$new_data); break; default: // return '收到event消息'; break; } break; case 'text': $text = '您好,欢迎关注“学考无忧”公众号。 我们致力于打造一个为广大家长和同学们提升知识视野,提高学习成绩的优质服务号,这里有热门的教育资讯,海量的免费资源,优质的学习干货,会为大家提供教辅类以及课外阅读阅读书籍,帮助同学们提高学习成绩。 真正让家长省心,孩子无忧。感谢关注。'; switch ($message->Content) { case '中华国学': $text = 'https://appLuAK2Xa13279.h5.xiaoeknow.com/content_page/eyJ0eXBlIjozLCJyZXNvdXJjZV90eXBlIjoiIiwicmVzb3VyY2VfaWQiOiIiLCJwcm9kdWN0X2lkIjoicF81Y2ZkZmZhMmJmYzcxXzZVMGl2YTZpIiwiYXBwX2lkIjoiYXBwTHVBSzJYYTEzMjc5In0'; } return $text; break; default: // return '收到其它消息'; break; } }); $response = $server->serve(); $response->send(); } private function check_signature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } } public function http_get($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); $result = curl_exec($ch); // grab URL, and print if(curl_errno($ch)){ print curl_error($ch); } curl_close($ch); return $result; } public function new_user($wechat_user,$openid,$appId) { $currentTime = time(); $ip = $this->request->ip(0, true); $userId = Db::name("user")->insertGetId([ 'create_time' => $currentTime, 'user_status' => 1, 'user_type' => 2, 'sex' => $wechat_user['sex'], 'user_nickname' => $wechat_user['nickname'], 'avatar' => $wechat_user['headimgurl'], 'last_login_ip' => $ip, 'last_login_time' => $currentTime, ]); $row=Db::name("third_party_user")->insert([ 'openid' => $openid, 'user_id' => $userId, 'third_party' => 'public', 'nickname' => $wechat_user['nickname'], 'app_id' => $appId, 'last_login_ip' => $ip, 'union_id' => '', 'last_login_time' => $currentTime, 'create_time' => $currentTime, 'login_times' => 1, 'status' => 1, 'more' => json_encode($wechat_user) ]); return $userId; } public function bind($uid,$data_id){ cache('data_id',$data_id); $data_my_user = Db::name('my_user') -> where('uid',$uid) -> find(); if($data_my_user){ //用户是否为自由人 是自由人则绑定 不是自由人判断是不是老师 if($data_my_user['status'] == 0 || $data_my_user['status'] == 1 || $data_my_user['status'] == 5 || $data_my_user['status'] == 6){ //判断跳转链接是否存在数据 存在则绑定关系 if(!empty($data_id)){ //判断上级权限是否存在 $my_user = Db::name('my_user') -> where('id',$data_id['my_user_id']) -> find(); if(empty($my_user)){ $this->error('查无此人','','',''); } if($my_user['status'] != $data_id['status_id']){ $this->error('该二维码已失效','','',''); } //判断数据是老师还是业务员 if($data_id['status_id'] == 2){ //业务员分享 更改用户身份为老师 $my_user_phone = Db::name('my_user') -> where('id',$data_id['my_user_id']) -> find(); $data_update['status'] = 3; $data_update['inviter_phone'] = $my_user_phone['phone']; $data_update['is_pro'] = 1; $data_update['pid'] = $my_user_phone['id']; $data_update['bind_time'] = time(); $data_update['bind_status'] = 1; Db::name('my_user') -> where('uid',$uid) -> update($data_update); }elseif ($data_id['status_id'] == 3){ //老师分享 更改用户身份为学生 cache('aaa','SSSSSS'); $my_user_phone = Db::name('my_user') -> where('id',$data_id['my_user_id']) -> find(); cache('bbb','######'); $data_update['status'] = 4; $data_update['inviter_phone'] = $my_user_phone['phone']; $data_update['is_pro'] = 0; $data_update['pid'] = $my_user_phone['id']; $data_update['bind_time'] = time(); $data_update['bind_status'] = 1; Db::name('my_user') -> where('uid',$uid) -> update($data_update); } } } /*else{ //判断跳转链接是否存在数据 if(!empty($data_id['status_id'])){ //判断上级权限是否存在 $my_user = Db::name('my_user') -> where('id',$data_id['my_user_id']) -> find(); if(empty($my_user)){ $this->error('查无此人','','',''); } if($my_user['status'] != $data_id['status_id']){ $this->error('该二维码已失效','','',''); } //判断用户是不是老师 if($data_my_user['status'] == 3){ //是老师则判断老师绑定状态 if($data_my_user['bind_status'] = 2){ //判断是否为业务员分享的链接 if($data_id['status_id'] == 2){ //是业务员分享则更新老师的pid $my_user_phone = Db::name('my_user') -> where('id',$data_id['my_user_id']) -> find(); $data_update['pid'] = $my_user_phone['id']; $data_update['bind_time'] = time(); $data_update['bind_status'] = 1; Db::name('my_user') -> where('uid',$uid) -> update($data_update); } } } } }*/ }else{ //判断跳转链接是否存在数据 如果不存在添加一条自由人用户 if(!empty($data_id)){ //判断上级权限是否存在 $my_user = Db::name('my_user') -> where('id',$data_id['my_user_id']) -> find(); if(empty($my_user)){ $this->error('查无此人','','',''); } if($my_user['status'] != $data_id['status_id']){ $this->error('该二维码已失效','','',''); } //判断数据是老师还是业务员 if($data_id['status_id'] == 2){ //业务员分享 添加老师 $my_user_phone = Db::name('my_user') -> where('id',$data_id['my_user_id']) -> find(); $data_inser['status'] = 3; $data_inser['uid'] = $uid; $data_inser['inviter_phone'] = $my_user_phone['phone']; $data_inser['create_time'] = time(); $data_inser['is_pro'] = 1; $data_inser['pid'] = $my_user_phone['id']; $data_inser['bind_time'] = time(); $data_inser['bind_status'] = 1; Db::name('my_user') -> insert($data_inser); }elseif ($data_id['status_id'] == 3){ //老师分享 添加学生 $my_user_phone = Db::name('my_user') -> where('id',$data_id['my_user_id']) -> find(); $data_inser['status'] = 4; $data_inser['uid'] = $uid; $data_inser['inviter_phone'] = $my_user_phone['phone']; $data_inser['create_time'] = time(); $data_inser['is_pro'] = 0; $data_inser['pid'] = $my_user_phone['id']; $data_inser['bind_time'] = time(); $data_inser['bind_status'] = 1; Db::name('my_user') -> insert($data_inser); } }else{ $data_inser['status'] = 0; $data_inser['uid'] = $uid; $data_inser['create_time'] = time(); $data_inser['is_pro'] = 0; Db::name('my_user') -> insert($data_inser); } } } }