Skip to content

Commit 791a4ae

Browse files
committed
feat: 플랜 도메인 Swagger 문서화
1 parent b729ae7 commit 791a4ae

1 file changed

Lines changed: 83 additions & 18 deletions

File tree

src/main/java/com/back/web7_9_codecrete_be/domain/plans/controller/PlanController.java

Lines changed: 83 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public RsData<List<PlanListResponse>> getPlanList() {
5454
* @return 계획 상세 정보 (200 OK)
5555
*/
5656
@GetMapping("/{planId}")
57-
@Operation(summary = "계획 상세 조회", description = "특정 계획의 상세 정보를 조회합니다.")
57+
@Operation(summary = "계획 상세 조회", description = "특정 계획의 상세 정보를 조회합니다. 계획에 대한 모든 세부 정보와 참가자 목록, 일정 목록을 포함합니다.")
5858
public RsData<PlanDetailResponse> getPlanDetail(@PathVariable Long planId) {
5959
User user = rq.getUser();
6060
PlanDetailResponse planDetail = planService.getPlanDetail(planId, user);
@@ -84,7 +84,7 @@ public RsData<PlanResponse> createPlan(
8484
* @return 수정된 계획 정보 (200 OK)
8585
*/
8686
@PatchMapping("/update/{planId}")
87-
@Operation(summary = "계획 수정", description = "기존 계획의 정보를 수정합니다.")
87+
@Operation(summary = "계획 수정", description = "기존 계획의 제목, 날짜 등의 정보를 수정합니다. 계획의 소유자 또는 편집 권한이 있는 사용자만 수정할 수 있습니다.")
8888
public RsData<PlanResponse> updatePlan(
8989
@PathVariable Long planId,
9090
@Valid @RequestBody PlanUpdateRequest request) {
@@ -100,9 +100,8 @@ public RsData<PlanResponse> updatePlan(
100100
* @return 삭제된 계획 ID (200 OK)
101101
*/
102102
@DeleteMapping("/delete/{planId}")
103-
@Operation(summary = "계획 삭제", description = "기존 계획을 삭제합니다.")
104-
public RsData<PlanDeleteResponse> deletePlan(
105-
@PathVariable Long planId) {
103+
@Operation(summary = "계획 삭제", description = "기존 계획을 삭제합니다. 계획의 소유자만 삭제할 수 있으며, 삭제 시 관련된 모든 일정과 참가자 정보도 함께 삭제됩니다.")
104+
public RsData<PlanDeleteResponse> deletePlan(@PathVariable Long planId) {
106105
User user = rq.getUser();
107106
PlanDeleteResponse deleteResponse = planService.deletePlan(planId, user);
108107
return RsData.success("계획 삭제 성공", deleteResponse);
@@ -117,7 +116,7 @@ public RsData<PlanDeleteResponse> deletePlan(
117116
* @return 생성된 일정 정보 (201 Created)
118117
*/
119118
@PostMapping("/{planId}/schedules")
120-
@Operation(summary = "일정 추가", description = "계획에 새로운 일정을 추가합니다.")
119+
@Operation(summary = "일정 추가", description = "계획에 새로운 일정을 추가합니다. 일정 타입(이동수단, 식사, 대기, 활동)에 따라 필요한 정보가 다릅니다. 이동수단 타입의 경우 출발지/도착지 좌표와 이동수단 종류가 필수입니다.")
121120
public RsData<ScheduleResponse> addSchedule(
122121
@PathVariable Long planId,
123122
@Valid @RequestBody ScheduleAddRequest request) {
@@ -133,9 +132,8 @@ public RsData<ScheduleResponse> addSchedule(
133132
* @return 일정 목록 (200 OK)
134133
*/
135134
@GetMapping("/{planId}/schedules")
136-
@Operation(summary = "일정 목록 조회", description = "계획의 일정 목록을 타임라인 형태로 조회합니다.")
137-
public RsData<ScheduleListResponse> getSchedules(
138-
@PathVariable Long planId) {
135+
@Operation(summary = "일정 목록 조회", description = "계획의 일정 목록을 타임라인 형태로 조회합니다. 시작 시간 순으로 정렬된 일정 목록을 반환합니다.")
136+
public RsData<ScheduleListResponse> getSchedules(@PathVariable Long planId) {
139137
User user = rq.getUser();
140138
ScheduleListResponse response = planService.getSchedules(planId, user);
141139
return RsData.success("일정 목록 조회 성공", response);
@@ -149,7 +147,7 @@ public RsData<ScheduleListResponse> getSchedules(
149147
* @return 일정 상세 정보 (200 OK)
150148
*/
151149
@GetMapping("/{planId}/schedules/{scheduleId}")
152-
@Operation(summary = "일정 상세 조회", description = "특정 일정의 상세 정보를 조회합니다.")
150+
@Operation(summary = "일정 상세 조회", description = "특정 일정의 상세 정보를 조회합니다. 일정의 모든 속성과 위치 정보를 포함합니다.")
153151
public RsData<ScheduleResponse> getSchedule(
154152
@PathVariable Long planId,
155153
@PathVariable Long scheduleId) {
@@ -167,7 +165,7 @@ public RsData<ScheduleResponse> getSchedule(
167165
* @return 수정된 일정 정보 (200 OK)
168166
*/
169167
@PatchMapping("/{planId}/schedules/{scheduleId}")
170-
@Operation(summary = "일정 수정", description = "기존 일정의 정보를 수정합니다.")
168+
@Operation(summary = "일정 수정", description = "기존 일정의 정보를 수정합니다. 계획의 소유자 또는 편집 권한이 있는 사용자만 수정할 수 있습니다.")
171169
public RsData<ScheduleResponse> updateSchedule(
172170
@PathVariable Long planId,
173171
@PathVariable Long scheduleId,
@@ -185,7 +183,7 @@ public RsData<ScheduleResponse> updateSchedule(
185183
* @return 삭제된 일정 ID (200 OK)
186184
*/
187185
@DeleteMapping("/{planId}/schedules/{scheduleId}")
188-
@Operation(summary = "일정 삭제", description = "기존 일정을 삭제합니다.")
186+
@Operation(summary = "일정 삭제", description = "기존 일정을 삭제합니다. 계획의 소유자 또는 편집 권한이 있는 사용자만 삭제할 수 있습니다.")
189187
public RsData<ScheduleDeleteResponse> deleteSchedule(
190188
@PathVariable Long planId,
191189
@PathVariable Long scheduleId) {
@@ -203,7 +201,7 @@ public RsData<ScheduleDeleteResponse> deleteSchedule(
203201
* @return 성공 메시지 (200 OK)
204202
*/
205203
@PatchMapping("/{planId}/participants/{participantId}/role")
206-
@Operation(summary = "참가자 역할 수정", description = "참가자의 역할을 수정합니다. (Owner, Editor, Viewer)")
204+
@Operation(summary = "참가자 역할 수정", description = "참가자의 역할을 수정합니다. Owner(소유자), Editor(편집자), Viewer(조회자) 중 하나로 설정할 수 있습니다. 계획의 소유자만 다른 참가자의 역할을 수정할 수 있습니다.")
207205
public RsData<Void> updateParticipantRole(
208206
@PathVariable Long planId,
209207
@PathVariable Long participantId,
@@ -213,9 +211,76 @@ public RsData<Void> updateParticipantRole(
213211
return RsData.success("참가자 역할 수정 성공", null);
214212
}
215213

216-
// POST /api/v1/plans/invite/{planID} - 계획 공유 초대
217-
// POST /api/v1/plans/accept/{planID} - 계획 공유 수락
218-
// POST /api/v1/plans/deny/{planID} - 계획 공유 거절
219-
// DELETE /api/v1/plans/kick/{planID} - 계획 공유 인원 추방
220-
// DELETE /api/v1/plans/quit/{planID} - 계획 공유 나가기
214+
/**
215+
* 계획 공유 초대
216+
*
217+
* @param planId 계획 ID
218+
* @return 성공 메시지 (200 OK)
219+
*/
220+
@PostMapping("/invite/{planId}")
221+
@Operation(summary = "계획 공유 초대", description = "다른 사용자에게 계획 공유를 초대합니다. 계획의 소유자 또는 편집 권한이 있는 사용자만 초대할 수 있습니다. 초대된 사용자는 수락 또는 거절할 수 있습니다.")
222+
public RsData<Void> invitePlan(@PathVariable Long planId) {
223+
User user = rq.getUser();
224+
// TODO: 구현 필요
225+
return RsData.success("계획 공유 초대 성공", null);
226+
}
227+
228+
/**
229+
* 계획 공유 수락
230+
*
231+
* @param planId 계획 ID
232+
* @return 성공 메시지 (200 OK)
233+
*/
234+
@PostMapping("/accept/{planId}")
235+
@Operation(summary = "계획 공유 수락", description = "받은 계획 공유 초대를 수락합니다. 수락 시 해당 계획에 참가자로 추가되며, 초대 시 설정된 역할(Editor 또는 Viewer)로 참여하게 됩니다.")
236+
public RsData<Void> acceptPlanInvite(@PathVariable Long planId) {
237+
User user = rq.getUser();
238+
// TODO: 구현 필요
239+
return RsData.success("계획 공유 수락 성공", null);
240+
}
241+
242+
/**
243+
* 계획 공유 거절
244+
*
245+
* @param planId 계획 ID
246+
* @return 성공 메시지 (200 OK)
247+
*/
248+
@PostMapping("/deny/{planId}")
249+
@Operation(summary = "계획 공유 거절", description = "받은 계획 공유 초대를 거절합니다. 거절 시 해당 계획에 참가자로 추가되지 않으며, 초대 상태가 거절로 변경됩니다.")
250+
public RsData<Void> denyPlanInvite(@PathVariable Long planId) {
251+
User user = rq.getUser();
252+
// TODO: 구현 필요
253+
return RsData.success("계획 공유 거절 성공", null);
254+
}
255+
256+
/**
257+
* 계획 공유 인원 추방
258+
*
259+
* @param planId 계획 ID
260+
* @param participantId 참가자 ID
261+
* @return 성공 메시지 (200 OK)
262+
*/
263+
@DeleteMapping("/kick/{planId}/{participantId}")
264+
@Operation(summary = "계획 공유 인원 추방", description = "계획에 참여 중인 사용자를 추방합니다. 계획의 소유자만 다른 참가자를 추방할 수 있으며, 소유자 자신은 추방할 수 없습니다.")
265+
public RsData<Void> kickParticipant(
266+
@PathVariable Long planId,
267+
@PathVariable Long participantId) {
268+
User user = rq.getUser();
269+
// TODO: 구현 필요
270+
return RsData.success("참가자 추방 성공", null);
271+
}
272+
273+
/**
274+
* 계획 공유 나가기
275+
*
276+
* @param planId 계획 ID
277+
* @return 성공 메시지 (200 OK)
278+
*/
279+
@DeleteMapping("/quit/{planId}")
280+
@Operation(summary = "계획 공유 나가기", description = "공유된 계획에서 나갑니다. 계획의 소유자가 아닌 참가자만 사용할 수 있으며, 나가기 시 해당 계획의 참가자 목록에서 제거됩니다.")
281+
public RsData<Void> quitPlan(@PathVariable Long planId) {
282+
User user = rq.getUser();
283+
// TODO: 구현 필요
284+
return RsData.success("계획 나가기 성공", null);
285+
}
221286
}

0 commit comments

Comments
 (0)