forked from venus-lion/movlit
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
release
- Loading branch information
Showing
184 changed files
with
3,955 additions
and
2,632 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
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
2 changes: 0 additions & 2 deletions
2
be/src/main/java/movlit/be/auth/application/service/MyMemberDetails.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
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
3 changes: 0 additions & 3 deletions
3
be/src/main/java/movlit/be/auth/application/service/OAuth2AuthenticationSuccessHandler.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
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
56 changes: 56 additions & 0 deletions
56
be/src/main/java/movlit/be/chat_room/application/convertor/ChatroomConvertor.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,56 @@ | ||
package movlit.be.chat_room.application.convertor; | ||
|
||
import java.time.LocalDateTime; | ||
import java.util.Objects; | ||
import movlit.be.chat_room.application.service.dto.RequestDataForCreationWorker; | ||
import movlit.be.chat_room.domain.GroupChatroom; | ||
import movlit.be.chat_room.domain.MemberRChatroom; | ||
import movlit.be.chat_room.presentation.dto.OneononeChatroomCreatePubDto; | ||
import movlit.be.chat_room.presentation.dto.OneononeChatroomCreatePubRequest; | ||
import movlit.be.common.exception.ContentTypeNotExistException; | ||
import movlit.be.common.util.IdFactory; | ||
import movlit.be.common.util.ids.MemberId; | ||
import movlit.be.member.domain.entity.MemberEntity; | ||
|
||
public class ChatroomConvertor { | ||
|
||
private ChatroomConvertor() { | ||
} | ||
|
||
public static MemberRChatroom makeNonReMemberRChatroom() { | ||
return new MemberRChatroom(IdFactory.createMemberRChatroom(), LocalDateTime.now()); | ||
} | ||
|
||
public static GroupChatroom makeNonReGroupChatroom(RequestDataForCreationWorker data) { | ||
return new GroupChatroom(IdFactory.createGroupChatroomId(), | ||
data.getRoomName(), | ||
data.getWorkerContentId(), | ||
LocalDateTime.now()); | ||
} | ||
|
||
public static String generateContentId(String contentType, Long contentId) { | ||
if (Objects.equals(contentType, "movie")) { | ||
return "MV_" + contentId; | ||
} | ||
|
||
if (Objects.equals(contentType, "book")) { | ||
return "BK_" + contentId; | ||
} | ||
|
||
throw new ContentTypeNotExistException(); | ||
} | ||
|
||
public static OneononeChatroomCreatePubDto makeOneononeChatroomCreatePubDto(MemberId topicSenderId, | ||
OneononeChatroomCreatePubRequest request, | ||
MemberEntity topicSender) { | ||
return new OneononeChatroomCreatePubDto( | ||
request.getRoomId(), | ||
request.getTopicReceiverId(), | ||
topicSenderId, | ||
topicSender.getNickname(), | ||
topicSender.getProfileImgUrl(), | ||
request.getChatMessage() | ||
); | ||
} | ||
|
||
} |
10 changes: 5 additions & 5 deletions
10
...on/service/FetchGroupChatroomUseCase.java → ...on/service/FetchGroupChatroomUseCase.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
13 changes: 6 additions & 7 deletions
13
...rvice/FetchMyOneononeChatroomUseCase.java → ...service/FetchOneononeChatroomUseCase.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
2 changes: 1 addition & 1 deletion
2
.../service/GroupChatroomCreationWorker.java → .../service/GroupChatroomCreationWorker.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
72 changes: 72 additions & 0 deletions
72
...c/main/java/movlit/be/chat_room/application/service/GroupChatroomJoinedEventListener.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,72 @@ | ||
package movlit.be.chat_room.application.service; | ||
|
||
import com.fasterxml.jackson.core.JsonProcessingException; | ||
import com.fasterxml.jackson.core.type.TypeReference; | ||
import com.fasterxml.jackson.databind.ObjectMapper; | ||
|
||
import java.util.List; | ||
import java.util.concurrent.TimeUnit; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import lombok.extern.slf4j.Slf4j; | ||
import movlit.be.pub_sub.chat_message.presentation.dto.response.MessageType; | ||
import movlit.be.chat_room.application.service.dto.GroupChatroomJoinedEvent; | ||
import movlit.be.chat_room.presentation.dto.GroupChatroomMemberResponse; | ||
import movlit.be.chat_room.presentation.dto.UpdateRoomDto; | ||
import movlit.be.chat_room.presentation.dto.UpdateRoomDto.EventType; | ||
import movlit.be.common.config.RedisMessagePublisher; | ||
import movlit.be.common.util.ids.GroupChatroomId; | ||
import movlit.be.common.util.ids.MemberId; | ||
import movlit.be.member.application.service.MemberReadService; | ||
import movlit.be.member.domain.entity.MemberEntity; | ||
import org.springframework.stereotype.Component; | ||
import org.springframework.transaction.event.TransactionalEventListener; | ||
|
||
@Component | ||
@RequiredArgsConstructor | ||
@Slf4j | ||
public class GroupChatroomJoinedEventListener { | ||
|
||
private final GroupChatroomUseCase groupChatroomUseCase; | ||
private final RedisMessagePublisher redisMessagePublisher; | ||
private final MemberReadService memberReadService; | ||
|
||
@TransactionalEventListener | ||
public void handleGroupChatroomJoinEvent(GroupChatroomJoinedEvent event) throws JsonProcessingException { | ||
GroupChatroomId groupChatroomId = event.getGroupChatroomId(); | ||
MemberId newMemberId = event.getMemberId(); | ||
|
||
// 1. 'ㅇㅇ(닉네임) 님이 가입하셨습니다.' 메세지 생성 | ||
MemberEntity newMember = memberReadService.findEntityById(newMemberId); | ||
String joinMessage = newMember.getNickname() + " 님이 가입하셨습니다."; | ||
|
||
// 2. 캐시된 멤버 목록 가져오기 (캐시 없으면 자동 생성) | ||
List<GroupChatroomMemberResponse> cachedMembers = groupChatroomUseCase.fetchMembersInGroupChatroom( | ||
groupChatroomId, true); | ||
|
||
// 3. 새 멤버 정보 생성 및 캐시된 목록에 추가 | ||
GroupChatroomMemberResponse newMemberResponse = new GroupChatroomMemberResponse( | ||
newMemberId, | ||
newMember.getNickname(), | ||
newMember.getProfileImgUrl() | ||
); | ||
cachedMembers.add(newMemberResponse); | ||
log.info("GroupChatroomJoinedEventListener :: 캐시에 새로운 멤버 추가 :: {}", newMemberResponse); | ||
|
||
// 4. 업데이트된 목록, redis에 저장 | ||
groupChatroomUseCase.updateCachedMembers(groupChatroomId, cachedMembers); | ||
|
||
// 5. UpdateRoomDto 생성 | ||
UpdateRoomDto updateRoomDto = new UpdateRoomDto( | ||
groupChatroomId.getValue(), | ||
MessageType.GROUP, | ||
EventType.MEMBER_JOIN, | ||
newMemberId, | ||
joinMessage // 입장메세지 설정 | ||
); | ||
|
||
// 6. /topic/chat/room/{roomId} 토픽으로 업데이트된 멤버 목록 발행 -> RedisMessageSubscriber에서 처리 | ||
redisMessagePublisher.updateRoom(updateRoomDto); | ||
} | ||
|
||
} |
Oops, something went wrong.