新增 全人物流程GradeYear
This commit is contained in:
parent
00e0664940
commit
de3bd90822
|
|
@ -39,7 +39,7 @@
|
|||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.18" />
|
||||
<PackageReference Include="Mapster.DependencyInjection" Version="1.0.2-pre01" />
|
||||
<PackageReference Include="Microsoft.IdentityModel.JsonWebTokens" Version="8.13.0" />
|
||||
<PackageReference Include="AlibabaCloud.SDK.Vod20170321" Version="3.6.1" />
|
||||
<PackageReference Include="AlibabaCloud.SDK.Vod20170321" Version="3.11.1" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="9.0.3" />
|
||||
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0" />
|
||||
|
|
|
|||
|
|
@ -842,6 +842,7 @@ namespace VideoAnalysisCore.AICore.GPT
|
|||
TextBookVersionId = taskInfo.TextBookVersionId,
|
||||
GradeSemester = taskInfo.GradeSemester,
|
||||
GradeId = taskInfo.GradeId,
|
||||
GradeYear = taskInfo.GradeYear,
|
||||
}).ToList();
|
||||
//尝试追加 作业布置分段
|
||||
if (homework != null && !questionRes.Any(s => s.Stage == StageEnum.作业布置.ToString()))
|
||||
|
|
|
|||
|
|
@ -138,6 +138,7 @@ namespace VideoAnalysisCore.Controllers.Dto
|
|||
/// 年级
|
||||
/// </summary>
|
||||
public GradeEnum? GradeId { get; set; }
|
||||
public int? Trem { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 教育阶段
|
||||
|
|
@ -346,12 +347,39 @@ namespace VideoAnalysisCore.Controllers.Dto
|
|||
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;
|
||||
|
|
@ -363,6 +391,7 @@ namespace VideoAnalysisCore.Controllers.Dto
|
|||
/// 视频vid
|
||||
/// </summary>
|
||||
public long VideoTaskId { get; set; }
|
||||
public string PlayUrl { get; set; }
|
||||
/// <summary>
|
||||
/// 分段
|
||||
/// </summary>
|
||||
|
|
@ -372,10 +401,17 @@ namespace VideoAnalysisCore.Controllers.Dto
|
|||
public class VideoTaskStageRes
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 视频封面地址
|
||||
/// </summary>
|
||||
public string PreviewUrl { get; set; }
|
||||
/// <summary>
|
||||
/// 视频地址
|
||||
/// </summary>
|
||||
public string PlayUrl { get; set; }
|
||||
/// <summary>
|
||||
/// id
|
||||
/// </summary>
|
||||
[SugarColumn(IsPrimaryKey = true)]
|
||||
public long Id { get; set; } = YitIdHelper.NextId();
|
||||
/// <summary>
|
||||
/// 视频任务id
|
||||
|
|
@ -386,23 +422,19 @@ namespace VideoAnalysisCore.Controllers.Dto
|
|||
/// 自定义Id [任务视频自定义id]
|
||||
/// <see cref="VideoTask.TagId"/>
|
||||
/// </summary>
|
||||
[SugarColumn(Length = 500, IsNullable = true)]
|
||||
public string? TagId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 开始时间
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public float? StartTime { get; set; }
|
||||
/// <summary>
|
||||
/// 结束时间
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public float? EndTime { get; set; }
|
||||
/// <summary>
|
||||
/// 持续时间
|
||||
/// </summary>
|
||||
[SugarColumn(IsIgnore = true)]
|
||||
public float? KeepTime => (EndTime ?? 0) - StartTime ?? 0;
|
||||
/// <summary>
|
||||
/// 主题
|
||||
|
|
@ -411,13 +443,11 @@ namespace VideoAnalysisCore.Controllers.Dto
|
|||
/// <summary>
|
||||
/// 课程阶段
|
||||
/// </summary>
|
||||
[SugarColumn(IsIgnore = true)]
|
||||
public virtual StageEnum? Stage { get; set; }
|
||||
/// <summary>
|
||||
/// 视频所属云校ID
|
||||
/// <para><see cref="UserCenter.Model.CloudSchool"/> 用户中心的云校id</para>
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public long? CloudSchoolId { get; set; }
|
||||
/// <summary>
|
||||
/// 知识点
|
||||
|
|
@ -432,12 +462,12 @@ namespace VideoAnalysisCore.Controllers.Dto
|
|||
Data = [];
|
||||
Total = 0;
|
||||
}
|
||||
public VideoTaskStageQueryRes(VideoTaskInfoRes[] data, int total = 0)
|
||||
public VideoTaskStageQueryRes(VideoTaskStageRes[] data, int total = 0)
|
||||
{
|
||||
Data = data;
|
||||
Total = total;
|
||||
}
|
||||
public int Total { get; set; }
|
||||
public VideoTaskInfoRes[] Data { get; set; }
|
||||
public VideoTaskStageRes[] Data { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,9 @@ using VideoAnalysisCore.Model;
|
|||
using VideoAnalysisCore.Controllers.Dto;
|
||||
using VideoAnalysisCore.Model.Dto;
|
||||
using SqlSugar;
|
||||
using AlibabaCloud.SDK.Vod20170321;
|
||||
using VideoAnalysisCore.Model.À¶¾¨ÖÇ¿â;
|
||||
using AlibabaCloud.SDK.Vod20170321.Models;
|
||||
|
||||
namespace VideoAnalysisCore.Controllers
|
||||
{
|
||||
|
|
@ -34,6 +36,7 @@ namespace VideoAnalysisCore.Controllers
|
|||
private readonly Repository<VideoTask> videoTaskDB;
|
||||
private readonly Repository<CourseInfo> courseInfoDB;
|
||||
private readonly Repository<VideoKonwPoint> videoKonwPointDB;
|
||||
private readonly Client vodClient;
|
||||
private readonly Repository<VideoTaskStage> videoTaskStageDB;
|
||||
private readonly Repository<NodePackageInfo> nodePackageInfoDB;
|
||||
private readonly Repository<VideoQuestion> videoQuestionDB;
|
||||
|
|
@ -42,7 +45,7 @@ namespace VideoAnalysisCore.Controllers
|
|||
|
||||
public LJZK_Controller(IMapper mp, Repository<NodeSubscription> nodesubscriptionDB,
|
||||
Repository<VideoTask> videoTaskDB = null, Repository<VideoKonwPoint> videoKonwPointDB = null
|
||||
, Repository<NodePackageInfo> nodePackageInfoDB = null, Repository<VideoQuestion> videoQuestionDB = null, Repository<VideoQuestionKonw> videoQuestionKonwDB = null, Repository<CourseInfo> courseInfoDB = null, RedisManager redisManager = null, Repository<VideoTaskStage> videoTaskStageDB = null)
|
||||
, Repository<NodePackageInfo> nodePackageInfoDB = null, Repository<VideoQuestion> videoQuestionDB = null, Repository<VideoQuestionKonw> videoQuestionKonwDB = null, Repository<CourseInfo> courseInfoDB = null, RedisManager redisManager = null, Repository<VideoTaskStage> videoTaskStageDB = null, Client vodClient = null)
|
||||
{
|
||||
this.mp = mp;
|
||||
this.nodesubscriptionDB = nodesubscriptionDB;
|
||||
|
|
@ -54,6 +57,7 @@ namespace VideoAnalysisCore.Controllers
|
|||
this.courseInfoDB = courseInfoDB;
|
||||
this.redisManager = redisManager;
|
||||
this.videoTaskStageDB = videoTaskStageDB;
|
||||
this.vodClient = vodClient;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -124,6 +128,7 @@ namespace VideoAnalysisCore.Controllers
|
|||
HostIP = s.HostIP,
|
||||
StageId = s.StageId,
|
||||
GradeId = s.GradeId,
|
||||
GradeYear = s.Trem==0?null : s.Trem,
|
||||
GradeSemester = s.GradeSemester,
|
||||
TextBookVersionId = s.TextBookVersionId,
|
||||
};
|
||||
|
|
@ -149,6 +154,7 @@ namespace VideoAnalysisCore.Controllers
|
|||
GradeSemester =s .GradeSemester,
|
||||
CourseLevel =s.CourseLevel,
|
||||
GradeId = s.GradeId,
|
||||
GradeYear = np.GradeYear,
|
||||
});
|
||||
}
|
||||
await nodePackageInfoDB.InsertRangeAsync(nodePackages);
|
||||
|
|
@ -297,6 +303,7 @@ namespace VideoAnalysisCore.Controllers
|
|||
|
||||
var stageQuery = videoTaskStageDB.AsQueryable();
|
||||
stageQuery = stageQuery.WhereIF(req.CloudSchoolId.HasValue, s => s.CloudSchoolId == req.CloudSchoolId);
|
||||
stageQuery = stageQuery.WhereIF(req.GradeYear.HasValue, s => s.GradeYear == req.GradeYear);
|
||||
stageQuery = stageQuery.WhereIF(req.CourseLevel.HasValue, s => s.CourseLevel == req.CourseLevel);
|
||||
stageQuery = stageQuery.WhereIF(req.GradeId.HasValue, s => s.GradeId == req.GradeId);
|
||||
stageQuery = stageQuery.WhereIF(req.GradeSemester.HasValue, s => s.GradeSemester == req.GradeSemester);
|
||||
|
|
@ -305,7 +312,7 @@ namespace VideoAnalysisCore.Controllers
|
|||
stageQuery = stageQuery.WhereIF(!string.IsNullOrWhiteSpace(req.Content), s => s.Content.Contains(req.Content));
|
||||
|
||||
var pageIndex = req.PageIndex < 0 ? 0 : req.PageIndex;
|
||||
var pageSize = req.PageSize <= 0 ? 200 : req.PageSize > 500 ? 500 : req.PageSize;
|
||||
var pageSize = req.PageSize <= 0 ? 50 : req.PageSize > 100 ?100 : req.PageSize;
|
||||
string[]? knowArr = null;
|
||||
if (req.KnowPointStrArr is not null && req.KnowPointStrArr.Length > 0)
|
||||
{
|
||||
|
|
@ -326,7 +333,7 @@ namespace VideoAnalysisCore.Controllers
|
|||
var taskIdArr = stagePageArr.Select(s => s.VideoTaskId).ToArray();
|
||||
var kpQuery = videoKonwPointDB.AsQueryable()
|
||||
.Where(s => taskIdArr.Contains(s.VideoTaskId) && s.KnowPointId != null);
|
||||
if (knowArr.Length > 0)
|
||||
if (knowArr !=null && knowArr.Length > 0)
|
||||
kpQuery = kpQuery.Where(s => knowArr.Contains(s.KnowPointId));
|
||||
|
||||
var kpArr = await kpQuery
|
||||
|
|
@ -336,6 +343,12 @@ namespace VideoAnalysisCore.Controllers
|
|||
.GroupBy(s => s.StageId)
|
||||
.ToDictionary(s => s.Key, s => s.Select(x => x.KnowPoint!).Distinct().ToArray());
|
||||
|
||||
//var gDataKey = stagePageArr.GroupBy(s => s.VideoTaskId).Select(s => s.Key).Distinct();
|
||||
//var videoInfoQRes = vodClient.GetVideoInfos(new GetVideoInfosRequest()
|
||||
//{
|
||||
// VideoIds = string.Join(",", gDataKey)
|
||||
//});
|
||||
//var videoInfoRes = videoInfoQRes.Body.VideoList.ToDictionary(s => s.VideoId, s => s.CoverURL);
|
||||
var data = stagePageArr.Select(s => new VideoTaskStageRes()
|
||||
{
|
||||
Id = s.Id,
|
||||
|
|
@ -345,23 +358,47 @@ namespace VideoAnalysisCore.Controllers
|
|||
EndTime = s.EndTime,
|
||||
Theme = s.Theme,
|
||||
CloudSchoolId = s.CloudSchoolId,
|
||||
Stage=s.Stage,
|
||||
//PreviewUrl= videoInfoRes.ContainsKey(s.VideoTaskId.ToString())? videoInfoRes[] :
|
||||
KnowPoints = kpDic.ContainsKey(s.Id) ? kpDic[s.Id] : []
|
||||
}).ToArray();
|
||||
|
||||
|
||||
return Ok(new VideoTaskStageQueryRes()
|
||||
{
|
||||
Total = total,
|
||||
Data = data.GroupBy(s=>s.VideoTaskId)
|
||||
.Select(s=>new VideoTaskInfoRes()
|
||||
{
|
||||
Stages = s.ToArray(),
|
||||
VideoTaskId =s.Key
|
||||
}).ToArray()
|
||||
Data = data
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 查询 视频切片
|
||||
/// </summary>
|
||||
/// <param name="videoTaskId">视频id</param>
|
||||
/// <returns>视频地址</returns>
|
||||
[HttpGet(Name = "GetVideoURL")]
|
||||
public async Task<IActionResult> GetVideoURL(long videoTaskId)
|
||||
{
|
||||
if (videoTaskId ==0)
|
||||
return BadRequest("参数不能为空");
|
||||
var task =await videoTaskDB.GetByIdAsync(videoTaskId);
|
||||
if (task is null)
|
||||
return BadRequest("参数无效");
|
||||
|
||||
var videoInfo = await vodClient.GetPlayInfoAsync(new GetPlayInfoRequest()
|
||||
{
|
||||
VideoId = task.TagId,
|
||||
Formats = "mp4",
|
||||
OutputType = "cdn",
|
||||
AuthTimeout = 3600 * 24 * 12,
|
||||
});
|
||||
if (videoInfo is null || videoInfo.StatusCode != 200 && !videoInfo.Body.PlayInfoList.PlayInfo.Any())
|
||||
return BadRequest("获取存储的视频信息失败!");
|
||||
|
||||
return Ok(videoInfo.Body.PlayInfoList.PlayInfo.First().PlayURL);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -88,6 +88,11 @@ namespace VideoAnalysisCore.Model
|
|||
[SugarColumn(IsNullable = true)]
|
||||
public GradeEnum? GradeId { get; set; }
|
||||
/// <summary>
|
||||
/// 毕业届
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public int? GradeYear { get; set; }
|
||||
/// <summary>
|
||||
/// 教育阶段
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
|
|
|
|||
|
|
@ -157,6 +157,11 @@ namespace VideoAnalysisCore.Model
|
|||
[SugarColumn(IsNullable = true)]
|
||||
public GradeEnum? GradeId { get; set; }
|
||||
/// <summary>
|
||||
/// 毕业届
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public int? GradeYear { get; set; }
|
||||
/// <summary>
|
||||
/// 年级册(上册/下册)
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
|
|
|
|||
|
|
@ -94,6 +94,11 @@ namespace VideoAnalysisCore.Model
|
|||
[SugarColumn(IsNullable = true)]
|
||||
public GradeSemesterEnum? GradeSemester { get; set; }
|
||||
/// <summary>
|
||||
/// 毕业届
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public int? GradeYear { get; set; }
|
||||
/// <summary>
|
||||
/// 学科网的教材版本Id
|
||||
/// </summary>
|
||||
public long TextBookVersionId { get; set; }
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AlibabaCloud.SDK.Vod20170321" Version="3.6.1" />
|
||||
<PackageReference Include="AlibabaCloud.SDK.Vod20170321" Version="3.11.1" />
|
||||
<PackageReference Include="Aliyun.OSS.SDK.NetCore" Version="2.14.1" />
|
||||
<PackageReference Include="Coravel" Version="6.0.2" />
|
||||
<PackageReference Include="FreeRedis" Version="1.5.5" />
|
||||
|
|
|
|||
Loading…
Reference in New Issue