讀古今文學網 > 微信公眾平台開發:從零基礎到ThinkPHP5高性能框架實踐 > 25.5.2 同步用戶基本信息 >

25.5.2 同步用戶基本信息

同步新用戶的OpenID之後,需要將該用戶的基本信息也同步到數據庫中。同步用戶基本信息的代碼如下。


 1 public function updateInfo{
 2     $weixin = new \weixin\Wxapi;
 3 
 4      // 獲取本地用戶列表
 5     $updateUser = Db::name('user')->where('subscribe','')->limit(100)->select;
 6    
 7     if (count($updateUser) > 0){
 8         $municipalities = array("北京", "上海", "天津", "重慶", "香港", "澳門");
 9         $sexes = array("", "男", "女");
10 
11         $new = 0;
12         foreach ($updateUser as &$user) {
13             $new ++;
14             $info = $weixin->get_user_info($user['openid']);
15             // var_dump($info);
16             $data = array;
17             $data['nickname'] = str_replace("'", "", $info['nickname']);
18             $data['sex'] = $sexes[$info['sex']];
19             $data['country'] = $info['country'];
20             $data['province'] = $info['province'];
21             $data['city'] = (in_array($info['province'], $municipalities))?$info
               ['province'] : $info['city'];
22             $data['headimgurl'] = $info['headimgurl'];
23             $data['subscribe'] = $info['subscribe_time'];
24             $data['heartbeat'] = $info['subscribe_time'];
25             $data['remark'] = $info['remark'];
26             $data['tagid'] = $info['tagid_list'];
27             
28             Db::name('user')->where('openid', $user['openid'])->update($data);
       // 根據條件更新記錄
29         }
30 
31         $this->success('更新了'.$new.'個用戶','updateInfo');
32     }else{
33         $this->success('更新完成','index');
34     }
35 }
  

在上述代碼中,先獲取沒有subscribe記錄的100條微信用戶記錄,通過循環遍歷的方式,將獲取每個用戶的基本信息,並寫入數據庫。在這個過程中,對於省份字段為「北京」「上海」「天津」「重慶」「香港」或「澳門」的用戶,設置其城市字段和省份字段為同一值。

獲取完100條記錄之後,再次跳轉到當前方法中更新下一組100條用戶的信息。依此循環,直到找不到subscribe記錄為空的用戶就跳轉到用戶首頁。