validated(); $smsCodeService->validate( $input['phone'], SmsCode::TYPE_REGISTER, $input['verify_code'] ); $inviter = null; if ( $request->filled('code') && is_null($inviter = UserInfo::where('code', $input['code'])->first()) ) { throw new BizException(__('Invalid invitation code')); } $time = now(); $ip = $request->realIp(); try { DB::beginTransaction(); $user = new User($input); $user->phone_verified_at = $time; $user->register_ip = $ip; $user->last_login_at = $time; $user->last_login_ip = $ip; $user->setCreatedAt($time); $user->setUpdatedAt($time); $user->save(); $user->userInfo()->create([ 'inviter_id' => $inviter?->id, ]); DB::commit(); } catch (Throwable $e) { DB::rollBack(); report($e); throw new BizException(__('Registration failed, please try again')); } return response()->json( $user->createDeviceToken(Device::UNIAPP) ); } }