Skip to content

Commit 30dc71b

Browse files
authored
Merge pull request #23 from AI-Tutor-2024/note
[FIX] folder, note 관련 응답 오류 수정
2 parents 565021c + c037631 commit 30dc71b

File tree

6 files changed

+90
-15
lines changed

6 files changed

+90
-15
lines changed

src/main/java/com/example/ai_tutor/domain/folder/application/FolderService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.example.ai_tutor.domain.folder.dto.request.FolderCreateReq;
55
import com.example.ai_tutor.domain.folder.dto.response.FolderListRes;
66
import com.example.ai_tutor.domain.folder.dto.response.FolderNameListRes;
7+
import com.example.ai_tutor.domain.folder.dto.response.FolderResponse;
78
import com.example.ai_tutor.domain.note.dto.response.FolderInfoRes;
89
import com.example.ai_tutor.domain.professor.domain.Professor;
910
import com.example.ai_tutor.domain.professor.domain.repository.ProfessorRepository;
@@ -55,9 +56,9 @@ public ResponseEntity<?> createNewFolder( UserPrincipal userPrincipal, FolderCre
5556

5657
folderRepository.save(folder);
5758

58-
ApiResponse apiResponse = ApiResponse.builder()
59+
ApiResponse<Object> apiResponse = ApiResponse.builder()
5960
.check(true)
60-
.information("폴더 생성 성공")
61+
.information(FolderResponse.from(folder))
6162
.build();
6263

6364
return ResponseEntity.ok(apiResponse);
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.example.ai_tutor.domain.folder.dto.response;
2+
3+
import com.example.ai_tutor.domain.folder.domain.Folder;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
7+
@Builder
8+
@Data
9+
public class FolderResponse {
10+
private Long id;
11+
private String folderName;
12+
private String professorName;
13+
14+
public static FolderResponse from(Folder folder) {
15+
return FolderResponse.builder()
16+
.id(folder.getFolderId())
17+
.folderName(folder.getFolderName())
18+
.professorName(folder.getProfessorName()) // or folder.getProfessor().getProfessorName()
19+
.build();
20+
}
21+
}

src/main/java/com/example/ai_tutor/domain/folder/presentation/FolderController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
@RestController
2626
@RequiredArgsConstructor
27-
@RequestMapping("/api/v1/folder")
27+
@RequestMapping("/api/v1/folders")
2828
@Tag(name = "Folder", description = "폴더 관련 API입니다.")
2929
public class FolderController {
3030

src/main/java/com/example/ai_tutor/domain/note/application/ProfessorNoteService.java

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,9 @@ public ResponseEntity<?> createNewNote(UserPrincipal userPrincipal, Long folderI
6767
.build();
6868

6969
ApiResponse apiResponse = ApiResponse.builder()
70-
.check(true)
71-
.information(noteAccessRes)
72-
.build();
70+
.check(true)
71+
.information(noteAccessRes)
72+
.build();
7373

7474
return ResponseEntity.ok(apiResponse);
7575
}
@@ -312,8 +312,32 @@ public ResponseEntity<?> getNoteResult(UserPrincipal userPrincipal, Long noteId)
312312

313313
}
314314

315+
// ProfessorNoteService.java
316+
public ResponseEntity<?> getNote(UserPrincipal userPrincipal, Long noteId) {
317+
User user = getUser(userPrincipal);
318+
Note note = noteRepository.findById(noteId)
319+
.orElseThrow(() -> new IllegalArgumentException("노트를 찾을 수 없습니다."));
320+
321+
// 접근 권한 체크
322+
Folder folder = note.getFolder();
323+
DefaultAssert.isTrue(folder.getProfessor().getUser().equals(user), "접근 권한이 없습니다.");
324+
325+
// DTO로 변환 (예시)
326+
NoteDetailRes noteDetailRes = NoteDetailRes.from(note);
327+
328+
ApiResponse<Object> apiResponse = ApiResponse.builder()
329+
.check(true)
330+
.information(noteDetailRes)
331+
.build();
332+
333+
return ResponseEntity.ok(apiResponse);
334+
}
335+
336+
337+
315338
private User getUser(UserPrincipal userPrincipal){
316-
return userRepository.findById(1L).orElseThrow(()
339+
String email = userPrincipal.getEmail();
340+
return userRepository.findByEmail(email).orElseThrow(()
317341
-> new IllegalArgumentException("사용자를 찾을 수 없습니다."));
318342
}
319-
}
343+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.example.ai_tutor.domain.note.dto.response;
2+
3+
import com.example.ai_tutor.domain.note.domain.Note;
4+
import com.example.ai_tutor.domain.summary.domain.Summary;
5+
import lombok.Builder;
6+
import lombok.Data;
7+
8+
import java.time.LocalDateTime;
9+
// NoteDetailRes.java
10+
@Builder
11+
@Data
12+
public class NoteDetailRes {
13+
private Long noteId;
14+
private String title;
15+
private Summary summary;
16+
private LocalDateTime createdAt;
17+
private String sttText;
18+
private String code;
19+
20+
public static NoteDetailRes from(Note note) {
21+
return NoteDetailRes.builder()
22+
.noteId(note.getNoteId())
23+
.title(note.getTitle())
24+
.summary(note.getSummary()) // null 가능성 있다면 조건 처리 가능
25+
.createdAt(note.getCreatedAt())
26+
.sttText(note.getSttText())
27+
.code(note.getCode())
28+
.build();
29+
}
30+
}

src/main/java/com/example/ai_tutor/global/payload/ApiResponse.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,19 @@
55
import lombok.Data;
66

77
@Data
8-
public class ApiResponse {
8+
public class ApiResponse<T> {
99

10-
@Schema( type = "boolean", example = "true", description="올바르게 로직을 처리했으면 True, 아니면 False를 반환합니다.")
10+
@Schema(type = "boolean", example = "true", description = "올바르게 로직을 처리했으면 true, 아니면 false를 반환합니다.")
1111
private boolean check;
1212

13-
@Schema( type = "object", example = "information", description="restful의 정보를 감싸 표현합니다. object형식으로 표현합니다.")
14-
private Object information;
13+
@Schema(description = "응답 데이터를 감싸는 객체입니다. 실제 응답 내용이 여기에 포함됩니다.")
14+
private T information;
1515

16-
public ApiResponse(){};
16+
public ApiResponse() {}
1717

1818
@Builder
19-
public ApiResponse(boolean check, Object information) {
19+
public ApiResponse(boolean check, T information) {
2020
this.check = check;
2121
this.information = information;
2222
}
23-
2423
}

0 commit comments

Comments
 (0)