微信关注后确定推荐关系

基于微捷cms的开发

1.生成有推荐关系的二维码

//推广Action
	public function tuiguang()
	{
		//推广图片
        $shareImg = './uploads/share/mingpian_'.$_SESSION['wap_uid'].'.jpg';
        //if( true )
        if( false == file_exists($shareImg) )
        {
            $rs = D('Share')->mptuiguangimg($_SESSION['wap_uid']);
            if( !$rs )
            {
                $this->error('生成二维码失败');
            }
        }
        $this->assign('shareImg',$shareImg);
		$this->display();
	}

	//生成二维码的Model
	<?php
	class ShareModel extends Model
	{
		//生成二维码图片
		public function mptuiguangimg($uid)
		{
			set_time_limit(0);
			$user_info = M('userinfo')->where(array('id'=>$uid))->find();
			$nickname = $user_info['truename']?$user_info['truename']:$user_info['nickname'];
			$user_image = $user_info['headimgurl'];
			//echo "<img src='{$user_image}'>";die;
			$dst_path = './Public/erwei/bg.jpg';
			//获取头像图片的高和宽
			list($src_w, $src_h) = getimagesize($user_image);
			$imgWidth = '140';
			$imgHeight = '140';
			//改变图片大小
			$image_news = imagecreatetruecolor($imgWidth, $imgHeight);
			$user_image = imagecreatefromjpeg($user_image);
			imagecopyresized($image_news, $user_image, 0, 0, 0, 0,$imgWidth,$imgHeight,$src_w, $src_h);
			$erwema_url=$this->getUserQrcode($uid);
			//改变图片大小
			$imgWidth_ewm = '250';
			$imgHeight_ewm = '250';
			list($ewm_w, $ewm_h) = getimagesize($erwema_url);
			$image_news_ewm = imagecreatetruecolor($imgWidth_ewm, $imgHeight_ewm);
			$erwema_url = imagecreatefromjpeg($erwema_url);
			imagecopyresized($image_news_ewm, $erwema_url, 0, 0, 0, 0,$imgWidth_ewm,$imgHeight_ewm,$ewm_w, $ewm_h);
			$dst = imagecreatefromstring(file_get_contents($dst_path));
			imagecopymerge($dst, $image_news, 122, 15, 0, 0, $imgWidth, $imgHeight, 100);//头像定位
			imagecopymerge($dst, $image_news_ewm, 175, 572, 0, 0, 250, 250, 100);//二维码
			//打上文字
			$font = './Public/erwei/msyh.ttf';//字体
			$black = imagecolorallocate($dst, 255, 255, 255);//字体颜色
			imagefttext($dst,20,0,340,70, $black, $font, $nickname);
			//输出图片
			list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path);
			$filename_mp = './uploads/share/mingpian_'.$uid;
			$user_type='.jpg';
			switch ($dst_type) {
				case 1://GIF
					header('Content-Type: image/gif');
					$user_type='.gif';
					imagegif($dst,$filename_mp.'.gif');
					break;
				case 2://JPG
					//header('Content-Type: image/jpeg');
					$user_type='.jpg';
					imagejpeg($dst,$filename_mp.'.jpg');
					break;
				case 3://PNG
					header('Content-Type: image/png');
					$user_type='.png';
					imagepng($dst,$filename_mp.'.png');
					break;
				default:
					break;
			}
			imagedestroy($dst);
			imagedestroy($image_news_ewm);
			imagedestroy($image_news);
			return $filename_mp.$user_type;
		}
		
		//获取有推广关系的关注二维码
		private function getUserQrcode($uid)
		{
			//写入数据库
			$saveImg = './uploads/share/u_'.$uid.'.jpg';
			if( false !== file_exists($saveImg) )
			{
				return $saveImg;
			}
			$rs = M('wxuser_recognition')->where( array('scene_id'=>$uid) )->getField('code_url');
			if( !$rs )
			{
				$scene_id = $uid;
				$api = M('Diymen_set')->where(array('token'=>session('token')))->find();
				$url_get='https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$api['appid'].'&secret='.$api['appsecret'];
				$json=json_decode(curlGet($url_get));
				//dump($json);die;
				$url='https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.$json->access_token;
				if( true )
				{
					$data ='{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": '.$scene_id.'}}}';
				}
				else
				{
					$data ='{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": '.$scene_id.'}}} ';
				}
				
				$p = json_decode(api_group_increment($url,$data));
				if( !$p->ticket )
				{
					return false;
				}
				else
				{
					$data = array();
					$data['scene_id'] = $uid;
					$data['code_url'] = $p->ticket;
					$data['status'] = 1;
					$data['codetype'] = 2;
					$data['createtime'] = time();
					M('wxuser_recognition')->add( $data );
					$urlImg = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".$p->ticket;
					saveimg($urlImg,$saveImg);
					return $saveImg;
				}
			}
			else
			{
				$urlImg = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".$rs;
				saveimg($urlImg,$saveImg);
				return $saveImg;
			}
		}
	}

