Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.assu.server.domain.chat.converter;

import com.assu.server.domain.admin.entity.Admin;
import com.assu.server.domain.chat.entity.enums.MessageType;
import com.assu.server.domain.member.entity.Member;
import com.assu.server.domain.chat.dto.ChatMessageDTO;
import com.assu.server.domain.chat.dto.ChatRequestDTO;
Expand Down Expand Up @@ -69,6 +70,18 @@ public static Message toMessageEntity(ChatRequestDTO.ChatMessageRequestDTO reque
.receiver(receiver)
.message(request.getMessage())
.unreadCount(request.getUnreadCountForSender())
.type(MessageType.TEXT)
.build();
}

public static Message toGuideMessageEntity(ChatRequestDTO.ChatMessageRequestDTO request, ChattingRoom room, Member sender, Member receiver) {
return Message.builder()
.chattingRoom(room)
.sender(sender)
.receiver(receiver)
.message(request.getMessage())
.unreadCount(0)
.type(MessageType.GUIDE)
.build();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package com.assu.server.domain.chat.dto;

import com.assu.server.domain.chat.entity.enums.MessageType;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

public class ChatRequestDTO {
Expand All @@ -12,6 +15,8 @@ public static class CreateChatRoomRequestDTO {

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public static class ChatMessageRequestDTO {
private Long roomId;
private Long senderId;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package com.assu.server.domain.chat.entity.enums;

public enum MessageType {
TEXT, PROPOSAL, SYSTEM
TEXT, PROPOSAL, SYSTEM, GUIDE
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ public interface ChatService {
ChatResponseDTO.ReadMessageResponseDTO readMessage(Long roomId, Long memberId);
ChatResponseDTO.ChatHistoryResponseDTO readHistory(Long roomId, Long memberId);
ChatResponseDTO.LeaveChattingRoomResponseDTO leaveChattingRoom(Long roomId, Long memberId);
ChatResponseDTO.SendMessageResponseDTO sendGuideMessage(ChatRequestDTO.ChatMessageRequestDTO request);
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import com.assu.server.domain.chat.dto.ChatRoomListResultDTO;
import com.assu.server.domain.chat.entity.ChattingRoom;
import com.assu.server.domain.chat.entity.Message;
import com.assu.server.domain.chat.repository.BlockRepository;
import com.assu.server.domain.chat.repository.ChatRepository;
import com.assu.server.domain.chat.repository.MessageRepository;
import com.assu.server.domain.member.entity.Member;
Expand All @@ -24,6 +23,7 @@
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
Expand All @@ -39,7 +39,7 @@ public class ChatServiceImpl implements ChatService {
private final AdminRepository adminRepository;
private final MessageRepository messageRepository;
private final StoreRepository storeRepository;
private final BlockRepository blockRepository;
private final SimpMessagingTemplate simpMessagingTemplate;


@Override
Expand Down Expand Up @@ -109,6 +109,27 @@ public ChatResponseDTO.SendMessageResponseDTO handleMessage(ChatRequestDTO.ChatM
return ChatConverter.toSendMessageDTO(saved);
}


@Override
@Transactional
public ChatResponseDTO.SendMessageResponseDTO sendGuideMessage(ChatRequestDTO.ChatMessageRequestDTO request) {
// 유효성 검사
ChattingRoom room = chatRepository.findById(request.getRoomId())
.orElseThrow(() -> new DatabaseException(ErrorStatus.NO_SUCH_ROOM));
Member sender = memberRepository.findById(request.getSenderId())
.orElseThrow(() -> new DatabaseException(ErrorStatus.NO_SUCH_MEMBER));
Member receiver = memberRepository.findById(request.getReceiverId())
.orElseThrow(() -> new DatabaseException(ErrorStatus.NO_SUCH_MEMBER));

Message message = ChatConverter.toGuideMessageEntity(request, room, sender, receiver);
Message saved = messageRepository.saveAndFlush(message);

ChatResponseDTO.SendMessageResponseDTO responseDTO = ChatConverter.toSendMessageDTO(saved);
simpMessagingTemplate.convertAndSend("/sub/chat/" + request.getRoomId(), responseDTO);

return responseDTO;
}

@Transactional
@Override
public ChatResponseDTO.ReadMessageResponseDTO readMessage(Long roomId, Long memberId) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@
import java.util.Collections;
import java.util.List;
import java.util.Optional;

import com.assu.server.domain.chat.dto.ChatRequestDTO;
import com.assu.server.domain.chat.entity.ChattingRoom;
import com.assu.server.domain.chat.repository.ChatRepository;
import com.assu.server.domain.chat.service.ChatService;
import org.springframework.stereotype.Service;

import com.assu.server.domain.member.entity.Member;
Expand Down Expand Up @@ -54,6 +57,8 @@ public class PartnershipServiceImpl implements PartnershipService {
private final StudentRepository studentRepository;
private final PaperContentRepository contentRepository;
private final NotificationCommandService notificationService;
private final ChatService chatService;
private final ChatRepository chatRepository;


@Override
Expand Down Expand Up @@ -403,6 +408,20 @@ public PartnershipResponseDTO.CreateDraftResponseDTO createDraftPartnership(Part

notificationService.sendPartnerProposal(partner.getId(), draftPaper.getId(), admin.getName());

ChattingRoom chattingRoom = chatRepository.findChattingRoomByAdminIdAndPartnerId(admin.getId(), partner.getId());

String guideMessage = admin.getName() + "님이 제휴 제안서 초안을 전송했어요! 확인 후 제휴 제안서를 작성해 주세요";
ChatRequestDTO.ChatMessageRequestDTO guideMessageRequest = new ChatRequestDTO.ChatMessageRequestDTO(
chattingRoom.getId(),
admin.getId(),
partner.getId(),
guideMessage,
0
);

// 5. 완성된 DTO를 사용해서 안내 메시지를 전송합니다.
chatService.sendGuideMessage(guideMessageRequest);

return PartnershipConverter.toCreateDraftResponseDTO(draftPaper);
}

Expand Down