using SqlSugar; using System.ComponentModel.DataAnnotations; using UserCenter.Model.Enum; using VideoAnalysisCore.AICore.GPT.Dto; using VideoAnalysisCore.Model; using VideoAnalysisCore.Model.Dto; using VideoAnalysisCore.Model.Enum; using Yitter.IdGenerator; namespace VideoAnalysisCore.Controllers.Dto { public class AdminLoginReq { public string Account { get; set; } public string Password { get; set; } } /// /// 视频列表项 /// public class StructurePageContentAnalyzeItem { /// /// 录播内容编号 /// public long StructurePageContentId { get; set; } /// /// 素材ID /// public long MaterialId { get; set; } /// /// 视频编码 /// public string VideoCode { get; set; } /// /// 视频文件名称 /// public string VideoName { get; set; } /// /// 内容类型 /// public AttachmentsInfoType AttachmentsInfoType { get; set; } /// /// 视频下载地址 /// public string? VideoUrl { get; set; } /// /// 通知回调地址 /// public string? CallBackUrl { get; set; } } public class NodePackageReq { /// /// 素材Id 需要返回给我的参数 /// public long MaterialId { get; set; } /// /// 文件Id 需要返回给我的参数 /// public long AttachmentId { get; set; } /// /// 视频阿里云id /// 需要返回给我的参数 /// public string VideoCode { get; set; } /// /// 视频地址 /// public string VideoUrl { get; set; } /// /// 任务类型 /// //[Required(ErrorMessage = "任务类型是必填项")] //public TaskTypeEnum TaskType { get; set; } /// /// 课程类型 0=新课 3=复习 4= 活动 5=班会 7=其他资料 /// public AttachmentsInfoType CourseType { get; set; } /// /// 视频类型 PPT课件 = 1, 摄像头 = 2 /// public VideoType VideoType { get; set; } /// /// 分析完成后的回调地址 /// public string CallBackUrl { get; set; } /// /// 请求区域 回调的时候 需要把这个添加到Headers里面 Key=Area value=Area的值 /// public string Area { get; set; } /// /// 请求区域 回调的时候 需要把这个添加到Headers里面 Key=HostIP value=HostIP的值 /// public string HostIP { get; set; } /// /// 科目类型 /// [Required(ErrorMessage = "科目类型是必填项")] public SubjectEnum SubjectId { get; set; } /// /// 内容的Id 当内容id相同的时候 则表示是一组数据 /// 用于查找视频下对应的PPT资源 /// public long ContentId { get; set; } /// /// 学科网的课程id /// public long CourseId { get; set; } /// /// 学科网的教材版本Id /// public long TextBookVersionId { get; set; } /// /// 用户中心的云校id /// public long? UserCenterCloudSchoolId { get; set; } /// /// 教材层次 /// public CourselevelTypeEnum? CourseLevel { get; set; } /// /// 年级 /// public GradeEnum? GradeId { get; set; } public int? Trem { get; set; } /// /// 教育阶段 /// public EducationStageEnum StageId { get; set; } /// /// 年级册(上册/下册) /// public GradeSemesterEnum? GradeSemester { get; set; } } /// /// 视频处理 请求 /// public class NodeMonitoringReq { /// /// 媒体路径 /// [Required(ErrorMessage = "文件节点ID是必填项")] public long NodeId { get; set; } /// /// 任务类型 /// public TaskTypeEnum? Type { get; set; } /// /// 学科类型 /// public SubjectEnum? Subject { get; set; } } /// /// 视频处理 请求 /// public class VideoAnalysisReq { /// /// 媒体路径 /// [Required(ErrorMessage = "资源URL是必填项")] public string MediaUrl { get; set; } = string.Empty; /// /// ApiKey /// [Required(ErrorMessage = "接口Token是必填项")] public string ApiToken { get; set; } = string.Empty; /// /// 内容所属学科 /// public SubjectEnum? Subject { get; set; } /// /// 任务类型 /// public long CourseId { get; set; } /// /// 视频类型 /// public AttachmentsInfoType? VideoType { get; set; } /// /// 自定义值 任务完成后附带通知 /// public string Tag { get; set; } = string.Empty; /// /// 自定义Id可用于任务完成之后的查询 /// public string? TagId { get; set; } /// /// 课程对应ppt视频 /// public string? PPTVideoCode { get; set; } public string? PPTVideoUrl { get; set; } /// ///回调Api地址 /// //[Required(ErrorMessage = "回调Api地址是必填项")] //[Url(ErrorMessage = "请输入有效的 URL")] //public string CallBackUrl { get; set; } = string.Empty; } public class TextValue { public TextValue(float v) { var s = TimeSpan.FromSeconds((double)v); var td = new[] { s.Hours, s.Minutes, s.Seconds }; Text = string.Join(':', td.Where(s => s > 0)); Value = v; } public TextValue(string t, object v) { Text = t; Value = v; } public TextValue() { } public string Text { get; set; } public object Value { get; set; } } public class TaskKnowInfo { /// ///视频片段知识点 id /// public long Id { get; set; } /// /// 知识点 /// public string KnowPoint { get; set; } /// /// 知识点ID /// public string KnowPointId { get; set; } public float KnowWeight { get; set; } } public class TaskKnowBlock { public long Id { get; set; } /// /// 阶段id /// public long StageId { get; set; } /// /// 开始时间 /// public float? StartTime { get; set; } /// /// 结束时间 /// public float? EndTime { get; set; } /// /// 持续时间 /// [SugarColumn(IsIgnore = true)] public float? KeepTime => (EndTime ?? 0) - StartTime ?? 0; /// /// 主题 /// public string? Theme { get; set; } /// /// 内容总结 /// public string? Content { get; set; } /// /// 知识点列表 /// public TaskKnowInfo[] Know { get; set; } /// /// 片段内的试题 /// public virtual VideoQuestionShowDto[]? QuestionArr { get; set; } } /// /// 视频片段知识点结果 /// public class TaskKnowRes { /// /// 自定义Id [任务视频自定义id] /// /// public string? TagId { get; set; } /// /// 任务当前执行状态 /// public RedisChannelEnum Status { get; set; } /// /// 视频任务id /// public long VideoTaskId { get; set; } /// /// 视频片段 /// public TaskKnowBlock[] KnowBlockArr { get; set; } } public class TaskInfoRes : TaskRes { public TaskInfoRes() { } /// /// 任务当前执行状态 /// public RedisChannelEnum Status { get; set; } ///// ///// 时间轴状态枚举 ///// //public Dictionary TimeTypeEnum => // Enum.GetValues(typeof(TimeBaseTypeEnum)) // .Cast() // .ToDictionary(x => (int)x, x => x.ToString()); ///// ///// 时间轴合计 ///// //public Dictionary? TimeBaseTotal => // TimeBase?.GroupBy(s => s.TimeBaseType??TimeBaseTypeEnum.教师讲授)? // .ToDictionary(s => s.Key, s => new TextValue(s.Sum(x => x.End - x.Start))); } public class VideoKonwPointQueryReq { public long? CloudSchoolId { get; set; } /// /// 难度 [PN TK BJ] /// public CourselevelTypeEnum? CourseLevel { get; set; } /// /// 年级 /// public GradeEnum? GradeId { get; set; } /// /// 毕业届 /// public int? GradeYear { get; set; } /// /// 上下册 /// public GradeSemesterEnum? GradeSemester { get; set; } /// /// 教材版本 /// public long? TextBookVersionId { get; set; } /// /// 知识点名称 /// public string[]? KnowPointStrArr { get; set; } /// /// 切片主题 /// public string? Theme { get; set; } /// /// 切片内容 /// public string? Content { get; set; } public int PageIndex { get; set; } = 0; public int PageSize { get; set; } = 200; } public class VideoTaskInfoRes { /// /// 视频vid /// public long VideoTaskId { get; set; } public string PlayUrl { get; set; } /// /// 分段 /// public VideoTaskStageRes[] Stages { get; set; } } public class VideoTaskStageRes { ///// ///// 视频封面地址 ///// //public string PreviewUrl { get; set; } ///// ///// 视频地址 ///// //public string PlayUrl { get; set; } /// /// id /// public long Id { get; set; } = YitIdHelper.NextId(); /// /// 视频任务id /// /// public long VideoTaskId { get; set; } /// /// 年份 /// public string? GradeYear { get; set; } /// /// 年份 /// public string? GradeId { get; set; } /// /// 开始时间 /// public float? StartTime { get; set; } /// /// 结束时间 /// public float? EndTime { get; set; } /// /// 持续时间 /// public float? KeepTime => (EndTime ?? 0) - StartTime ?? 0; /// /// 主题 /// public string? Theme { get; set; } /// /// 课程阶段 /// public virtual string? Stage { get; set; } /// /// 视频所属云校ID /// 用户中心的云校id /// public long? CloudSchoolId { get; set; } /// /// 知识点 /// public string[] KnowPoints { get; set; } = []; } public class VideoTaskStageQueryRes { public VideoTaskStageQueryRes() { Data = []; Total = 0; } public VideoTaskStageQueryRes(VideoTaskStageRes[] data, int total = 0) { Data = data; Total = total; } public int Total { get; set; } public VideoTaskStageRes[] Data { get; set; } } }