Skip to content

Commit 01d08e6

Browse files
committed
fix: 챌린지 삭제 에러 수정
1 parent 3b4175a commit 01d08e6

File tree

2 files changed

+26
-11
lines changed

2 files changed

+26
-11
lines changed

src/main/java/shop/fevertime/backend/repository/ChallengeHistoryRepository.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,8 @@ Optional<ChallengeHistory> findChallengeHistoryByChallengeStatusEquals(
2828
long countDistinctUserByChallengeAndChallengeStatus(Challenge challenge, ChallengeStatus challengeStatus);
2929

3030
List<ChallengeHistory> findAllByUserAndChallengeStatus(User user, ChallengeStatus challengeStatus);
31+
32+
List<ChallengeHistory> findAllByChallengeAndChallengeStatusAndUserNot(Challenge challenge, ChallengeStatus challengeStatus, User user);
33+
34+
void deleteAllByChallenge(Challenge challenge);
3135
}

src/main/java/shop/fevertime/backend/service/ChallengeService.java

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -139,18 +139,29 @@ public void deleteChallenge(Long challengeId, User user) {
139139
Challenge challenge = challengeRepository.findByIdAndUser(challengeId, user).orElseThrow(
140140
() -> new ApiRequestException("해당 챌린지가 존재하지 않습니다.")
141141
);
142-
String[] ar = challenge.getImgUrl().split("/");
143-
s3Uploader.delete(ar[ar.length - 1], "challenge");
144-
145-
// 삭제하는 챌린지에 해당하는 인증 이미지 s3 삭제
146-
List<Certification> certifications = certificationRepository.findAllByChallenge(challenge);
147-
for (Certification certification : certifications) {
148-
String[] arr = certification.getImgUrl().split("/");
149-
s3Uploader.delete(arr[arr.length - 1], "certification");
142+
//챌린지에 참가한 유저 검토
143+
List<ChallengeHistory> all = challengeHistoryRepository.findAllByChallengeAndChallengeStatusAndUserNot(challenge, ChallengeStatus.JOIN, user);
144+
145+
//생성 유저 제외하여 참가자가 없으면 삭제
146+
if (all.size() == 0) {
147+
//히스토리 삭제
148+
challengeHistoryRepository.deleteAllByChallenge(challenge);
149+
150+
// 챌린지 이미지 s3에서 삭제
151+
String[] ar = challenge.getImgUrl().split("/");
152+
s3Uploader.delete(ar[ar.length - 1], "challenge");
153+
154+
// 삭제하는 챌린지에 해당하는 인증 이미지 s3 삭제
155+
List<Certification> certifications = certificationRepository.findAllByChallenge(challenge);
156+
for (Certification certification : certifications) {
157+
String[] arr = certification.getImgUrl().split("/");
158+
s3Uploader.delete(arr[arr.length - 1], "certification");
159+
}
160+
certificationRepository.deleteAllByChallenge(challenge);
161+
challengeRepository.delete(challenge);
162+
} else {
163+
throw new ApiRequestException("챌린지를 삭제할 수 없습니다.");
150164
}
151-
152-
certificationRepository.deleteAllByChallenge(challenge);
153-
challengeRepository.delete(challenge);
154165
}
155166

156167
public ResultResponseDto checkChallengeCreator(Long challengeId, User user) {

0 commit comments

Comments
 (0)