diff --git a/src/main/java/com/example/be/domain/User.java b/src/main/java/com/example/be/domain/User.java index b5bc522..3627496 100644 --- a/src/main/java/com/example/be/domain/User.java +++ b/src/main/java/com/example/be/domain/User.java @@ -39,6 +39,8 @@ public class User { private LocalDateTime createDate; + private String resolve; + @Column(columnDefinition = "int default 0") private int todayStudyTime; @@ -48,6 +50,7 @@ public class User { @Column(columnDefinition = "int default 0") private int goalStudyTime; + //Relationships @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) private List comments; diff --git a/src/main/java/com/example/be/repository/UserRepository.java b/src/main/java/com/example/be/repository/UserRepository.java index e32fd0e..752664b 100644 --- a/src/main/java/com/example/be/repository/UserRepository.java +++ b/src/main/java/com/example/be/repository/UserRepository.java @@ -4,6 +4,8 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + import java.util.Optional; import java.util.UUID; @@ -20,4 +22,8 @@ public interface UserRepository extends JpaRepository { @Modifying @Query("update User u Set u.todayStudyTime = 0") void updateTodayStudyTime(); + + @Query("SELECT u.resolve FROM User u WHERE u.id = :userId") + String findResolveByUserId(@Param("userId") Long userId); + } diff --git a/src/main/java/com/example/be/service/UserServiceImpl.java b/src/main/java/com/example/be/service/UserServiceImpl.java index 117e31b..39db3d4 100644 --- a/src/main/java/com/example/be/service/UserServiceImpl.java +++ b/src/main/java/com/example/be/service/UserServiceImpl.java @@ -36,6 +36,20 @@ public class UserServiceImpl extends SimpleUrlAuthenticationSuccessHandler { @Value("${jwt.refresh-token.expiration-time}") private long REFRESH_TOKEN_EXPIRATION_TIME; // 리프레쉬 토큰 유효기간 + + private User getUserFromRequest(HttpServletRequest request) { + try { + String accessToken = jwtUtilService.extractTokenFromCookie(request, "accessToken"); + if (accessToken != null) { + String userId = jwtUtilService.getUserIdFromToken(accessToken); + return userRepository.findByUserId(UUID.fromString(userId)).orElse(null); + } + } catch (Exception e) { + throw new UserHandler(ErrorStatus._NOT_FOUND_COOKIE); + } + return null; + } + public CommonDTO.IsSuccessDTO signUp(UserDTO.SingUpRequestDto request) { if (userRepository.existsByEmail(request.getEmail())) @@ -130,5 +144,25 @@ public CommonDTO.IsSuccessDTO logout(HttpServletResponse response, HttpServletRe return CommonDTO.IsSuccessDTO.builder().isSuccess(true).build(); } + + public CommonDTO.IsSuccessDTO createResolve(HttpServletRequest request, UserDTO.resolveDto resolve) { + User user = getUserFromRequest(request); + + user.setResolve(resolve.getResolve()); + userRepository.save(user); + + return CommonDTO.IsSuccessDTO.builder().isSuccess(true).build(); + } + + public UserDTO.resolveDto getResolve(HttpServletRequest request) { + User user = getUserFromRequest(request); + + String resolve = userRepository.findResolveByUserId(user.getId()); + if(resolve == null) { + resolve = ""; + } + + return UserDTO.resolveDto.builder().resolve(resolve).build(); + } } diff --git a/src/main/java/com/example/be/web/controller/DDayController.java b/src/main/java/com/example/be/web/controller/DDayController.java index f117bea..2761432 100644 --- a/src/main/java/com/example/be/web/controller/DDayController.java +++ b/src/main/java/com/example/be/web/controller/DDayController.java @@ -47,4 +47,6 @@ public ApiResponse> getDDay( HttpServletRequest request) { return ApiResponse.onSuccess(dayService.getDDays(request)); } + + } diff --git a/src/main/java/com/example/be/web/controller/UserController.java b/src/main/java/com/example/be/web/controller/UserController.java index 236b5c6..a1b2a48 100644 --- a/src/main/java/com/example/be/web/controller/UserController.java +++ b/src/main/java/com/example/be/web/controller/UserController.java @@ -4,6 +4,7 @@ import com.example.be.service.JwtUtilServiceImpl; import com.example.be.service.UserServiceImpl; import com.example.be.web.dto.CommonDTO; +import com.example.be.web.dto.DDayDTO; import com.example.be.web.dto.UserDTO; import io.swagger.v3.oas.annotations.Operation; import jakarta.servlet.http.HttpServletRequest; @@ -46,5 +47,16 @@ public ApiResponse logout(HttpServletResponse response, return ApiResponse.onSuccess(userService.logout(response, request)); } + @PostMapping("/resolve") + @Operation(summary = "각오 생성 및 수정 API", description = "각오를 생성합니다.") + public ApiResponse createResolve( + HttpServletRequest request, @RequestBody UserDTO.resolveDto resolve) { + return ApiResponse.onSuccess(userService.createResolve(request, resolve)); + } + @GetMapping("/resolve") + @Operation(summary = "각오 조회 API", description = "각오를 조회합니다.") + public ApiResponse getResolve(HttpServletRequest request) { + return ApiResponse.onSuccess(userService.getResolve(request)); + } } \ No newline at end of file diff --git a/src/main/java/com/example/be/web/dto/UserDTO.java b/src/main/java/com/example/be/web/dto/UserDTO.java index 5f56593..da12a53 100644 --- a/src/main/java/com/example/be/web/dto/UserDTO.java +++ b/src/main/java/com/example/be/web/dto/UserDTO.java @@ -48,4 +48,13 @@ public static class studyTimeResponseDto { private String totalStudyTime; private String goalStudyTime; } + + @Builder + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class resolveDto { + private String resolve; + } + }