Files
mier-php/application/api/wxapi/wxmsg/Subscribe.php
2025-08-11 10:22:05 +08:00

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;
}
}