Skip to content

Commit 2acf136

Browse files
authored
[COZY-421] fix : 회원탈퇴 오류 수정 (#203)
* [COZY-421] fix : mate 삭제전 방나가기 EntryStatus.equals(JOINED)인 경우에만 나가는걸로 수정 * [COZY-421] fix : 회원탈퇴 오류 수정 - memberStat과 Cascade 관계 지움 - Inquiry, Favorite 로직 추가 - 회원가입시 닉네임 검증 로직 추가
1 parent ff681b5 commit 2acf136

File tree

5 files changed

+33
-7
lines changed

5 files changed

+33
-7
lines changed

src/main/java/com/cozymate/cozymate_server/domain/favorite/repository/FavoriteRepository.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,9 @@ Optional<Favorite> findByMemberAndTargetIdAndFavoriteType(Member member, Long ta
2828
void deleteAllByTargetIdsAndFavoriteType(@Param("targetIds") List<Long> targetIds,
2929
@Param("favoriteType") FavoriteType favoriteType);
3030

31+
void deleteByTargetIdAndFavoriteType(@Param("targetId") Long targetId,
32+
@Param("favoriteType") FavoriteType favoriteType);
33+
34+
void deleteByMemberId(Long memberId);
35+
3136
}

src/main/java/com/cozymate/cozymate_server/domain/inquiry/repository/InquiryRepository.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,17 @@
44
import com.cozymate.cozymate_server.domain.member.Member;
55
import java.util.List;
66
import org.springframework.data.jpa.repository.JpaRepository;
7+
import org.springframework.data.jpa.repository.Modifying;
8+
import org.springframework.data.jpa.repository.Query;
9+
import org.springframework.data.repository.query.Param;
710

811
public interface InquiryRepository extends JpaRepository<Inquiry, Long> {
912

1013
List<Inquiry> findByMemberOrderByCreatedAtDesc(Member member);
1114

1215
Boolean existsByMember(Member member);
16+
17+
@Modifying
18+
@Query("UPDATE Inquiry i SET i.member = null WHERE i.member = :member")
19+
void bulkDeleteMember(@Param("member") Member member);
1320
}

src/main/java/com/cozymate/cozymate_server/domain/member/Member.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import com.cozymate.cozymate_server.domain.university.University;
99
import com.cozymate.cozymate_server.global.utils.BaseTimeEntity;
1010

11-
import jakarta.persistence.CascadeType;
11+
import jakarta.persistence.FetchType;
1212
import jakarta.persistence.GenerationType;
1313
import jakarta.persistence.EnumType;
1414
import jakarta.persistence.Entity;
@@ -70,7 +70,7 @@ public class Member extends BaseTimeEntity {
7070

7171
private String majorName;
7272

73-
@OneToOne(cascade = CascadeType.ALL, mappedBy = "member")
73+
@OneToOne(mappedBy = "member",fetch = FetchType.LAZY)
7474
private MemberStat memberStat;
7575

7676
public void verifyMemberUniversity(University university, String majorName){

src/main/java/com/cozymate/cozymate_server/domain/member/service/MemberCommandService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ public SignInResponseDTO signIn(SignInRequestDTO signInRequestDTO) {
8080
public SignInResponseDTO signUp(String clientId,
8181
SignUpRequestDTO signUpRequestDTO) {
8282

83+
if (!checkNickname(signUpRequestDTO.nickname())) {
84+
throw new GeneralException(ErrorStatus._NICKNAME_EXISTING);
85+
}
8386
if (memberQueryService.isPresent(clientId)) { // 사용자 중복 검증
8487
throw new GeneralException(ErrorStatus._MEMBER_EXISTING);
8588
}

src/main/java/com/cozymate/cozymate_server/domain/member/service/MemberWithdrawService.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
import com.cozymate.cozymate_server.domain.auth.repository.TokenRepository;
44
import com.cozymate.cozymate_server.domain.chat.repository.ChatRepository;
55
import com.cozymate.cozymate_server.domain.chatroom.repository.ChatRoomRepository;
6+
import com.cozymate.cozymate_server.domain.favorite.enums.FavoriteType;
7+
import com.cozymate.cozymate_server.domain.favorite.repository.FavoriteRepository;
68
import com.cozymate.cozymate_server.domain.fcm.repository.FcmRepository;
9+
import com.cozymate.cozymate_server.domain.inquiry.repository.InquiryRepository;
710
import com.cozymate.cozymate_server.domain.mail.repository.MailRepository;
811
import com.cozymate.cozymate_server.domain.mate.Mate;
912
import com.cozymate.cozymate_server.domain.mate.enums.EntryStatus;
@@ -20,7 +23,6 @@
2023
import com.cozymate.cozymate_server.domain.postimage.PostImageRepository;
2124
import com.cozymate.cozymate_server.domain.report.repository.ReportRepository;
2225
import com.cozymate.cozymate_server.domain.role.repository.RoleRepository;
23-
import com.cozymate.cozymate_server.domain.room.repository.RoomRepository;
2426
import com.cozymate.cozymate_server.domain.room.service.RoomCommandService;
2527
import com.cozymate.cozymate_server.domain.roomlog.repository.RoomLogRepository;
2628
import com.cozymate.cozymate_server.domain.todo.repository.TodoRepository;
@@ -56,6 +58,10 @@ public class MemberWithdrawService {
5658

5759
private final RoomCommandService roomCommandService;
5860

61+
private final FavoriteRepository favoriteRepository;
62+
63+
private final InquiryRepository inquiryRepository;
64+
5965

6066
/**
6167
* 회원 탈퇴 로직을 처리하는 메서드. 관련된 모든 데이터를 삭제한 뒤, 최종적으로 회원 정보를 삭제한다.
@@ -75,13 +81,18 @@ public void withdraw(Member member) {
7581
* 회원과 연관된 데이터를 삭제하는 메서드.
7682
*/
7783

78-
private void deleteRelatedWithMember(Member member) {
84+
@Transactional
85+
public void deleteRelatedWithMember(Member member) {
7986
log.debug("사용자 관련 데이터 삭제 시작");
8087
tokenRepository.deleteById(member.getClientId());
8188
mailRepository.deleteById(member.getId());
82-
8389
log.debug("토큰,메일 삭제 완료");
8490

91+
92+
favoriteRepository.deleteByTargetIdAndFavoriteType(member.getId(), FavoriteType.MEMBER);
93+
favoriteRepository.deleteByMemberId(member.getId());
94+
log.debug("찜 삭제 완료");
95+
8596
memberStatRepository.deleteByMemberId(member.getId());
8697
memberStatPreferenceRepository.deleteByMemberId(member.getId());
8798
memberStatEqualityRepository.deleteByMemberAIdOrMemberBId(member.getId());
@@ -91,8 +102,9 @@ private void deleteRelatedWithMember(Member member) {
91102
handleChatAndChatRoom(member);
92103

93104
reportRepository.bulkDeleteReporter(member);
105+
inquiryRepository.bulkDeleteMember(member);
94106

95-
log.debug("신고내역 처리 완료");
107+
log.debug("문의, 신고내역 처리 완료");
96108

97109
fcmRepository.deleteAllByMemberId(member.getId());
98110
notificationLogRepository.deleteAllByMemberId(member.getId());
@@ -111,7 +123,6 @@ private void deleteRelatedWithMember(Member member) {
111123

112124
log.debug("mate 삭제 완료");
113125

114-
115126
}
116127

117128
/**

0 commit comments

Comments
 (0)