155 lines
5.4 KiB
PHP
155 lines
5.4 KiB
PHP
|
|
<?php
|
||
|
|
namespace app\api\wxapi\wxmsg;
|
||
|
|
|
||
|
|
use app\api\wxapi\Base;
|
||
|
|
use app\api\wxapi\request\UnionIDRequest;
|
||
|
|
use app\api\wxapi\WxClient;
|
||
|
|
use app\api\wxapi\pay\WxPayConfig;
|
||
|
|
use app\api\wxapi\request\AccessTokenRequest;
|
||
|
|
use think\Db;
|
||
|
|
use app\common\library\Auth;
|
||
|
|
|
||
|
|
/* 扫二维码
|
||
|
|
* */
|
||
|
|
class Subscribe extends Base{
|
||
|
|
|
||
|
|
public $BaseObject;
|
||
|
|
|
||
|
|
protected $auth = null;
|
||
|
|
|
||
|
|
public function run(){
|
||
|
|
/*查SQL*/
|
||
|
|
$FromUserNameOpenID=$this->BaseObject->FromUserName;
|
||
|
|
|
||
|
|
if($this->BaseObject->Event=='subscribe'){
|
||
|
|
$access_token_config=DB::name('config')->where(['name'=>'access_token',])->find();
|
||
|
|
$access_token=$access_token_config['value'];
|
||
|
|
|
||
|
|
$WxPayConfig = new WxPayConfig();
|
||
|
|
$WxClient =new WxClient();
|
||
|
|
$WxClient->appID=$WxPayConfig->GetAppId();
|
||
|
|
$WxClient->appsecret=$WxPayConfig->GetAppSecret();
|
||
|
|
|
||
|
|
if(time()>$access_token_config['ctime']){
|
||
|
|
$AccessTokenRequest=new AccessTokenRequest();
|
||
|
|
$AccessTokenRequest->setAppId($WxClient->appID);
|
||
|
|
$AccessTokenRequest->setSecret($WxClient->appsecret);
|
||
|
|
|
||
|
|
$WxClient->setTypeCurl(WxClient::TYPE_CURL_GET);
|
||
|
|
$AccessTokenRequest=$WxClient->execute($AccessTokenRequest);
|
||
|
|
$access_token=$AccessTokenRequest->access_token;
|
||
|
|
|
||
|
|
DB::name('config')->where(['name'=>'access_token',])->update(['value'=>$access_token,'ctime'=>time()+7200,]);
|
||
|
|
}
|
||
|
|
|
||
|
|
$UnionIDRequest=new UnionIDRequest();
|
||
|
|
$UnionIDRequest->setAccessToken($access_token);
|
||
|
|
$UnionIDRequest->setOpenid($FromUserNameOpenID);
|
||
|
|
$UnionIDRequestResult=$WxClient->execute($UnionIDRequest);
|
||
|
|
|
||
|
|
//echo $FromUserNameOpenID;
|
||
|
|
//print_r($UnionIDRequestResult);
|
||
|
|
|
||
|
|
$openid = $UnionIDRequestResult->openid;
|
||
|
|
|
||
|
|
$pass = '123456abc';
|
||
|
|
$nickname = $UnionIDRequestResult->nickname;
|
||
|
|
$sex = $UnionIDRequestResult->sex;
|
||
|
|
$headimgurl = $UnionIDRequestResult->headimgurl;
|
||
|
|
$wx_unionId=$UnionIDRequestResult->unionid;
|
||
|
|
$phone = time();
|
||
|
|
|
||
|
|
$birthday = date('Y-m-d',time());
|
||
|
|
|
||
|
|
$system = 'wx'; //系统,android或ios
|
||
|
|
$channel = 'wx'; //渠道
|
||
|
|
|
||
|
|
$this->auth = Auth::instance();
|
||
|
|
|
||
|
|
$user = DB::name('users')->field('id,wx_openid,wx_unionId,temp_wx_openid')->where('wx_unionId',$wx_unionId)->find();
|
||
|
|
if(isset($user['id'])){
|
||
|
|
if(!strlen($user['temp_wx_openid'])){
|
||
|
|
$up=[];
|
||
|
|
$up['temp_wx_openid']=$openid;
|
||
|
|
DB::name('users')->where('id',$user['id'])->update($up);
|
||
|
|
}
|
||
|
|
}else{
|
||
|
|
$ret = $this->auth->register($pass,$phone,$nickname,$sex,$headimgurl,$birthday,$system,$channel);
|
||
|
|
if ($ret){
|
||
|
|
$getUserinfo = $this->auth->getUserinfo();
|
||
|
|
|
||
|
|
$up=[];
|
||
|
|
$tag_id=0;
|
||
|
|
$users_tags=[];
|
||
|
|
if($sex==1){
|
||
|
|
$tag_id=1;
|
||
|
|
}
|
||
|
|
if($sex==2){
|
||
|
|
$tag_id=3;
|
||
|
|
}
|
||
|
|
|
||
|
|
if($tag_id){
|
||
|
|
$tagsInfo=DB::name('users_tags')->field('id,tag_name,tag_color,bg_color')->where(['id'=>$tag_id,])->find();
|
||
|
|
if(isset($tagsInfo['id'])){
|
||
|
|
$users_tags[]=$tagsInfo;
|
||
|
|
$users_tags=array_values($users_tags);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
$up['users_tags']=json_encode($users_tags);
|
||
|
|
|
||
|
|
$up['wx_unionId']=$wx_unionId;
|
||
|
|
$up['phone']=$getUserinfo['id'];
|
||
|
|
DB::name('users')->where('id',$getUserinfo['id'])->update($up);
|
||
|
|
|
||
|
|
$img = $this->auth->setFilePath($headimgurl);
|
||
|
|
$res = $this->ryHand(1,$getUserinfo['id'],$getUserinfo['id'],$img);
|
||
|
|
|
||
|
|
if($res['code'] == 200){
|
||
|
|
DB::name('users')->where('id',$getUserinfo['id'])->update(['ry_uid'=>$res['userId'],'ry_token'=>$res['token'], ]);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
protected function getConfig($name = null)
|
||
|
|
{
|
||
|
|
if (!$name) {
|
||
|
|
return '';
|
||
|
|
}
|
||
|
|
$val = DB::name('config')->where('name', $name)->where('status', 1)->value('value');
|
||
|
|
return $val;
|
||
|
|
}
|
||
|
|
|
||
|
|
//融云
|
||
|
|
protected function ryHand($type,$ry_uid,$nickname='',$headimg=''){
|
||
|
|
import('RongCloud/RongCloud', VENDOR_PATH);
|
||
|
|
$AppKey = $this->getConfig('ry_app_key');
|
||
|
|
$AppSecret = $this->getConfig('ry_app_secret');
|
||
|
|
$RongSDK = new \RongCloud\RongCloud($AppKey,$AppSecret);
|
||
|
|
$user = [
|
||
|
|
'id'=> $ry_uid,
|
||
|
|
'name'=> $nickname,//用户名称
|
||
|
|
'portrait'=> $headimg //用户头像
|
||
|
|
];
|
||
|
|
if($type == 1){
|
||
|
|
$res = $RongSDK->getUser()->register($user);
|
||
|
|
|
||
|
|
}elseif($type == 2){
|
||
|
|
$res = $RongSDK->getUser()->register($user);
|
||
|
|
}else{
|
||
|
|
return ['code'=>0,'info'=>'not found type'];
|
||
|
|
}
|
||
|
|
|
||
|
|
// $update = $RongSDK->getUser()->update($user);
|
||
|
|
// $res = $RongSDK->getUser()->MuteGroups()->getList(['test1']);
|
||
|
|
return $res;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}
|