/**
* 保存用户信息的方法
* @param $wxaUserData
* @param $regFromGh 表示是否从公众号进行注册
*/
public function regWxaUser($wxaUserData,$regFromGh = false)
{
$value = $wxaUserData[unionId];
$key = getCacheKey(redis_key.cache_key.zset_list.lock) . $value;
$newExpire = RedisHelper::getLock($key);
$data = $this->storeWxaUser($wxaUserData,$regFromGh);
RedisHelper::releaseLock($key, $newExpire);
return $data;
}
/**
* 保存信息
* @param $wxaUserData
* @return mixed
*/
public function storeWxaUser($wxaUserData,$regFromGh = false)
{
$wxUnionId = $wxaUserData[unionId];
if (!$user = $this->getByWxUnionId($wxUnionId)) {
$getAccountDataStartTime = time();
//这里是因为需要统一账户获取uid,所以这个是用户中心的接口,如果没有这个流程,则直接使用数据
if($accountData = AccountCenterHelper::regWxaUser($wxaUserData)){
$getAccountDataEndTime = time();
$accountRegTime = $getAccountDataEndTime - $getAccountDataStartTime;
error_log("reg user spend time is ===================>" . $accountRegTime);
$user = [
uid => $accountData[uid],
user_name => $accountData[user_name],
nick_name => $wxaUserData[nickName],
sex => $accountData[sex],
wx_union_id => $accountData[wx_union_id],
avatar => isset($accountData[avatar])?$accountData[avatar]:"",
from_appid => $accountData[from_appid],
province => $wxaUserData[province],
city => $wxaUserData[city],
country => $wxaUserData[country],
openid => $wxaUserData[openId],
wx_header => isset($wxaUserData[avatarUrl])?$wxaUserData[avatarUrl]:"",
gh_openid => $regFromGh?$wxaUserData[openId]:"",
];
error_log("insert data=============>" . json_encode($user));
$user = $this->store($user);
$regApiUserEndTime = time();
error_log(" reg api user spend time================>" . ($regApiUserEndTime - $getAccountDataEndTime));
error_log(" after insert data=============>" . json_encode($user));
}
}else{
if(!$user[wx_header]){
$updateData = [
id => $user[id],
uid => $user[uid],
wx_header => $wxaUserData[avatarUrl],
];
$this->update($updateData);
}
//同步用户的openid
if($wxaUserData[openId] != $user[openid]){
$updateData = [
id => $user[id],
uid => $user[uid],
openid => $wxaUserData[openId],
];
$this->update($updateData);
}
}
$data[uid] = $user[uid];
$data[unionid] = $wxUnionId;
return $data;
}
暂时没有评论,来抢沙发吧~