diff --git a/src/main/java/com/example/springhw31/controller/UserController.java b/src/main/java/com/example/springhw31/controller/UserController.java index 7eca68b..3f4bac3 100644 --- a/src/main/java/com/example/springhw31/controller/UserController.java +++ b/src/main/java/com/example/springhw31/controller/UserController.java @@ -1,16 +1,32 @@ package com.example.springhw31.controller; import com.example.springhw31.dto.UserDto; +import com.example.springhw31.service.UserService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; /** * 회원가입 메서드처럼 UserDto를 파라미터로 받아주세요 */ - +@RequiredArgsConstructor +@RestController public class UserController { + private final UserService userService; - + @PostMapping("/join") public UserDto join(@ModelAttribute UserDto userDto) { + return userService.join(userDto); + + } + @PostMapping("/login") + public String login(@ModelAttribute UserDto userDto){ + + return userService.login(userDto); + + } } diff --git a/src/main/java/com/example/springhw31/entity/User.java b/src/main/java/com/example/springhw31/entity/User.java index 4e957cc..570022c 100644 --- a/src/main/java/com/example/springhw31/entity/User.java +++ b/src/main/java/com/example/springhw31/entity/User.java @@ -1,14 +1,25 @@ package com.example.springhw31.entity; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + /** * TODO: 완성된 코드 아닙니다~ */ +@Getter +@Setter +@Entity public class User { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; +@Column(unique = true,nullable = false) private String username; - +@Column(nullable = false) private String password; - + @Column(unique = true,nullable = false) private String nickname; } diff --git a/src/main/java/com/example/springhw31/repository/UserRepository.java b/src/main/java/com/example/springhw31/repository/UserRepository.java index 53778ec..d4061ed 100644 --- a/src/main/java/com/example/springhw31/repository/UserRepository.java +++ b/src/main/java/com/example/springhw31/repository/UserRepository.java @@ -1,5 +1,12 @@ package com.example.springhw31.repository; -public class UserRepository { +import com.example.springhw31.entity.User; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +@Repository + +public interface UserRepository extends JpaRepository { + Boolean existsByUsername(String username); + Boolean existsByNickname(String nickname); } diff --git a/src/main/java/com/example/springhw31/service/UserService.java b/src/main/java/com/example/springhw31/service/UserService.java index c3e8928..3ded3da 100644 --- a/src/main/java/com/example/springhw31/service/UserService.java +++ b/src/main/java/com/example/springhw31/service/UserService.java @@ -1,13 +1,59 @@ package com.example.springhw31.service; import com.example.springhw31.dto.UserDto; +import com.example.springhw31.entity.User; +import com.example.springhw31.repository.UserRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; +import org.springframework.web.server.ResponseStatusException; /** * Controller에 반환할 때도 DTO 객체를 반환합니다. */ +@RequiredArgsConstructor +@Service public class UserService { - + private final UserRepository userRepository; + //회원가입 public UserDto join(UserDto userDto) { + //중복된 경우 회원가입불가 + if (userRepository.existsByUsername(userDto.getUsername())) { + throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "이미 존재하는 아이디입니다."); + } else if (userRepository.existsByNickname(userDto.getNickname())) { + throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "이미 존재하는 닉네임입니다."); + } + + User user = new User(); + user.setPassword(userDto.getPassword()); + user.setNickname(userDto.getNickname()); + user.setPassword(userDto.getPassword()); + userRepository.save(user); + + + + return userDto; + + } + //로그인 + + public String login(UserDto userDto){ + if (userRepository.existsByUsername(userDto.getUsername())&& + userRepository.existsByNickname(userDto.getNickname())) { + return userDto.getNickname()+" 님, 환영합니다!!"; + } else { + + return "아이디 및 비밀번호가 일치하지 않습니다"; + + } + + + + + + + + } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 9b78d0c..5473c5c 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,9 +1,10 @@ spring: datasource: - url: jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8 - username: your_username - password: your_password + url: jdbc:mysql://localhost:3306/demo?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8 + username: root + password: sleeDY0510!! driver-class-name: com.mysql.cj.jdbc.Driver + debug: true jpa: hibernate: