From 08219996bfee8f00d6ccbc36ef41e74f7d4141fc Mon Sep 17 00:00:00 2001 From: dongHyo Date: Tue, 17 May 2022 00:01:06 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=ED=9A=8C=EC=9B=90=EA=B0=80=EC=9E=85=20?= =?UTF-8?q?Service=20=EB=A9=94=EC=86=8C=EB=93=9C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/user/service/UserServiceImpl.java | 38 +++++++++++++++++++ .../user/service/interfaces/UserService.java | 5 +++ 2 files changed, 43 insertions(+) diff --git a/server/src/main/java/com/ticketing/server/user/service/UserServiceImpl.java b/server/src/main/java/com/ticketing/server/user/service/UserServiceImpl.java index a10d6d3..18a2092 100644 --- a/server/src/main/java/com/ticketing/server/user/service/UserServiceImpl.java +++ b/server/src/main/java/com/ticketing/server/user/service/UserServiceImpl.java @@ -1,9 +1,47 @@ package com.ticketing.server.user.service; +import com.ticketing.server.user.domain.User; +import com.ticketing.server.user.domain.UserGrade; +import com.ticketing.server.user.domain.repository.UserRepository; +import com.ticketing.server.user.exception.DuplicateEmailException; +import com.ticketing.server.user.service.dto.SignUp; import com.ticketing.server.user.service.interfaces.UserService; +import java.util.Optional; +import javax.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; @Service +@RequiredArgsConstructor +@Transactional(readOnly = true) +@Validated public class UserServiceImpl implements UserService { + private final PasswordEncoder passwordEncoder; + private final UserRepository userRepository; + + @Transactional + public User register(@Valid SignUp signUpDto) { + validateEmail(signUpDto.getEmail()); + + User user = new User(signUpDto.getName(), + signUpDto.getEmail(), + signUpDto.encodePassword(passwordEncoder), + UserGrade.GUEST, + signUpDto.getPhone()); + + return userRepository.save(user); + } + + private void validateEmail(String email) { + Optional user = userRepository.findByEmail(email); + + if (user.isPresent()) { + throw new DuplicateEmailException(email); + } + } + } diff --git a/server/src/main/java/com/ticketing/server/user/service/interfaces/UserService.java b/server/src/main/java/com/ticketing/server/user/service/interfaces/UserService.java index a5e676e..fd50c79 100644 --- a/server/src/main/java/com/ticketing/server/user/service/interfaces/UserService.java +++ b/server/src/main/java/com/ticketing/server/user/service/interfaces/UserService.java @@ -1,5 +1,10 @@ package com.ticketing.server.user.service.interfaces; +import com.ticketing.server.user.domain.User; +import com.ticketing.server.user.service.dto.SignUp; + public interface UserService { + User register(SignUp signUpDto); + }