package org.xyzh.api.workcase.dto;

import java.util.Date;

import com.alibaba.fastjson2.JSONObject;
import org.xyzh.common.dto.BaseDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

/**
 * @description    视频会议表数据对象DTO
 * @filename    TbVideoMeetingDTO.java
 * @author    cascade
 * @copyright xyzh
 * @since 2025-12-22
 */
@Data
@Schema(description = "视频会议表对象")
public class TbVideoMeetingDTO extends BaseDTO {
    private static final long serialVersionUID = 1L;

    @Schema(description = "会议ID")
    private String meetingId;

    @Schema(description = "关联聊天室ID")
    private String roomId;

    @Schema(description = "关联工单ID")
    private String workcaseId;

    @Schema(description = "会议名称")
    private String meetingName;

    @Schema(description = "会议密码")
    private String meetingPassword;

    @Schema(description = "会议模式")
    private String description;

    @Schema(description = "JWT Token")
    private String jwtToken;

    @Schema(description = "Jitsi房间名")
    private String jitsiRoomName;

    @Schema(description = "Jitsi服务器地址")
    private String jitsiServerUrl;

    @Schema(description = "状态：scheduled-已安排 ongoing-进行中 ended-已结束 cancelled-已取消")
    private String status;

    @Schema(description = "创建者类型：guest-来客 agent-客服")
    private String creatorType;

    @Schema(description = "创建者名称")
    private String creatorName;

    @Schema(description = "参与人数")
    private Integer participantCount;

    @Schema(description = "最大参与人数")
    private Integer maxParticipants;

    @Schema(description = "定义会议开始时间")
    private Date startTime;

    @Schema(description = "定义会议结束时间")
    private Date endTime;

    @Schema(description = "提前入会时间（分钟）")
    private Integer advance;

    @Schema(description = "实际开始时间")
    private Date actualStartTime;

    @Schema(description = "实际结束时间")
    private Date actualEndTime;

    @Schema(description = "会议时长（秒）")
    private Integer durationSeconds;

    @Schema(description = "iframe嵌入URL")
    private String iframeUrl;

    @Schema(description = "Jitsi配置项")
    private JSONObject config;
}
