Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/dev' into dev
Browse files Browse the repository at this point in the history
  • Loading branch information
ehs208 committed Feb 5, 2025
2 parents cd18cfc + 8fbff9e commit 8c43a40
Show file tree
Hide file tree
Showing 16 changed files with 364 additions and 114 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,35 +17,42 @@
@NoArgsConstructor
public class ChatRoomResponseDto {
private List<ChatMessageResponseDto> chats;
private String meetingName;
private List<ChatMemberResponseDto> participants;
private ChatRoomDeliveryNoticeDto deliveryNotice;
private ChatRoomOfflineNoticeDto offlineNotice;
private int pageNumber;
private boolean isLast;

@Builder
private ChatRoomResponseDto(Slice<ChatMessageResponseDto> chats, List<ChatMemberResponseDto> participants,
private ChatRoomResponseDto(Slice<ChatMessageResponseDto> chats, String meetingName,
List<ChatMemberResponseDto> participants,
ChatRoomDeliveryNoticeDto deliveryNotice, ChatRoomOfflineNoticeDto offlineNotice) {
this.chats = chats.getContent();
this.meetingName = meetingName;
this.participants = participants;
this.deliveryNotice = deliveryNotice;
this.offlineNotice = offlineNotice;
this.pageNumber = chats.getNumber() + 1;
this.isLast = chats.isLast();
}

public static ChatRoomResponseDto ofWithDelivery(List<ChatMemberResponseDto> participants, Slice<ChatMessageResponseDto> chatPage, ChatRoomDeliveryNoticeDto deliveryNotice) {
public static ChatRoomResponseDto ofWithDelivery(String meetingName, List<ChatMemberResponseDto> participants,
Slice<ChatMessageResponseDto> chatPage, ChatRoomDeliveryNoticeDto deliveryNotice) {
return ChatRoomResponseDto.builder()
.chats(chatPage)
.meetingName(meetingName)
.participants(participants)
.offlineNotice(null)
.deliveryNotice(deliveryNotice)
.build();
}

public static ChatRoomResponseDto ofWithOffline(List<ChatMemberResponseDto> participants, Slice<ChatMessageResponseDto> chatPage, ChatRoomOfflineNoticeDto offlineNotice) {
public static ChatRoomResponseDto ofWithOffline(String meetingName, List<ChatMemberResponseDto> participants,
Slice<ChatMessageResponseDto> chatPage, ChatRoomOfflineNoticeDto offlineNotice) {
return ChatRoomResponseDto.builder()
.chats(chatPage)
.meetingName(meetingName)
.participants(participants)
.offlineNotice(offlineNotice)
.deliveryNotice(null)
Expand All @@ -62,7 +69,8 @@ public static class ChatMemberResponseDto {
private Boolean isMine;

@Builder
private ChatMemberResponseDto(Long memberId, String nickname, Mbti mbti, String profileImageUrl, ParticipantRole role, Boolean isMine) {
private ChatMemberResponseDto(Long memberId, String nickname, Mbti mbti, String profileImageUrl,
ParticipantRole role, Boolean isMine) {
this.memberId = memberId;
this.nickname = nickname;
this.mbti = mbti;
Expand All @@ -76,7 +84,8 @@ public static ChatMemberResponseDto of(MeetingParticipant participant, Boolean i
.memberId(participant.getMember().getMemberId())
.nickname(participant.getMember().getNickname())
.mbti(participant.getMember().getMbti())
.profileImageUrl(participant.getMember().getProfileImage() != null ? participant.getMember().getProfileImage().getImageUrl() : null)
.profileImageUrl(participant.getMember().getProfileImage() != null ?
participant.getMember().getProfileImage().getImageUrl() : null)
.role(participant.getRole())
.isMine(isMine)
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ public void joinChatRoom(Long meetingId, UserDetails userDetails) {
ChatMessageResponseDto enterMessage = ChatMessageResponseDto.of(
participant.getMemberId(),
chatRoom.getId(),
participant.getNickname()+"๋‹˜์ด ์ž…์žฅํ•˜์…จ์Šต๋‹ˆ๋‹ค.",
participant.getNickname() + "๋‹˜์ด ์ž…์žฅํ•˜์…จ์Šต๋‹ˆ๋‹ค.",
LocalDateTime.now());

List<MeetingParticipant> participants = meetingParticipantRepository.findByMeeting(chatRoom.getMeeting());
Expand All @@ -89,21 +89,22 @@ public void joinChatRoom(Long meetingId, UserDetails userDetails) {
.map(member -> ChatMemberListDto.of(member.getId(), member.getMember().getNickname()))
.collect(Collectors.toList());


//์‹ค์‹œ๊ฐ„ ์œ ์ € ์ž…์žฅ ๋ฉ”์„ธ์ง€
messagingTemplate.convertAndSend("/topic/chat."+chatRoom.getId(), enterMessage);
messagingTemplate.convertAndSend("/topic/chat." + chatRoom.getId(), enterMessage);
//์‹ค์‹œ๊ฐ„ ์œ ์ € ์—…๋ฐ์ดํŠธ ๋ฉ”์„ธ์ง€
messagingTemplate.convertAndSend("/topic/chat." + chatRoom.getId() + ".members", participantDTOs);
}

//์ฑ„ํŒ…๋ฐฉ ์ž…์žฅ(์ง€๋‚œ ๋กœ๋”ฉ ์œ„์น˜๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ์กฐ์ ˆ)
public ChatRoomResponseDto enterChatRoomAndLoadMessage(Long chatRoomId, UserDetails userDetails, Pageable pageable) {
public ChatRoomResponseDto enterChatRoomAndLoadMessage(Long chatRoomId, UserDetails userDetails,
Pageable pageable) {
Member mine = securityUtils.getMember(userDetails);
ChatRoom chatRoom = chatRoomRepository.findByIdAndDeletedStatus(chatRoomId, DeletedStatus.NOT_DELETED)
.orElseThrow(() -> new CommonException(ErrorCode.CHATROOM_NOT_FOUND));
Meeting meeting = chatRoom.getMeeting();

List<ChatRoomResponseDto.ChatMemberResponseDto> participants = Optional.ofNullable(meetingParticipantRepository.findByMeeting(meeting))
List<ChatRoomResponseDto.ChatMemberResponseDto> participants = Optional.ofNullable(
meetingParticipantRepository.findByMeeting(meeting))
.orElseThrow(() -> new CommonException(ErrorCode.USER_NOT_FOUND))
.stream()
.map(meetingParticipant -> {
Expand All @@ -116,18 +117,20 @@ public ChatRoomResponseDto enterChatRoomAndLoadMessage(Long chatRoomId, UserDeta

//์ฑ„ํŒ…๋ฐฉ ๊ณต์ง€ ์ฒ˜๋ฆฌ
if (meeting instanceof OfflineMeeting) {
OfflineMeeting offlineMeeting = (OfflineMeeting) meeting;
ChatRoomOfflineNoticeDto notice = ChatRoomOfflineNoticeDto.of(offlineMeeting.getMeetingPlace(), offlineMeeting.getMeetingDate());
OfflineMeeting offlineMeeting = (OfflineMeeting)meeting;
ChatRoomOfflineNoticeDto notice = ChatRoomOfflineNoticeDto.of(offlineMeeting.getMeetingPlace(),
offlineMeeting.getMeetingDate());

return ChatRoomResponseDto.ofWithOffline(participants, chatList, notice);
return ChatRoomResponseDto.ofWithOffline(offlineMeeting.getMeetingName(), participants, chatList, notice);
}

if (meeting instanceof DeliveryMeeting) {
DeliveryMeeting deliveryMeeting = (DeliveryMeeting) meeting;
DeliveryMeeting deliveryMeeting = (DeliveryMeeting)meeting;
ChatRoomDeliveryNoticeDto notice = ChatRoomDeliveryNoticeDto
.of(deliveryMeeting.getStoreName(), deliveryMeeting.getAccountNumber(), deliveryMeeting.getBankName().toString(), deliveryMeeting.getPickupLocation());
.of(deliveryMeeting.getStoreName(), deliveryMeeting.getAccountNumber(),
deliveryMeeting.getBankName().toString(), deliveryMeeting.getPickupLocation());

return ChatRoomResponseDto.ofWithDelivery(participants, chatList, notice);
return ChatRoomResponseDto.ofWithDelivery(deliveryMeeting.getMeetingName(), participants, chatList, notice);
}

throw new CommonException(ErrorCode.INVALID_MEETING_TYPE);
Expand All @@ -142,7 +145,7 @@ public Void leaveChatRoom(Long chatRoomId, UserDetails userDetails) {
MemberChatRoom target = memberChatRoomRepository.findByMember_MemberId(member.getMemberId())
.orElseThrow(() -> new CommonException(ErrorCode.MEMBER_CHATROOM_NOT_FOUND));

if(chatRoom.getOwnerId().equals(member.getMemberId())) {
if (chatRoom.getOwnerId().equals(member.getMemberId())) {
chatRoom.deleteChatRoom();
chatRoom.getParticipant().forEach(memberChatRoomRepository::delete);
chatService.deleteChat(chatRoom);
Expand All @@ -153,13 +156,12 @@ public Void leaveChatRoom(Long chatRoomId, UserDetails userDetails) {
ChatMessageResponseDto leaveMessage = ChatMessageResponseDto.of(
member.getMemberId(),
chatRoom.getId(),
member.getNickname()+"๋‹˜(ํ˜ธ์ŠคํŠธ)์ด ํ‡ด์žฅํ•˜์…จ์Šต๋‹ˆ๋‹ค. ๋ชจ์ž„์ด ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.",
member.getNickname() + "๋‹˜(ํ˜ธ์ŠคํŠธ)์ด ํ‡ด์žฅํ•˜์…จ์Šต๋‹ˆ๋‹ค. ๋ชจ์ž„์ด ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.",
LocalDateTime.now());

//์‹ค์‹œ๊ฐ„ ํ˜ธ์ŠคํŠธ ํ‡ด์žฅ ๋ฉ”์„ธ์ง€
messagingTemplate.convertAndSend("/topic/chat."+chatRoom.getId(), leaveMessage);
}
else {
messagingTemplate.convertAndSend("/topic/chat." + chatRoom.getId(), leaveMessage);
} else {
chatRoom.removeParticipant(target);
memberChatRoomRepository.delete(target);
eventPublisher.publishEvent(new ParticipantChatRoomLeftEvent(chatRoom.getMeeting().getId(), userDetails));
Expand All @@ -172,7 +174,7 @@ public void sendLeveMessage(ChatRoom chatRoom, Member member) {
ChatMessageResponseDto leaveMessage = ChatMessageResponseDto.of(
member.getMemberId(),
chatRoom.getId(),
member.getNickname()+"๋‹˜์ด ํ‡ด์žฅํ•˜์…จ์Šต๋‹ˆ๋‹ค.",
member.getNickname() + "๋‹˜์ด ํ‡ด์žฅํ•˜์…จ์Šต๋‹ˆ๋‹ค.",
LocalDateTime.now());

List<MeetingParticipant> participants = meetingParticipantRepository.findByMeeting(chatRoom.getMeeting());
Expand All @@ -183,7 +185,7 @@ public void sendLeveMessage(ChatRoom chatRoom, Member member) {
.collect(Collectors.toList());

//์‹ค์‹œ๊ฐ„ ์œ ์ € ํ‡ด์žฅ ๋ฉ”์„ธ์ง€
messagingTemplate.convertAndSend("/topic/chat."+chatRoom.getId(), leaveMessage);
messagingTemplate.convertAndSend("/topic/chat." + chatRoom.getId(), leaveMessage);
//์‹ค์‹œ๊ฐ„ ์œ ์ € ์—…๋ฐ์ดํŠธ ๋ฉ”์„ธ์ง€
messagingTemplate.convertAndSend("/topic/chat." + chatRoom.getId() + ".members", participantDTOs);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
Expand Down Expand Up @@ -226,8 +226,11 @@ public ResponseEntity<GlobalResponseDto<Void>> deleteMeeting(
.body(GlobalResponseDto.success());
}

@PatchMapping("/{meetingId}/offline")
@PutMapping("/{meetingId}/offline")
@Operation(summary = "์˜คํ”„๋ผ์ธ ๋ชจ์ž„ ์ˆ˜์ •", description = "์˜คํ”„๋ผ์ธ ๋ชจ์ž„์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.")
@io.swagger.v3.oas.annotations.parameters.RequestBody(required = true, content = @Content(
mediaType = MediaType.MULTIPART_FORM_DATA_VALUE,
schema = @Schema(implementation = UpdateOfflineMeetingRequestDto.class)))
public ResponseEntity<GlobalResponseDto<Void>> updateOfflineMeeting(
@PathVariable Long meetingId,
@ModelAttribute @Valid UpdateOfflineMeetingRequestDto updateOfflineMeetingRequestDto,
Expand All @@ -238,11 +241,14 @@ public ResponseEntity<GlobalResponseDto<Void>> updateOfflineMeeting(
.body(GlobalResponseDto.success());
}

@PatchMapping("/{meetingId}/delivery")
@PutMapping("/{meetingId}/delivery")
@Operation(summary = "๋ฐฐ๋‹ฌ ๋ชจ์ž„ ์ˆ˜์ •", description = "๋ฐฐ๋‹ฌ ๋ชจ์ž„์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.")
@io.swagger.v3.oas.annotations.parameters.RequestBody(required = true, content = @Content(
mediaType = MediaType.MULTIPART_FORM_DATA_VALUE,
schema = @Schema(implementation = UpdateDeliveryMeetingRequestDto.class)))
public ResponseEntity<GlobalResponseDto<Void>> updateDeliveryMeeting(
@PathVariable Long meetingId,
@RequestBody @Valid UpdateDeliveryMeetingRequestDto UpdateDeliveryMeetingRequestDto,
@ModelAttribute @Valid UpdateDeliveryMeetingRequestDto UpdateDeliveryMeetingRequestDto,
@AuthenticationPrincipal UserDetails userDetails
) {
meetingService.updateDeliveryMeeting(meetingId, UpdateDeliveryMeetingRequestDto, userDetails);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,10 @@ public void updateDeliveryMeeting(
String pickupLocation,
String accountNumber,
BankName bankName,
MeetingBackgroundType BackgroundType,
Image backgroundImage
) {
super.updateMeeting(meetingName, description, backgroundImage);
super.updateMeeting(meetingName, description, backgroundImage, BackgroundType);
this.foodCategory = foodCategory;
this.storeName = storeName;
this.pickupLocation = pickupLocation;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,10 @@ public abstract class Meeting {
@Enumerated(EnumType.STRING)
private MeetingStatus meetingStatus;

@Enumerated(EnumType.STRING)
@Column(nullable = false)
private MeetingBackgroundType backgroundType;

@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "background_image_id")
private Image backgroundImage;
Expand All @@ -80,10 +84,12 @@ public abstract class Meeting {
private LocalDateTime updatedAt;

// ๋ชจ์ž„ ์ˆ˜์ •
public void updateMeeting(String meetingName, String meetingDescription, Image backgroundImage) {
public void updateMeeting(String meetingName, String meetingDescription, Image backgroundImage,
MeetingBackgroundType backgroundImageType) {
this.meetingName = meetingName;
this.meetingDescription = meetingDescription;
this.backgroundImage = backgroundImage;
this.backgroundType = backgroundImageType;
}

// ๋ชจ์ž„ ์‚ญ์ œ
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.example.eatmate.app.domain.meeting.domain;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
public enum MeetingBackgroundType {
DEFAULT_IMAGE_1("๊ธฐ๋ณธ ์ด๋ฏธ์ง€ 1",
"https://eatmatebucket.s3.ap-northeast-2.amazonaws.com/a2c4c1b796de95f92ed6b1c8430075a2.jpg"),
DEFAULT_IMAGE_2("๊ธฐ๋ณธ ์ด๋ฏธ์ง€ 2",
"https://eatmatebucket.s3.ap-northeast-2.amazonaws.com/ee36549fbadb7d88712f2b18cdc72eb1.jpg"),
CUSTOM("์‚ฌ์šฉ์ž ์ง€์ •", null);

private final String description;
private final String imageUrl;
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ public void updateOfflineMeeting(
String meetingPlace,
LocalDateTime meetingDate,
OfflineMeetingCategory offlineMeetingCategory,
MeetingBackgroundType backgroundType,
Image backgroundImage) {

super.updateMeeting(meetingName, description, backgroundImage);

super.updateMeeting(meetingName, description, backgroundImage, backgroundType);
this.meetingPlace = meetingPlace;
this.meetingDate = meetingDate;
this.offlineMeetingCategory = offlineMeetingCategory;
Expand Down
Loading

0 comments on commit 8c43a40

Please sign in to comment.