-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* ✨ [STMT-273] 관리자 혹은 작성자 검증 로직 구현 * ✨ [STMT-273] 활동 이미지 파일 폴더로 삭제 기능 구현 * ✨ [STMT-273] 활동 이미지 파일 데이터 삭제 구현 * ✨ [STMT-273] 활동 참가자 데이터 삭제 구현 * ✨ [STMT-273] 활동 삭제 메서드 구현 * ✨ [STMT-273] 활동 삭제 api 구현 * ✅ [STMT-273] test 전 setup 데이터에 활동 이미지 더미 데이터 추가 * ✅ [STMT-273] 스터디 활동 삭제 api 테스트 케이스 작성 * ✅ [STMT-273] 관리자가 아닌 작성자가 삭제하는 테스트 케이스 추가 * ✅ [STMT-273] 스터디 멤버가 아닌 경우 테스트 케이스 추가 * 📝 [STMT-273] 활동 삭제 api 명세서 작성
- Loading branch information
Showing
27 changed files
with
435 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
42 changes: 42 additions & 0 deletions
42
src/main/java/com/stumeet/server/activity/adapter/in/ActivityDeleteApi.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package com.stumeet.server.activity.adapter.in; | ||
|
||
import org.springframework.http.HttpStatus; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.security.core.annotation.AuthenticationPrincipal; | ||
import org.springframework.web.bind.annotation.DeleteMapping; | ||
import org.springframework.web.bind.annotation.PathVariable; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
|
||
import com.stumeet.server.activity.application.port.in.ActivityDeleteUseCase; | ||
import com.stumeet.server.activity.application.port.in.command.ActivityDeleteCommand; | ||
import com.stumeet.server.common.annotation.WebAdapter; | ||
import com.stumeet.server.common.auth.model.LoginMember; | ||
import com.stumeet.server.common.model.ApiResponse; | ||
import com.stumeet.server.common.response.SuccessCode; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
|
||
@WebAdapter | ||
@RequestMapping("/api/v1") | ||
@RequiredArgsConstructor | ||
public class ActivityDeleteApi { | ||
|
||
private final ActivityDeleteUseCase activityDeleteUseCase; | ||
|
||
@DeleteMapping("/studies/{studyId}/activities/{activityId}") | ||
public ResponseEntity<ApiResponse<Void>> delete( | ||
@AuthenticationPrincipal LoginMember member, | ||
@PathVariable Long studyId, | ||
@PathVariable Long activityId | ||
) { | ||
ActivityDeleteCommand command = ActivityDeleteCommand.builder() | ||
.memberId(member.getId()) | ||
.studyId(studyId) | ||
.activityId(activityId) | ||
.build(); | ||
activityDeleteUseCase.delete(command); | ||
|
||
return ResponseEntity.status(HttpStatus.OK) | ||
.body(ApiResponse.success(SuccessCode.DELETE_SUCCESS)); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
5 changes: 5 additions & 0 deletions
5
src/main/java/com/stumeet/server/activity/adapter/out/persistence/JpaActivityRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,12 @@ | ||
package com.stumeet.server.activity.adapter.out.persistence; | ||
|
||
import java.util.Optional; | ||
|
||
import com.stumeet.server.activity.adapter.out.model.ActivityJpaEntity; | ||
import org.springframework.data.jpa.repository.JpaRepository; | ||
import org.springframework.data.repository.query.Param; | ||
|
||
public interface JpaActivityRepository extends JpaRepository<ActivityJpaEntity, Long>, JpaActivityRepositoryCustom { | ||
|
||
Optional<ActivityJpaEntity> findByIdAndAuthorId(@Param("id") Long activityId, @Param("authorId") Long memberId); | ||
} |
6 changes: 6 additions & 0 deletions
6
...a/com/stumeet/server/activity/application/port/in/ActivityAuthorityValidationUseCase.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
package com.stumeet.server.activity.application.port.in; | ||
|
||
public interface ActivityAuthorityValidationUseCase { | ||
|
||
void checkDeleteAuthority(Long studyId, Long memberId, Long activityId); | ||
} |
8 changes: 8 additions & 0 deletions
8
src/main/java/com/stumeet/server/activity/application/port/in/ActivityDeleteUseCase.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
package com.stumeet.server.activity.application.port.in; | ||
|
||
import com.stumeet.server.activity.application.port.in.command.ActivityDeleteCommand; | ||
|
||
public interface ActivityDeleteUseCase { | ||
|
||
void delete(ActivityDeleteCommand command); | ||
} |
11 changes: 11 additions & 0 deletions
11
...n/java/com/stumeet/server/activity/application/port/in/command/ActivityDeleteCommand.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package com.stumeet.server.activity.application.port.in.command; | ||
|
||
import lombok.Builder; | ||
|
||
@Builder | ||
public record ActivityDeleteCommand( | ||
Long memberId, | ||
Long studyId, | ||
Long activityId | ||
) { | ||
} |
6 changes: 6 additions & 0 deletions
6
...n/java/com/stumeet/server/activity/application/port/out/ActivityAuthorValidationPort.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
package com.stumeet.server.activity.application.port.out; | ||
|
||
public interface ActivityAuthorValidationPort { | ||
|
||
boolean isNotActivityAuthor(Long memberId, Long activityId); | ||
} |
6 changes: 6 additions & 0 deletions
6
src/main/java/com/stumeet/server/activity/application/port/out/ActivityDeletePort.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
package com.stumeet.server.activity.application.port.out; | ||
|
||
public interface ActivityDeletePort { | ||
|
||
void deleteById(Long activityId); | ||
} |
6 changes: 6 additions & 0 deletions
6
src/main/java/com/stumeet/server/activity/application/port/out/ActivityImageCommandPort.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
package com.stumeet.server.activity.application.port.out; | ||
|
||
public interface ActivityImageCommandPort { | ||
|
||
void deleteAllByActivityId(Long activityId); | ||
} |
6 changes: 6 additions & 0 deletions
6
...java/com/stumeet/server/activity/application/port/out/ActivityParticipantCommandPort.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
package com.stumeet.server.activity.application.port.out; | ||
|
||
public interface ActivityParticipantCommandPort { | ||
|
||
void deleteByActivityId(Long activityId); | ||
} |
24 changes: 24 additions & 0 deletions
24
...a/com/stumeet/server/activity/application/service/ActivityAuthorityValidationService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package com.stumeet.server.activity.application.service; | ||
|
||
import com.stumeet.server.activity.application.port.in.ActivityAuthorityValidationUseCase; | ||
import com.stumeet.server.activity.application.port.out.ActivityAuthorValidationPort; | ||
import com.stumeet.server.activity.domain.exception.ActivityManagementAccessDeniedException; | ||
import com.stumeet.server.common.annotation.UseCase; | ||
import com.stumeet.server.studymember.application.port.out.StudyMemberValidationPort; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
|
||
@UseCase | ||
@RequiredArgsConstructor | ||
public class ActivityAuthorityValidationService implements ActivityAuthorityValidationUseCase { | ||
|
||
private final StudyMemberValidationPort studyMemberValidationPort; | ||
private final ActivityAuthorValidationPort activityAuthorValidationPort; | ||
|
||
@Override | ||
public void checkDeleteAuthority(Long studyId, Long memberId, Long activityId) { | ||
if (studyMemberValidationPort.isNotAdmin(studyId, memberId) && activityAuthorValidationPort.isNotActivityAuthor(memberId, activityId)) { | ||
throw new ActivityManagementAccessDeniedException(); | ||
} | ||
} | ||
} |
42 changes: 42 additions & 0 deletions
42
src/main/java/com/stumeet/server/activity/application/service/ActivityDeleteService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package com.stumeet.server.activity.application.service; | ||
|
||
import org.springframework.transaction.annotation.Transactional; | ||
|
||
import com.stumeet.server.activity.application.port.in.ActivityAuthorityValidationUseCase; | ||
import com.stumeet.server.activity.application.port.in.ActivityDeleteUseCase; | ||
import com.stumeet.server.activity.application.port.in.command.ActivityDeleteCommand; | ||
import com.stumeet.server.activity.application.port.out.ActivityDeletePort; | ||
import com.stumeet.server.activity.application.port.out.ActivityParticipantCommandPort; | ||
import com.stumeet.server.common.annotation.UseCase; | ||
import com.stumeet.server.study.application.port.in.ActivityImageDeleteUseCase; | ||
import com.stumeet.server.study.application.port.in.ActivityParticipantDeleteUseCase; | ||
import com.stumeet.server.study.application.port.in.StudyValidationUseCase; | ||
import com.stumeet.server.studymember.application.port.in.StudyMemberValidationUseCase; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
|
||
@UseCase | ||
@RequiredArgsConstructor | ||
@Transactional | ||
public class ActivityDeleteService implements ActivityDeleteUseCase { | ||
|
||
private final StudyMemberValidationUseCase studyMemberValidationUseCase; | ||
private final StudyValidationUseCase studyValidationUseCase; | ||
private final ActivityAuthorityValidationUseCase activityAuthorityValidationUseCase; | ||
|
||
private final ActivityImageDeleteUseCase activityImageDeleteUseCase; | ||
private final ActivityParticipantDeleteUseCase activityParticipantDeleteUseCase; | ||
|
||
private final ActivityDeletePort activityDeletePort; | ||
|
||
@Override | ||
public void delete(ActivityDeleteCommand command) { | ||
studyValidationUseCase.checkById(command.studyId()); | ||
studyMemberValidationUseCase.checkStudyJoinMember(command.studyId(), command.memberId()); | ||
activityAuthorityValidationUseCase.checkDeleteAuthority(command.studyId(), command.memberId(), command.activityId()); | ||
|
||
activityImageDeleteUseCase.deleteByActivityId(command.studyId(), command.activityId()); | ||
activityParticipantDeleteUseCase.deleteByActivityId(command.activityId()); | ||
activityDeletePort.deleteById(command.activityId()); | ||
} | ||
} |
10 changes: 10 additions & 0 deletions
10
...com/stumeet/server/activity/domain/exception/ActivityManagementAccessDeniedException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package com.stumeet.server.activity.domain.exception; | ||
|
||
import com.stumeet.server.common.exception.model.InvalidStateException; | ||
import com.stumeet.server.common.response.ErrorCode; | ||
|
||
public class ActivityManagementAccessDeniedException extends InvalidStateException { | ||
public ActivityManagementAccessDeniedException() { | ||
super(ErrorCode.ACTIVITY_MANAGEMENT_ACCESS_DENIED_EXCEPTION); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
6 changes: 6 additions & 0 deletions
6
src/main/java/com/stumeet/server/study/application/port/in/ActivityImageDeleteUseCase.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
package com.stumeet.server.study.application.port.in; | ||
|
||
public interface ActivityImageDeleteUseCase { | ||
|
||
void deleteByActivityId(Long studyId, Long activityId); | ||
} |
6 changes: 6 additions & 0 deletions
6
...n/java/com/stumeet/server/study/application/port/in/ActivityParticipantDeleteUseCase.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
package com.stumeet.server.study.application.port.in; | ||
|
||
public interface ActivityParticipantDeleteUseCase { | ||
|
||
void deleteByActivityId(Long activityId); | ||
} |
Oops, something went wrong.