package cn.novalon.gym.manage.groupcourse.entity;

import cn.novalon.gym.manage.db.entity.BaseEntity;
import org.springframework.data.relational.core.mapping.Column;
import org.springframework.data.relational.core.mapping.Table;

import java.time.LocalDateTime;

/**
 * 团课预约记录实体类 - 对应 group_course_booking 表
 * 
 * @author 张翔
 * @date 2026-06-01
 */
@Table("group_course_booking")
public class GroupCourseBookingEntity extends BaseEntity {

    //团课ID
    @Column("course_id")
    private Long courseId;

    //会员ID
    @Column("member_id")
    private Long memberId;

    //会员卡记录ID
    @Column("member_card_id")
    private Long memberCardRecordId;

    //预约时间
    @Column("booking_time")
    private LocalDateTime bookingTime;

    //状态：0-已预约，1-已取消，2-已出席，3-缺席
    @Column("status")
    private String status;

    //取消时间
    @Column("cancel_time")
    private LocalDateTime cancelTime;

    //课程名称（冗余字段，保存预约时的课程快照）
    @Column("course_name")
    private String courseName;

    //课程开始时间（冗余字段，保存预约时的课程快照）
    @Column("course_start_time")
    private LocalDateTime courseStartTime;

    //课程结束时间（冗余字段，保存预约时的课程快照）
    @Column("course_end_time")
    private LocalDateTime courseEndTime;

    //上课地点（冗余字段，保存预约时的课程快照）
    @Column("location")
    private String location;

    public Long getCourseId() {
        return courseId;
    }

    public void setCourseId(Long courseId) {
        this.courseId = courseId;
    }

    public Long getMemberId() {
        return memberId;
    }

    public void setMemberId(Long memberId) {
        this.memberId = memberId;
    }

    public Long getMemberCardRecordId() {
        return memberCardRecordId;
    }

    public void setMemberCardRecordId(Long memberCardRecordId) {
        this.memberCardRecordId = memberCardRecordId;
    }

    public LocalDateTime getBookingTime() {
        return bookingTime;
    }

    public void setBookingTime(LocalDateTime bookingTime) {
        this.bookingTime = bookingTime;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public LocalDateTime getCancelTime() {
        return cancelTime;
    }

    public void setCancelTime(LocalDateTime cancelTime) {
        this.cancelTime = cancelTime;
    }

    public String getCourseName() {
        return courseName;
    }

    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }

    public LocalDateTime getCourseStartTime() {
        return courseStartTime;
    }

    public void setCourseStartTime(LocalDateTime courseStartTime) {
        this.courseStartTime = courseStartTime;
    }

    public LocalDateTime getCourseEndTime() {
        return courseEndTime;
    }

    public void setCourseEndTime(LocalDateTime courseEndTime) {
        this.courseEndTime = courseEndTime;
    }

    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }
}