-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathFolderController.java
More file actions
117 lines (99 loc) · 4.13 KB
/
FolderController.java
File metadata and controls
117 lines (99 loc) · 4.13 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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package com.web.SearchWeb.folder.controller;
import com.web.SearchWeb.aop.OwnerCheck;
import com.web.SearchWeb.folder.dto.request.FolderCreateRequestDto;
import com.web.SearchWeb.folder.dto.request.FolderUpdateRequestDto;
import com.web.SearchWeb.folder.dto.response.FolderResponseDto;
import com.web.SearchWeb.folder.service.FolderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 코드 작성자:
* - 서진영(jin2304)
*
* 코드 설명:
* - 사용자의 폴더 관리 API (CRUD + 태그 조회).
* - 모든 요청은 OwnerCheck AOP를 통해 권한을 검증.
*
* 코드 주요 기능:
* - 폴더 생성
* - 폴더 단일 조회
* - 폴더 목록 조회
* - 폴더 수정
* - 폴더 삭제
* - 폴더 태그 목록 조회
*
* 코드 작성일:
* - 2025.12.31 ~ 2026.01.02
*/
@Controller
public class FolderController {
private final FolderService folderService;
@Autowired
public FolderController(FolderService folderService) {
this.folderService = folderService;
}
/**
* 폴더 생성
*/
@PostMapping("/myPage/{memberId}/folder")
@OwnerCheck(idParam = "memberId", service = "memberService")
public ResponseEntity<FolderResponseDto> insertFolder(@PathVariable final int memberId,
@RequestBody FolderCreateRequestDto folderCreateRequestDto) {
FolderResponseDto folder = folderService.insertFolder(memberId, folderCreateRequestDto);
return ResponseEntity.ok(folder);
}
/**
* 폴더 단일 조회
*/
@GetMapping("/myPage/{memberId}/folder/{folderId}")
@OwnerCheck(idParam = "memberId", service = "memberService")
public ResponseEntity<FolderResponseDto> getFolder(@PathVariable final int memberId,
@PathVariable final int folderId) {
FolderResponseDto folder = folderService.selectFolder(memberId, folderId);
return ResponseEntity.ok(folder);
}
/**
* 폴더 목록 조회
*/
@GetMapping("/myPage/{memberId}/folders")
@OwnerCheck(idParam = "memberId", service = "memberService")
public ResponseEntity<List<FolderResponseDto>> getFolders(@PathVariable final int memberId,
@RequestParam(required = false, defaultValue = "All") String tag,
@RequestParam(required = false, defaultValue = "Newest") String sort) {
List<FolderResponseDto> folders = folderService.selectFolderList(memberId, tag, sort);
return ResponseEntity.ok(folders);
}
/**
* 폴더 수정
*/
@PutMapping("/myPage/{memberId}/folder/{folderId}")
@OwnerCheck(idParam = "memberId", service = "memberService")
public ResponseEntity<Integer> updateFolder(@PathVariable final int memberId,
@PathVariable final int folderId,
@RequestBody FolderUpdateRequestDto folderUpdateRequestDto) {
int result = folderService.updateFolder(memberId, folderId, folderUpdateRequestDto);
return ResponseEntity.ok(result);
}
/**
* 폴더 삭제
*/
@DeleteMapping("/myPage/{memberId}/folder/{folderId}")
@OwnerCheck(idParam = "memberId", service = "memberService")
public ResponseEntity<Integer> deleteFolder(@PathVariable final int memberId,
@PathVariable final int folderId) {
int result = folderService.deleteFolder(memberId, folderId);
return ResponseEntity.ok(result);
}
/**
* 폴더 태그 목록 조회
*/
@GetMapping("/myPage/{memberId}/folderTags")
@OwnerCheck(idParam = "memberId", service = "memberService")
public ResponseEntity<List<String>> getFolderTags(@PathVariable final int memberId) {
List<String> tags = folderService.selectFolderTags(memberId);
return ResponseEntity.ok(tags);
}
}