diff --git a/src/main/java/GDGoC/team_24/domain/user/controller/UserController.java b/src/main/java/GDGoC/team_24/domain/user/controller/UserController.java index cadcfed..61c43c1 100644 --- a/src/main/java/GDGoC/team_24/domain/user/controller/UserController.java +++ b/src/main/java/GDGoC/team_24/domain/user/controller/UserController.java @@ -1,5 +1,7 @@ package GDGoC.team_24.domain.user.controller; +import GDGoC.team_24.domain.user.domain.Userinfo; +import GDGoC.team_24.domain.user.dto.UserInfoRequestDto; import GDGoC.team_24.global.ApiResponse; import GDGoC.team_24.domain.user.dto.UserLoginReqDto; import GDGoC.team_24.domain.user.dto.UserRequestDto; @@ -44,6 +46,14 @@ public ApiResponse userGet(@PathVariable("userId") Long userId) } + @PostMapping({"/{userId}/userInfo"}) + @Operation(summary = "유저 기본질문 생성 API", description = "유저 기본질문을 생성하는 API입니다.") + public ApiResponse userSignUp(@PathVariable("userId") Long userId, @RequestBody UserInfoRequestDto request) { + + return ApiResponse.onSuccess(userService.userInfoSave(request,userId)); + + } + diff --git a/src/main/java/GDGoC/team_24/domain/user/domain/User.java b/src/main/java/GDGoC/team_24/domain/user/domain/User.java index cda241c..85416fc 100644 --- a/src/main/java/GDGoC/team_24/domain/user/domain/User.java +++ b/src/main/java/GDGoC/team_24/domain/user/domain/User.java @@ -37,6 +37,9 @@ public class User { @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) private List diaries = new ArrayList<>(); + @OneToOne(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) + private Userinfo userinfo; + @Builder public User(Long id, String name, GENDER gender, String birthaDate, String phoneNumber,String emoji, Family family) { this.id = id; diff --git a/src/main/java/GDGoC/team_24/domain/user/domain/Userinfo.java b/src/main/java/GDGoC/team_24/domain/user/domain/Userinfo.java index b128f56..389dd5e 100644 --- a/src/main/java/GDGoC/team_24/domain/user/domain/Userinfo.java +++ b/src/main/java/GDGoC/team_24/domain/user/domain/Userinfo.java @@ -1,18 +1,28 @@ package GDGoC.team_24.domain.user.domain; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.Id; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +@Entity +@Getter +@Setter +@NoArgsConstructor public class Userinfo { @Id - @GeneratedValue - private static Long id; + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; - private static HOUSE house; + @Enumerated(EnumType.STRING) + private HOUSE house; - private static Long sun; - private static Long daughter; - private static String hubby; - private static String medicine; + private Long sun; + private Long daughter; + private String hubby; + private String medicine; + @OneToOne + @JoinColumn(name = "user_id") + private User user; } diff --git a/src/main/java/GDGoC/team_24/domain/user/dto/UserInfoRequestDto.java b/src/main/java/GDGoC/team_24/domain/user/dto/UserInfoRequestDto.java new file mode 100644 index 0000000..bcbafe8 --- /dev/null +++ b/src/main/java/GDGoC/team_24/domain/user/dto/UserInfoRequestDto.java @@ -0,0 +1,17 @@ +package GDGoC.team_24.domain.user.dto; + +import GDGoC.team_24.domain.user.domain.HOUSE; +import lombok.*; + +@Builder +@Getter +@NoArgsConstructor +@Setter +@AllArgsConstructor +public class UserInfoRequestDto { + private HOUSE house; + private Long sun; + private Long daughter; + private String hubby; + private String medicine; +} diff --git a/src/main/java/GDGoC/team_24/domain/user/repository/UserInfoRepository.java b/src/main/java/GDGoC/team_24/domain/user/repository/UserInfoRepository.java new file mode 100644 index 0000000..aaf0a03 --- /dev/null +++ b/src/main/java/GDGoC/team_24/domain/user/repository/UserInfoRepository.java @@ -0,0 +1,7 @@ +package GDGoC.team_24.domain.user.repository; + +import GDGoC.team_24.domain.user.domain.Userinfo; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface UserInfoRepository extends JpaRepository { +} diff --git a/src/main/java/GDGoC/team_24/domain/user/service/UserService.java b/src/main/java/GDGoC/team_24/domain/user/service/UserService.java index 1bce3b1..2dc70c5 100644 --- a/src/main/java/GDGoC/team_24/domain/user/service/UserService.java +++ b/src/main/java/GDGoC/team_24/domain/user/service/UserService.java @@ -1,10 +1,14 @@ package GDGoC.team_24.domain.user.service; import GDGoC.team_24.domain.user.domain.GENDER; +import GDGoC.team_24.domain.user.domain.HOUSE; import GDGoC.team_24.domain.user.domain.User; +import GDGoC.team_24.domain.user.domain.Userinfo; +import GDGoC.team_24.domain.user.dto.UserInfoRequestDto; import GDGoC.team_24.domain.user.dto.UserLoginReqDto; import GDGoC.team_24.domain.user.dto.UserRequestDto; import GDGoC.team_24.domain.user.dto.UserResponseDto; +import GDGoC.team_24.domain.user.repository.UserInfoRepository; import GDGoC.team_24.domain.user.repository.UserRepository; import GDGoC.team_24.global.code.status.ErrorStatus; import GDGoC.team_24.global.exception.GeneralException; @@ -16,6 +20,7 @@ public class UserService { private final UserRepository userRepository; + private final UserInfoRepository userInfoRepository; public UserResponseDto userSignUp(UserRequestDto userRequestDto) { @@ -51,4 +56,25 @@ public UserResponseDto userGet(Long userId) { return new UserResponseDto(user); } + + public Long userInfoSave(UserInfoRequestDto request, Long userId) { + // 유저 조회 + User user = userRepository.findById(userId) + .orElseThrow(() -> new GeneralException(ErrorStatus.MEMBER_NOT_FOUND)); + + // Userinfo 생성 및 값 설정 + Userinfo userinfo = new Userinfo(); + userinfo.setUser(user); + userinfo.setHouse(request.getHouse()); + userinfo.setSun(request.getSun()); + userinfo.setDaughter(request.getDaughter()); + userinfo.setHubby(request.getHubby()); + userinfo.setMedicine(request.getMedicine()); + + // 저장 + userInfoRepository.save(userinfo); + + return userinfo.getId(); + } + } diff --git a/src/main/java/GDGoC/team_24/global/code/status/ErrorStatus.java b/src/main/java/GDGoC/team_24/global/code/status/ErrorStatus.java index 9aef274..a8a8d54 100644 --- a/src/main/java/GDGoC/team_24/global/code/status/ErrorStatus.java +++ b/src/main/java/GDGoC/team_24/global/code/status/ErrorStatus.java @@ -19,6 +19,7 @@ public enum ErrorStatus implements BaseErrorCode { EMAIL_NOT_FOUND(HttpStatus.BAD_REQUEST, "MEMBER4003", "이메일이 없습니다."), NICKNAME_NOT_EXIST(HttpStatus.BAD_REQUEST, "MEMBER4002", "닉네임은 필수 입니다."), EMAIL_FAILED(HttpStatus.BAD_REQUEST, "MEMBER4004","이메일 전송에 실패하였습니다"), + INVALID_INPUT(HttpStatus.BAD_REQUEST, "MEMBER4005","잘못된 요청입니다"), PASSWORD_VALIDATION_FAILED(HttpStatus.BAD_REQUEST,"PASSWORD4001","비밀번호는 영어 대/소문자, 숫자 중 2종류 이상을 조합해야 합니다."), @@ -26,7 +27,6 @@ public enum ErrorStatus implements BaseErrorCode { JWT_EXPIRED(HttpStatus.UNAUTHORIZED, "AUTH002", "JWT 토큰이 만료되었습니다."), JWT_MALFORMED(HttpStatus.UNAUTHORIZED, "AUTH003", "JWT 토큰이 올바르지 않은 형식입니다."), - //S3 S3_FAILED(HttpStatus.INTERNAL_SERVER_ERROR,"S34001","사진 업로드에 실패했습니다."), S3_FORMAT(HttpStatus.BAD_REQUEST, "S34002","잘못된 형식의 파일입니다."),