Skip to content

Commit 78b256a

Browse files
authored
[BSVR-254] 탈퇴 시 리뷰 삭제 구현 (#190)
* feat : 회원 탈퇴 시 리뷰 삭제 구현 * refactor : jwtToken 생성 prod에서 제외
1 parent 9f10e52 commit 78b256a

File tree

7 files changed

+29
-0
lines changed

7 files changed

+29
-0
lines changed

application/src/main/java/org/depromeet/spot/application/member/controller/JwtCreateController.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.depromeet.spot.application.member.dto.response.JwtTokenResponse;
55
import org.depromeet.spot.domain.member.Member;
66
import org.depromeet.spot.domain.member.enums.MemberRole;
7+
import org.springframework.context.annotation.Profile;
78
import org.springframework.web.bind.annotation.GetMapping;
89
import org.springframework.web.bind.annotation.PathVariable;
910
import org.springframework.web.bind.annotation.RequestMapping;
@@ -19,6 +20,7 @@
1920
@Slf4j
2021
@Tag(name = "Jwt 생성용")
2122
@RequestMapping("/api/v1/jwts")
23+
@Profile("!prod")
2224
public class JwtCreateController {
2325

2426
private final JwtTokenUtil jwtTokenUtil;

infrastructure/src/main/java/org/depromeet/spot/infrastructure/jpa/review/repository/ReviewJpaRepository.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,12 @@ int softDeleteByIdAndMemberId(
4242
@Param("memberId") Long memberId,
4343
@Param("deletedAt") LocalDateTime deletedAt);
4444

45+
@Modifying
46+
@Query(
47+
"UPDATE ReviewEntity r SET r.deletedAt = :deletedAt WHERE r.member.id = :memberId AND r.deletedAt IS NULL")
48+
void softDeleteAllReviewOwnedByMemberId(
49+
@Param("memberId") Long memberId, @Param("deletedAt") LocalDateTime deletedAt);
50+
4551
@Query(
4652
"SELECT r FROM ReviewEntity r WHERE r.member.id = :memberId "
4753
+ "AND r.deletedAt IS NULL "

infrastructure/src/main/java/org/depromeet/spot/infrastructure/jpa/review/repository/ReviewRepositoryImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,11 @@ public Long softDeleteByIdAndMemberId(Long reviewId, Long memberId) {
118118
return reviewId;
119119
}
120120

121+
@Override
122+
public void softDeleteAllReviewOwnedByMemberId(Long memberId) {
123+
reviewJpaRepository.softDeleteAllReviewOwnedByMemberId(memberId, LocalDateTime.now());
124+
}
125+
121126
@Override
122127
public LocationInfo findLocationInfoByStadiumIdAndBlockCode(Long stadiumId, String blockCode) {
123128
return reviewCustomRepository.findLocationInfoByStadiumIdAndBlockCode(stadiumId, blockCode);

usecase/src/main/java/org/depromeet/spot/usecase/port/in/review/DeleteReviewUsecase.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,6 @@
33
public interface DeleteReviewUsecase {
44

55
Long deleteReview(Long reviewId, Long memberId);
6+
7+
void deleteAllReviewOwnedByMemberId(Long memberId);
68
}

usecase/src/main/java/org/depromeet/spot/usecase/port/out/review/ReviewRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ List<Review> findAllByUserId(
4646

4747
Long softDeleteByIdAndMemberId(Long reviewId, Long memberId);
4848

49+
void softDeleteAllReviewOwnedByMemberId(Long memberId);
50+
4951
LocationInfo findLocationInfoByStadiumIdAndBlockCode(Long stadiumId, String blockCode);
5052

5153
Review findLastReviewByMemberId(Long memberId);

usecase/src/main/java/org/depromeet/spot/usecase/service/member/MemberService.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.depromeet.spot.usecase.port.in.member.MemberUsecase;
1414
import org.depromeet.spot.usecase.port.in.member.ReadMemberUsecase;
1515
import org.depromeet.spot.usecase.port.in.member.level.ReadLevelUsecase;
16+
import org.depromeet.spot.usecase.port.in.review.DeleteReviewUsecase;
1617
import org.depromeet.spot.usecase.port.in.review.ReadReviewUsecase;
1718
import org.depromeet.spot.usecase.port.in.team.ReadBaseballTeamUsecase;
1819
import org.depromeet.spot.usecase.port.out.member.MemberRepository;
@@ -32,6 +33,7 @@ public class MemberService implements MemberUsecase {
3233
private final ReadMemberUsecase readMemberUsecase;
3334
private final ReadLevelUsecase readLevelUsecase;
3435
private final ReadBaseballTeamUsecase readBaseballTeamUsecase;
36+
private final DeleteReviewUsecase deleteReviewUsecase;
3537

3638
private final ReadReviewUsecase readReviewUsecase;
3739

@@ -106,8 +108,13 @@ public MemberInfo findMemberInfo(Long memberId) {
106108
return MemberInfo.of(member, baseballTeam, reviewCntToLevelUp);
107109
}
108110

111+
@Transactional
109112
@Override
110113
public void softDelete(Long memberId) {
114+
115+
// 멤버 삭제 전 리뷰 삭제가 우선이 되어야함!
116+
deleteReviewUsecase.deleteAllReviewOwnedByMemberId(memberId);
117+
111118
memberRepository.updateDeletedAt(memberId, LocalDateTime.now());
112119
}
113120
}

usecase/src/main/java/org/depromeet/spot/usecase/service/review/DeleteReviewService.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ public Long deleteReview(Long reviewId, Long memberId) {
2828
return deletedReviewId;
2929
}
3030

31+
@Override
32+
public void deleteAllReviewOwnedByMemberId(Long memberId) {
33+
reviewRepository.softDeleteAllReviewOwnedByMemberId(memberId);
34+
}
35+
3136
public void updateMemberLevel(Long memberId) {
3237
Member member = readMemberUsecase.findById(memberId);
3338
long reviewCnt = readReviewUsecase.countByMember(memberId);

0 commit comments

Comments
 (0)