diff --git a/src/main/java/com/maximus/spring_server/controller/AccountController.java b/src/main/java/com/maximus/spring_server/controller/AccountController.java new file mode 100644 index 0000000..7c57af5 --- /dev/null +++ b/src/main/java/com/maximus/spring_server/controller/AccountController.java @@ -0,0 +1,38 @@ +package com.maximus.spring_server.controller; + +import com.maximus.spring_server.domain.User; +import com.maximus.spring_server.service.AccountService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@CrossOrigin +public class AccountController { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + public AccountController(AccountService accountService) { + this.accountService = accountService; + } + + private final AccountService accountService; + + @PostMapping("/account/signup") + public ResponseEntity responseEntity(@RequestBody User user) throws Exception { + try { + User user1 = accountService.signup(user); + return ResponseEntity.status(HttpStatus.CREATED).body(User.builder().userId(user1.getUserId()).username(user1.getUsername()).build()); + } catch (Exception e) { + logger.info("에러"); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(User.builder().build()); + } + } +} diff --git a/src/main/java/com/maximus/spring_server/domain/User.java b/src/main/java/com/maximus/spring_server/domain/User.java new file mode 100644 index 0000000..fb82b40 --- /dev/null +++ b/src/main/java/com/maximus/spring_server/domain/User.java @@ -0,0 +1,48 @@ +package com.maximus.spring_server.domain; + + +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import java.util.List; + +@Entity +@Getter +@Builder +@NoArgsConstructor +public class User { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long userId; + + private String username; + private String password; + +// @Builder +// public User(String username, String password) { +// this.username = username; +// this.password = password; +// } + + + public User(Long userId, String username, String password) { + this.userId = userId; + this.username = username; + this.password = password; + } + + public void ExitUser(List user) throws IllegalArgumentException { + for (User user1 : user) { + if (user1.getUsername().equals(this.getUsername())) { + throw new IllegalArgumentException(); + } + } + + } +} diff --git a/src/main/java/com/maximus/spring_server/repository/UserRepository.java b/src/main/java/com/maximus/spring_server/repository/UserRepository.java new file mode 100644 index 0000000..d31321f --- /dev/null +++ b/src/main/java/com/maximus/spring_server/repository/UserRepository.java @@ -0,0 +1,9 @@ +package com.maximus.spring_server.repository; + +import com.maximus.spring_server.domain.User; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface UserRepository extends JpaRepository { +} diff --git a/src/main/java/com/maximus/spring_server/service/AccountService.java b/src/main/java/com/maximus/spring_server/service/AccountService.java new file mode 100644 index 0000000..5a4677c --- /dev/null +++ b/src/main/java/com/maximus/spring_server/service/AccountService.java @@ -0,0 +1,32 @@ +package com.maximus.spring_server.service; + +import com.maximus.spring_server.domain.User; +import com.maximus.spring_server.repository.UserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@Transactional +public class AccountService { + + private final UserRepository userRepository; + + @Autowired + public AccountService(UserRepository userRepository) { + this.userRepository = userRepository; + } + + @Transactional + public User signup(User user) throws IllegalArgumentException { + List userList = userRepository.findAll(); + try { + user.ExitUser(userList); + return userRepository.save(user); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException(); + } + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8b13789..18ea875 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,5 @@ - +spring.datasource.url=jdbc:h2:mem:testdb +spring.datasource.driverClassName=org.h2.Driver +spring.datasource.username=sa +spring.datasource.password=1234 +spring.h2.console.enabled=true