-
Notifications
You must be signed in to change notification settings - Fork 5
Closed
Description
🛠️ 리팩토링 대상
@MessageMapping 메서드
🚀 리팩토링 목적
채팅 금지 기능을 리졸버로 처리함으로써 채팅 기능과 금지 기능을 분리시킬 뿐만 아니라, 중복 코드를 줄이기 위함.
🔄 리팩토링 세부 사항
- 채팅 금지 기능을 하나의 어노테이션으로 구성해 사용한다.
- 채팅 메서드 구조를 개선한다.
🔍 관련 코드
@MessageMapping("/bid")
public void handleBid(BidRequest bidRequest) {
UserDetailResponse userDetailResponse = userService.getUserDetailsById(bidRequest.getUserId());
if (chatService.isUserOwner(bidRequest.getChatRoomId(), userDetailResponse.getId())) {
return;
}
if (bidService.isBidEnd(bidRequest.getAuctionId())) {
return;
}
BidResponse bidResponse = bidService.submitBid(bidRequest.getUserId(), bidRequest.getAuctionId(), bidRequest.getAmount());
simpMessageSendingOperations.convertAndSend("/bid/"+bidResponse.getUuid(), bidResponse);
}
@MessageMapping("/chat/message")
public void message(MessageDto messageDto) {
if (chatService.isUserOwner(messageDto.getRoomId(), messageDto.getSender())) {
return;
} //메시지 전송자가 경매자라면 메시지 전송 금지
chatService.processMessage(messageDto);
simpMessageSendingOperations.convertAndSend("/topic/chat/room/" + messageDto.getRoomId(), messageDto);
}
@MessageMapping("/chat/message/whisper")
public void messageToOne(WhisperDto whisperDto) {
if (chatService.isUserOwner(whisperDto.getRoomId(), whisperDto.getSender())) {
return;
} //메시지 전송자가 경매자라면 메시지 전송 금지
String sender = userService.getUserDetailsById(whisperDto.getSender()).getNickName();
whisperDto.setMessage("[귓속말] " + sender + " : " + whisperDto.getMessage());
simpMessageSendingOperations.convertAndSend("/whisper/" + whisperDto.getReceiver(), whisperDto);
}
📝 추가 사항
해당 코드들이 잘 동작하는지 테스트가 필요합니다.
Metadata
Metadata
Assignees
Type
Projects
Status
완료