首先创建标签,以下代码是创建标签
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'));
}