package cn.iocoder.yudao.module.im.controller.admin.rtc.vo; import cn.iocoder.yudao.framework.common.validation.InEnum; import cn.iocoder.yudao.module.im.enums.ImConversationTypeEnum; import cn.iocoder.yudao.module.im.enums.rtc.ImRtcCallMediaTypeEnum; import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.AssertTrue; import jakarta.validation.constraints.NotNull; import lombok.Data; import java.util.Set; @Schema(description = "管理后台 - 创建通话 Request VO") @Data public class ImRtcCallCreateReqVO { @Schema(description = "会话类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "会话类型不能为空") @InEnum(ImConversationTypeEnum.class) private Integer conversationType; @Schema(description = "媒体类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @NotNull(message = "媒体类型不能为空") @InEnum(ImRtcCallMediaTypeEnum.class) private Integer mediaType; @Schema(description = "群编号;群聊场景必填", example = "2048") private Long groupId; @Schema(description = "被邀请的用户编号集合;私聊必传 1 个对端,群聊必传至少 1 人") private Set<@NotNull(message = "被邀请用户编号不能为空") Long> inviteeIds; /** * 通话仅支持私聊和群聊 */ @AssertTrue(message = "会话类型不支持") @JsonIgnore public boolean isConversationTypeSupported() { return conversationType == null || ImConversationTypeEnum.isPrivate(conversationType) || ImConversationTypeEnum.isGroup(conversationType); } }