package shop.alien.entity.store.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import shop.alien.entity.store.BarPerformance;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 酒吧演出详情VO
 * 包含演出基本信息和表演嘉宾列表
 *
 * @author assistant
 * @since 2025-12-19
 */
@Data
@JsonInclude
@ApiModel(value = "BarPerformanceDetailVo对象", description = "酒吧演出详情")
public class BarPerformanceDetailVo implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 演出ID（主键）
     */
    @ApiModelProperty(value = "演出ID（主键）")
    private Integer id;

    /**
     * 父演出ID（关联本表id，null为顶级演出）
     */
    @ApiModelProperty(value = "父演出ID（关联本表id，null为顶级演出）")
    private Integer parentId;

    /**
     * 关联门店ID（关联store_info.id）
     */
    @ApiModelProperty(value = "关联门店ID（关联store_info.id）")
    private Integer storeId;

    /**
     * 表演嘉宾ids，逗号分隔
     */
    @ApiModelProperty(value = "表演嘉宾ids，逗号分隔")
    private String staffConfigIds;

    /**
     * 演出名称
     */
    @ApiModelProperty(value = "演出名称")
    private String performanceName;

    /**
     * 演出海报路径
     */
    @ApiModelProperty(value = "演出海报路径")
    private String performancePoster;

    /**
     * 演出风格（字典表proficient_tag逗号分隔）
     */
    @ApiModelProperty(value = "演出风格（字典表proficient_tag逗号分隔）")
    private String performanceStyle;

    /**
     * 演出类型（单选：0-特邀演出，1-常规演出）
     */
    @ApiModelProperty(value = "演出类型（单选：0-特邀演出，1-常规演出）")
    private Integer performanceType;

    /**
     * 演出频次：0-单次 1-每天定时 2-每周定时
     */
    @ApiModelProperty(value = "演出频次：0-单次 1-每天定时 2-每周定时")
    private String performanceFrequency;

    /**
     * 演出日期（0-周一，1-周二，2-周三，3-周四，4-周五，5-周六，6-周日，复选逗号分隔）
     */
    @ApiModelProperty(value = "演出日期（0-周一，1-周二，2-周三，3-周四，4-周五，5-周六，6-周日，复选逗号分隔）")
    private String performanceWeek;

    /**
     * 演出日期开始时间
     */
    @ApiModelProperty(value = "演出日期开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date singleStartDatetime;

    /**
     * 演出日期结束时间
     */
    @ApiModelProperty(value = "演出日期结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date singleEndDatetime;

    /**
     * 演出时间开始日期
     */
    @ApiModelProperty(value = "演出时间开始日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date dailyStartDate;

    /**
     * 演出时间结束日期
     */
    @ApiModelProperty(value = "演出时间结束日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date dailyEndDate;

    /**
     * 图片
     */
    @ApiModelProperty(value = "图片")
    private String performanceDetail;

    /**
     * 演出完整详情
     */
    @ApiModelProperty(value = "演出完整详情")
    private String performanceContent;

    /**
     * 演出须知（限300字）
     */
    @ApiModelProperty(value = "演出须知（限300字）")
    private String performanceNotice;

    /**
     * 审核状态：0-待审核 1-审核通过 2-审核拒绝
     */
    @ApiModelProperty(value = "审核状态：0-待审核 1-审核通过 2-审核拒绝")
    private Integer reviewStatus;

    /**
     * 审核拒绝原因
     */
    @ApiModelProperty(value = "审核拒绝原因")
    private String rejectReason;

    /**
     * 删除标记：0-未删除，1-已删除
     */
    @ApiModelProperty(value = "删除标记：0-未删除，1-已删除")
    private Integer deleteFlag;

    /**
     * 隐藏标记：0-不隐藏，1-隐藏
     */
    @ApiModelProperty(value = "隐藏标记：0-不隐藏，1-隐藏")
    private Integer hidden;

    /**
     * 上线状态：0-下线，1-上线
     */
    @ApiModelProperty(value = "上线状态：0-下线，1-上线")
    private Integer onlineStatus;

    /**
     * 状态：0禁用，1启用
     */
    @ApiModelProperty(value = "状态：0禁用，1启用")
    private Integer status;

    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    private Integer createdUserId;

    /**
     * 更新人
     */
    @ApiModelProperty(value = "更新人")
    private Integer updatedUserId;

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

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updatedTime;

    /**
     * 表演嘉宾列表
     */
    @ApiModelProperty(value = "表演嘉宾列表")
    private List<PerformerVo> performers;
}

