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