jsCode = $this->request->input('js_code'); if (empty($this->jsCode)) throw new ErrException('登录参数错误'); $wxInfo = $this->jsCodeGetOpenId($this->jsCode); $this->openId = $wxInfo['openid']; $this->unionId = $wxInfo['unionid'] ?? ''; $this->checkLock(self::LOGIN_TYPE); $this->register(); $this->login(); $this->redis->delLock($this->lockKey); return $this->getReturn(); } /** * 注册 * @return void */ protected function register(): void { $thirdInfo = $this->userThirdModel->getThirdInfoByOpenId($this->openId); if (!empty($thirdInfo)) { $this->userId = $thirdInfo->user_id; return; } // todo 设备封禁不可注册 注册限制 Db::transaction(function () { $this->addUser(); $this->addUserThird(); $this->addAccount(); //todo 要不要生成邀请码 有没有注册奖励 }); } /** * @return void */ private function addUserThird(): void { $model = new UserThird(); $model->user_id = $this->userId; $model->open_id = $this->openId; $model->union_id = $this->unionId; $model->type = ThirdCode::WX_LOGIN; if (!$model->save()) throw new ErrException('注册失败-00001'); } /** * 添加账户 * @return void */ private function addAccount(): void { $model = new UserAccount(); $model->user_id = $this->userId; $model->balance = 0; $model->integral = 0; if (!$model->save()) throw new ErrException('注册失败-00002'); } }