package com.fs.live.domain;

import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fs.common.annotation.Excel;
import com.fs.common.core.domain.BaseEntity;
import com.fs.delivery.domain.Tag;
import com.fs.live.dto.TaskLiveDto;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 直播列表对象 live_broadcast
 *
 * @author fs
 * @date 2026-03-10
 */
@Data
public class LiveBroadcast extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 租户ID */
    @Excel(name = "租户ID")
    private Long companyId;

    /** 直播标题 */
    @Excel(name = "直播标题")
    private String title;

    /** 封面图URL */
    @Excel(name = "封面图URL")
    private String coverUrl;

    /** 直播状态：0-待开播 1-直播中 2-已结束(可回放) 3-已下架 */
    @Excel(name = "直播状态：0-待开播 1-直播中 2-已结束(可回放) 3-已下架")
    private Long status;

    /** 主讲医生ID */
    @Excel(name = "主讲医生ID")
    private Long doctorId;

    /** 标签ID集合，逗号分隔 */
    @Excel(name = "标签ID集合，逗号分隔")
    private String tagIds;
    @TableField(exist = false)
    private List<Tag> tagList;

    /** 主讲医生姓名（冗余） */
    @Excel(name = "主讲医生姓名", readConverterExp = "冗=余")
    private String doctorName;

    /** 主讲医生职称（冗余） */
    @Excel(name = "主讲医生职称", readConverterExp = "冗=余")
    private String doctorTitle;

    /** 主讲医生头像（冗余） */
    @Excel(name = "主讲医生头像", readConverterExp = "冗=余")
    private String doctorAvatar;

    /** 医院名称（冗余） */
    @Excel(name = "医院名称", readConverterExp = "冗=余")
    private String hospitalName;

    /** 科室（冗余） */
    @Excel(name = "科室", readConverterExp = "冗=余")
    private String department;

    /** 计划开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "计划开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date scheduledStartTime;

    /** 计划结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "计划结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date scheduledEndTime;

    /** 实际开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "实际开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date actualStartTime;

    /** 实际结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "实际结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date actualEndTime;

    /** 直播流地址 */
    @Excel(name = "直播流地址")
    private String liveUrl;

    /** 回放地址 */
    @Excel(name = "回放地址")
    private String playbackUrl;

    /** 直播简介/声明 */
    @Excel(name = "直播简介/声明")
    private String description;

    /** 观看人数 */
    @Excel(name = "观看人数")
    private Long viewCount;

    /** 点赞数 */
    @Excel(name = "点赞数")
    private Long likeCount;

    /** 收藏数 */
    @Excel(name = "收藏数")
    private Long favoriteCount;

    /** 是否需要报名：0-否 1-是 */
    @Excel(name = "是否需要报名：0-否 1-是")
    private Long needRegister;

    /** 分享二维码URL */
    @Excel(name = "分享二维码URL")
    private String shareQrcodeUrl;

    /** 排序值，越大越靠前 */
    @Excel(name = "排序值，越大越靠前")
    private Long sort;

    /** 逻辑删除：0-未删除 1-已删除 */
    @Excel(name = "逻辑删除：0-未删除 1-已删除")
    private Long deleted;

    @TableField(exist = false)
    private TaskLiveDto taskLiveDto;

    @TableField(exist = false)
    private Long finishStatus;

}
