diff --git a/src/main/java/com/assu/server/domain/chat/converter/ChatConverter.java b/src/main/java/com/assu/server/domain/chat/converter/ChatConverter.java index 70fe10c2..6082b4c3 100644 --- a/src/main/java/com/assu/server/domain/chat/converter/ChatConverter.java +++ b/src/main/java/com/assu/server/domain/chat/converter/ChatConverter.java @@ -63,6 +63,7 @@ public static Message toMessageEntity(ChatRequestDTO.ChatMessageRequestDTO reque public static ChatResponseDTO.SendMessageResponseDTO toSendMessageDTO(Message message) { return ChatResponseDTO.SendMessageResponseDTO.builder() + .messageId(message.getId()) .roomId(message.getChattingRoom().getId()) .senderId(message.getSender().getId()) .receiverId(message.getReceiver().getId()) diff --git a/src/main/java/com/assu/server/domain/chat/repository/ChatRepository.java b/src/main/java/com/assu/server/domain/chat/repository/ChatRepository.java index c3270c4b..8cdeb467 100644 --- a/src/main/java/com/assu/server/domain/chat/repository/ChatRepository.java +++ b/src/main/java/com/assu/server/domain/chat/repository/ChatRepository.java @@ -30,20 +30,20 @@ SELECT MAX(m2.createdAt) AND m.receiver.id = :memberId AND m.isRead = false), CASE - WHEN pm.id IS NULL AND am.id = :memberId THEN NULL - WHEN am.id IS NULL AND pm.id = :memberId THEN NULL + WHEN pm.id IS NULL AND am.id = :memberId THEN -1 + WHEN am.id IS NULL AND pm.id = :memberId THEN -1 WHEN pm.id = :memberId THEN a.id ELSE p.id END, CASE - WHEN pm.id IS NULL AND am.id = :memberId THEN NULL - WHEN am.id IS NULL AND pm.id = :memberId THEN NULL + WHEN pm.id IS NULL AND am.id = :memberId THEN -1 + WHEN am.id IS NULL AND pm.id = :memberId THEN -1 WHEN pm.id = :memberId THEN a.name ELSE p.name END, CASE - WHEN pm.id IS NULL AND am.id = :memberId THEN NULL - WHEN am.id IS NULL AND pm.id = :memberId THEN NULL + WHEN pm.id IS NULL AND am.id = :memberId THEN -1 + WHEN am.id IS NULL AND pm.id = :memberId THEN -1 WHEN pm.id = :memberId THEN am.profileUrl ELSE pm.profileUrl END @@ -55,6 +55,10 @@ SELECT MAX(m2.createdAt) LEFT JOIN a.member am WHERE pm.id = :memberId OR am.id = :memberId + ORDER BY + (SELECT MAX(m.createdAt) + FROM Message m + WHERE m.chattingRoom.id = r.id) DESC """) List findChattingRoomsByMemberId(@Param("memberId") Long memberId); diff --git a/src/main/java/com/assu/server/domain/chat/service/ChatServiceImpl.java b/src/main/java/com/assu/server/domain/chat/service/ChatServiceImpl.java index cd8d672a..df09fde5 100644 --- a/src/main/java/com/assu/server/domain/chat/service/ChatServiceImpl.java +++ b/src/main/java/com/assu/server/domain/chat/service/ChatServiceImpl.java @@ -162,9 +162,21 @@ public ChatResponseDTO.LeaveChattingRoomResponseDTO leaveChattingRoom(Long roomI isLeftSuccessfully = true; chatRepository.save(chattingRoom); } else if(memberCount == 1) { - isRoomDeleted = true; + if (isAdmin) { + chattingRoom.setAdmin(null); + } else if (isPartner) { + chattingRoom.setPartner(null); + } + chattingRoom.updateMemberCount(0); isLeftSuccessfully = true; - chatRepository.delete(chattingRoom); + + // ✅ 방에 아무도 안 남았을 때만 삭제 + if (chattingRoom.getAdmin() == null && chattingRoom.getPartner() == null) { + isRoomDeleted = true; + chatRepository.delete(chattingRoom); + } else { + chatRepository.save(chattingRoom); + } } else if(memberCount == 0) { throw new DatabaseException(ErrorStatus.NO_MEMBER); diff --git a/src/main/java/com/assu/server/domain/partnership/converter/PartnershipConverter.java b/src/main/java/com/assu/server/domain/partnership/converter/PartnershipConverter.java index 1cf7bac1..c2f0a263 100644 --- a/src/main/java/com/assu/server/domain/partnership/converter/PartnershipConverter.java +++ b/src/main/java/com/assu/server/domain/partnership/converter/PartnershipConverter.java @@ -279,6 +279,8 @@ public static PartnershipResponseDTO.WritePartnershipResponseDTO writePartnershi .adminId(paper.getAdmin() != null ? paper.getAdmin().getId() : null) .partnerId(paper.getPartner()!= null ? paper.getPartner().getId() : null) // 수동등록이면 null .storeId(paper.getStore() != null ? paper.getStore().getId() : null) + .storeName(paper.getStore().getName()) + .adminName(paper.getAdmin().getName()) .isActivated(paper.getIsActivated()) .options(optionDTOS) .build(); diff --git a/src/main/java/com/assu/server/domain/partnership/dto/PartnershipResponseDTO.java b/src/main/java/com/assu/server/domain/partnership/dto/PartnershipResponseDTO.java index 2483b94e..2229ca23 100644 --- a/src/main/java/com/assu/server/domain/partnership/dto/PartnershipResponseDTO.java +++ b/src/main/java/com/assu/server/domain/partnership/dto/PartnershipResponseDTO.java @@ -24,6 +24,9 @@ public static class WritePartnershipResponseDTO { private Long adminId; private Long partnerId; private Long storeId; + private String storeName; + private String adminName; + private Boolean activated; private ActivationStatus isActivated; private List options; }