|
|
|
@ -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); |
|
|
|
|
// 保存第三方用户信息 |
|
|
|
@ -64,6 +73,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(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 快捷登录:微信小程序用户 |
|
|
|
|
* @param array $form |
|
|
|
|