From e8186f33ab339c4ea45c94489070bec05d491ea5 Mon Sep 17 00:00:00 2001 From: hwangsea <134906042+hwangsea@users.noreply.github.com> Date: Tue, 29 Oct 2024 03:53:08 +0900 Subject: [PATCH 1/4] 3-2 --- .../springhw31/controller/UserController.java | 19 +++++--- .../com/example/springhw31/dto/UserDto.java | 6 +-- .../com/example/springhw31/entity/User.java | 20 +++++++-- .../springhw31/repository/UserRepository.java | 44 ++++++++++++++++++- .../springhw31/service/UserService.java | 23 +++++++--- src/main/resources/application.yml | 6 +-- 6 files changed, 93 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/example/springhw31/controller/UserController.java b/src/main/java/com/example/springhw31/controller/UserController.java index 7eca68b..1b148f7 100644 --- a/src/main/java/com/example/springhw31/controller/UserController.java +++ b/src/main/java/com/example/springhw31/controller/UserController.java @@ -1,16 +1,23 @@ package com.example.springhw31.controller; import com.example.springhw31.dto.UserDto; +import com.example.springhw31.service.UserService; +import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; -/** - * 회원가입 메서드처럼 UserDto를 파라미터로 받아주세요 - */ - +@RestController +@RequiredArgsConstructor +@RequestMapping("/users") public class UserController { + private final UserService userService; + @PostMapping public UserDto join(@ModelAttribute UserDto userDto) { - + return userService.join(userDto); } -} + +} \ No newline at end of file diff --git a/src/main/java/com/example/springhw31/dto/UserDto.java b/src/main/java/com/example/springhw31/dto/UserDto.java index 0cb0926..c4142ad 100644 --- a/src/main/java/com/example/springhw31/dto/UserDto.java +++ b/src/main/java/com/example/springhw31/dto/UserDto.java @@ -1,13 +1,13 @@ package com.example.springhw31.dto; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; -/** - * UserDto 클래스는 수정 X - */ + @Getter @Setter +@NoArgsConstructor public class UserDto { private String username; diff --git a/src/main/java/com/example/springhw31/entity/User.java b/src/main/java/com/example/springhw31/entity/User.java index 4e957cc..a4cd926 100644 --- a/src/main/java/com/example/springhw31/entity/User.java +++ b/src/main/java/com/example/springhw31/entity/User.java @@ -1,14 +1,26 @@ package com.example.springhw31.entity; -/** - * TODO: 완성된 코드 아닙니다~ - */ +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Getter +@Setter public class User { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + @Column(nullable = false, unique = true) private String username; + @Column(nullable = false) private String password; + @Column(nullable = false, unique = true) private String nickname; -} + +} \ No newline at end of file diff --git a/src/main/java/com/example/springhw31/repository/UserRepository.java b/src/main/java/com/example/springhw31/repository/UserRepository.java index 53778ec..30544cd 100644 --- a/src/main/java/com/example/springhw31/repository/UserRepository.java +++ b/src/main/java/com/example/springhw31/repository/UserRepository.java @@ -1,5 +1,45 @@ -package com.example.springhw31.repository; +package com.example.springhw31.service; -public class UserRepository { +import com.example.springhw31.dto.UserDto; +import com.example.springhw31.entity.User; +import com.example.springhw31.repository.UserRepository; +import jakarta.transaction.Transactional; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class UserService { + + private final UserRepository userRepository; + + @Transactional + public UserDto join(UserDto userDto) { + + if (userDto.getUsername() == null || userDto.getUsername().isEmpty()) { + throw new RuntimeException("아이디를 입력해 주세요."); + } + if (userDto.getPassword() == null || userDto.getPassword().isEmpty()) { + throw new RuntimeException("비밀번호를 입력해 주세요."); + } + if (userDto.getNickname() == null || userDto.getNickname().isEmpty()) { + throw new RuntimeException("닉네임을 입력해 주세요."); + } + + if (userRepository.existsByUsername(userDto.getUsername())) { + throw new RuntimeException("아이디가 이미 존재합니다."); + } + if (userRepository.existsByNickname(userDto.getNickname())) { + throw new RuntimeException("닉네임이 이미 존재합니다."); + } + + User user = new User(); + user.setUsername(userDto.getUsername()); + user.setPassword(userDto.getPassword()); + user.setNickname(userDto.getNickname()); + + userRepository.save(user); + return userDto; + } } diff --git a/src/main/java/com/example/springhw31/service/UserService.java b/src/main/java/com/example/springhw31/service/UserService.java index c3e8928..1b148f7 100644 --- a/src/main/java/com/example/springhw31/service/UserService.java +++ b/src/main/java/com/example/springhw31/service/UserService.java @@ -1,14 +1,23 @@ -package com.example.springhw31.service; +package com.example.springhw31.controller; import com.example.springhw31.dto.UserDto; +import com.example.springhw31.service.UserService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; -/** - * Controller에 반환할 때도 DTO 객체를 반환합니다. - */ -public class UserService { +@RestController +@RequiredArgsConstructor +@RequestMapping("/users") +public class UserController { - public UserDto join(UserDto userDto) { + private final UserService userService; + @PostMapping + public UserDto join(@ModelAttribute UserDto userDto) { + return userService.join(userDto); } -} +} \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 9b78d0c..5127d0f 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,8 +1,8 @@ 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: Gofla452! driver-class-name: com.mysql.cj.jdbc.Driver jpa: From cb01c1ad3c7e229854fd7e62eba4556cf3c805cb Mon Sep 17 00:00:00 2001 From: hwangsea <134906042+hwangsea@users.noreply.github.com> Date: Tue, 29 Oct 2024 03:56:52 +0900 Subject: [PATCH 2/4] Remove application.yml from tracking --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index c2065bc..8dfc386 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,6 @@ out/ ### VS Code ### .vscode/ + +# .gitignore에 추가 +application.yml From aa4625603998938039e241a83151540091cb540e Mon Sep 17 00:00:00 2001 From: HyerimH <134906042+HyerimH@users.noreply.github.com> Date: Tue, 29 Oct 2024 03:59:01 +0900 Subject: [PATCH 3/4] Delete src/main/resources/application.yml --- src/main/resources/application.yml | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 src/main/resources/application.yml diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml deleted file mode 100644 index 5127d0f..0000000 --- a/src/main/resources/application.yml +++ /dev/null @@ -1,15 +0,0 @@ -spring: - datasource: - url: jdbc:mysql://localhost:3306/demo?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8 - username: root - password: Gofla452! - driver-class-name: com.mysql.cj.jdbc.Driver - - jpa: - hibernate: - ddl-auto: create - show-sql: true - properties: - hibernate: - format_sql: true - dialect: org.hibernate.dialect.MySQL8Dialect \ No newline at end of file From f73747cb930521a28b5b8c235b03f348e7afca18 Mon Sep 17 00:00:00 2001 From: hwangsea <134906042+hwangsea@users.noreply.github.com> Date: Tue, 29 Oct 2024 16:56:14 +0900 Subject: [PATCH 4/4] =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springhw31/controller/UserController.java | 4 ++ .../springhw31/repository/UserRepository.java | 47 +++------------ .../springhw31/service/UserService.java | 57 ++++++++++++++----- 3 files changed, 55 insertions(+), 53 deletions(-) diff --git a/src/main/java/com/example/springhw31/controller/UserController.java b/src/main/java/com/example/springhw31/controller/UserController.java index 1b148f7..6e7b14b 100644 --- a/src/main/java/com/example/springhw31/controller/UserController.java +++ b/src/main/java/com/example/springhw31/controller/UserController.java @@ -20,4 +20,8 @@ public UserDto join(@ModelAttribute UserDto userDto) { return userService.join(userDto); } + @PostMapping("/login") + public String login(@ModelAttribute UserDto userDto) { + return userService.login(userDto); + } } \ No newline at end of file diff --git a/src/main/java/com/example/springhw31/repository/UserRepository.java b/src/main/java/com/example/springhw31/repository/UserRepository.java index 30544cd..60e8272 100644 --- a/src/main/java/com/example/springhw31/repository/UserRepository.java +++ b/src/main/java/com/example/springhw31/repository/UserRepository.java @@ -1,45 +1,14 @@ -package com.example.springhw31.service; +package com.example.springhw31.repository; -import com.example.springhw31.dto.UserDto; import com.example.springhw31.entity.User; -import com.example.springhw31.repository.UserRepository; -import jakarta.transaction.Transactional; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; -@Service -@RequiredArgsConstructor -public class UserService { +@Repository +public interface UserRepository extends JpaRepository { + User findByUsername(String username); - private final UserRepository userRepository; - - @Transactional - public UserDto join(UserDto userDto) { - - if (userDto.getUsername() == null || userDto.getUsername().isEmpty()) { - throw new RuntimeException("아이디를 입력해 주세요."); - } - if (userDto.getPassword() == null || userDto.getPassword().isEmpty()) { - throw new RuntimeException("비밀번호를 입력해 주세요."); - } - if (userDto.getNickname() == null || userDto.getNickname().isEmpty()) { - throw new RuntimeException("닉네임을 입력해 주세요."); - } - - if (userRepository.existsByUsername(userDto.getUsername())) { - throw new RuntimeException("아이디가 이미 존재합니다."); - } - if (userRepository.existsByNickname(userDto.getNickname())) { - throw new RuntimeException("닉네임이 이미 존재합니다."); - } - - User user = new User(); - user.setUsername(userDto.getUsername()); - user.setPassword(userDto.getPassword()); - user.setNickname(userDto.getNickname()); - - userRepository.save(user); - return userDto; - } + 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 1b148f7..ead10ef 100644 --- a/src/main/java/com/example/springhw31/service/UserService.java +++ b/src/main/java/com/example/springhw31/service/UserService.java @@ -1,23 +1,52 @@ -package com.example.springhw31.controller; +package com.example.springhw31.service; import com.example.springhw31.dto.UserDto; -import com.example.springhw31.service.UserService; +import com.example.springhw31.entity.User; +import com.example.springhw31.repository.UserRepository; +import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.stereotype.Service; -@RestController +@Service @RequiredArgsConstructor -@RequestMapping("/users") -public class UserController { +public class UserService { - private final UserService userService; + private final UserRepository userRepository; - @PostMapping - public UserDto join(@ModelAttribute UserDto userDto) { - return userService.join(userDto); + @Transactional + public UserDto join(UserDto userDto) { + + if (userDto.getUsername() == null || userDto.getUsername().isEmpty()) { + throw new RuntimeException("아이디를 입력해 주세요."); + } + if (userDto.getPassword() == null || userDto.getPassword().isEmpty()) { + throw new RuntimeException("비밀번호를 입력해 주세요."); + } + if (userDto.getNickname() == null || userDto.getNickname().isEmpty()) { + throw new RuntimeException("닉네임을 입력해 주세요."); + } + + if (userRepository.existsByUsername(userDto.getUsername())) { + throw new RuntimeException("아이디가 이미 존재합니다."); + } + if (userRepository.existsByNickname(userDto.getNickname())) { + throw new RuntimeException("닉네임이 이미 존재합니다."); + } + + User user = new User(); + user.setUsername(userDto.getUsername()); + user.setPassword(userDto.getPassword()); + user.setNickname(userDto.getNickname()); + + userRepository.save(user); + return userDto; } -} \ No newline at end of file + public String login(UserDto userDto) { + User user = userRepository.findByUsername(userDto.getUsername()); + if (user != null && user.getPassword().equals(userDto.getPassword())) { + return user.getNickname() + " 님, 환영합니다!!"; + } + return "아이디 및 비밀번호가 일치하지 않습니다."; + } +}