-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStudySessionController.java
More file actions
71 lines (64 loc) · 2.92 KB
/
StudySessionController.java
File metadata and controls
71 lines (64 loc) · 2.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package com.gpt.geumpumtabackend.study.controller;
import com.gpt.geumpumtabackend.global.aop.AssignUserId;
import com.gpt.geumpumtabackend.global.response.ResponseBody;
import com.gpt.geumpumtabackend.global.response.ResponseUtil;
import com.gpt.geumpumtabackend.study.api.StudySessionApi;
import com.gpt.geumpumtabackend.study.dto.request.HeartBeatRequest;
import com.gpt.geumpumtabackend.study.dto.request.StudyEndRequest;
import com.gpt.geumpumtabackend.study.dto.request.StudyStartRequest;
import com.gpt.geumpumtabackend.study.dto.response.HeartBeatResponse;
import com.gpt.geumpumtabackend.study.dto.response.StudySessionResponse;
import com.gpt.geumpumtabackend.study.dto.response.StudyStartResponse;
import com.gpt.geumpumtabackend.study.service.StudySessionService;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/v1/study")
@RequiredArgsConstructor
@Slf4j
public class StudySessionController implements StudySessionApi {
private final StudySessionService studySessionService;
/*
메인 홈
*/
@GetMapping
@PreAuthorize("isAuthenticated() and hasRole('USER')")
@AssignUserId
public ResponseEntity<ResponseBody<StudySessionResponse>> getTodayStudySession(Long userId){
StudySessionResponse studySessionResponse = studySessionService.getTodayStudySession(userId);
return ResponseEntity.ok(ResponseUtil.createSuccessResponse(studySessionResponse));
}
/*
공부 시작
*/
@PostMapping("/start")
@PreAuthorize("isAuthenticated() and hasRole('USER')")
@AssignUserId
public ResponseEntity<ResponseBody<StudyStartResponse>> startStudySession(@Valid @RequestBody StudyStartRequest request,
Long userId){
return ResponseEntity.ok(ResponseUtil.createSuccessResponse(studySessionService.startStudySession(request, userId)));
}
/*
공부 종료
*/
@PostMapping("/end")
@PreAuthorize("isAuthenticated() and hasRole('USER')")
@AssignUserId
public ResponseEntity<ResponseBody<Void>> endStudySession(@Valid @RequestBody StudyEndRequest request, Long userId){
studySessionService.endStudySession(request, userId);
return ResponseEntity.ok(ResponseUtil.createSuccessResponse());
}
/*
하트비트 수신
*/
@PostMapping("/heart-beat")
@PreAuthorize("isAuthenticated() and hasRole('USER')")
@AssignUserId
public ResponseEntity<ResponseBody<HeartBeatResponse>> processHeartBeat(@Valid @RequestBody HeartBeatRequest heartBeatRequest, Long userId){
return ResponseEntity.ok(ResponseUtil.createSuccessResponse(studySessionService.updateHeartBeat(heartBeatRequest, userId)));
}
}