Skip to content

Commit

Permalink
Feat: 프로필 이미지 제거 기능 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
onetuks committed Jan 4, 2024
1 parent 374c4be commit 9661f20
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 15 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package org.guzzing.studayserver.domain.child.listener;

import org.guzzing.studayserver.domain.member.event.WithdrawEvent;
import org.guzzing.studayserver.global.profile.ProfileImageService;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.transaction.event.TransactionalEventListener;

@Component
public class WithdrawProfileImageListener {

private final ProfileImageService profileImageService;

public WithdrawProfileImageListener(ProfileImageService profileImageService) {
this.profileImageService = profileImageService;
}

@Async
@TransactionalEventListener
public void withdrawProfileImage(WithdrawEvent event) {
event.getChildProfileImageUris()
.forEach(profileImageService::deleteProfileImage);
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
package org.guzzing.studayserver.domain.member.event;

import jakarta.servlet.http.HttpServletRequest;
import java.util.List;
import lombok.Getter;

@Getter
public class WithdrawEvent {

private final HttpServletRequest request;
private final List<String> childProfileImageUris;

public WithdrawEvent(HttpServletRequest request) {
public WithdrawEvent(HttpServletRequest request, List<String> childProfileImageUris) {
this.request = request;
this.childProfileImageUris = childProfileImageUris;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import jakarta.servlet.http.HttpServletRequest;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
import org.guzzing.studayserver.domain.calendar.service.AcademyCalendarService;
import org.guzzing.studayserver.domain.child.model.Child;
import org.guzzing.studayserver.domain.dashboard.service.DashboardService;
Expand All @@ -11,6 +12,7 @@
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

@Slf4j
@Component
public class MemberFacade {

Expand All @@ -33,20 +35,29 @@ public MemberFacade(

@Transactional
public Long removeMember(final HttpServletRequest request, final Long memberId) {
final Member member = memberService.getMember(memberId);
final List<Long> childIds = member.getChildren()
.stream()
.map(Child::getId)
.toList();

calendarService.removeCalendar(childIds);
// todo: 대시보드 엔티티 직접참조 전환하면 여기 수정할 것
dashboardService.removeDashboard(childIds);
memberService.remove(memberId);

eventPublisher.publishEvent(new WithdrawEvent(request));

return memberId;
try {
final Member member = memberService.getMember(memberId);
final List<String> childProfileImageUris = member.getChildren()
.stream()
.map(Child::getProfileImageURIPath)
.toList();
final List<Long> childIds = member.getChildren()
.stream()
.map(Child::getId)
.toList();

calendarService.removeCalendar(childIds);
// todo: 대시보드 엔티티 직접참조 전환하면 여기 수정할 것
dashboardService.removeDashboard(childIds);
memberService.remove(memberId);

eventPublisher.publishEvent(new WithdrawEvent(request, childProfileImageUris));

return memberId;
} catch (Exception e) {
log.info("회원 탈퇴 중 에러가 발생했습니다. memberId: {}", memberId, e);
throw e;
}
}

}

0 comments on commit 9661f20

Please sign in to comment.