Skip to content

Comments

초대장 상세 응답 기능 구현 완료#56

Merged
khsrla9806 merged 9 commits intolivable-final:developfrom
khsrla9806:feature/#53-invitation-detail
Sep 20, 2023
Merged

초대장 상세 응답 기능 구현 완료#56
khsrla9806 merged 9 commits intolivable-final:developfrom
khsrla9806:feature/#53-invitation-detail

Conversation

@khsrla9806
Copy link
Contributor



프로세스

(1) GET /api/invitation/{invitationId} 요청
(2) invitationId에 해당하는 초대장 데이터를 응답한다.
(3) 초대장 수정 페이지에 사용되는 정보


TODO

  • 기능 구현
  • Service 테스트 구현
  • Controller 테스트 구현

쿼리

select 
	r.common_place_id, 
	i.office_name, 
	i.purpose, 
	i.description, 
	i.start_date, 
	i.end_date, 
	i.start_time, 
	i.end_time
from invitation i
left outer join invitation_reservation_map irm
on irm.invitation_id = i.id
left outer join reservation r
on irm.reservation_id = r.id
where i.id = 19 limit 1;
  • visitor 제외 나머지 정보 가져오는 쿼리
  • 예약하지 않은 장소를 사용한 경우도 있기 때문에 outer join을 해야 한다.
  • visitor는 여러명일 수 있어서 따로 쿼리를 작성

쿼리 메서드

public InvitationResponse.DetailDTO findInvitationAndVisitorsByInvitationId(Long invitationId) {
    InvitationResponse.DetailDTO invitationDetail = queryFactory
            .select(Projections.constructor(InvitationResponse.DetailDTO.class,
                    reservation.commonPlace.id,
                    invitation.officeName,
                    invitation.purpose,
                    invitation.description,
                    invitation.startDate,
                    invitation.endDate,
                    invitation.startTime,
                    invitation.endTime
            ))
            .from(invitation)
            .leftJoin(invitationReservationMap)
            .on(invitationReservationMap.invitation.id.eq(invitation.id))
            .leftJoin(reservation)
            .on(reservation.id.eq(invitationReservationMap.reservation.id))
            .where(invitation.id.eq(invitationId))
            .fetchFirst();

    List<InvitationResponse.VisitorForDetailDTO> visitors = queryFactory
            .select(Projections.constructor(InvitationResponse.VisitorForDetailDTO.class,
                    visitor.id,
                    visitor.name,
                    visitor.contact
            ))
            .from(visitor)
            .where(visitor.invitation.id.eq(invitationId))
            .fetch();

    invitationDetail.setVisitors(visitors);

    return invitationDetail;
}

응답 데이터

  • 예약한 장소를 사용한 경우

    {
      "data": {
      "commonPlaceId": 1,
      "officeName": "5층 공용 라운지",
      "purpose": "회의",
      "description": "건물 앞으로 오세요.",
      "startDate": "2023-10-12",
      "endDate": "2023-10-12",
      "startTime": "10:30:00",
      "endTime": "11:30:00",
      "visitors": [
        {
          "visitorId": 1,
          "name": "김방문",
          "contact": "01012341234"
        },
        {
          "visitorId": 2,
          "name": "박방문",
          "contact": "01013492358"
        },
        {
          "visitorId": 3,
          "name": "홍방문",
          "contact": "01059842739"
        }
      ]
      }
    }
  • 예약하지 않은 장소를 사용한 경우

    {
      "data": {
        "commonPlaceId": null,
        "officeName": "5층 공용 라운지 (5층 509호)",
        "purpose": "회의",
        "description": "엘리베이터에서 내려서 오른쪽으로 쭉 오시면 있습니다.",
        "startDate": "2023-09-18",
        "endDate": "2023-09-21",
        "startTime": "16:00:00",
        "endTime": "16:30:00",
        "visitors": [
          {
            "visitorId": 75,
            "name": "일방문",
            "contact": "01012341234"
          },
          {
            "visitorId": 76,
            "name": "이방문",
            "contact": "01012341234"
          },
          {
            "visitorId": 77,
            "name": "삼방문",
            "contact": "01012341234"
          },
          {
            "visitorId": 78,
            "name": "사방문",
            "contact": "01012341234"
          }
        ]
      }
    }
  • 초대장을 작성한 Member가 아닌 다른 Member가 요청한 경우

    {
        "message": "초대장을 작성한 회원만 접근이 가능합니다."
    }

@khsrla9806 khsrla9806 added the develop 기능 개발 label Sep 20, 2023
@khsrla9806 khsrla9806 self-assigned this Sep 20, 2023
@khsrla9806 khsrla9806 merged commit 7080306 into livable-final:develop Sep 20, 2023
@khsrla9806 khsrla9806 deleted the feature/#53-invitation-detail branch October 6, 2023 01:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

develop 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant