wanghousheng 8 months ago
parent 34f07c73c4
commit a6279d5c06
  1. 38
      app/api/service/passport/Login.php

@ -56,6 +56,15 @@ class Login extends BaseService
{
// 数据验证
$this->validate($data);
//新增小程序登录
if (!empty($data['ucode'])) {
// 推荐人ID
$refereeId = 0;
if (!empty($data['refereeId'])) {
$refereeId = intval($data['refereeId']);
}
return $this->loginMinWx($data['ucode'], $refereeId);
}
// 自动登录注册
$this->register($data);
// 保存第三方用户信息
@ -63,6 +72,35 @@ class Login extends BaseService
// 记录登录态
return $this->setSession();
}
private function loginMinWx($code, $refereeId): bool
{
// 获取微信小程序登录态(session)
$wxSession = PartyService::getMpWxSession($code);
// 判断openid是否存在
$userId = OauthService::getUserIdByOauthId($wxSession['openid'], ClientEnum::MP_WEIXIN);
// 获取用户信息
$userInfo = !empty($userId) ? UserModel::detail($userId) : null;
// 用户信息存在, 更新登录信息
if (!empty($userInfo)) {
// 更新用户登录信息
$this->updateUser($userInfo, true);
// 记录登录态
return $this->setSession();
}
// 用户信息不存在 => 注册新用户 或者 跳转到绑定手机号页
$setting = SettingModel::getItem(SettingEnum::REGISTER);
// 后台设置了需强制绑定手机号, 返回前端isBindMobile, 跳转到手机号验证页
if ($setting['isForceBindMpweixin']) {
throwError('当前用户未绑定手机号', null, ['isBindMobile' => true]);
}
// 用户不存在: 创建一个新用户
$this->createUser('', true, [], (int)$refereeId);
// 保存第三方用户信息
$this->createUserOauth($this->getUserId(), true);
// 记录登录态
return $this->setSession();
}
/**
* 快捷登录:微信小程序用户

Loading…
Cancel
Save