首页 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践全文在线阅读

《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》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记录为空的用户就跳转到用户首页。