//效果如


空白为微信用户头像和关注二维码


2.同关注事件写入微信用户临时表(已锁定关系)

CREATE TABLE `tp_userwx` (
  `id` int(30) NOT NULL AUTO_INCREMENT,
  `wecha_id` varchar(60) NOT NULL COMMENT '微信用户wecha_id',
  `token` varchar(60) NOT NULL,
  `sex` tinyint(1) NOT NULL COMMENT '性别',
  `address` varchar(100) NOT NULL COMMENT '地址',
  `nickname` varchar(32) NOT NULL COMMENT '昵称',
  `city` varchar(32) NOT NULL COMMENT '城市',
  `province` varchar(32) NOT NULL COMMENT '省',
  `country` varchar(32) NOT NULL COMMENT '乡镇',
  `headimgurl` varchar(200) NOT NULL COMMENT '头像',
  `language` varchar(32) NOT NULL COMMENT '语言',
  `add_time` int(11) NOT NULL COMMENT '添加时间',
  `pid` int(11) NOT NULL COMMENT '父级用户的id',
  `subscribe_time` varchar(32) NOT NULL COMMENT '关注时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `wecha_id` (`wecha_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;


关注事件触发

if ('subscribe' == $data['Event'])
        {
            M('userinfo') -> where(array('wecha_id' => $this -> data['FromUserName'])) -> save(array('subscribe'=>1));
            $this->requestdata('follownum');
            $this->behaviordata('Subscribe', '');
            //$this -> adddUserInfo();//注册新会员 userinfo
            //通知推荐人
            //$this->noticeTuijianren($data['FromUserName']);
            //M('userinfo') -> where(array('wecha_id' => $this -> data['FromUserName'])) -> save(array('subscribe'=>1));
            if(strtolower(substr($data['EventKey'], 0, 8)) == 'qrscene_'){
                $scene_id=substr($data['EventKey'],8);
                //自动写入临时表
                $_SESSION['tj_uid'] = $scene_id;
                //$this->test($_SESSION['tj_uid']);
                $this->addUserwx();
            }
            else
            {
                //自动写入临时表
                $this->addUserwx();
            }
		}




	function addUserwx()
    {
        $openid = $this -> data['FromUserName'];
        $access_token = $this -> _getAccessToken();
        //是否临时表已有数据
        $map = array();
        $map['wecha_id'] = $openid;
        $wxuserInfo = M('userwx')->where($map)->find();
        //用户是否存在
        if( $wxuserInfo && !$wxuserInfo['wechaname'] )
        {
            $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$access_token."&openid=".$openid;
            $userinfo = curlGet( $url );
            $jsongp=json_decode($userinfo);
            if( $jsongp->openid )
            {
                $data = array();
                $data['wechaname'] = $jsongp->nickname;
                $data['sex'] = $jsongp->sex;
                $data['portrait'] = $jsongp->headimgurl;
                $data['nickname'] = $jsongp->nickname;
                $data['language'] = $jsongp->language;
                $data['city'] = $jsongp->city;
                $data['province'] = $jsongp->province;
                $data['country'] = $jsongp->country;
                $data['headimgurl'] = $jsongp->headimgurl;
                $data['add_time'] = time() ;
                M('userwx')->where( array('id'=>$wxuserInfo['id']) )->save($data);
            }
        }
        else
        {
            $data = array();
            $data['wecha_id'] = $openid;
            $data['token'] = 'cfxfgw1415328336';
            $data['pid'] = D('Userinfo')->getPid($_SESSION['tj_uid']);
            $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$access_token."&openid=".$openid;
            //$this->test($url);
            $userinfo = curlGet( $url );
            $jsongp=json_decode($userinfo);
            if( $jsongp->openid )
            {
                $data['wechaname'] = $jsongp->nickname;
                $data['sex'] = $jsongp->sex;
                $data['portrait'] = $jsongp->headimgurl;
                $data['nickname'] = $jsongp->nickname;
                $data['language'] = $jsongp->language;
                $data['city'] = $jsongp->city;
                $data['province'] = $jsongp->province;
                $data['country'] = $jsongp->country;
                $data['headimgurl'] = $jsongp->headimgurl;
                $data['add_time'] = time() ;
                M('userwx')->add($data);
            }
        }
    }          


3.用户注册写入会员表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值