首先创建标签,以下代码是创建标签
public function createTag($tagname=""){ $mp=$this->mp; // $tagname="正月初五"; $where['mp_id']=$mp['id']; $where['tag']=$tagname; $data=M('tage')->where($where)->find(); if (empty($data)) { $api="https://api.weixin.qq.com/cgi-bin/tags/create?access_token=". getAccess_token(); $arr=array(); $arr['tag']['name']=$tagname; $json=json_encode($arr,JSON_UNESCAPED_UNICODE); include APP_PATH . 'LaneWeChat/lanewechat.php'; // echo $json; // exit; $ret=Curl::callWebServer($api,$json,'post',1,0); // dump($ret); // exit; if ($ret['tag']) { $row['mp_id']=$mp['id']; $row['tag_id']=$ret['tag']['id']; $row['tag']=$ret['tag']['name']; M('tage')->add($row); } } }
创建一个标签数据表 把信息添加进去
在调用wechatrequest文件中的以下几个方法
public static function eventQrsceneSubscribe(&$request){ $scene_str=str_replace("qrscene_", "", $request['eventkey']); $ret=self::fansGroup($requestp['fromusername'],$scene_str); if ($ret===true) { $content='您是新粉丝,分配到:'.$scene_str; }else{ $content='失败了,'.json_encode($ret); } return ResponsePassive::text($request['fromusername'],$request['tousername'],$content); } private static function fansGroup($openid,$tagname){ include APP_PATH . 'LaneWeChat/lanewechat.php'; $id=$_GET['id']; $where['mp_id']=$id; $where['tag']=$tagname; $data=M('tage')->where($where)->find(); if (!empty($data)) { $api="https://api.weixin.qq.com/cgi-bin/tags/members/batchtagging?access_token=". getAccess_token(); $arr=array(); $arr=['openid_list'=>array($openid),'tagid'=>(int)$data['tag_id']]; $json=json_encode($arr); $ret=\LaneWeChat\Core\Curl::callWebServer($api,$json,'post'); if (isset($ret['errcode'])&&$ret['errcode']==0) { return true; }else{ return $ret; } }else{ return '无此标签' . $tagname; } } /** * @descrpition 扫描二维码(已关注时) * @param $request * @return array */ public static function eventScan(&$request){ // $content = '您已经关注了哦~'; // return ResponsePassive::text($request['fromusername'], $request['tousername'], $content); if (isset($request['eventkey']) && $request['ticket']) { $scene_str=$request['eventkey']; $ret=self::fansGroup($request['fromusername'],$scene_str); if ($ret===true) { $content='分配到:'.$scene_str; }else{ $content='失败了,'.json_encode($ret); } } return ResponsePassive::text($request['fromusername'],$request['tousername'],$content); }
在修改一下friends控制器里的index方法,以下为修改后的代码
public function index($tagid=''){ $mp=$this->mp; $where['mp_id']=$mp['id']; $data=M('mp_friends')->field('id,headimgurl,nickname,subscribe_time,openid,tagid_list')->where($where)->order()->select(); if (!empty($tagid)) { $where['tagid_list']=array('like',"%{$tagid}%"); } $tag=M('tage')->where($where)->select(); $this->assign('tag',$tag); $this->assign('data',$data); $this->display(); }
还有同步粉丝的方法也要修改一下
public function downfriends(){ $mp = $this ->mp; $where['mp_id'] = $mp['id']; M('mp_friends')->where($where)->delete(); include APP_PATH . 'LaneWeChat/lanewechat.php'; $ret = UserManage::getFansList(); $openids = $ret['data']['openid']; // print_r($data); $arr = array(); foreach ($openids as $value) { $row=array(); $row['openid'] = $value; $row['lang'] ='zh-CN'; $arr[]=$row; } $ret = UserManage::getManyUserInfo($arr); if(isset($ret['user_info_list'])){ $data = $ret['user_info_list']; foreach ($data as &$value) { $value['mp_id'] = $mp['id']; // $value['tagid_list'] = json_encode($value['tagid_list']); $value['tagid_list']=implode(',',$value['tagid_list']); } M('mp_friends')->addAll($data); } $this->success('同步完成',U('index')); }