package shop.alien.entity.store;

import com.baomidou.mybatisplus.annotation.*;
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 java.io.Serializable;
import java.time.LocalTime;
import java.util.Date;

/**
 * 演出信息实体类
 * 对应表: bar_performance
 *
 * @author assistant
 * @since 2025-12-17
 */
@Data
@JsonInclude
@TableName("bar_performance")
@ApiModel(value = "BarPerformance对象", description = "酒吧演出表")
public class BarPerformance implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "演出ID（主键）")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

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

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

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

    @ApiModelProperty(value = "演出名称")
    @TableField("performance_name")
    private String performanceName;

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

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

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

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

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

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

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

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

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

    @ApiModelProperty(value = "图片")
    @TableField("performance_detail")
    private String performanceDetail;

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

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

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

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

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

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

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

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

    @ApiModelProperty(value = "创建人")
    @TableField("created_user_id")
    private Integer createdUserId;

    @ApiModelProperty(value = "更新人")
    @TableField("updated_user_id")
    private Integer updatedUserId;

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

    @ApiModelProperty(value = "更新时间")
    @TableField(value = "updated_time", fill = FieldFill.UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updatedTime;

    @ApiModelProperty(value = "演出开始时间")
    @TableField(value = "daily_start_time")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8")
    private LocalTime dailyStartTime;

    @ApiModelProperty(value = "演出结束时间")
    @TableField(value = "daily_end_time")
    @JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8")
    private LocalTime dailyEndTime;
}