Chuyển tới nội dung chính

Listing Parent-Child

Khái niệm

Quan hệ cha-con cho phép một listing lớn (listing cha) được chia thành nhiều listing nhỏ hơn (listing con).

Ví dụ: Căn hộ 3 phòng ngủ (cha) → Phòng ngủ 1, Phòng ngủ 2, Phòng ngủ 3 (con)

Điều này cho phép:

  • Cho thuê nguyên căn hoặc từng phòng lẻ linh hoạt
  • Quản lý inventory tự động
  • Tối ưu doanh thu

Quy tắc

  • Chỉ hỗ trợ 1 cấp (không có cha → con → cháu)
  • Listing cha và con phải thuộc cùng một Team
  • Listing cha và con phải có cùng vị trí
  • Tổng sức chứa của các con ≤ sức chứa của cha

Logic Availability

Hành độngKết quả
Đặt listing chaBlock tất cả listing con
Đặt listing conChỉ block listing cha (các con khác vẫn khả dụng)
Hủy listing chaGiải phóng tất cả listing con
Hủy listing conGiải phóng listing cha

Kiểm tra khả dụng:

  • Listing cha: khả dụng khi tất cả listing con đều trống
  • Listing con: khả dụng khi chính nó trống

API

Tạo listing con

POST /api/v1/listings
Authorization: Bearer <token>
X-Team-ID: <team_id>

{
"listing_type_category": "CHILD",
"parent_listing_id": "uuid-cua-listing-cha",
...
}

Lấy danh sách listing con

GET /api/v1/listings/{listing_id}/children

Lấy listing cha

GET /api/v1/listings/{listing_id}/parent

Validation

LỗiMô tả
PARENT_LISTING_NOT_FOUNDListing cha không tồn tại
INVALID_PARENT_LISTINGListing được chỉ định không phải là listing cha hợp lệ
CAPACITY_EXCEEDEDTổng sức chứa con vượt quá cha
CHILD_LISTING_HAS_BOOKINGSKhông thể thay đổi quan hệ khi đã có booking
INDIVIDUAL_RENTAL_NOT_ALLOWEDListing cha không cho phép đặt phòng lẻ

UI/UX

  • Khi tạo listing: chọn loại INDEPENDENT / PARENT / CHILD ở bước đầu tiên
  • Trang chi tiết listing cha: hiển thị danh sách các phòng con
  • Trang chi tiết listing con: hiển thị badge "Listing Con" và link đến listing cha