Skip to content

Commit 39c606b

Browse files
author
EpicFn
committed
fix : 비동기 처리 하도록 변경
1 parent 6900a6e commit 39c606b

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

src/main/java/org/tuna/zoopzoop/backend/domain/space/membership/service/MembershipService.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,15 @@
88
import org.springframework.data.domain.Page;
99
import org.springframework.data.domain.Pageable;
1010
import org.springframework.stereotype.Service;
11+
import org.springframework.transaction.annotation.Transactional;
12+
import org.tuna.zoopzoop.backend.domain.SSE.service.EmitterService;
1113
import org.tuna.zoopzoop.backend.domain.member.entity.Member;
1214
import org.tuna.zoopzoop.backend.domain.member.service.MemberService;
1315
import org.tuna.zoopzoop.backend.domain.space.membership.entity.Membership;
1416
import org.tuna.zoopzoop.backend.domain.space.membership.enums.Authority;
1517
import org.tuna.zoopzoop.backend.domain.space.membership.enums.JoinState;
1618
import org.tuna.zoopzoop.backend.domain.space.membership.repository.MembershipRepository;
19+
import org.tuna.zoopzoop.backend.domain.space.space.dto.etc.SpaceInvitationInfo;
1720
import org.tuna.zoopzoop.backend.domain.space.space.entity.Space;
1821
import org.tuna.zoopzoop.backend.global.rsData.RsData;
1922

@@ -26,6 +29,7 @@
2629
public class MembershipService {
2730
private final MembershipRepository membershipRepository;
2831
private final MemberService memberService;
32+
private final NotificationService notificationService;
2933

3034
// ======================== 멤버십 조회 ======================== //
3135

@@ -205,6 +209,7 @@ public Membership addMemberToSpace(Member member, Space space, Authority authori
205209
* @param invitedName 초대할 멤버 이름 목록
206210
* @return 생성된 Membership 엔티티 목록
207211
*/
212+
@Transactional
208213
public List<Membership> inviteMembersToSpace(Space space, List<String> invitedName) {
209214
// 1. 이름 중복 제거
210215
List<String> uniqueNames = invitedName.stream().distinct().toList();
@@ -228,7 +233,24 @@ public List<Membership> inviteMembersToSpace(Space space, List<String> invitedNa
228233
})
229234
.toList();
230235

231-
return membershipRepository.saveAll(invitedMemberships);
236+
// 4. 멤버십 저장
237+
List<Membership> savedMemberships = membershipRepository.saveAll(invitedMemberships);
238+
239+
// 5. 알림 전송 호출
240+
savedMemberships.forEach(membership -> {
241+
notificationService.sendSpaceInvitation(
242+
(long) membership.getMember().getId(),
243+
new SpaceInvitationInfo(
244+
space.getId(),
245+
space.getName(),
246+
space.getThumbnailUrl(),
247+
membership.getId()
248+
)
249+
);
250+
});
251+
252+
// 6. 저장된 멤버십 반환
253+
return savedMemberships;
232254
}
233255

234256
/**
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.tuna.zoopzoop.backend.domain.space.membership.service;
2+
3+
import lombok.RequiredArgsConstructor;
4+
import org.springframework.scheduling.annotation.Async;
5+
import org.springframework.stereotype.Service;
6+
import org.tuna.zoopzoop.backend.domain.SSE.service.EmitterService;
7+
8+
@Service
9+
@RequiredArgsConstructor
10+
public class NotificationService {
11+
private final EmitterService emitterService;
12+
13+
@Async // 별도 스레드에서 비동기 실행
14+
public void sendSpaceInvitation(Long memberId, Object invitationData) {
15+
emitterService.sendNotification(memberId, "space-invitation", invitationData);
16+
}
17+
}

0 commit comments

Comments
 (0)