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方法將新用戶記錄一次性插入數據庫表。