Skip to content

Commit 9fe4296

Browse files
authored
Merge pull request #49 from StudyLink-SW-Project/feature/#48
[FEAT] #48 각오 생성 및 조회 기능 추가
2 parents b2aba19 + 6d4733f commit 9fe4296

6 files changed

Lines changed: 66 additions & 0 deletions

File tree

src/main/java/com/example/be/domain/User.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ public class User {
3939

4040
private LocalDateTime createDate;
4141

42+
private String resolve;
43+
4244
@Column(columnDefinition = "int default 0")
4345
private int todayStudyTime;
4446

@@ -48,6 +50,7 @@ public class User {
4850
@Column(columnDefinition = "int default 0")
4951
private int goalStudyTime;
5052

53+
5154
//Relationships
5255
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
5356
private List<Comment> comments;

src/main/java/com/example/be/repository/UserRepository.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import org.springframework.data.jpa.repository.JpaRepository;
55
import org.springframework.data.jpa.repository.Modifying;
66
import org.springframework.data.jpa.repository.Query;
7+
import org.springframework.data.repository.query.Param;
8+
79
import java.util.Optional;
810
import java.util.UUID;
911

@@ -20,4 +22,8 @@ public interface UserRepository extends JpaRepository<User, Long> {
2022
@Modifying
2123
@Query("update User u Set u.todayStudyTime = 0")
2224
void updateTodayStudyTime();
25+
26+
@Query("SELECT u.resolve FROM User u WHERE u.id = :userId")
27+
String findResolveByUserId(@Param("userId") Long userId);
28+
2329
}

src/main/java/com/example/be/service/UserServiceImpl.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,20 @@ public class UserServiceImpl extends SimpleUrlAuthenticationSuccessHandler {
3636
@Value("${jwt.refresh-token.expiration-time}")
3737
private long REFRESH_TOKEN_EXPIRATION_TIME; // 리프레쉬 토큰 유효기간
3838

39+
40+
private User getUserFromRequest(HttpServletRequest request) {
41+
try {
42+
String accessToken = jwtUtilService.extractTokenFromCookie(request, "accessToken");
43+
if (accessToken != null) {
44+
String userId = jwtUtilService.getUserIdFromToken(accessToken);
45+
return userRepository.findByUserId(UUID.fromString(userId)).orElse(null);
46+
}
47+
} catch (Exception e) {
48+
throw new UserHandler(ErrorStatus._NOT_FOUND_COOKIE);
49+
}
50+
return null;
51+
}
52+
3953
public CommonDTO.IsSuccessDTO signUp(UserDTO.SingUpRequestDto request) {
4054

4155
if (userRepository.existsByEmail(request.getEmail()))
@@ -130,5 +144,25 @@ public CommonDTO.IsSuccessDTO logout(HttpServletResponse response, HttpServletRe
130144

131145
return CommonDTO.IsSuccessDTO.builder().isSuccess(true).build();
132146
}
147+
148+
public CommonDTO.IsSuccessDTO createResolve(HttpServletRequest request, UserDTO.resolveDto resolve) {
149+
User user = getUserFromRequest(request);
150+
151+
user.setResolve(resolve.getResolve());
152+
userRepository.save(user);
153+
154+
return CommonDTO.IsSuccessDTO.builder().isSuccess(true).build();
155+
}
156+
157+
public UserDTO.resolveDto getResolve(HttpServletRequest request) {
158+
User user = getUserFromRequest(request);
159+
160+
String resolve = userRepository.findResolveByUserId(user.getId());
161+
if(resolve == null) {
162+
resolve = "";
163+
}
164+
165+
return UserDTO.resolveDto.builder().resolve(resolve).build();
166+
}
133167
}
134168

src/main/java/com/example/be/web/controller/DDayController.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,6 @@ public ApiResponse<List<DDayDTO.DDayResponseDto>> getDDay(
4747
HttpServletRequest request) {
4848
return ApiResponse.onSuccess(dayService.getDDays(request));
4949
}
50+
51+
5052
}

src/main/java/com/example/be/web/controller/UserController.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.example.be.service.JwtUtilServiceImpl;
55
import com.example.be.service.UserServiceImpl;
66
import com.example.be.web.dto.CommonDTO;
7+
import com.example.be.web.dto.DDayDTO;
78
import com.example.be.web.dto.UserDTO;
89
import io.swagger.v3.oas.annotations.Operation;
910
import jakarta.servlet.http.HttpServletRequest;
@@ -46,5 +47,16 @@ public ApiResponse<CommonDTO.IsSuccessDTO> logout(HttpServletResponse response,
4647
return ApiResponse.onSuccess(userService.logout(response, request));
4748
}
4849

50+
@PostMapping("/resolve")
51+
@Operation(summary = "각오 생성 및 수정 API", description = "각오를 생성합니다.")
52+
public ApiResponse<CommonDTO.IsSuccessDTO> createResolve(
53+
HttpServletRequest request, @RequestBody UserDTO.resolveDto resolve) {
54+
return ApiResponse.onSuccess(userService.createResolve(request, resolve));
55+
}
4956

57+
@GetMapping("/resolve")
58+
@Operation(summary = "각오 조회 API", description = "각오를 조회합니다.")
59+
public ApiResponse<UserDTO.resolveDto> getResolve(HttpServletRequest request) {
60+
return ApiResponse.onSuccess(userService.getResolve(request));
61+
}
5062
}

src/main/java/com/example/be/web/dto/UserDTO.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,13 @@ public static class studyTimeResponseDto {
4848
private String totalStudyTime;
4949
private String goalStudyTime;
5050
}
51+
52+
@Builder
53+
@Getter
54+
@NoArgsConstructor
55+
@AllArgsConstructor
56+
public static class resolveDto {
57+
private String resolve;
58+
}
59+
5160
}

0 commit comments

Comments
 (0)