Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,6 @@ out/

### VS Code ###
.vscode/

# .gitignore에 추가
application.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,27 @@
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);
}

@PostMapping("/login")
public String login(@ModelAttribute UserDto userDto) {
return userService.login(userDto);
}
}
}
6 changes: 3 additions & 3 deletions src/main/java/com/example/springhw31/dto/UserDto.java
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
20 changes: 16 additions & 4 deletions src/main/java/com/example/springhw31/entity/User.java
Original file line number Diff line number Diff line change
@@ -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;
}

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
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<User, Long> {
User findByUsername(String username);

boolean existsByUsername(String username);

boolean existsByNickname(String nickname);
}
44 changes: 41 additions & 3 deletions src/main/java/com/example/springhw31/service/UserService.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,52 @@
package com.example.springhw31.service;

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;

/**
* Controller에 반환할 때도 DTO 객체를 반환합니다.
*/
@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;
}

public String login(UserDto userDto) {
User user = userRepository.findByUsername(userDto.getUsername());
if (user != null && user.getPassword().equals(userDto.getPassword())) {
return user.getNickname() + " 님, 환영합니다!!";
}
return "아이디 및 비밀번호가 일치하지 않습니다.";
}
}
15 changes: 0 additions & 15 deletions src/main/resources/application.yml

This file was deleted.