package shop.alien.entity.store.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 商家端预约信息列表 VO
 *
 * @author system
 * @since 2025-01-XX
 */
@Data
@ApiModel(value = "StoreReservationListVo", description = "商家端预约信息列表VO")
public class StoreReservationListVo {

    @ApiModelProperty(value = "预约ID")
    private Integer id;

    @ApiModelProperty(value = "预约号（券码）")
    private String reservationNo;

    @ApiModelProperty(value = "预约日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date reservationDate;

    @ApiModelProperty(value = "星期（如：周一、周二）")
    private String weekDay;

    @ApiModelProperty(value = "分类ID")
    private Integer categoryId;

    @ApiModelProperty(value = "分类名称（如：大厅、包间）")
    private String categoryName;

    @ApiModelProperty(value = "预约人数")
    private Integer guestCount;

    @ApiModelProperty(value = "桌号列表（逗号分隔，如：A01,A02）")
    private String tableNumbers;

    @ApiModelProperty(value = "预约开始时间 HH:mm")
    private String startTime;

    @ApiModelProperty(value = "预约结束时间 HH:mm")
    private String endTime;

    @ApiModelProperty(value = "时间段（如：10:00-12:00）")
    private String timeSlot;

    @ApiModelProperty(value = "用户ID")
    private Integer userId;

    @ApiModelProperty(value = "客户姓名")
    private String customerName;

    @ApiModelProperty(value = "联系方式（手机号）")
    private String contactPhone;

    @ApiModelProperty(value = "备注信息")
    private String remark;

    @ApiModelProperty(value = "取消原因（商家端取消）")
    private String reason;

    @ApiModelProperty(value = "预约状态 0:待确认 1:已确认 2:已到店 3:已取消 4:未到店超时")
    private Integer status;

    @ApiModelProperty(value = "状态文本（待使用、已完成、退款等）")
    private String statusText;

    @ApiModelProperty(value = "订单金额（元）")
    private BigDecimal totalAmount;

    @ApiModelProperty(value = "订金金额（元）")
    private BigDecimal depositAmount;

    @ApiModelProperty(value = "退款金额（元）")
    private BigDecimal refundAmount;

    @ApiModelProperty(value = "订单状态 0:待支付 1:待使用 2:已完成 3:已过期 4:已取消 5:已关闭 6:退款中 7:已退款 8:商家预订")
    private Integer orderStatus;

    @ApiModelProperty(value = "订单状态文本（待支付、待使用、已完成、退款等）")
    private String orderStatusText;

    @ApiModelProperty(value = "订单费用类型 0-免费，1-收费")
    private Integer orderCostType;

    @ApiModelProperty(value = "商户订单号")
    private String outTradeNo;

    @ApiModelProperty(value = "支付方式")
    private String paymentMethod;

    @ApiModelProperty(value = "实际到店时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date actualArrivalTime;

    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createdTime;
}
