Skip to content

Commit

Permalink
#34/feat/모든채팅방보기
Browse files Browse the repository at this point in the history
  • Loading branch information
jun673012 committed Oct 2, 2024
1 parent 907baf3 commit a518f12
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/api")
@RequiredArgsConstructor
public class ChatMessageController {

Expand All @@ -17,7 +19,7 @@ public class ChatMessageController {
@MessageMapping("/chat/{roomId}")
@SendTo("/topic/public/{roomId}")
public ChatMessageRequest sendMessage(@DestinationVariable Long roomId, ChatMessageRequest message) {
return message;
return chatMessageService.sendMessage(roomId, message);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,11 @@
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@Tag(name = "ChatRoom API", description = "채팅방 API")
@RequestMapping("/api")
@RequiredArgsConstructor
Expand All @@ -28,7 +26,6 @@ public class ChatRoomController {
public ResponseEntity<ChatRoomResponse> createChatRoom(@RequestBody ChatRoomRequest chatRoomRequest,
HttpSession session) {
String personId = (String) session.getAttribute("personId");
log.info("[채팅방 생성 요청] 사용자: {}", personId);
ChatRoomResponse response = chatRoomService.createChatRoom(chatRoomRequest, personId);
return ResponseEntity.ok(response);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@
public record ChatMessageRequest(
Long messageId,
Long chatRoomId,
Long senderId,
String senderName,
String message,
LocalDateTime timestamp,
String profileImageUrl
LocalDateTime timestamp
) {}
34 changes: 34 additions & 0 deletions src/main/java/com/chat/liveon/chat/service/ChatMessageService.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,51 @@
package com.chat.liveon.chat.service;

import com.chat.liveon.auth.entity.Person;
import com.chat.liveon.auth.repository.PersonRepository;
import com.chat.liveon.chat.dto.request.ChatMessageRequest;
import com.chat.liveon.chat.entity.ChatMessage;
import com.chat.liveon.chat.entity.ChatRoom;
import com.chat.liveon.chat.repository.ChatMessageRepository;
import com.chat.liveon.chat.repository.ChatRoomRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Slf4j
@RequiredArgsConstructor
@Service
public class ChatMessageService {

private final ChatMessageRepository chatMessageRepository;
private final ChatRoomRepository chatRoomRepository;
private final PersonRepository personRepository;

@Transactional
public ChatMessageRequest sendMessage(Long roomId, ChatMessageRequest messageRequest) {
ChatRoom chatRoom = chatRoomRepository.findById(roomId)
.orElseThrow(() -> new RuntimeException("ChatRoom not found"));

Person sender = personRepository.findByPersonId(messageRequest.senderName())
.orElseThrow(() -> new RuntimeException("Sender not found"));

ChatMessage chatMessage = ChatMessage.builder()
.chatRoom(chatRoom)
.message(messageRequest.message())
.sender(sender)
.build();

chatMessage = chatMessageRepository.save(chatMessage);

log.info("[메시지 전송 성공] 채팅방: {}, 사용자: {}, 메시지: {}", roomId, sender.getPersonName(), messageRequest.message());

return new ChatMessageRequest(
chatMessage.getId(),
chatMessage.getChatRoom().getId(),
sender.getPersonName(),
chatMessage.getMessage(),
chatMessage.getSendDate()
);

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import com.chat.liveon.chat.dto.response.AllChatRoomResponse;
import com.chat.liveon.chat.dto.response.ChatRoomResponse;
import com.chat.liveon.chat.entity.ChatRoom;
import com.chat.liveon.chat.repository.ChatMessageRepository;
import com.chat.liveon.chat.repository.ChatRoomRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
Expand All @@ -19,26 +18,25 @@
@Service
public class ChatRoomService {
private final ChatRoomRepository chatRoomRepository;
private final ChatMessageRepository chatMessageRepository;
private final PersonRepository personRepository;

public ChatRoomService(ChatRoomRepository chatRoomRepository, ChatMessageRepository chatMessageRepository, PersonRepository personRepository) {
public ChatRoomService(ChatRoomRepository chatRoomRepository, PersonRepository personRepository) {
this.chatRoomRepository = chatRoomRepository;
this.chatMessageRepository = chatMessageRepository;
this.personRepository = personRepository;
}

@Transactional
public ChatRoomResponse createChatRoom(ChatRoomRequest chatRoomRequest, String person) {
Person personId = personRepository.findByPersonId(person).orElseThrow(() -> new RuntimeException("사용자 정보가 없습니다."));
log.info("[채팅방 생성 요청] 사용자: {}", personId);

ChatRoom chatRoom = ChatRoom.builder()
.chatRoomName(chatRoomRequest.chatRoomName())
.person(personId)
.build();

chatRoom = chatRoomRepository.save(chatRoom);
log.info("[채팅방 생성 성공] 사용자: {}, 채팅방 명: {}", person, chatRoomRequest.chatRoomName());
log.info("[채팅방 생성 성공] 사용자: {}, 채팅방명: {}", person, chatRoomRequest.chatRoomName());
return new ChatRoomResponse(chatRoom.getId(), chatRoomRequest.chatRoomName(), personId.getId());
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/chat/liveon/config/WebConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOriginPatterns("http://localhost:5500")
.allowedOriginPatterns("http://localhost:3000")
.allowedMethods("GET", "POST", "PUT", "DELETE")
.allowedHeaders("*")
.allowCredentials(true);
Expand Down

0 comments on commit a518f12

Please sign in to comment.