회원가입 로직 개선
- 기본 프로필 이미지와 닉네임 자동생성을 통해 회원가입 단계 축소
This commit is contained in:
@@ -25,9 +25,11 @@ import kr.co.vividnext.sodalive.member.login.LoginResponse
|
||||
import kr.co.vividnext.sodalive.member.myPage.MyPageResponse
|
||||
import kr.co.vividnext.sodalive.member.nickname.NicknameChangeLog
|
||||
import kr.co.vividnext.sodalive.member.nickname.NicknameChangeLogRepository
|
||||
import kr.co.vividnext.sodalive.member.nickname.NicknameGenerateService
|
||||
import kr.co.vividnext.sodalive.member.notification.MemberNotificationService
|
||||
import kr.co.vividnext.sodalive.member.notification.UpdateNotificationSettingRequest
|
||||
import kr.co.vividnext.sodalive.member.signUp.SignUpRequest
|
||||
import kr.co.vividnext.sodalive.member.signUp.SignUpRequestV2
|
||||
import kr.co.vividnext.sodalive.member.signUp.SignUpResponse
|
||||
import kr.co.vividnext.sodalive.member.signUp.SignUpValidator
|
||||
import kr.co.vividnext.sodalive.member.stipulation.Stipulation
|
||||
@@ -77,6 +79,7 @@ class MemberService(
|
||||
private val orderService: OrderService,
|
||||
private val emailService: SendEmailService,
|
||||
private val canPaymentService: CanPaymentService,
|
||||
private val nicknameGenerateService: NicknameGenerateService,
|
||||
private val memberNotificationService: MemberNotificationService,
|
||||
|
||||
private val s3Uploader: S3Uploader,
|
||||
@@ -96,6 +99,46 @@ class MemberService(
|
||||
|
||||
private val tokenLocks: MutableMap<Long, ReentrantReadWriteLock> = mutableMapOf()
|
||||
|
||||
@Transactional
|
||||
fun signUpV2(request: SignUpRequestV2): SignUpResponse {
|
||||
val stipulationTermsOfService = stipulationRepository.findByIdOrNull(StipulationIds.TERMS_OF_SERVICE_ID)
|
||||
?: throw SodaException("잘못된 요청입니다\n앱 종료 후 다시 시도해 주세요.")
|
||||
|
||||
val stipulationPrivacyPolicy = stipulationRepository.findByIdOrNull(StipulationIds.PRIVACY_POLICY_ID)
|
||||
?: throw SodaException("잘못된 요청입니다\n앱 종료 후 다시 시도해 주세요.")
|
||||
|
||||
if (!request.isAgreePrivacyPolicy || !request.isAgreeTermsOfService) {
|
||||
throw SodaException("약관에 동의하셔야 회원가입이 가능합니다.")
|
||||
}
|
||||
|
||||
duplicateCheckEmail(request.email)
|
||||
validatePassword(request.password)
|
||||
|
||||
val nickname = nicknameGenerateService.generateUniqueNickname()
|
||||
val member = Member(
|
||||
email = request.email,
|
||||
password = passwordEncoder.encode(request.password),
|
||||
nickname = nickname,
|
||||
profileImage = "profile/default-profile.png",
|
||||
gender = Gender.NONE,
|
||||
container = request.container
|
||||
)
|
||||
|
||||
if (!request.marketingPid.isNullOrBlank()) {
|
||||
member.activePid = request.marketingPid
|
||||
member.partnerExpirationDatetime = LocalDateTime.now().plusYears(1)
|
||||
}
|
||||
|
||||
repository.save(member)
|
||||
agreeTermsOfServiceAndPrivacyPolicy(member, stipulationTermsOfService, stipulationPrivacyPolicy)
|
||||
|
||||
return SignUpResponse(
|
||||
memberId = member.id!!,
|
||||
marketingPid = request.marketingPid,
|
||||
loginResponse = login(request.email, request.password)
|
||||
)
|
||||
}
|
||||
|
||||
@Transactional
|
||||
fun signUp(
|
||||
profileImage: MultipartFile?,
|
||||
@@ -334,7 +377,11 @@ class MemberService(
|
||||
|
||||
fun duplicateCheckEmail(email: String): ApiResponse<Any> {
|
||||
validateEmail(email)
|
||||
repository.findByEmail(email)?.let { throw SodaException("이미 사용중인 이메일 입니다.", "email") }
|
||||
|
||||
if (repository.existsByEmail(email)) {
|
||||
throw SodaException("이미 사용중인 이메일 입니다.", "email")
|
||||
}
|
||||
|
||||
return ApiResponse.ok(message = "사용 가능한 이메일 입니다.")
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user