public static function saveWeChatUser($user) { $oldUser = self::getWeChatUserByOpenId($user->openId); if (isset($oldUser)) { $oldUser->unionId = $user->unionId; $oldUser->nickname = $user->nickname; $oldUser->sex = $user->sex; $oldUser->city = $user->city; $oldUser->province = $user->province; $oldUser->country = $user->country; $oldUser->subscribeTime = $user->subscribeTime; $oldUser->subscribe = $user->subscribe; $oldUser->headImgUrl = $user->headImgUrl; $oldUser->openId = $user->openId; $oldUser->save(); $mcdKey = 'm:weChatUserService?openId=' . $user->openId; Wk::redis()->delete($mcdKey); return true; } else { $oldUser = new TAR_WechatUser(); $oldUser->unionId = $user->unionId; $oldUser->nickname = $user->nickname; $oldUser->sex = $user->sex; $oldUser->city = $user->city; $oldUser->province = $user->province; $oldUser->country = $user->country; $oldUser->subscribeTime = $user->subscribeTime; $oldUser->subscribe = $user->subscribe; $oldUser->headImgUrl = $user->headImgUrl; $oldUser->openId = $user->openId; $oldUser->save(); return true; } return false; }
/** * 微信登录 * @param $openId * @return Wk_User * @throws Wk_Exception */ public function submitLoginWithWechat($openId) { $firstLogin = false; $wechatUserInfo = TAR_WechatUser::findOne("where open_id = ?", "s", $openId); if (!isset($wechatUserInfo) || empty($wechatUserInfo)) { throw new Wk_Exception("", TErrorConstants::E_SNS_LOGIN); } $user = TAR_User::findOne("where open_id = ?", "s", $openId); if (!isset($user) || empty($user)) { $firstLogin = true; $user = new TAR_User(); } $user->headImgUrl = $wechatUserInfo->headImgUrl; $user->nickname = $wechatUserInfo->nickname; $user->createTime = date("Y-m-d H:i:s"); $user->mobile = ""; // 微信渠道注册 $user->source = 1; $user->city = $wechatUserInfo->city; $user->province = $wechatUserInfo->province; $user->lastLoginIp = WkUtils::getClientIp(); $user->lastLoginTime = date("Y-m-d H:i:s"); $user->save(); $tokenstring = md5(md5($user->id . $user->openId . date("Y-m")) . self::PASSWORD_SALT); $token = TAR_Usertoken::findOne("where token = ? and is_deleted = 0", "s", $tokenstring); if (!isset($token) || empty($token)) { $token = new TAR_Usertoken(); } $token->token = $tokenstring; $token->userId = $user->id; $token->expire = "0000-00-00 00:00:00"; $token->logintype = "wechat"; $token->save(); $retUser = new Wk_User(); $retUser->mobile = $user->mobile; $retUser->city = $user->city; $retUser->province = $user->province; $retUser->avatarUrl = $user->headImgUrl; $retUser->nickname = $user->nickname; $retUser->userid = $user->id; $retUser->token = $token->token; return $retUser; }