25.5.1 同步用户关注列表
对于之前关注的用户,在系统开发完成之后,需要将其同步到系统中。同步用户列表的代码如下。
1 public function updateList{
2 // 获取微信用户列表
3 $weixin = new \weixin\Wxapi;
4 $result = $weixin->get_user_list;
5
6 // 获取本地用户列表
7 $openidlist = Db::name('user')->column('openid');
8 // dump($openidlist);
9
10 // 计算未更新用户列表
11 $intersection = array_diff($result["data"]["openid"], $openidlist);
12
13 // 同步入库
14 $data = array;
15 foreach ($intersection as &$openid) {
16 $data = array('openid'=>$openid);
17 }
18 $insertresult = Db::name('user')->insertAll($data);
19
20 $this->success('更新了'.count($intersection).'个用户','index');
21 }
在上述代码中,先获取微信用户列表,该接口中使用了递归方式,当用户数超过1万个时,再次调用下一组1万个用户的OpenID列表,以此类推。
接下来获取当前系统中存储的用户OpenID列表,并使用array_diff函数计算出系统中未存储的用户OpenID列表。
最后使用Db类的insertAll方法将新用户记录一次性插入数据库表。