Skip to content

Commit

Permalink
Merge pull request #187 from Leets-Official/refactor/186-임박한-모임-조회-dt…
Browse files Browse the repository at this point in the history
…o-수정

[refactor] 임박한 모임 조회 dto 수정
  • Loading branch information
dyk-im authored Feb 5, 2025
2 parents 19bc7c1 + f55aee4 commit a60bf13
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import com.example.eatmate.app.domain.meeting.dto.CreateOfflineMeetingResponseDto;
import com.example.eatmate.app.domain.meeting.dto.MeetingDetailResponseDto;
import com.example.eatmate.app.domain.meeting.dto.MyMeetingListResponseDto;
import com.example.eatmate.app.domain.meeting.dto.UpcomingMeetingResponseDto;
import com.example.eatmate.app.domain.meeting.dto.UpcomingMeetingResultDto;
import com.example.eatmate.app.domain.meeting.dto.UpdateDeliveryMeetingRequestDto;
import com.example.eatmate.app.domain.meeting.dto.UpdateOfflineMeetingRequestDto;
import com.example.eatmate.app.domain.meeting.service.MeetingService;
Expand Down Expand Up @@ -209,11 +209,11 @@ public ResponseEntity<GlobalResponseDto<CursorResponseDto<MyMeetingListResponseD

@GetMapping("/my/upcoming")
@Operation(summary = "가장 임박한 모임 조회", description = "내가 참여중인 활성화된 모임 중 가장 임박한 모임을 조회합니다.")
public ResponseEntity<GlobalResponseDto<UpcomingMeetingResponseDto>> getUpcomingMeeting(
public ResponseEntity<GlobalResponseDto<UpcomingMeetingResultDto>> getUpcomingMeeting(
@AuthenticationPrincipal UserDetails userDetails) {
return ResponseEntity.status(HttpStatus.OK)
.body(GlobalResponseDto.success(
meetingService.getUpcomingMeeting(userDetails)));
meetingService.getUpcomingMeeting(userDetails))); //반환 DTO 수정
}

@PatchMapping("/{meetingId}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,7 @@ public UpcomingMeetingResponseDto findUpcomingMeeting(Long memberId) {

return queryFactory
.select(Projections.constructor(UpcomingMeetingResponseDto.class,
meeting.id, //id 추가
meetingParticipant.member.nickname,
// 모임 시간 (배달/오프라인 구분하여 조회)
ExpressionUtils.as(
Expand Down Expand Up @@ -234,7 +235,8 @@ public UpcomingMeetingResponseDto findUpcomingMeeting(Long memberId) {
.select(offlineMeeting.offlineMeetingCategory)
.from(offlineMeeting)
.where(offlineMeeting.id.eq(meeting.id)),
meeting.type
meeting.type,
meeting.meetingName //모임 이름 추가
))
.from(meeting)
.join(meetingParticipant).on(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,6 @@ public interface MeetingParticipantRepository extends JpaRepository<MeetingParti
@Query("SELECT mp FROM MeetingParticipant mp WHERE mp.meeting.id = :meetingId")
List<MeetingParticipant> findParticipantsByMeetingIdWithLock(Long meetingId);

Optional<MeetingParticipant> findByMeetingIdAndMember(Long meetingId, Member member);

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,22 @@

@Getter
public class UpcomingMeetingResponseDto {
private Long id; //id, 모임 이름 추가
private String nickname;
private LocalDateTime meetingTime;
private String meetingLocation;
private OfflineMeetingCategory offlineMeetingCategory;
private String type;
private String meetingName;

public UpcomingMeetingResponseDto(String nickname, LocalDateTime meetingTime, String meetingLocation,
OfflineMeetingCategory offlineMeetingCategory, String type) {
public UpcomingMeetingResponseDto(Long id, String nickname, LocalDateTime meetingTime, String meetingLocation,
OfflineMeetingCategory offlineMeetingCategory, String type, String meetingName) {
this.id = id;
this.nickname = nickname;
this.meetingTime = meetingTime;
this.meetingLocation = meetingLocation;
this.offlineMeetingCategory = offlineMeetingCategory;
this.type = type;

this.meetingName = meetingName;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.example.eatmate.app.domain.meeting.dto;

import lombok.Getter;

@Getter
public class UpcomingMeetingResultDto {
private UpcomingMeetingResponseDto upcomingMeetingResponseDto;
private Boolean isOwn;

public UpcomingMeetingResultDto (UpcomingMeetingResponseDto upcomingMeetingResponseDto, Boolean isOwn) {
this.upcomingMeetingResponseDto = upcomingMeetingResponseDto;
this.isOwn = isOwn;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import com.example.eatmate.app.domain.meeting.dto.MeetingListResponseDto;
import com.example.eatmate.app.domain.meeting.dto.MyMeetingListResponseDto;
import com.example.eatmate.app.domain.meeting.dto.UpcomingMeetingResponseDto;
import com.example.eatmate.app.domain.meeting.dto.UpcomingMeetingResultDto;
import com.example.eatmate.app.domain.meeting.dto.UpdateDeliveryMeetingRequestDto;
import com.example.eatmate.app.domain.meeting.dto.UpdateOfflineMeetingRequestDto;
import com.example.eatmate.app.domain.meeting.event.HostMeetingDeleteEvent;
Expand Down Expand Up @@ -453,7 +454,7 @@ public CursorResponseDto<MyMeetingListResponseDto> getMyActiveMeetingList(

// 가장 최근 미팅 조회
@Transactional(readOnly = true)
public UpcomingMeetingResponseDto getUpcomingMeeting(UserDetails userDetails) {
public UpcomingMeetingResultDto getUpcomingMeeting(UserDetails userDetails) {
Member member = securityUtils.getMember(userDetails);

// 임박한 미팅 조회
Expand All @@ -464,7 +465,19 @@ public UpcomingMeetingResponseDto getUpcomingMeeting(UserDetails userDetails) {
throw new CommonException(ErrorCode.MEETING_NOT_FOUND);
}

return upcomingMeeting;
//dto 필드 추가
MeetingParticipant my = meetingParticipantRepository.findByMeetingIdAndMember(upcomingMeeting.getId(), member)
.orElseThrow( () -> new CommonException(ErrorCode.USER_NOT_FOUND));

if (my.getRole() == ParticipantRole.HOST) {
Boolean isOwn = true;
return new UpcomingMeetingResultDto(upcomingMeeting, isOwn);
}
else {
Boolean isOwn = false;
return new UpcomingMeetingResultDto(upcomingMeeting, isOwn);
}

}

// 모임 주인의 모임 삭제(나가기) / 컨트롤러에서 직접 사용할 메소드
Expand Down

0 comments on commit a60bf13

Please sign in to comment.