Skip to content

Commit 86ecc64

Browse files
committed
refect: 삭제 시 삭제된 계획 정보 반환
1 parent a6b39d0 commit 86ecc64

File tree

3 files changed

+47
-8
lines changed

3 files changed

+47
-8
lines changed

src/main/java/com/back/domain/study/plan/controller/StudyPlanController.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.back.domain.study.plan.controller;
22

3+
import com.back.domain.study.plan.dto.StudyPlanDeleteResponse;
34
import com.back.domain.study.plan.dto.StudyPlanRequest;
45
import com.back.domain.study.plan.dto.StudyPlanListResponse;
56
import com.back.domain.study.plan.dto.StudyPlanResponse;
@@ -111,15 +112,15 @@ public ResponseEntity<RsData<StudyPlanResponse>> updateStudyPlan(
111112
description = "기존 학습 계획을 삭제합니다. 반복 계획의 경우 적용 범위를 applyScope로 설정 할 수 있으며" +
112113
"클라이언트에서는 paln에 repeat_rule이 있으면 반복 계획으로 간주하고 반드시 apply_scope를 쿼리 파라미터로 넘겨야 합니다." +
113114
"repeat_rule이 없으면 단발성 계획으로 간주하여 삭제 범위를 설정 할 필요가 없으므로 apply_scope를 넘기지 않아도 됩니다.")
114-
public ResponseEntity<RsData<Void>> deleteStudyPlan(
115+
public ResponseEntity<RsData<StudyPlanDeleteResponse>> deleteStudyPlan(
115116
@AuthenticationPrincipal CustomUserDetails user,
116117
@PathVariable Long planId,
117118
@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate selectedDate,
118119
@RequestParam(name = "applyScope", required = true) ApplyScope applyScope) {
119120
Long userId = user.getUserId();
120121

121-
studyPlanService.deleteStudyPlan(userId, planId, selectedDate, applyScope);
122-
return ResponseEntity.ok(RsData.success("학습 계획이 성공적으로 삭제되었습니다."));
122+
StudyPlanDeleteResponse response = studyPlanService.deleteStudyPlan(userId, planId, selectedDate, applyScope);
123+
return ResponseEntity.ok(RsData.success("학습 계획이 성공적으로 삭제되었습니다.",response));
123124
}
124125

125126
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.back.domain.study.plan.dto;
2+
3+
import com.back.domain.study.plan.entity.ApplyScope;
4+
import com.back.domain.study.plan.entity.Color;
5+
import com.back.domain.study.plan.entity.StudyPlan;
6+
7+
import java.time.LocalDate;
8+
import java.time.LocalDateTime;
9+
10+
public class StudyPlanDeleteResponse {
11+
private Long id;
12+
private String subject;
13+
private LocalDateTime startDate;
14+
private LocalDateTime endDate;
15+
private Color color;
16+
private LocalDate deletedDate; // 삭제된 날짜
17+
private ApplyScope applyScope; // 삭제 범위
18+
19+
public StudyPlanDeleteResponse(StudyPlanResponse plan, ApplyScope applyScope) {
20+
this.id = plan.getId();
21+
this.subject = plan.getSubject();
22+
this.startDate = plan.getStartDate();
23+
this.endDate = plan.getEndDate();
24+
this.color = plan.getColor();
25+
this.deletedDate = plan.getStartDate().toLocalDate();
26+
this.applyScope = applyScope;
27+
}
28+
}

src/main/java/com/back/domain/study/plan/service/StudyPlanService.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.back.domain.study.plan.service;
22

3+
import com.back.domain.study.plan.dto.StudyPlanDeleteResponse;
34
import com.back.domain.study.plan.dto.StudyPlanRequest;
45
import com.back.domain.study.plan.dto.StudyPlanResponse;
56
import com.back.domain.study.plan.entity.*;
@@ -486,20 +487,29 @@ private RepeatRuleEmbeddable createRepeatRuleEmbeddable(StudyPlanRequest.RepeatR
486487

487488
// ==================== 삭제 ===================
488489
@Transactional
489-
public void deleteStudyPlan(Long userId, Long planId, LocalDate selectedDate, ApplyScope applyScope) {
490+
public StudyPlanDeleteResponse deleteStudyPlan(Long userId, Long planId, LocalDate selectedDate, ApplyScope applyScope) {
490491
StudyPlan studyPlan = studyPlanRepository.findById(planId)
491492
.orElseThrow(() -> new CustomException(ErrorCode.PLAN_NOT_FOUND));
492493

493494
validateUserAccess(studyPlan, userId);
494495

495-
// 단발성 계획 삭제 (반복 룰이 null이거나 applyScope가 null인 경우)
496+
// 삭제 전 정보 조회
497+
StudyPlanResponse deletedPlan;
498+
496499
if (studyPlan.getRepeatRule() == null || applyScope == null) {
500+
// 단발성 계획
501+
deletedPlan = new StudyPlanResponse(studyPlan);
497502
studyPlanRepository.delete(studyPlan);
498-
return;
503+
} else {
504+
// 반복성 계획 - 가상 계획 조회
505+
deletedPlan = createVirtualPlanForDate(studyPlan, selectedDate);
506+
if (deletedPlan == null) {
507+
throw new CustomException(ErrorCode.PLAN_NOT_FOUND);
508+
}
509+
deleteRepeatPlan(studyPlan, selectedDate, applyScope);
499510
}
500511

501-
// 반복성 계획 삭제 - applyScope에 따른 처리
502-
deleteRepeatPlan(studyPlan, selectedDate, applyScope);
512+
return new StudyPlanDeleteResponse(deletedPlan, applyScope);
503513
}
504514

505515
private void deleteRepeatPlan(StudyPlan studyPlan, LocalDate selectedDate, ApplyScope applyScope) {

0 commit comments

Comments
 (0)