/** * 根据关注openid从微信端更新用户资料 * @param $openid 关注者openid * @return bool */ public function updateUserByOpenid($openid) { $openid = strval($openid); if (!$openid) { return false; } $user = $this->getRow(array('openid' => $openid)); $weixin = InitPHP::getLibrarys('weixin'); //始终从微信获取资料 $accessToken = InitPHP::getMongoDao('weixinAccessToken', 'mongo/bi'); $access_token = $accessToken->getAccessToken(); $wxuser = []; if ($access_token) { //获取到关注用户的信息 $wxuser = $weixin->getUserinfoByAccessToken($access_token, $openid); if (!$wxuser || !is_array($wxuser)) { $wxuser = []; } } $now = time(); $tmpuser = ['openid' => $openid, 'update_time' => $now]; $tmpuser = array_merge($wxuser, $tmpuser); if (!$user || !is_array($user)) { //未关注用户,重新生成用户记录 $tmpuser['create_time'] = $now; return $this->add($tmpuser); } //已关注用户只需要更新用户资料即可 return $this->mupdate($tmpuser, ['openid' => $openid]); }
/** * demo */ public function mongo() { $userMongo = InitPHP::getMongoDao('member'); //print_r($userMongo->getMembers()) . '<br>'; //print_r($userMongo->getMemberCount()) . '<br>'; print_r($userMongo->updateMember()); var_dump($userMongo->insert(array('subscribe' => 1, 'create_time' => time()))); }
/** * 获取微信jsapi_ticket * @return string | null */ public function getJsapiTicket() { $accessMongo = InitPHP::getMongoDao('weixinAccessToken', 'mongo/bi'); $access_token = $accessMongo->getAccessToken(); if (!$access_token) { return null; } $res = $this->getRow(array(), array('create_time' => -1)); if ($res && is_array($res)) { //记录存在,首先判断是否过期 if (time() - $res['create_time'] > $res['expires_in'] - 1000) { //已经过期了,需要重新拉取 return $this->refreshJsapiTicket($access_token); } return $res['jsapi_ticket']; } //记录不存在,从微信端拉取 return $this->refreshJsapiTicket($access_token); }
/** * 客户端请求返回参数 * @param int code * @param string $message * @param array $data */ protected function outputCom($code, $message = '', $data = array()) { $json = array('code' => $code, 'msg' => $message, 'data' => $data); //将返回参数保存到日志中 $visitMongo = InitPHP::getMongoDao('visit', 'mongo/bi'); $visitMongo->updateReturn($json, $this->log_visit_id); header("Content-type: application/json; charset=utf-8"); if ($this->p('__debug')) { //传递debug参数 显示带换行的格式 print_r($json); } else { echo json_encode($json); } exit; //$this->controller->json_return($json); }