Booking Service
Đặt lịch hẹn và quản lý "tồn kho thời gian" cho doanh nghiệp dịch vụ.
Tổng Quan
Booking Service quản lý cuộc hẹn cho các doanh nghiệp dịch vụ như spa, salon và phòng khám. Theo dõi lịch nhân viên, lịch tài nguyên, và quản lý slot thời gian.
Tính Năng Chính
- Lịch Nhân viên - Giờ làm việc theo nhân viên
- Quản lý Tài nguyên - Phòng, giường, thiết bị
- Đặt Lịch hẹn - Tìm và đặt slot thời gian
- Thuật toán Khả dụng - Giao của lịch nhân viên + tài nguyên
Bối Cảnh Kiến Trúc
graph LR
ORDER["📝 Order Service"] --> BOOKING["📅 Booking Service"]
POS["POS"] --> BOOKING
BOOKING --> MERCHANT["🏪 Merchant Service"]
style BOOKING fill:#9b59b6,stroke:#7d3c98,color:#fff
Bắt Đầu Nhanh
cd services/booking-service-net
cp .env.example .env
dotnet run --project src/BookingService.API
API Endpoints
Lịch Nhân Viên
| Method | Endpoint | Mô tả |
|---|---|---|
GET |
/api/v1/staff/{id}/schedule |
Lấy lịch nhân viên |
PUT |
/api/v1/staff/{id}/schedule |
Cập nhật lịch |
GET |
/api/v1/staff/{id}/availability |
Lấy slot khả dụng |
Tài Nguyên
| Method | Endpoint | Mô tả |
|---|---|---|
GET |
/api/v1/resources |
Danh sách tài nguyên theo shop |
POST |
/api/v1/resources |
Tạo tài nguyên |
PUT |
/api/v1/resources/{id} |
Cập nhật tài nguyên |
GET |
/api/v1/resources/{id}/availability |
Lấy slot khả dụng |
Cuộc Hẹn
| Method | Endpoint | Mô tả |
|---|---|---|
GET |
/api/v1/appointments |
Danh sách cuộc hẹn |
POST |
/api/v1/appointments |
Tạo cuộc hẹn |
GET |
/api/v1/appointments/{id} |
Chi tiết cuộc hẹn |
PATCH |
/api/v1/appointments/{id}/status |
Cập nhật trạng thái |
DELETE |
/api/v1/appointments/{id} |
Hủy cuộc hẹn |
Tìm Slot
| Method | Endpoint | Mô tả |
|---|---|---|
POST |
/api/v1/slots/find |
Tìm slot khả dụng |
Domain Model
StaffSchedule
public class StaffSchedule : Entity
{
public Guid StaffId { get; private set; }
public Guid ShopId { get; private set; }
public DayOfWeek DayOfWeek { get; private set; }
public TimeOnly StartTime { get; private set; }
public TimeOnly EndTime { get; private set; }
}
Resource
public class Resource : Entity, IAggregateRoot
{
public Guid ShopId { get; private set; }
public string Name { get; private set; }
public ResourceType Type { get; private set; } // Room, Bed, Equipment
public int Capacity { get; private set; }
}
Appointment
public class Appointment : Entity, IAggregateRoot
{
public Guid ShopId { get; private set; }
public Guid? CustomerId { get; private set; }
public Guid? StaffId { get; private set; }
public Guid? ResourceId { get; private set; }
public Guid ServiceId { get; private set; }
public DateTime StartTime { get; private set; }
public DateTime EndTime { get; private set; }
public AppointmentStatus Status { get; private set; }
}
Thuật Toán Tìm Slot
Slot Khả Dụng = Lịch Nhân Viên ∩ Lịch Tài Nguyên - Cuộc Hẹn Đã Đặt
sequenceDiagram
participant Client
participant Booking as Booking Service
participant DB as Database
Client->>Booking: Tìm Slot (Dịch vụ, Ngày, Nhân viên?)
Booking->>DB: Lấy Lịch Nhân Viên
Booking->>DB: Lấy Lịch Tài Nguyên
Booking->>DB: Lấy Cuộc Hẹn Đã Đặt
Booking->>Booking: Tính Giao Tập Hợp
Booking->>Booking: Loại Bỏ Slot Đã Đặt
Booking-->>Client: Danh Sách Slot Khả Dụng
Services Liên Quan
- Order Service - Sử dụng ServiceStrategy
- Merchant Service - Cấu hình Shop
- Catalog Service - Sản phẩm dịch vụ
License
Proprietary - GoodGo Platform