@@ -139,18 +139,29 @@ public void deleteChallenge(Long challengeId, User user) {
139
139
Challenge challenge = challengeRepository .findByIdAndUser (challengeId , user ).orElseThrow (
140
140
() -> new ApiRequestException ("해당 챌린지가 존재하지 않습니다." )
141
141
);
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 ("챌린지를 삭제할 수 없습니다." );
150
164
}
151
-
152
- certificationRepository .deleteAllByChallenge (challenge );
153
- challengeRepository .delete (challenge );
154
165
}
155
166
156
167
public ResultResponseDto checkChallengeCreator (Long challengeId , User user ) {
0 commit comments